{"version":3,"file":"inchurch-matcha-components.mjs","sources":["../../../../projects/matcha-components/src/lib/matcha-option/matcha-option-parent.interface.ts","../../../../projects/matcha-components/src/lib/matcha-ripple/ripple.directive.ts","../../../../projects/matcha-components/src/lib/matcha-ripple/ripple.module.ts","../../../../projects/matcha-components/src/lib/matcha-data-qa/matcha-data-qa.directive.ts","../../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.ts","../../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.html","../../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox.module.ts","../../../../projects/matcha-components/src/lib/matcha-option/matcha-option.component.ts","../../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.component.ts","../../../../projects/matcha-components/src/lib/matcha-validators/matcha-text-normalize.ts","../../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.ts","../../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.html","../../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.directive.ts","../../../../projects/matcha-components/src/lib/matcha-option/matcha-option.module.ts","../../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.module.ts","../../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.module.ts","../../../../projects/matcha-components/src/lib/matcha-icon/figma-icons.ts","../../../../projects/matcha-components/src/lib/matcha-icon/legacy-icon-map.ts","../../../../projects/matcha-components/src/lib/matcha-icon/icon.component.ts","../../../../projects/matcha-components/src/lib/matcha-icon/icon.component.html","../../../../projects/matcha-components/src/lib/matcha-chip/chip-remove.directive.ts","../../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.ts","../../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.html","../../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.ts","../../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.html","../../../../projects/matcha-components/src/lib/matcha-select/matcha-select.directive.ts","../../../../projects/matcha-components/src/lib/matcha-select/matcha-select.module.ts","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.ts","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.html","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.ts","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.html","../../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.ts","../../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.html","../../../../projects/matcha-components/src/lib/matcha-select-multiple/matcha-select-multiple.component.ts","../../../../projects/matcha-components/src/lib/matcha-select-multiple/matcha-select-multiple.component.html","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.ts","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.html","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-prefix/matcha-prefix.component.ts","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-suffix/matcha-suffix.component.ts","../../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.directive.ts","../../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.module.ts","../../../../projects/matcha-components/src/lib/matcha-icon/icon.module.ts","../../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.config.ts","../../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-applier.service.ts","../../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.service.ts","../../../../projects/matcha-components/src/lib/matcha-validators/matcha-validators.ts","../../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-compatible.directive.ts","../../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.pipe.ts","../../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.module.ts","../../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field.module.ts","../../../../projects/matcha-components/src/lib/matcha-divider/divider.module.ts","../../../../projects/matcha-components/src/lib/matcha-select-multiple/matcha-select-multiple.module.ts","../../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.ts","../../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.html","../../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.ts","../../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.ts","../../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.ts","../../../../projects/matcha-components/src/lib/matcha-accordion/accordion.module.ts","../../../../projects/matcha-components/src/lib/matcha-button/button/button.component.ts","../../../../projects/matcha-components/src/lib/matcha-button/button.module.ts","../../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.ts","../../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.html","../../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle.module.ts","../../../../projects/matcha-components/src/lib/shared/size-alias.ts","../../../../projects/matcha-components/src/lib/matcha-card/card/card.component.ts","../../../../projects/matcha-components/src/lib/matcha-card/card/card.component.html","../../../../projects/matcha-components/src/lib/matcha-elevation/elevation.directive.ts","../../../../projects/matcha-components/src/lib/matcha-elevation/elevation.module.ts","../../../../projects/matcha-components/src/lib/matcha-title/title/title.component.ts","../../../../projects/matcha-components/src/lib/matcha-title/title/title.component.html","../../../../projects/matcha-components/src/lib/matcha-title/title.module.ts","../../../../projects/matcha-components/src/lib/matcha-card/card.module.ts","../../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.ts","../../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.html","../../../../projects/matcha-components/src/lib/matcha-text/matcha-text.component.ts","../../../../projects/matcha-components/src/lib/matcha-validators/matcha-email.directive.ts","../../../../projects/matcha-components/src/lib/matcha-password-toggle/matcha-password-toggle.directive.ts","../../../../projects/matcha-components/src/lib/matcha-clear-button/matcha-clear-button.directive.ts","../../../../projects/matcha-components/src/lib/matcha-auto-grow/matcha-auto-grow.directive.ts","../../../../projects/matcha-components/src/lib/matcha-caps-lock-hint/matcha-caps-lock-hint.directive.ts","../../../../projects/matcha-components/src/lib/matcha-validators/matcha-currency-masks.ts","../../../../projects/matcha-components/src/lib/matcha-money/matcha-money.directive.ts","../../../../projects/matcha-components/src/lib/matcha-quantity-stepper/matcha-quantity-stepper.directive.ts","../../../../projects/matcha-components/src/lib/matcha-i18n/matcha-i18n.service.ts","../../../../projects/matcha-components/src/lib/matcha-calendar/calendar/matcha-calendar.component.ts","../../../../projects/matcha-components/src/lib/matcha-calendar/calendar/matcha-calendar.component.html","../../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.ts","../../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.html","../../../../projects/matcha-components/src/lib/matcha-time/time-panel/time-panel.component.ts","../../../../projects/matcha-components/src/lib/matcha-time/time-panel/time-panel.component.html","../../../../projects/matcha-components/src/lib/matcha-time/time/time.component.ts","../../../../projects/matcha-components/src/lib/matcha-time/time/time.component.html","../../../../projects/matcha-components/src/lib/matcha-field-range/field-range/field-range.component.ts","../../../../projects/matcha-components/src/lib/matcha-field-range/field-range/field-range.component.html","../../../../projects/matcha-components/src/lib/matcha-a11y/matcha-a11y.utils.ts","../../../../projects/matcha-components/src/lib/matcha-period/matcha-period.component.ts","../../../../projects/matcha-components/src/lib/matcha-period/matcha-period.component.html","../../../../projects/matcha-components/src/lib/matcha-validators/matcha-phone-masks.ts","../../../../projects/matcha-components/src/lib/matcha-phone/all-countries.ts","../../../../projects/matcha-components/src/lib/matcha-phone/matcha-phone-countries.ts","../../../../projects/matcha-components/src/lib/matcha-phone/phone.component.ts","../../../../projects/matcha-components/src/lib/matcha-phone/phone.component.html","../../../../projects/matcha-components/src/lib/matcha-brand/figma-brands.ts","../../../../projects/matcha-components/src/lib/matcha-brand/brand.component.ts","../../../../projects/matcha-components/src/lib/matcha-brand/brand.component.html","../../../../projects/matcha-components/src/lib/matcha-validators/matcha-document-masks.ts","../../../../projects/matcha-components/src/lib/matcha-validators/matcha-postal-code-masks.ts","../../../../projects/matcha-components/src/lib/matcha-field/matcha-field.component.ts","../../../../projects/matcha-components/src/lib/matcha-field/matcha-field.component.html","../../../../projects/matcha-components/src/lib/matcha-field/matcha-field.module.ts","../../../../projects/matcha-components/src/lib/matcha-hint-text/hint.module.ts","../../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.ts","../../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.html","../../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.ts","../../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.html","../../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll.module.ts","../../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.ts","../../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.html","../../../../projects/matcha-components/src/lib/matcha-masonry/masonry.module.ts","../../../../projects/matcha-components/src/lib/matcha-modal/overlay.service.ts","../../../../projects/matcha-components/src/lib/matcha-icon-button/icon-button.component.ts","../../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.ts","../../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.html","../../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.ts","../../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.html","../../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.ts","../../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.html","../../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.ts","../../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.html","../../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.ts","../../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.html","../../../../projects/matcha-components/src/lib/matcha-modal/modal.service.ts","../../../../projects/matcha-components/src/lib/matcha-modal/matcha-modal.module.ts","../../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.ts","../../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.html","../../../../projects/matcha-components/src/lib/matcha-paginator/paginator-intl.service.ts","../../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.ts","../../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.html","../../../../projects/matcha-components/src/lib/matcha-paginator/paginator.module.ts","../../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.ts","../../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.html","../../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle.module.ts","../../../../projects/matcha-components/src/lib/matcha-menu/matcha-menu.component.ts","../../../../projects/matcha-components/src/lib/matcha-menu/matcha-menu-trigger.directive.ts","../../../../projects/matcha-components/src/lib/matcha-menu/matcha-menu-item.directive.ts","../../../../projects/matcha-components/src/lib/matcha-menu/matcha-submenu-trigger.directive.ts","../../../../projects/matcha-components/src/lib/matcha-menu/matcha-action-item.component.ts","../../../../projects/matcha-components/src/lib/matcha-menu/matcha-action-divider.component.ts","../../../../projects/matcha-components/src/lib/matcha-menu/matcha-menu.module.ts","../../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.ts","../../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.html","../../../../projects/matcha-components/src/lib/matcha-spin/spin.module.ts","../../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.ts","../../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.html","../../../../projects/matcha-components/src/lib/matcha-spinner/spinner.module.ts","../../../../projects/matcha-components/src/lib/matcha-progress-bar/progress-bar/progress-bar.component.ts","../../../../projects/matcha-components/src/lib/matcha-progress-bar/progress-bar/progress-bar.component.html","../../../../projects/matcha-components/src/lib/matcha-progress-bar/progress-bar.module.ts","../../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.ts","../../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.html","../../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.ts","../../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.html","../../../../projects/matcha-components/src/lib/matcha-tabs/tabs.module.ts","../../../../projects/matcha-components/src/lib/matcha-text/matcha-text.module.ts","../../../../projects/matcha-components/src/lib/matcha-field-range/field-range.module.ts","../../../../projects/matcha-components/src/lib/matcha-time/time.module.ts","../../../../projects/matcha-components/src/lib/matcha-datetime/datetime/matcha-datetime.component.ts","../../../../projects/matcha-components/src/lib/matcha-datetime/datetime/matcha-datetime.component.html","../../../../projects/matcha-components/src/lib/matcha-datetime/matcha-datetime.module.ts","../../../../projects/matcha-components/src/lib/matcha-stepper/stepper.service.ts","../../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.ts","../../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.html","../../../../projects/matcha-components/src/lib/matcha-stepper/stepper/stepper.component.ts","../../../../projects/matcha-components/src/lib/matcha-stepper/step/step.component.ts","../../../../projects/matcha-components/src/lib/matcha-stepper/stepper-content/stepper-content.component.ts","../../../../projects/matcha-components/src/lib/matcha-stepper/prev-step.directive.ts","../../../../projects/matcha-components/src/lib/matcha-stepper/next-step.directive.ts","../../../../projects/matcha-components/src/lib/matcha-stepper/stepper.module.ts","../../../../projects/matcha-components/src/lib/matcha-drop-list/services/drop-list.service.ts","../../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.ts","../../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.html","../../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag.directive.ts","../../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag-handle.directive.ts","../../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drop-zone.directive.ts","../../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list.module.ts","../../../../projects/matcha-components/src/lib/matcha-phone/phone.module.ts","../../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.ts","../../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.html","../../../../projects/matcha-components/src/lib/matcha-page-layout/page-footer/page-footer.component.ts","../../../../projects/matcha-components/src/lib/matcha-page-layout/page-footer/page-footer.component.html","../../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.module.ts","../../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.ts","../../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.html","../../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.ts","../../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.html","../../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload.module.ts","../../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.ts","../../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.html","../../../../projects/matcha-components/src/lib/matcha-radio/radio-group/radio-group.component.ts","../../../../projects/matcha-components/src/lib/matcha-radio/radio.module.ts","../../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.ts","../../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.html","../../../../projects/matcha-components/src/lib/matcha-avatar/avatar-group/avatar-group.component.ts","../../../../projects/matcha-components/src/lib/matcha-avatar/avatar-group/avatar-group.component.html","../../../../projects/matcha-components/src/lib/matcha-avatar/avatar-name/avatar-name.component.ts","../../../../projects/matcha-components/src/lib/matcha-avatar/avatar-caption/avatar-caption.component.ts","../../../../projects/matcha-components/src/lib/matcha-avatar/avatar.module.ts","../../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.ts","../../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.html","../../../../projects/matcha-components/src/lib/matcha-drawer/drawer-content/drawer-content.component.ts","../../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.ts","../../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.html","../../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observer.service.ts","../../../../projects/matcha-components/src/lib/matcha-drawer/drawer.module.ts","../../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.ts","../../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.html","../../../../projects/matcha-components/src/lib/matcha-highlight/highlight.component.ts","../../../../projects/matcha-components/src/lib/matcha-highlight/highlight.module.ts","../../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts","../../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html","../../../../projects/matcha-components/src/lib/matcha-slider/slider.module.ts","../../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.ts","../../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.html","../../../../projects/matcha-components/src/lib/matcha-chip/chip.module.ts","../../../../projects/matcha-components/src/lib/matcha-list/list/list.component.ts","../../../../projects/matcha-components/src/lib/matcha-list/list/list.component.html","../../../../projects/matcha-components/src/lib/matcha-list/list-item/list-item.component.ts","../../../../projects/matcha-components/src/lib/matcha-list/list-item/list-item.component.html","../../../../projects/matcha-components/src/lib/matcha-list/list.module.ts","../../../../projects/matcha-components/src/lib/matcha-snack-bar/snack-bar.service.ts","../../../../projects/matcha-components/src/lib/matcha-snack-bar/snack-bar/snack-bar.component.ts","../../../../projects/matcha-components/src/lib/matcha-snack-bar/snack-bar/snack-bar.component.html","../../../../projects/matcha-components/src/lib/matcha-snack-bar/snack-bar.module.ts","../../../../projects/matcha-components/src/lib/matcha-components.module.ts","../../../../projects/matcha-components/src/lib/matcha-contact/contact/contact.component.ts","../../../../projects/matcha-components/src/lib/matcha-contact/contact/contact.component.html","../../../../projects/matcha-components/src/lib/matcha-contact/contact.module.ts","../../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observable.module.ts","../../../../projects/matcha-components/src/lib/matcha-icon-button/icon-button.module.ts","../../../../projects/matcha-components/src/lib/matcha-link/link.component.ts","../../../../projects/matcha-components/src/lib/matcha-link/link.module.ts","../../../../projects/matcha-components/src/lib/matcha-badge/matcha-badge.directive.ts","../../../../projects/matcha-components/src/lib/matcha-badge/matcha-badge.module.ts","../../../../projects/matcha-components/src/lib/matcha-status-pill/status-pill/status-pill.component.ts","../../../../projects/matcha-components/src/lib/matcha-status-pill/status-pill/status-pill.component.html","../../../../projects/matcha-components/src/lib/matcha-status-pill/status-pill.module.ts","../../../../projects/matcha-components/src/lib/matcha-calendar/matcha-calendar.module.ts","../../../../projects/matcha-components/src/lib/matcha-date/matcha-date.module.ts","../../../../projects/matcha-components/src/lib/matcha-empty-state/empty-state/empty-state.component.ts","../../../../projects/matcha-components/src/lib/matcha-empty-state/empty-state/empty-state.component.html","../../../../projects/matcha-components/src/lib/matcha-drop-list/drop-container.base.ts","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-controller.ts","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-branch/tree-branch.component.ts","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-branch/tree-branch.component.html","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-node.directive.ts","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-view/tree-view.component.ts","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-view/tree-view.component.html","../../../../projects/matcha-components/src/lib/matcha-tree-view/grip.directive.ts","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-view-item/tree-view-item.component.ts","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-view-item/tree-view-item.component.html","../../../../projects/matcha-components/src/lib/matcha-tree-view/reparent-zone.directive.ts","../../../../projects/matcha-components/src/lib/matcha-tree-view/tree-children/tree-children.component.ts","../../../../projects/matcha-components/src/lib/matcha-icon-badge/icon-badge.component.ts","../../../../projects/matcha-components/src/lib/matcha-banner/banner.component.ts","../../../../projects/matcha-components/src/lib/matcha-banner/banner.component.html","../../../../projects/matcha-components/src/lib/matcha-banner/banner-stack.component.ts","../../../../projects/matcha-components/src/lib/matcha-stat-card/stat-card.component.ts","../../../../projects/matcha-components/src/lib/matcha-stat-card/stat-card.component.html","../../../../projects/matcha-components/src/lib/matcha-pagination/pagination.component.ts","../../../../projects/matcha-components/src/lib/matcha-pagination/pagination.component.html","../../../../projects/matcha-components/src/lib/matcha-pagination/pagination.module.ts","../../../../projects/matcha-components/src/lib/matcha-progress-ring/progress-ring.component.ts","../../../../projects/matcha-components/src/lib/matcha-progress-ring/progress-ring.component.html","../../../../projects/matcha-components/src/lib/matcha-grid/grid.component.ts","../../../../projects/matcha-components/src/lib/matcha-grid/grid.component.html","../../../../projects/matcha-components/src/lib/matcha-grid/grid.module.ts","../../../../projects/matcha-components/src/lib/matcha-brand/brand.module.ts","../../../../projects/matcha-components/src/lib/matcha-breadcrumb/breadcrumb-item/breadcrumb-item.component.ts","../../../../projects/matcha-components/src/lib/matcha-breadcrumb/breadcrumb/breadcrumb.component.ts","../../../../projects/matcha-components/src/lib/matcha-breadcrumb/breadcrumb/breadcrumb.component.html","../../../../projects/matcha-components/src/lib/matcha-breadcrumb/breadcrumb.module.ts","../../../../projects/matcha-components/src/lib/matcha-flag/figma-flags.ts","../../../../projects/matcha-components/src/lib/matcha-flag/flag.component.ts","../../../../projects/matcha-components/src/lib/matcha-flag/flag.module.ts","../../../../projects/matcha-components/src/lib/matcha-period/matcha-period.module.ts","../../../../projects/matcha-components/src/lib/matcha-period/matcha-period.types.ts","../../../../projects/matcha-components/src/lib/matcha-msg-box/msg-box/msg-box.component.ts","../../../../projects/matcha-components/src/lib/matcha-msg-box/msg-box/msg-box.component.html","../../../../projects/matcha-components/src/lib/matcha-msg-box/msg-box-actions/msg-box-actions.component.ts","../../../../projects/matcha-components/src/lib/matcha-msg-box/msg-box-actions/msg-box-actions.component.html","../../../../projects/matcha-components/src/lib/matcha-msg-box/msg-box.module.ts","../../../../projects/matcha-components/src/lib/matcha-notification/notification.component.ts","../../../../projects/matcha-components/src/lib/matcha-notification/notification.component.html","../../../../projects/matcha-components/src/lib/shared/assets-cdn.ts","../../../../projects/matcha-components/src/lib/matcha-page-builder/matcha-page-builder.component.ts","../../../../projects/matcha-components/src/lib/matcha-page-builder/matcha-page-builder.component.html","../../../../projects/matcha-components/src/lib/matcha-page-builder/matcha-page-builder.module.ts","../../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.ts","../../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.html","../../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton.module.ts","../../../../projects/matcha-components/src/lib/matcha-table/table.component.ts","../../../../projects/matcha-components/src/lib/matcha-table/table.component.html","../../../../projects/matcha-components/src/lib/matcha-table/table-sortable-header.directive.ts","../../../../projects/matcha-components/src/lib/matcha-table/table-clickable-row.directive.ts","../../../../projects/matcha-components/src/lib/matcha-table/table-truncate-cell.directive.ts","../../../../projects/matcha-components/src/lib/matcha-table/table-empty-row.directive.ts","../../../../projects/matcha-components/src/lib/matcha-table/table-loading-row.directive.ts","../../../../projects/matcha-components/src/lib/matcha-table/table-resizable-column.directive.ts","../../../../projects/matcha-components/src/lib/matcha-table/table-cell-align.directive.ts","../../../../projects/matcha-components/src/lib/matcha-table/table-selection.ts","../../../../projects/matcha-components/src/lib/matcha-table/table.module.ts","../../../../projects/matcha-components/src/lib/matcha-table-cell/identity-cell.component.ts","../../../../projects/matcha-components/src/lib/matcha-table-cell/identity-cell.component.html","../../../../projects/matcha-components/src/lib/shared/ratio.ts","../../../../projects/matcha-components/src/lib/matcha-image/image.component.ts","../../../../projects/matcha-components/src/lib/matcha-image/image.component.html","../../../../projects/matcha-components/src/lib/matcha-image/image.module.ts","../../../../projects/matcha-components/src/lib/matcha-table-cell/media-cell.component.ts","../../../../projects/matcha-components/src/lib/matcha-table-cell/media-cell.component.html","../../../../projects/matcha-components/src/lib/matcha-table-cell/status-cell.component.ts","../../../../projects/matcha-components/src/lib/matcha-table-cell/status-cell.component.html","../../../../projects/matcha-components/src/lib/matcha-table-cell/contact-cell.component.ts","../../../../projects/matcha-components/src/lib/matcha-table-cell/contact-cell.component.html","../../../../projects/matcha-components/src/lib/matcha-table-cell/action-cell.directive.ts","../../../../projects/matcha-components/src/lib/matcha-table-cell/table-cell.module.ts","../../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar.component.ts","../../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar.component.html","../../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar.module.ts","../../../../projects/matcha-components/src/lib/matcha-section/section.component.ts","../../../../projects/matcha-components/src/lib/matcha-section/section.component.html","../../../../projects/matcha-components/src/lib/matcha-section/section.module.ts","../../../../projects/matcha-components/src/lib/matcha-text-editor/suneditor/suneditor-config.ts","../../../../projects/matcha-components/src/lib/matcha-text-editor/suneditor/video-markup.ts","../../../../projects/matcha-components/src/lib/matcha-text-editor/suneditor/paste-color.ts","../../../../projects/matcha-components/src/lib/matcha-text-editor/text-editor/text-editor.component.ts","../../../../projects/matcha-components/src/lib/matcha-text-editor/text-editor/text-editor.component.html","../../../../projects/matcha-components/src/lib/matcha-text-editor/text-editor.module.ts","../../../../projects/matcha-components/src/lib/matcha-chart-card/chart-card.component.ts","../../../../projects/matcha-components/src/lib/matcha-chart-card/chart-card.component.html","../../../../projects/matcha-components/src/lib/matcha-chart-card/chart-card.module.ts","../../../../projects/matcha-components/src/lib/matcha-crop/crop.component.ts","../../../../projects/matcha-components/src/lib/matcha-crop/crop.component.html","../../../../projects/matcha-components/src/lib/matcha-crop/crop.module.ts","../../../../projects/matcha-components/src/lib/matcha-footer/footer.component.ts","../../../../projects/matcha-components/src/lib/matcha-footer/footer.component.html","../../../../projects/matcha-components/src/lib/matcha-footer/footer.module.ts","../../../../projects/matcha-components/src/lib/matcha-header/header.component.ts","../../../../projects/matcha-components/src/lib/matcha-header/header.component.html","../../../../projects/matcha-components/src/lib/matcha-header/header.module.ts","../../../../projects/matcha-components/src/lib/matcha-notification/notification.module.ts","../../../../projects/matcha-components/src/lib/matcha-file-uploader/file-uploader.component.ts","../../../../projects/matcha-components/src/lib/matcha-file-uploader/file-uploader.component.html","../../../../projects/matcha-components/src/lib/matcha-file-uploader/file-uploader.module.ts","../../../../projects/matcha-components/src/lib/matcha-field-color/matcha-field-color.component.ts","../../../../projects/matcha-components/src/lib/matcha-field-color/matcha-field-color.component.html","../../../../projects/matcha-components/src/lib/matcha-field-color/matcha-field-color.module.ts","../../../../projects/matcha-components/src/lib/matcha-thumbnail/matcha-thumbnail.component.ts","../../../../projects/matcha-components/src/lib/matcha-thumbnail/matcha-thumbnail.component.html","../../../../projects/matcha-components/src/lib/matcha-thumbnail/matcha-thumbnail.module.ts","../../../../projects/matcha-components/src/lib/matcha-i18n/matcha-translate.pipe.ts","../../../../projects/matcha-components/src/lib/matcha-i18n/matcha-i18n.module.ts","../../../../projects/matcha-components/src/lib/matcha-a11y/matcha-a11y.module.ts","../../../../projects/matcha-components/src/lib/matcha-field-select/field-select/field-select.component.ts","../../../../projects/matcha-components/src/lib/matcha-field-select/field-select/field-select.component.html","../../../../projects/matcha-components/src/lib/matcha-field-select/field-select.module.ts","../../../../projects/matcha-components/src/lib/matcha-validators/matcha-validator-messages.ts","../../../../projects/matcha-components/src/lib/matcha-validators/viacep.service.ts","../../../../projects/matcha-components/src/lib/matcha-nav/nav-item/nav-item.component.ts","../../../../projects/matcha-components/src/lib/matcha-nav/nav-item/nav-item.component.html","../../../../projects/matcha-components/src/lib/matcha-nav/nav-rail/nav-rail.component.ts","../../../../projects/matcha-components/src/lib/matcha-nav/nav-rail/nav-rail.component.html","../../../../projects/matcha-components/src/lib/matcha-nav/shared/nav-tree-keyboard.ts","../../../../projects/matcha-components/src/lib/matcha-nav/nav-panel/nav-panel.component.ts","../../../../projects/matcha-components/src/lib/matcha-nav/nav-panel/nav-panel.component.html","../../../../projects/matcha-components/src/lib/matcha-nav/command-palette/command-palette.component.ts","../../../../projects/matcha-components/src/lib/matcha-nav/command-palette/command-palette.component.html","../../../../projects/matcha-components/src/lib/matcha-nav/nav-drawer/nav-drawer.component.ts","../../../../projects/matcha-components/src/lib/matcha-nav/nav-drawer/nav-drawer.component.html","../../../../projects/matcha-components/src/lib/matcha-nav/matcha-nav.module.ts","../../../../projects/matcha-components/src/public-api.ts","../../../../projects/matcha-components/src/inchurch-matcha-components.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Interface que deve ser implementada por componentes que querem usar matcha-option como filho\r\n *\r\n * Permite que matcha-option seja usado em diferentes contextos:\r\n * - matcha-autocomplete\r\n * - matcha-select\r\n * - matcha-menu\r\n * - etc.\r\n */\r\nexport interface MatchaOptionParent {\r\n  /**\r\n   * Método chamado quando uma opção é selecionada\r\n   * @param option - A instância do MatchaOptionComponent selecionado\r\n   */\r\n  selectOption(option: any): void; // usando any para evitar referência circular\r\n\r\n  /**\r\n   * Registra a option no parent. Chamado por matcha-option.ngOnInit via DOM\r\n   * traversal — permite que options projetadas por wrappers (matcha-field →\r\n   * matcha-select) sejam visíveis pro parent, já que `@ContentChildren` não\r\n   * enxerga através de `<ng-content>` de wrapper.\r\n   */\r\n  registerOption?(option: any): void;\r\n  unregisterOption?(option: any): void;\r\n\r\n  /**\r\n   * Quando true, as opções renderizam em modo múltiplo (com matcha-checkbox).\r\n   * Lido pela matcha-option para decidir a renderização já no primeiro ciclo.\r\n   * Usado por matcha-select-multiple. Nome próprio (não `multiple`) pra não\r\n   * colidir com os inputs `multiple` já existentes em matcha-select\r\n   * (`boolean | string`) e matcha-field (`InputSignal<boolean>`).\r\n   */\r\n  multipleMode?: boolean;\r\n\r\n  /**\r\n   * Retorna se um value está selecionado (modo múltiplo).\r\n   * Permite que a matcha-option reflita o estado \"marcado\" já no primeiro render,\r\n   * evitando depender de atualização imperativa posterior.\r\n   */\r\n  isSelected?(value: any): boolean;\r\n}\r\n\r\n/**\r\n * Token de injeção para MatchaOptionParent\r\n * Usado para injetar o componente pai no matcha-option\r\n */\r\nexport const MATCHA_OPTION_PARENT = new InjectionToken<MatchaOptionParent>('MatchaOptionParent');\r\n","import { Directive, ElementRef, HostListener, Input, OnDestroy } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[matchaRipple]',\r\n    standalone: true\r\n})\r\nexport class MatchaRippleDirective implements OnDestroy {\r\n    @Input() rippleColor: string = 'rgba(0, 0, 0, 0.5)'; // Cor padrão do efeito\r\n    private ripples: HTMLElement[] = [];\r\n\r\n    constructor(private el: ElementRef) {\r\n        // Garantir que o elemento tenha position relative\r\n        this.el.nativeElement.style.position = 'relative';\r\n        this.el.nativeElement.style.overflow = 'hidden';\r\n    }\r\n\r\n    @HostListener('mousedown', ['$event'])\r\n    onMouseDown(event: MouseEvent): void {\r\n        const target = this.el.nativeElement;\r\n        const rect = target.getBoundingClientRect();\r\n\r\n        const ripple = document.createElement('span');\r\n        ripple.className = 'ripple';\r\n\r\n        // Definir o tamanho do ripple baseado no maior lado do elemento\r\n        const size = Math.max(target.offsetWidth, target.offsetHeight);\r\n        ripple.style.height = ripple.style.width = size * 2 + 'px';\r\n\r\n        // Aplicar estilo básico ao ripple\r\n        ripple.style.backgroundColor = this.rippleColor;\r\n        ripple.style.position = 'absolute';\r\n        ripple.style.borderRadius = '50%';\r\n        ripple.style.opacity = '0.5';\r\n        ripple.style.transform = 'scale(0)';\r\n        ripple.style.transition = 'transform 0.6s, opacity 0.6s';\r\n        ripple.style.pointerEvents = 'none';\r\n\r\n        const top = event.pageY - rect.top - size + window.scrollY;\r\n        const left = event.pageX - rect.left - size + window.scrollX;\r\n\r\n        ripple.style.top = top + 'px';\r\n        ripple.style.left = left + 'px';\r\n\r\n        target.appendChild(ripple);\r\n        this.ripples.push(ripple);\r\n\r\n        // Inicia a animação no próximo frame\r\n        requestAnimationFrame(() => {\r\n            ripple.style.transform = 'scale(2)';\r\n            ripple.style.opacity = '0';\r\n        });\r\n\r\n        // Remove o ripple após a animação\r\n        setTimeout(() => {\r\n            if (ripple && ripple.parentElement) {\r\n                ripple.parentElement.removeChild(ripple);\r\n                this.ripples = this.ripples.filter(r => r !== ripple);\r\n            }\r\n        }, 600);\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        // Limpa todos os ripples quando o componente é destruído\r\n        this.ripples.forEach(ripple => {\r\n            if (ripple && ripple.parentElement) {\r\n                ripple.parentElement.removeChild(ripple);\r\n            }\r\n        });\r\n        this.ripples = [];\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\nimport { MatchaRippleDirective } from './ripple.directive';\r\n\r\n@NgModule({\r\n  imports: [MatchaRippleDirective],\r\n    exports: [\r\n        MatchaRippleDirective\r\n    ],\r\n})\r\nexport class MatchaRippleModule { }\r\n","import { Directive, input } from '@angular/core';\r\n\r\n/**\r\n * Test-handle directive attached to every Matcha component via `hostDirectives`.\r\n *\r\n * Exposes a single `data-qa` input, reflected onto the host as `[attr.data-qa]`.\r\n * The value is 100% author-supplied: it renders only when the consumer sets it\r\n * (`<matcha-x data-qa=\"save-member-btn\">`) and is otherwise absent from the DOM.\r\n *\r\n * No auto-generated fallback on purpose — any runtime-generated value (module\r\n * counter, uuid, label hash) is unstable across construction order / reloads / i18n,\r\n * which defeats the whole point of a test handle. The only value that never changes\r\n * is the one authored at the usage site, because only the consumer knows the stable\r\n * identity of that element.\r\n *\r\n * Usage (per component decorator):\r\n *   hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }]\r\n *\r\n * The `inputs: ['data-qa']` re-exposure is required so consumers can set it on the host.\r\n */\r\n@Directive({\r\n  // Attribute selector so it never matches on its own — it is only ever applied\r\n  // through `hostDirectives`, never declared directly in a template.\r\n  selector: '[matchaDataQa]',\r\n  standalone: true,\r\n  host: { '[attr.data-qa]': 'dataQa()' },\r\n})\r\nexport class MatchaDataQaDirective {\r\n  /** Stable, author-supplied e2e/unit test handle. `null` → no attribute rendered. */\r\n  readonly dataQa = input<string | null>(null, { alias: 'data-qa' });\r\n}\r\n","import {\r\n  Component,\r\n  ChangeDetectionStrategy,\r\n  ViewChild,\r\n  ElementRef,\r\n  forwardRef,\r\n  booleanAttribute,\r\n  computed,\r\n  effect,\r\n  input,\r\n  model,\r\n  output,\r\n  signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaCheckboxColor =\r\n  | 'accent'\r\n  | 'primary'\r\n  | 'success'\r\n  | 'warn'\r\n  | 'danger'\r\n  | 'info';\r\n\r\nlet _checkboxIdCounter = 0;\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-checkbox',\r\n  templateUrl: './checkbox.component.html',\r\n  styleUrls: ['./checkbox.component.scss'],\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MatchaCheckboxComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  host: {\r\n    '[attr.disabled]': 'effectiveDisabled() ? \"\" : null',\r\n    '[attr.readonly]': 'readonly() ? \"\" : null',\r\n    '[attr.error]': 'error() ? \"\" : null',\r\n    '[attr.required]': 'required() ? \"\" : null',\r\n    '[attr.checked]': 'checked() && !indeterminate() ? \"\" : null',\r\n    '[attr.indeterminate]': 'indeterminate() ? \"\" : null',\r\n    '[attr.color]': 'color()',\r\n  },\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaCheckboxComponent implements ControlValueAccessor {\r\n  @ViewChild('input', { static: true })\r\n  inputElement!: ElementRef<HTMLInputElement>;\r\n\r\n  // ── Inputs ────────────────────────────────────────────────────────────\r\n  /** Cor do glyph checked/indeterminate. Outline (off) ignora — sempre cinza. */\r\n  color = input<MatchaCheckboxColor>('accent');\r\n\r\n  /** Texto de apoio abaixo do label — Figma matcha/checkbox \"Description\". */\r\n  description = input<string>('');\r\n\r\n  /** Mensagem de validação — Figma matcha/checkbox \"Hint text\". Só renderiza com [error]=true. */\r\n  hint = input<string>('');\r\n\r\n  /** Estado de erro — pinta glyph + hint em danger. */\r\n  error = input(false, { transform: booleanAttribute });\r\n\r\n  /** Marca o input como required (a11y + reflete attr no host). */\r\n  required = input(false, { transform: booleanAttribute });\r\n\r\n  /** Disabled via input. Combinado com setDisabledState() do form em effectiveDisabled(). */\r\n  disabled = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Somente leitura: o estado continua LEGIVEL — mesma cor de glyph e de label — mas o clique\r\n   * nao muda nada.\r\n   *\r\n   * Nao e sinonimo de `disabled`, e a diferenca importa: `disabled` apaga o contraste, tira o\r\n   * controle da ordem de tabulacao e o esconde do leitor de tela. Use `disabled` para ACAO\r\n   * INDISPONIVEL e `readonly` para CONTEUDO QUE SE LE — o caso das telas de detalhe, onde a\r\n   * pessoa precisa enxergar se a opcao esta marcada.\r\n   *\r\n   * `<input type=\"checkbox\">` nao tem `readonly` nativo, entao a inercia vem de\r\n   * `preventDefault()` no clique: o foco e a semantica ficam, a alternancia nao acontece.\r\n   * `aria-readonly` informa a tecnologia assistiva.\r\n   */\r\n  readonly = input(false, { transform: booleanAttribute });\r\n\r\n  // ── Two-way models ────────────────────────────────────────────────────\r\n  /** Estado checked. Two-way: `[(checked)]`. */\r\n  checked = model<boolean>(false);\r\n\r\n  /** Estado indeterminate (independente de checked). Two-way: `[(indeterminate)]`. */\r\n  indeterminate = model<boolean>(false);\r\n\r\n  // ── Outputs ───────────────────────────────────────────────────────────\r\n  /** Emite o novo valor booleano sempre que o usuário interage. */\r\n  change = output<boolean>();\r\n\r\n  // ── Estado interno ────────────────────────────────────────────────────\r\n  /** Disabled vindo de setDisabledState() (Reactive Forms). Combinado com disabled() input. */\r\n  private _formDisabled = signal(false);\r\n\r\n  /** Disabled efetivo = input || formControl.disable(). */\r\n  effectiveDisabled = computed(() => this.disabled() || this._formDisabled());\r\n\r\n  // ── A11y IDs ──────────────────────────────────────────────────────────\r\n  private readonly _id = ++_checkboxIdCounter;\r\n  readonly inputId = `matcha-checkbox-${this._id}`;\r\n  readonly descId = `matcha-checkbox-desc-${this._id}`;\r\n  readonly hintId = `matcha-checkbox-hint-${this._id}`;\r\n\r\n  /** aria-describedby concatenando description + hint quando visíveis. */\r\n  ariaDescribedBy = computed(() => {\r\n    const ids: string[] = [];\r\n    if (this.description()) ids.push(this.descId);\r\n    if (this.hint() && this.error()) ids.push(this.hintId);\r\n    return ids.length ? ids.join(' ') : null;\r\n  });\r\n\r\n  // ── ControlValueAccessor ──────────────────────────────────────────────\r\n  private _onChange: (value: boolean) => void = () => {};\r\n  private _onTouched: () => void = () => {};\r\n\r\n  writeValue(value: boolean): void {\r\n    this.checked.set(!!value);\r\n  }\r\n\r\n  registerOnChange(fn: (value: boolean) => void): void {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: () => void): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this._formDisabled.set(isDisabled);\r\n  }\r\n\r\n  constructor() {\r\n    // Sincroniza checked/indeterminate dos signals → input nativo (caso mudem\r\n    // via [(checked)] sem passar por onInputChange).\r\n    effect(() => {\r\n      const el = this.inputElement?.nativeElement;\r\n      if (!el) return;\r\n      el.checked = this.checked();\r\n      el.indeterminate = this.indeterminate();\r\n    });\r\n  }\r\n\r\n  // ── Event handler ─────────────────────────────────────────────────────\r\n  /**\r\n   * Impede a alternancia sem desabilitar o input: `preventDefault()` no clique cancela a mudanca\r\n   * de estado ANTES de ela acontecer, o que evita o pisca-pisca de deixar o nativo alternar e o\r\n   * signal devolver. O elemento segue focavel e anunciado.\r\n   */\r\n  onInputClick(event: Event): void {\r\n    if (this.readonly()) event.preventDefault();\r\n  }\r\n\r\n  onInputChange(event: Event): void {\r\n    if (this.effectiveDisabled() || this.readonly()) return;\r\n    const input = event.target as HTMLInputElement;\r\n    const newChecked = input.checked;\r\n\r\n    // Click sai do indeterminate → resolve pra checked/unchecked.\r\n    // Emite indeterminateChange explicitamente (não silencioso).\r\n    if (this.indeterminate()) {\r\n      this.indeterminate.set(false);\r\n    }\r\n\r\n    this.checked.set(newChecked);\r\n    this._onChange(newChecked);\r\n    this._onTouched();\r\n    this.change.emit(newChecked);\r\n  }\r\n}\r\n","<label class=\"matcha-checkbox\"\r\n       [class.matcha-checkbox-disabled]=\"effectiveDisabled()\"\r\n       [class.matcha-checkbox-readonly]=\"readonly()\"\r\n       [class.matcha-checkbox-error]=\"error()\"\r\n       [for]=\"inputId\">\r\n    <!--\r\n        Touch target 36×36 pill (Figma matcha/checkbox spec). Wraps:\r\n        - Native <input> sr-only (semântica + a11y, sem visual próprio)\r\n        - 3 SVG glyphs 24×24 trocando por estado (outline / checked / indeterminate)\r\n        Ícones inline temporários — migrar pra <matcha-icon name=\"check-box-*\">\r\n        quando adicionados ao Figma DSV3 (ainda não estão no figma-icons.ts).\r\n    -->\r\n    <span class=\"matcha-checkbox-container\" matchaRipple>\r\n        <input #input\r\n               type=\"checkbox\"\r\n               class=\"matcha-checkbox-input\"\r\n               [id]=\"inputId\"\r\n               [checked]=\"checked()\"\r\n               [disabled]=\"effectiveDisabled()\"\r\n               [required]=\"required()\"\r\n               [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n               [attr.aria-invalid]=\"error() ? 'true' : null\"\r\n               [attr.aria-readonly]=\"readonly() ? 'true' : null\"\r\n               [indeterminate]=\"indeterminate()\"\r\n               (click)=\"onInputClick($event)\"\r\n               (change)=\"onInputChange($event)\">\r\n\r\n        @if (indeterminate()) {\r\n            <!-- Indeterminate state — filled glyph com dash (sobrepõe checked) -->\r\n            <svg class=\"matcha-checkbox-icon matcha-checkbox-icon--indeterminate\"\r\n                 viewBox=\"0 0 24 24\"\r\n                 fill=\"currentColor\"\r\n                 aria-hidden=\"true\">\r\n                <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"/>\r\n            </svg>\r\n        } @else if (checked()) {\r\n            <!-- Checked state — filled glyph com check (cor da prop) -->\r\n            <svg class=\"matcha-checkbox-icon matcha-checkbox-icon--checked\"\r\n                 viewBox=\"0 0 24 24\"\r\n                 fill=\"currentColor\"\r\n                 aria-hidden=\"true\">\r\n                <path d=\"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"/>\r\n            </svg>\r\n        } @else {\r\n            <!-- Off state (unchecked) — outline glyph cinza -->\r\n            <svg class=\"matcha-checkbox-icon matcha-checkbox-icon--outline\"\r\n                 viewBox=\"0 0 24 24\"\r\n                 fill=\"currentColor\"\r\n                 aria-hidden=\"true\">\r\n                <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\"/>\r\n            </svg>\r\n        }\r\n    </span>\r\n\r\n    <!--\r\n        Label column (Figma matcha/checkbox): padding 8 0 0, gap 2px.\r\n        - Label  (12/16 Regular)            — sempre visível\r\n        - Description (11/14 Regular cinza) — texto de apoio opcional\r\n        - Hint text   (11/14 Regular danger) — só quando error=true\r\n    -->\r\n    <span class=\"matcha-checkbox-text\">\r\n        <span class=\"matcha-checkbox-label\">\r\n            <ng-content></ng-content>\r\n            @if (required()) {\r\n                <span class=\"matcha-checkbox-required\" aria-hidden=\"true\">*</span>\r\n            }\r\n        </span>\r\n        @if (description()) {\r\n            <span class=\"matcha-checkbox-description\" [id]=\"descId\">{{ description() }}</span>\r\n        }\r\n        @if (hint() && error()) {\r\n            <span class=\"matcha-checkbox-hint\" [id]=\"hintId\">{{ hint() }}</span>\r\n        }\r\n    </span>\r\n</label>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\r\nimport { MatchaCheckboxComponent } from './checkbox/checkbox.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaCheckboxComponent, MatchaRippleModule],\r\n    exports: [\r\n        MatchaCheckboxComponent,\r\n    ],\r\n})\r\nexport class MatchaCheckboxModule {}\r\n","import {\r\n    Component, HostBinding, HostListener, ElementRef, Inject, Optional,\r\n    ChangeDetectionStrategy, input, output, computed, signal, booleanAttribute, inject,\r\n    AfterViewInit, OnDestroy,\r\n} from '@angular/core';\r\nimport { MatchaOptionParent, MATCHA_OPTION_PARENT } from './matcha-option-parent.interface';\r\nimport { MatchaCheckboxModule } from '../matcha-checkbox/checkbox.module';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-option',\r\n    template: `\r\n        @if (multipleMode()) {\r\n            <span class=\"matcha-option-checkbox\">\r\n                <matcha-checkbox [checked]=\"checkedSig()\" tabindex=\"-1\"></matcha-checkbox>\r\n            </span>\r\n        }\r\n        <ng-content />\r\n    `,\r\n    host: {\r\n        class: 'matcha-option',\r\n        role: 'option',\r\n        tabindex: '0',\r\n    },\r\n    standalone: true,\r\n    imports: [MatchaCheckboxModule],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaOptionComponent implements AfterViewInit, OnDestroy {\r\n    /** Seq global pra `id`s estáveis — permite `aria-activedescendant` no combobox. */\r\n    private static uidSeq = 0;\r\n\r\n    // ── Signal inputs ─────────────────────────────────────────────────────\r\n    value    = input<unknown>(undefined);\r\n    color    = input<'default' | 'danger' | null>('default');\r\n    disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /**\r\n     * Modo múltiplo: renderiza um matcha-checkbox (puramente visual) à esquerda\r\n     * do conteúdo. Quando `null` (default), é derivado do componente pai\r\n     * (matcha-select-multiple via MATCHA_OPTION_PARENT) — assim o checkbox\r\n     * aparece já no primeiro render, mesmo com opções reprojetadas async.\r\n     * Usado por matcha-select-multiple.\r\n     */\r\n    multiple = input<boolean | null>(null);\r\n\r\n    /** Resolve o modo múltiplo: input explícito tem prioridade; senão, deriva do parent. */\r\n    protected multipleMode = computed(() => {\r\n        const m = this.multiple();\r\n        return m !== null ? !!m : !!this.parent?.multipleMode;\r\n    });\r\n\r\n    /**\r\n     * Estado \"marcado\" do checkbox em modo múltiplo. Signal (não getter) pra\r\n     * disparar CD da option mesmo sob OnPush quando o parent atualiza a seleção.\r\n     */\r\n    protected checkedSig = signal(false);\r\n\r\n    /** Id único por option, exposto via `aria-activedescendant` pelo parent combobox. */\r\n    @HostBinding('attr.id') readonly optionId = `matcha-option-${++MatchaOptionComponent.uidSeq}`;\r\n\r\n    // ── Signal outputs ────────────────────────────────────────────────────\r\n    optionClick  = output<unknown>();\r\n    optionSelect = output<MatchaOptionComponent>();\r\n\r\n    // ── Host bindings reativos ────────────────────────────────────────────\r\n    protected isDanger = computed(() => this.color() === 'danger');\r\n    @HostBinding('class.matcha-option--danger')  get dangerClass()   { return this.isDanger(); }\r\n    @HostBinding('attr.disabled')                get disabledAttr()  { return this.disabled() ? 'true' : null; }\r\n    @HostBinding('class.matcha-option-disabled') get disabledClass() { return this.disabled(); }\r\n    @HostBinding('class.matcha-option-multiple') get multipleClass() { return this.multipleMode(); }\r\n\r\n    /**\r\n     * Estado \"selecionado/highlighted\" — mutável pelo parent (matcha-select,\r\n     * matcha-autocomplete) pra refletir focus/active no dropdown. Não é @Input\r\n     * porque o parent controla imperativamente; two-way bind não faz sentido.\r\n     */\r\n    @HostBinding('attr.aria-selected') selected = false;\r\n\r\n    /**\r\n     * True após ngOnDestroy — usado por matcha-select/autocomplete pra filtrar\r\n     * options órfãs antes de chamar `.subscribe()` no output (que dispara NG0953\r\n     * em OutputRef de componente destroyed).\r\n     */\r\n    isDestroyed = false;\r\n\r\n    private elRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n    constructor(\r\n        @Optional() @Inject(MATCHA_OPTION_PARENT) private parent: MatchaOptionParent | null,\r\n    ) {}\r\n\r\n    ngAfterViewInit(): void {\r\n        // Auto-registra no parent. 2 caminhos:\r\n        //\r\n        // 1) DI path (parent != null): parent é matcha-select / matcha-field\r\n        //    via MATCHA_OPTION_PARENT token. Chama parent.registerOption?.()\r\n        //    se disponivel (matcha-select usa ContentChildren tradicional pra\r\n        //    direct children; matcha-field forwarda pro autocomplete interno\r\n        //    via dispatchEvent porque autocomplete usa CustomEvent listener).\r\n        //\r\n        // 2) Fallback bubble (parent == null): wrappers que NAO proveem\r\n        //    MATCHA_OPTION_PARENT. Defer via microtask pra garantir que\r\n        //    listener ja tenha sido attachado upstream.\r\n        if (this.parent) {\r\n            // Defer to ensure autocomplete viewChild is resolved (matcha-field).\r\n            Promise.resolve().then(() => this.parent?.registerOption?.(this));\r\n        } else {\r\n            Promise.resolve().then(() => {\r\n                this.elRef.nativeElement.dispatchEvent(new CustomEvent('matcha-option-register', {\r\n                    detail: { option: this },\r\n                    bubbles: true,\r\n                }));\r\n            });\r\n        }\r\n\r\n        // Modo múltiplo: reflete o estado \"marcado\" já no primeiro render,\r\n        // derivando do parent (select-multiple) quando disponível.\r\n        if (this.multipleMode()) {\r\n            this.checkedSig.set(this.computeChecked());\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.isDestroyed = true;\r\n        if (this.parent) {\r\n            this.parent.unregisterOption?.(this);\r\n        } else {\r\n            this.elRef.nativeElement.dispatchEvent(new CustomEvent('matcha-option-unregister', {\r\n                detail: { option: this },\r\n                bubbles: true,\r\n            }));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Atualiza o estado marcado do checkbox (modo múltiplo). Chamado\r\n     * imperativamente pelo matcha-select-multiple ao sincronizar a seleção.\r\n     */\r\n    setMultipleChecked(checked: boolean): void {\r\n        this.checkedSig.set(checked);\r\n    }\r\n\r\n    private computeChecked(): boolean {\r\n        if (this.parent && typeof this.parent.isSelected === 'function') {\r\n            return this.parent.isSelected(this.value());\r\n        }\r\n        return this.selected;\r\n    }\r\n\r\n    @HostListener('click')\r\n    onClick(): void {\r\n        if (this.disabled()) return;\r\n\r\n        // Canonical path: emitir `optionSelect`. O parent (matcha-select,\r\n        // matcha-autocomplete, matcha-select-multiple) escuta via\r\n        // subscribeToOptionOutputs(QueryList). Por que não chamar\r\n        // `parent.selectOption(this)` também: em multi-mode, selectOption faz\r\n        // toggle — dispatch duplo = net-zero. Fallback `findParentAndSelect()`\r\n        // roda só quando não há parent DI (caminho DOM-traversal via CustomEvent).\r\n        this.optionSelect.emit(this);\r\n        this.optionClick.emit(this.value());\r\n\r\n        if (!this.parent) this.findParentAndSelect();\r\n    }\r\n\r\n    @HostListener('keydown', ['$event'])\r\n    onKeydown(ev: KeyboardEvent): void {\r\n        if (ev.key === 'Enter' || ev.key === ' ') {\r\n            ev.preventDefault();\r\n            this.onClick();\r\n        }\r\n    }\r\n\r\n    get nativeElement(): HTMLElement {\r\n        return this.elRef.nativeElement;\r\n    }\r\n\r\n    getTextContent(): string {\r\n        return this.elRef.nativeElement.textContent?.trim() || '';\r\n    }\r\n\r\n    private findParentAndSelect(): void {\r\n        const el = this.elRef.nativeElement;\r\n        const target = el.closest('matcha-autocomplete, matcha-select');\r\n        if (!target) return;\r\n        target.dispatchEvent(new CustomEvent('matcha-option-selected', {\r\n            detail: { option: this, value: this.value() },\r\n            bubbles: true,\r\n        }));\r\n    }\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ElementRef,\r\n    Input,\r\n    NgZone,\r\n    Renderer2,\r\n    booleanAttribute,\r\n    effect,\r\n    inject,\r\n    input,\r\n    model,\r\n    numberAttribute,\r\n    output,\r\n    signal,\r\n    viewChild,\r\n} from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\nexport interface PanelPosition {\r\n    top: number;\r\n    left: number;\r\n    width: number;\r\n    maxHeight?: number;\r\n    actualPlacement: 'top' | 'bottom';\r\n}\r\n\r\nexport type PanelPlacement = 'bottom' | 'top' | 'auto' | 'side';\r\nexport type PanelWidthMode = 'fixed' | 'max-content';\r\nexport type PanelRole = 'listbox' | 'menu' | 'dialog' | 'group' | 'none';\r\nexport type PanelAutoFocus = 'none' | 'first';\r\n\r\n/** Selector de elementos focáveis dentro do painel — keyboard nav e auto-focus. */\r\nconst FOCUSABLE_SELECTOR = [\r\n    'matcha-option:not([disabled]):not([aria-disabled=\"true\"])',\r\n    '[role=\"option\"]:not([aria-disabled=\"true\"]):not([tabindex=\"-1\"])',\r\n    '[role=\"menuitem\"]:not([aria-disabled=\"true\"]):not([tabindex=\"-1\"])',\r\n    'button:not([disabled]):not([tabindex=\"-1\"])',\r\n    'a[href]:not([tabindex=\"-1\"])',\r\n    'input:not([disabled]):not([tabindex=\"-1\"])',\r\n    'select:not([disabled]):not([tabindex=\"-1\"])',\r\n    'textarea:not([disabled]):not([tabindex=\"-1\"])',\r\n    '[tabindex]:not([tabindex=\"-1\"]):not([disabled])',\r\n].join(',');\r\n\r\nlet _idCounter = 0;\r\n\r\n/**\r\n * matcha-panel — Container flutuante genérico (Figma DSV3 14276:67).\r\n *\r\n * Base para dropdown menu, select, popover e command palette. Posicionamento\r\n * automático (top/bottom/auto/side), portal opcional ao body, click-outside,\r\n * scroll re-position, ESC fecha, focus management e keyboard navigation.\r\n *\r\n * Uso típico — sempre via componente envólucro (matcha-select, matcha-menu, etc.).\r\n * Para uso direto:\r\n *   <button #t (click)=\"p.togglePanel()\">Abrir</button>\r\n *   <matcha-panel #p [triggerElement]=\"t\">\r\n *     <matcha-option>Item 1</matcha-option>\r\n *   </matcha-panel>\r\n *\r\n * A11y: o trigger deve declarar [attr.aria-expanded]=\"panel.open\" e\r\n * [attr.aria-controls]=\"panel.panelId\". O panel já gerencia ESC, focus\r\n * automático no primeiro item e devolução de foco ao trigger ao fechar.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-panel',\r\n    standalone: true,\r\n    template: `\r\n    <div #overlayEl class=\"matcha-panel-overlay\" [hidden]=\"!isOpenSig()\">\r\n        <div #pane class=\"matcha-panel-pane\" [style.visibility]=\"isPositionedSig() ? 'visible' : 'hidden'\">\r\n            <div #panel\r\n                 class=\"matcha-panel\"\r\n                 [class.matcha-panel-top]=\"actualPlacementSig() === 'top'\"\r\n                 [class.matcha-panel-bottom]=\"actualPlacementSig() === 'bottom'\"\r\n                 [class.matcha-panel-open]=\"isOpenSig()\"\r\n                 [style.max-height.px]=\"panePositionSig().maxHeight\"\r\n                 [attr.id]=\"panelId\"\r\n                 [attr.role]=\"role() === 'none' ? null : role()\"\r\n                 [attr.aria-expanded]=\"isOpenSig()\"\r\n                 [attr.aria-hidden]=\"!isOpenSig()\"\r\n                 (mousedown)=\"$event.stopPropagation()\"\r\n                 (keydown)=\"onPanelKeydown($event)\">\r\n                <ng-content></ng-content>\r\n            </div>\r\n        </div>\r\n    </div>\r\n  `,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[attr.data-panel-open]': 'isOpenSig() ? \"\" : null',\r\n    },\r\n})\r\nexport class MatchaPanelComponent {\r\n    /** ID único — use no aria-controls do trigger. */\r\n    readonly panelId = `matcha-panel-${++_idCounter}`;\r\n\r\n    // ── Inputs ──────────────────────────────────────────────────────────\r\n    /**\r\n     * Elemento âncora — o painel se posiciona em relação a ele.\r\n     * Use binding `[triggerElement]=\"trigger\"` ou método `attachTo(el)`.\r\n     */\r\n    triggerElement = model<HTMLElement | undefined>(undefined);\r\n\r\n    /** Direção preferencial. `auto` escolhe entre top/bottom; `side` abre lateralmente (submenus). */\r\n    placement = input<PanelPlacement>('auto');\r\n\r\n    /** Altura máxima em px — acima disso o conteúdo entra em scroll vertical. */\r\n    maxHeight = input(280, { transform: numberAttribute });\r\n\r\n    /** Largura mínima em px — limite inferior em ambos os widthModes. */\r\n    minWidth = input(240, { transform: numberAttribute });\r\n\r\n    /** `fixed` ajusta ao trigger; `max-content` adapta ao conteúdo. */\r\n    widthMode = input<PanelWidthMode>('fixed');\r\n\r\n    /** Espaço (gap) em px entre o trigger e o painel. */\r\n    offset = input(4, { transform: numberAttribute });\r\n\r\n    /** Margem mínima em px entre o painel e a borda da viewport. */\r\n    viewportMargin = input(10, { transform: numberAttribute });\r\n\r\n    /** Move o overlay para o `<body>` ao abrir, escapando overflow:hidden de pais. */\r\n    portalToBody = input(false, { transform: booleanAttribute });\r\n\r\n    /** @deprecated Compat — não tem efeito visual nesta versão (use matcha-modal/matcha-drawer para backdrop). */\r\n    hasOverlay = input(true, { transform: booleanAttribute });\r\n\r\n    /** Elementos considerados \"dentro\" do painel para click-outside (ex.: triggers de submenus). */\r\n    ignoreClickOutsideElements = input<HTMLElement[]>([]);\r\n\r\n    /** Não dispara o evento global que fecha outros painéis (use em submenus). */\r\n    suppressGlobalClose = input(false, { transform: booleanAttribute });\r\n\r\n    /** Role ARIA do conteúdo. `listbox` para select-like, `menu` para dropdown, `dialog` para popover. */\r\n    role = input<PanelRole>('listbox');\r\n\r\n    /** Fecha o painel ao pressionar ESC. */\r\n    closeOnEscape = input(true, { transform: booleanAttribute });\r\n\r\n    /** Comportamento de foco automático ao abrir. `first` foca o primeiro item focável. */\r\n    autoFocus = input<PanelAutoFocus>('first');\r\n\r\n    // ── Outputs ─────────────────────────────────────────────────────────\r\n    opened = output<void>();\r\n    closed = output<void>();\r\n\r\n    // ── ViewChildren ────────────────────────────────────────────────────\r\n    private readonly panelRef   = viewChild<ElementRef<HTMLElement>>('panel');\r\n    private readonly paneRef    = viewChild<ElementRef<HTMLElement>>('pane');\r\n    private readonly overlayRef = viewChild<ElementRef<HTMLElement>>('overlayEl');\r\n\r\n    // ── Internal state (signals) ────────────────────────────────────────\r\n    /** @internal — exposto pra template binding via class field (não privado por causa do template). */\r\n    isOpenSig = signal(false);\r\n    /** @internal */\r\n    isPositionedSig = signal(false);\r\n    /** @internal */\r\n    panePositionSig = signal({ top: 0, left: 0, width: 0, maxHeight: 280 });\r\n    /** @internal */\r\n    actualPlacementSig = signal<'top' | 'bottom'>('bottom');\r\n\r\n    // Read-only public access\r\n    readonly isPositioned = this.isPositionedSig.asReadonly();\r\n    readonly panePosition = this.panePositionSig.asReadonly();\r\n    readonly actualPlacement = this.actualPlacementSig.asReadonly();\r\n\r\n    /**\r\n     * Estado de abertura. Aceita binding `[open]=\"value\"` para abrir/fechar\r\n     * declarativamente. Para mutar imperativamente, prefira openPanel/closePanel/togglePanel.\r\n     */\r\n    @Input({ alias: 'open', transform: booleanAttribute })\r\n    set _openInput(value: boolean) {\r\n        if (value && !this.isOpenSig()) this.openPanel();\r\n        else if (!value && this.isOpenSig()) this.closePanel();\r\n    }\r\n\r\n    /** Estado de abertura (boolean) — leitura externa (`panel.open`). */\r\n    get open(): boolean { return this.isOpenSig(); }\r\n\r\n    /** Elemento do pane (wrapper de posicionamento) — usado por consumidores como matcha-menu para registrar submenus em ignoreClickOutside. */\r\n    get paneElement(): HTMLElement | undefined {\r\n        return this.paneRef()?.nativeElement;\r\n    }\r\n\r\n    /** Elemento do panel interno (conteúdo scrollável) — consumidores que precisam escutar scroll/resize dele. */\r\n    get panelElement(): HTMLElement | undefined {\r\n        return this.panelRef()?.nativeElement;\r\n    }\r\n\r\n    // ── DI ──────────────────────────────────────────────────────────────\r\n    private readonly renderer = inject(Renderer2);\r\n    private readonly ngZone = inject(NgZone);\r\n\r\n    // ── Internal state ──────────────────────────────────────────────────\r\n    private originalParent?: Node;\r\n    private clickListener?: () => void;\r\n    private globalListener?: () => void;\r\n    private triggerForRefocus?: HTMLElement;\r\n    private resizeObserver?: ResizeObserver;\r\n    /** Guarda pra nao registrar o listener de scroll duas vezes nem remover o que nao existe. */\r\n    private scrollListenerAttached = false;\r\n\r\n    constructor() {\r\n        // Listener global de fechamento de outros painéis\r\n        this.globalListener = this.renderer.listen('document', 'matcha-panel-open-global', (event: any) => {\r\n            if (event.detail?.source !== this && this.isOpenSig()) {\r\n                this.closePanel();\r\n            }\r\n        });\r\n\r\n        // Click-outside (composedPath para imunidade a re-renders durante handler)\r\n        this.clickListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\r\n            if (!this.isOpenSig()) return;\r\n\r\n            const path = event.composedPath();\r\n            const panelEl = this.panelRef()?.nativeElement;\r\n            const trigger = this.triggerElement();\r\n            const isInsidePanel = !!panelEl && path.includes(panelEl);\r\n            const isInsideTrigger = !!trigger && path.includes(trigger);\r\n            const isInsideIgnored = this.ignoreClickOutsideElements().some(el => !!el && path.includes(el));\r\n\r\n            if (!isInsidePanel && !isInsideTrigger && !isInsideIgnored) {\r\n                this.closePanel();\r\n            }\r\n        });\r\n\r\n        // O listener de scroll NAO fica aqui — ver `attachScrollListener`, chamado no open.\r\n        //\r\n        // O de resize fica: resize nao e evento continuo, entao um ciclo por redimensionamento nao\r\n        // pesa. Fecha o painel, evitando posicionamento inconsistente em mudanca de viewport.\r\n        window.addEventListener('resize', this.resizeListener);\r\n\r\n        // Re-posicionar quando inputs relevantes mudam (substitui ngOnChanges)\r\n        effect(() => {\r\n            this.triggerElement();\r\n            this.placement();\r\n            this.widthMode();\r\n            this.minWidth();\r\n            this.maxHeight();\r\n            this.offset();\r\n            if (this.isOpenSig()) {\r\n                queueMicrotask(() => this.updatePosition());\r\n            }\r\n        });\r\n\r\n        // Cleanup on destroy\r\n        inject(DestroyRef).onDestroy(() => {\r\n            const overlay = this.overlayRef()?.nativeElement;\r\n            if (this.portalToBody() && overlay && overlay.parentNode === document.body) {\r\n                this.renderer.removeChild(document.body, overlay);\r\n            }\r\n            this.clickListener?.();\r\n            this.globalListener?.();\r\n            this.resizeObserver?.disconnect();\r\n            this.detachScrollListener();\r\n            window.removeEventListener('resize', this.resizeListener);\r\n        });\r\n    }\r\n\r\n    // ── Listeners (window) ──────────────────────────────────────────────\r\n    private readonly scrollListener = () => {\r\n        if (!this.isOpenSig()) return;\r\n        this.updatePosition();\r\n    };\r\n\r\n    private readonly resizeListener = () => {\r\n        if (this.isOpenSig()) this.closePanel();\r\n    };\r\n\r\n    /**\r\n     * Passa a acompanhar a rolagem — so enquanto o painel esta ABERTO.\r\n     *\r\n     * Antes isto ficava no construtor, valendo pra toda instancia. Painel fechado nao fazia\r\n     * trabalho nenhum (o handler sai no `isOpenSig()`), mas o zone.js ja tinha convertido cada\r\n     * evento de rolagem numa tarefa Angular, e o ciclo de change detection acontecia do mesmo\r\n     * jeito. Numa tela com muitos menus isso multiplica: 88 paineis mediram 1573ms de pior frame\r\n     * ao rolar, contra 224ms com 10.\r\n     *\r\n     * `capture: true` porque o painel precisa reagir a rolagem de QUALQUER container, nao so da\r\n     * pagina. Fora da zona porque reposicionar e trabalho de layout — `updatePosition` escreve\r\n     * signals, e escrita de signal agenda o proprio refresh.\r\n     */\r\n    private attachScrollListener(): void {\r\n        if (this.scrollListenerAttached) return;\r\n\r\n        this.scrollListenerAttached = true;\r\n        this.ngZone.runOutsideAngular(() => {\r\n            window.addEventListener('scroll', this.scrollListener, true);\r\n        });\r\n    }\r\n\r\n    /** Idempotente: o painel pode ser destruido fechado, sem nunca ter aberto. */\r\n    private detachScrollListener(): void {\r\n        if (!this.scrollListenerAttached) return;\r\n\r\n        this.scrollListenerAttached = false;\r\n        window.removeEventListener('scroll', this.scrollListener, true);\r\n    }\r\n\r\n    // ── Public API ──────────────────────────────────────────────────────\r\n\r\n    /**\r\n     * Anexa o painel a um trigger element. Equivalente a `triggerElement.set(el)`.\r\n     * Mantido para retrocompat com consumidores que calculam o anchor em runtime.\r\n     */\r\n    attachTo(trigger: HTMLElement): void {\r\n        this.triggerElement.set(trigger);\r\n    }\r\n\r\n    /** Abre o painel, calcula posição, dispara `opened`. */\r\n    openPanel(): void {\r\n        if (!this.triggerElement()) return;\r\n\r\n        // Guarda referência do elemento focado para devolver ao fechar\r\n        const activeEl = document.activeElement as HTMLElement | null;\r\n        if (activeEl && activeEl !== document.body) {\r\n            this.triggerForRefocus = activeEl;\r\n        } else {\r\n            this.triggerForRefocus = this.triggerElement() || undefined;\r\n        }\r\n\r\n        this.isOpenSig.set(true);\r\n        this.isPositionedSig.set(false);\r\n        this.attachScrollListener();\r\n\r\n        // Notifica outros painéis a fechar\r\n        if (!this.suppressGlobalClose()) {\r\n            const event = new CustomEvent('matcha-panel-open-global', { detail: { source: this } });\r\n            document.dispatchEvent(event);\r\n        }\r\n\r\n        // Aguarda render do template (signals + OnPush precisa do tick)\r\n        queueMicrotask(() => {\r\n            const overlay = this.overlayRef()?.nativeElement;\r\n\r\n            // Portal to body\r\n            if (this.portalToBody() && overlay) {\r\n                this.originalParent = overlay.parentNode || undefined;\r\n                this.renderer.appendChild(document.body, overlay);\r\n            }\r\n\r\n            this.updatePosition();\r\n            this.isPositionedSig.set(true);\r\n\r\n            // Auto-focus no primeiro item focável\r\n            if (this.autoFocus() === 'first') {\r\n                queueMicrotask(() => this.focusFirstItem());\r\n            }\r\n\r\n            // Observa mudanças de tamanho do conteúdo para reposicionar\r\n            // automaticamente (busca, seleção/deseleção em listas múltiplas),\r\n            // inclusive quando o painel abre para cima — posição depende da altura.\r\n            this.observeContentResize();\r\n\r\n            this.opened.emit();\r\n        });\r\n    }\r\n\r\n    /** Reposiciona o painel sempre que a altura/largura do conteúdo muda. */\r\n    private observeContentResize(): void {\r\n        const panelEl = this.panelRef()?.nativeElement;\r\n        if (typeof ResizeObserver === 'undefined' || !panelEl) return;\r\n        this.resizeObserver?.disconnect();\r\n        let firstCall = true;\r\n        this.resizeObserver = new ResizeObserver(() => {\r\n            // Ignora a primeira notificação (disparada ao iniciar a observação)\r\n            if (firstCall) {\r\n                firstCall = false;\r\n                return;\r\n            }\r\n            if (this.isOpenSig()) this.updatePosition();\r\n        });\r\n        this.resizeObserver.observe(panelEl);\r\n    }\r\n\r\n    /** Fecha o painel, dispara `closed` e devolve foco ao trigger se necessário. */\r\n    closePanel(): void {\r\n        if (!this.isOpenSig()) return;\r\n\r\n        // Devolve overlay ao parent original antes de fechar\r\n        const overlay = this.overlayRef()?.nativeElement;\r\n        this.resetPaneStyles();\r\n        if (this.portalToBody() && overlay && this.originalParent) {\r\n            this.renderer.setAttribute(overlay, 'hidden', '');\r\n            this.renderer.appendChild(this.originalParent, overlay);\r\n            this.originalParent = undefined;\r\n        }\r\n\r\n        this.isOpenSig.set(false);\r\n        this.isPositionedSig.set(false);\r\n        this.detachScrollListener();\r\n        this.resizeObserver?.disconnect();\r\n        this.resizeObserver = undefined;\r\n\r\n        // Devolve foco ao trigger se foco está dentro do painel\r\n        const panelEl = this.panelRef()?.nativeElement;\r\n        const activeEl = document.activeElement as HTMLElement | null;\r\n        if (panelEl && activeEl && panelEl.contains(activeEl) && this.triggerForRefocus) {\r\n            queueMicrotask(() => this.triggerForRefocus?.focus());\r\n        }\r\n        this.triggerForRefocus = undefined;\r\n\r\n        this.closed.emit();\r\n    }\r\n    private resetPaneStyles(): void {\r\n        const pane = this.paneRef()?.nativeElement;\r\n        if (!pane) return;\r\n        const style = pane.style;\r\n        style.transform = '';\r\n        style.width = '';\r\n        style.minWidth = '';\r\n        style.maxWidth = '';\r\n        style.top = '';\r\n        style.left = '';\r\n    }\r\n\r\n    /** Alterna entre aberto e fechado. */\r\n    togglePanel(): void {\r\n        this.isOpenSig() ? this.closePanel() : this.openPanel();\r\n    }\r\n\r\n    /** Recalcula e aplica a posição atual — chamado em scroll e mudanças de input. */\r\n    updatePosition(): void {\r\n        if (!this.triggerElement() || !this.isOpenSig()) return;\r\n\r\n        const position = this.calculatePosition();\r\n        this.actualPlacementSig.set(position.actualPlacement);\r\n\r\n        this.panePositionSig.set({\r\n            top: 0, left: 0,\r\n            width: position.width,\r\n            maxHeight: position.maxHeight || this.maxHeight(),\r\n        });\r\n\r\n        // Aplicação direta no DOM via translate3d (GPU) — zero-lag em scroll\r\n        const pane = this.paneRef()?.nativeElement;\r\n        if (pane) {\r\n            const style = pane.style;\r\n            style.transform = `translate3d(${position.left}px, ${position.top}px, 0)`;\r\n            if (this.widthMode() === 'max-content') {\r\n                style.width = 'max-content';\r\n                style.minWidth = `${this.minWidth()}px`;\r\n                style.maxWidth = `${position.width}px`;\r\n            } else {\r\n                style.width = `${position.width}px`;\r\n                style.minWidth = '';\r\n                style.maxWidth = '';\r\n            }\r\n            style.top = '0px';\r\n            style.left = '0px';\r\n        }\r\n    }\r\n\r\n    // ── Keyboard navigation ─────────────────────────────────────────────\r\n\r\n    onPanelKeydown(event: KeyboardEvent): void {\r\n        switch (event.key) {\r\n            case 'Escape':\r\n                if (this.closeOnEscape()) {\r\n                    event.preventDefault();\r\n                    event.stopPropagation();\r\n                    this.closePanel();\r\n                }\r\n                break;\r\n\r\n            case 'ArrowDown':\r\n                event.preventDefault();\r\n                this.focusSibling(1);\r\n                break;\r\n\r\n            case 'ArrowUp':\r\n                event.preventDefault();\r\n                this.focusSibling(-1);\r\n                break;\r\n\r\n            case 'Home':\r\n                event.preventDefault();\r\n                this.focusEdge('first');\r\n                break;\r\n\r\n            case 'End':\r\n                event.preventDefault();\r\n                this.focusEdge('last');\r\n                break;\r\n        }\r\n    }\r\n\r\n    private getFocusableItems(): HTMLElement[] {\r\n        const panelEl = this.panelRef()?.nativeElement;\r\n        if (!panelEl) return [];\r\n        return Array.from(panelEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR))\r\n            .filter(el => el.offsetParent !== null || el.matches('matcha-option'));\r\n    }\r\n\r\n    private focusFirstItem(): void {\r\n        const items = this.getFocusableItems();\r\n        items[0]?.focus();\r\n    }\r\n\r\n    private focusEdge(edge: 'first' | 'last'): void {\r\n        const items = this.getFocusableItems();\r\n        if (items.length === 0) return;\r\n        (edge === 'first' ? items[0] : items[items.length - 1]).focus();\r\n    }\r\n\r\n    private focusSibling(direction: 1 | -1): void {\r\n        const items = this.getFocusableItems();\r\n        if (items.length === 0) return;\r\n\r\n        const current = document.activeElement as HTMLElement | null;\r\n        const currentIdx = current ? items.indexOf(current) : -1;\r\n        let nextIdx: number;\r\n\r\n        if (currentIdx === -1) {\r\n            nextIdx = direction === 1 ? 0 : items.length - 1;\r\n        } else {\r\n            nextIdx = (currentIdx + direction + items.length) % items.length;\r\n        }\r\n        items[nextIdx]?.focus();\r\n    }\r\n\r\n    // ── Position calculation ────────────────────────────────────────────\r\n\r\n    private calculatePosition(): PanelPosition {\r\n        const trigger = this.triggerElement()!;\r\n        const rect = trigger.getBoundingClientRect();\r\n        const viewportHeight = window.innerHeight;\r\n        const viewportWidth = window.innerWidth;\r\n        const margin = this.viewportMargin();\r\n\r\n        if (this.placement() === 'side') {\r\n            return this.calculateSidePosition(rect, viewportWidth, viewportHeight, margin);\r\n        }\r\n\r\n        let top: number;\r\n        let left: number;\r\n        let width = Math.max(rect.width, this.minWidth());\r\n        let maxHeight = this.maxHeight();\r\n        let placement: 'top' | 'bottom' = 'bottom';\r\n        let actualHeight = 0;\r\n\r\n        if (this.widthMode() === 'max-content') {\r\n            const panelWidth = this.paneRef()?.nativeElement.scrollWidth ?? 0;\r\n            if (panelWidth > width) width = panelWidth;\r\n        }\r\n\r\n        const spaceBelow = viewportHeight - rect.bottom - margin;\r\n        const spaceAbove = rect.top - margin;\r\n        const contentHeight = this.panelRef()?.nativeElement.scrollHeight || this.maxHeight();\r\n        const neededHeight = Math.min(contentHeight, this.maxHeight());\r\n\r\n        if (this.placement() === 'top' || (this.placement() === 'auto' && spaceBelow < neededHeight && spaceAbove > spaceBelow)) {\r\n            placement = 'top';\r\n            maxHeight = Math.min(this.maxHeight(), spaceAbove);\r\n            const measuredContent = this.panelRef()?.nativeElement.offsetHeight || maxHeight;\r\n            actualHeight = Math.min(measuredContent, maxHeight);\r\n            top = rect.top - actualHeight - this.offset();\r\n        } else {\r\n            placement = 'bottom';\r\n            maxHeight = Math.min(this.maxHeight(), spaceBelow);\r\n            top = rect.bottom + this.offset();\r\n        }\r\n\r\n        left = rect.left;\r\n        if (left + width > viewportWidth - margin) {\r\n            left = rect.right - width;\r\n        }\r\n        if (left < margin) {\r\n            left = margin;\r\n            width = Math.min(width, viewportWidth - 2 * margin);\r\n        }\r\n\r\n        // Fallback de segurança\r\n        if (isNaN(top) || isNaN(left)) {\r\n            top = margin * 2;\r\n            left = margin * 2;\r\n        }\r\n\r\n        return { top, left, width, maxHeight, actualPlacement: placement };\r\n    }\r\n\r\n    private calculateSidePosition(rect: DOMRect, viewportWidth: number, viewportHeight: number, margin: number): PanelPosition {\r\n        let width = this.minWidth();\r\n        const maxHeight = this.maxHeight();\r\n\r\n        if (this.widthMode() === 'max-content') {\r\n            const panelWidth = this.paneRef()?.nativeElement.scrollWidth ?? 0;\r\n            if (panelWidth > width) width = panelWidth;\r\n        }\r\n\r\n        const spaceRight = viewportWidth - rect.right - margin;\r\n        const spaceLeft = rect.left - margin;\r\n\r\n        let left: number;\r\n        if (spaceRight >= width) {\r\n            left = rect.right + 2;\r\n        } else if (spaceLeft >= width) {\r\n            left = rect.left - width - 2;\r\n        } else {\r\n            left = spaceRight >= spaceLeft ? rect.right + 2 : rect.left - width - 2;\r\n        }\r\n\r\n        let top = rect.top;\r\n        const contentHeight = this.panelRef()?.nativeElement.offsetHeight || maxHeight;\r\n        if (top + contentHeight > viewportHeight - margin) {\r\n            top = viewportHeight - contentHeight - margin;\r\n        }\r\n        if (top < margin) top = margin;\r\n        if (left + width > viewportWidth - margin) left = viewportWidth - width - margin;\r\n        if (left < margin) {\r\n            left = margin;\r\n            width = Math.min(width, viewportWidth - 2 * margin);\r\n        }\r\n\r\n        return { top, left, width, maxHeight, actualPlacement: 'bottom' };\r\n    }\r\n}\r\n","/**\r\n * matcha-text-normalize — funções puras pra normalização e fuzzy matching.\r\n *\r\n * Uso típico: filtros de autocomplete/select onde o dev quer que\r\n * \"sao paulo\" case com \"São Paulo\", \"SP, SP\" case com \"SP - SP\", e\r\n * pequenos typos sejam tolerados (\"saopalo\" → \"São Paulo\").\r\n *\r\n * Nenhuma dependência externa — leve o suficiente pra não inflar o bundle.\r\n */\r\n\r\n// Regex de diacríticos combinantes (U+0300 a U+036F). Usamos escape explícito\r\n// pra evitar problemas de encoding em editores que não preservam chars literais.\r\nconst COMBINING_DIACRITICS = /[̀-ͯ]/g;\r\n\r\n/**\r\n * Normaliza string pra comparação:\r\n *   - Unicode NFD + remove diacríticos (á → a, ç → c, ñ → n)\r\n *   - Lowercase\r\n *   - Remove pontuação/whitespace (pontos, vírgulas, hífens, espaços, parênteses)\r\n *\r\n * matchaNormalize('São Paulo, SP')  // => 'saopaulosp'\r\n * matchaNormalize('D\\'água')         // => 'dagua'\r\n * matchaNormalize('  hello-world ')  // => 'helloworld'\r\n */\r\nexport function matchaNormalize(s: string | null | undefined): string {\r\n    if (!s) return '';\r\n    return s\r\n        .toString()\r\n        .normalize('NFD')\r\n        .replace(COMBINING_DIACRITICS, '')\r\n        .toLowerCase()\r\n        .replace(/[^\\p{L}\\p{N}]+/gu, '');\r\n}\r\n\r\n/**\r\n * Normaliza preservando espaços (útil pra destacar trechos de match com highlight).\r\n * Apenas fold de diacríticos + lowercase.\r\n *\r\n * matchaNormalizeSoft('São Paulo')  // => 'sao paulo'\r\n */\r\nexport function matchaNormalizeSoft(s: string | null | undefined): string {\r\n    if (!s) return '';\r\n    return s\r\n        .toString()\r\n        .normalize('NFD')\r\n        .replace(COMBINING_DIACRITICS, '')\r\n        .toLowerCase();\r\n}\r\n\r\n/**\r\n * Distância de Levenshtein (edit distance) entre duas strings.\r\n * Complexidade O(n*m). Usado pra fuzzy tolerante a typos.\r\n */\r\nexport function matchaLevenshtein(a: string, b: string): number {\r\n    if (a === b) return 0;\r\n    if (!a.length) return b.length;\r\n    if (!b.length) return a.length;\r\n\r\n    let prev = new Array<number>(b.length + 1);\r\n    let curr = new Array<number>(b.length + 1);\r\n    for (let j = 0; j <= b.length; j++) prev[j] = j;\r\n\r\n    for (let i = 1; i <= a.length; i++) {\r\n        curr[0] = i;\r\n        for (let j = 1; j <= b.length; j++) {\r\n            const cost = a[i - 1] === b[j - 1] ? 0 : 1;\r\n            curr[j] = Math.min(\r\n                curr[j - 1] + 1,          // inserção\r\n                prev[j] + 1,              // remoção\r\n                prev[j - 1] + cost        // substituição\r\n            );\r\n        }\r\n        [prev, curr] = [curr, prev];\r\n    }\r\n    return prev[b.length];\r\n}\r\n\r\n/**\r\n * Testa se todos os chars de `query` aparecem em ordem em `candidate`\r\n * (permitindo gaps). Usado como fallback do substring match.\r\n *\r\n * matchaSubsequenceMatch('sop', 'São Paulo')  // => true\r\n * matchaSubsequenceMatch('xyz', 'São Paulo')  // => false\r\n *\r\n * NOTA: as strings devem estar pré-normalizadas pelo caller (matchaNormalize).\r\n */\r\nexport function matchaSubsequenceMatch(query: string, candidate: string): boolean {\r\n    if (!query) return true;\r\n    let i = 0;\r\n    for (const c of candidate) {\r\n        if (c === query[i]) i++;\r\n        if (i >= query.length) return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Score de relevância de `candidate` para `query`. Retorna 0..1.\r\n *\r\n * Camadas (maior pro menor):\r\n *   1.0   candidate começa com query (prefix match) — rank mais alto\r\n *   0.85  candidate contém query como substring\r\n *   0.65  candidate contém query em subsequence (chars em ordem, com gaps)\r\n *   0.50  Levenshtein distance ≤ tolerance (typo pequeno)\r\n *   0     sem match\r\n *\r\n * Tolerance auto-adaptativa por tamanho:\r\n *   query.length ≤ 3  → tolerance 0 (sem fuzzy pra queries muito curtas, evita falso-positivo)\r\n *   query.length ≤ 6  → tolerance 1\r\n *   query.length ≤ 10 → tolerance 2\r\n *   query.length > 10 → tolerance 3\r\n *\r\n * Empty query retorna 1 (tudo casa).\r\n */\r\nexport function matchaFuzzyScore(\r\n    query: string,\r\n    candidate: string,\r\n    options: { fuzzy?: boolean } = {}\r\n): number {\r\n    const fuzzy = options.fuzzy !== false;  // default true\r\n    const q = matchaNormalize(query);\r\n    const c = matchaNormalize(candidate);\r\n\r\n    if (!q) return 1;\r\n    if (!c) return 0;\r\n\r\n    if (c.startsWith(q)) return 1.0;\r\n    if (c.includes(q))   return 0.85;\r\n    if (matchaSubsequenceMatch(q, c)) return 0.65;\r\n\r\n    if (!fuzzy) return 0;\r\n\r\n    // Fuzzy: Levenshtein com tolerance escalada\r\n    let tolerance: number;\r\n    if (q.length <= 3)       tolerance = 0;\r\n    else if (q.length <= 6)  tolerance = 1;\r\n    else if (q.length <= 10) tolerance = 2;\r\n    else                     tolerance = 3;\r\n\r\n    if (tolerance === 0) return 0;\r\n\r\n    // Pra queries curtas dentro de candidates longos, Levenshtein global pune demais.\r\n    // Janela deslizante: menor distância de q contra substrings de c do mesmo tamanho de q (± tolerance).\r\n    const window = q.length + tolerance;\r\n    let best = Infinity;\r\n    for (let start = 0; start + q.length - tolerance <= c.length; start++) {\r\n        const end = Math.min(c.length, start + window);\r\n        const sub = c.slice(start, end);\r\n        const d = matchaLevenshtein(q, sub);\r\n        if (d < best) best = d;\r\n        if (best === 0) break;\r\n    }\r\n    return best <= tolerance ? 0.50 : 0;\r\n}\r\n\r\n/**\r\n * Filtra + ordena lista por relevância ao query.\r\n * Remove items com score 0. Ordem preservada pra items com score igual.\r\n *\r\n *   matchaFuzzyFilter(cities, 'sao palo', c => c.name)\r\n *   → [{ name: 'São Paulo', ... }, { name: 'São Paulo Bar', ... }]\r\n */\r\nexport function matchaFuzzyFilter<T>(\r\n    items: readonly T[],\r\n    query: string,\r\n    getText: (item: T) => string,\r\n    options: { fuzzy?: boolean } = {}\r\n): T[] {\r\n    if (!query) return [...items];\r\n    const scored = items\r\n        .map((item, idx) => ({ item, idx, score: matchaFuzzyScore(query, getText(item), options) }))\r\n        .filter(x => x.score > 0);\r\n    scored.sort((a, b) => b.score - a.score || a.idx - b.idx);\r\n    return scored.map(x => x.item);\r\n}\r\n\r\n/**\r\n * Envolve o trecho de `text` que casa com `query` em `<mark>...</mark>`.\r\n * Usa match case-insensitive sobre o texto normalizado-soft (preserva caracteres originais).\r\n *\r\n * IMPORTANTE: retorna HTML. O caller precisa bindar via [innerHTML].\r\n * Input `text` é escapado contra XSS antes do wrap.\r\n */\r\nexport function matchaHighlightMatch(text: string, query: string): string {\r\n    if (!text) return '';\r\n    const escaped = escapeHtml(text);\r\n    if (!query) return escaped;\r\n\r\n    const softText  = matchaNormalizeSoft(text);\r\n    const softQuery = matchaNormalizeSoft(query).trim();\r\n    if (!softQuery) return escaped;\r\n\r\n    const idx = softText.indexOf(softQuery);\r\n    if (idx < 0) return escaped;\r\n\r\n    // Mapping 1:1 só vale quando fold não alterou length (caso comum: precomposed chars).\r\n    // Se length diferir (ex.: texto já era NFD decomposto), falha gracefully sem highlight.\r\n    if (softText.length !== text.length) return escaped;\r\n\r\n    const before = escapeHtml(text.slice(0, idx));\r\n    const match  = escapeHtml(text.slice(idx, idx + softQuery.length));\r\n    const after  = escapeHtml(text.slice(idx + softQuery.length));\r\n    return `${before}<mark class=\"matcha-highlight\">${match}</mark>${after}`;\r\n}\r\n\r\nfunction escapeHtml(s: string): string {\r\n    return s\r\n        .replace(/&/g, '&amp;')\r\n        .replace(/</g, '&lt;')\r\n        .replace(/>/g, '&gt;')\r\n        .replace(/\"/g, '&quot;')\r\n        .replace(/'/g, '&#39;');\r\n}\r\n","import {\r\n  Component, ContentChildren, QueryList, ElementRef,\r\n  AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef, ChangeDetectionStrategy,\r\n  Input, Output, EventEmitter, ViewChild, AfterViewInit, HostBinding, forwardRef, OnDestroy,\r\n  booleanAttribute,\r\n} from '@angular/core';\r\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\r\nimport { MatchaOptionParent, MATCHA_OPTION_PARENT } from '../matcha-option/matcha-option-parent.interface';\r\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\r\nimport { matchaNormalize, matchaFuzzyScore, matchaHighlightMatch } from '../matcha-validators/matcha-text-normalize';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * @deprecated Desde a rodada do campo de seleção canônico (2026-08-05). Use\r\n * `<matcha-field type=\"select\">` — para lista fechada, direto; para lista remota/paginada,\r\n * com `searchMode=\"backend\"` + `(search)` + `<matcha-lazyload-data>` como sentinela.\r\n * O select cobre tudo que o autocomplete fazia (busca no painel, valor sempre vindo de\r\n * option, clearable, loading) sem a composição frágil de input + diretiva + painel.\r\n * Este componente será removido quando o painel concluir a migração dos usos existentes.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-autocomplete',\r\n  templateUrl: './matcha-autocomplete.component.html',\r\n  styleUrl: './matcha-autocomplete.component.scss',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [MatchaPanelComponent],\r\n  providers: [\r\n    {\r\n      provide: MATCHA_OPTION_PARENT,\r\n      useExisting: forwardRef(() => MatchaAutocompleteComponent)\r\n    }\r\n  ]\r\n})\r\nexport class MatchaAutocompleteComponent implements AfterContentInit, AfterViewInit, OnDestroy, MatchaOptionParent {\r\n  /**\r\n   * ContentChildren só pega options projetadas DIRETAMENTE em <matcha-autocomplete>.\r\n   * Pra uso via <matcha-field type=\"autocomplete\">, options são content do field e\r\n   * reprojetadas por ele — @ContentChildren não atravessa wrapper, fica vazio.\r\n   * Workaround: options auto-registram via CustomEvent bubble (DOM-based, funciona).\r\n   * `options` getter abaixo merge os dois caminhos.\r\n   */\r\n  @ContentChildren(MatchaOptionComponent, { descendants: true }) contentOptions!: QueryList<MatchaOptionComponent>;\r\n  @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\r\n\r\n  /** Options registradas via DOM event OU chamada direta (uso via matcha-field). Ordem preservada. */\r\n  private registeredOptions: MatchaOptionComponent[] = [];\r\n\r\n  /**\r\n   * Registro DIRETO (sem DOM event) — chamado pelo matcha-field via forward de\r\n   * MATCHA_OPTION_PARENT. Necessário pq quando o panel está portalToBody, as\r\n   * options nascem dentro do panel no `<body>` e o CustomEvent bubble não chega\r\n   * mais no element do autocomplete (que está noutro lugar do DOM tree).\r\n   */\r\n  registerOption(opt: MatchaOptionComponent): void {\r\n    if (this.isDestroyed || !opt || opt.isDestroyed || this.registeredOptions.includes(opt)) return;\r\n    this.registeredOptions.push(opt);\r\n    this.subscribeToOptionOutputs();\r\n    if (this.open) {\r\n      this.resetActive();\r\n      this.cdr.detectChanges();\r\n    }\r\n  }\r\n\r\n  unregisterOption(opt: MatchaOptionComponent): void {\r\n    if (this.isDestroyed) return;\r\n    const i = this.registeredOptions.indexOf(opt);\r\n    if (i < 0) return;\r\n    this.registeredOptions.splice(i, 1);\r\n    this.subscribeToOptionOutputs();\r\n    if (this.open) this.cdr.detectChanges();\r\n  }\r\n\r\n  /** Merge dedup: registered ∪ contentOptions. */\r\n  get options(): MatchaOptionComponent[] {\r\n    const seen = new Set<MatchaOptionComponent>();\r\n    const out: MatchaOptionComponent[] = [];\r\n    this.registeredOptions.forEach(o => { if (!seen.has(o)) { seen.add(o); out.push(o); } });\r\n    this.contentOptions?.forEach(o => { if (!seen.has(o)) { seen.add(o); out.push(o); } });\r\n    return out;\r\n  }\r\n\r\n  /** Seq global pra ids estáveis do listbox (pareados via aria-controls). */\r\n  private static listboxUidSeq = 0;\r\n  readonly listboxId = `matcha-autocomplete-listbox-${++MatchaAutocompleteComponent.listboxUidSeq}`;\r\n\r\n  /** Id da option highlighted pelo teclado — consumido via `aria-activedescendant`. */\r\n  get activeDescendantId(): string | null {\r\n    if (!this.open || this.activeIndex < 0) return null;\r\n    const opt = this.options?.[this.activeIndex];\r\n    return opt?.optionId ?? null;\r\n  }\r\n\r\n  // Armazenar o valor selecionado independente da QueryList\r\n  private selectedValue: any = undefined;\r\n\r\n  // Configurações do painel\r\n  @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\r\n  @Input() maxHeight = 280;\r\n  @Input() minWidth = 160;\r\n  @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n  /**\r\n   * Somente leitura: o valor escolhido continua LEGIVEL e o campo focavel, mas o painel de\r\n   * sugestoes nao abre.\r\n   *\r\n   * Nao e sinonimo de `disabled` — este apaga o contraste, tira o controle da ordem de tabulacao\r\n   * e o esconde do leitor de tela. `disabled` para ACAO INDISPONIVEL, `readonly` para CONTEUDO\r\n   * QUE SE LE.\r\n   *\r\n   * O `readonly` do <input> que dispara este autocomplete e responsabilidade de quem o projeta\r\n   * (o `matcha-form-field` aplica nos inputs projetados). O que este componente controla e o\r\n   * PAINEL: sem esta guarda, o campo em readonly nativo ainda abriria a lista ao receber foco.\r\n   */\r\n  @Input({ transform: booleanAttribute }) readonly = false;\r\n\r\n  /** Reflete no host, para o tema e para a inferencia do matcha-form-field. */\r\n  @HostBinding('attr.readonly')\r\n  get readonlyAttr(): string | null {\r\n    return this.readonly ? '' : null;\r\n  }\r\n\r\n  /**\r\n   * HostBinding para adicionar classe disabled no elemento raiz do componente\r\n   * Isso permite que o matcha-form-field detecte o estado disabled\r\n   */\r\n  @HostBinding('class.matcha-autocomplete-disabled')\r\n  get hostDisabledClass(): boolean {\r\n    return this.disabled;\r\n  }\r\n\r\n  /**\r\n   * HostBinding para adicionar atributo disabled no elemento raiz do componente\r\n   * Isso permite que o matcha-form-field detecte o estado disabled\r\n   */\r\n  @HostBinding('attr.disabled')\r\n  get hostDisabledAttr(): string | null {\r\n    return this.disabled ? '' : null;\r\n  }\r\n\r\n  // Funcionalidades avançadas\r\n  @Input({ transform: booleanAttribute }) autoSelectOnBlur = false;\r\n  @Input() displayWith: ((value: any) => string | null) | null = null;\r\n  @Input() displayProperty: string = 'name';\r\n  @Input({ transform: booleanAttribute }) showClearButton = false;\r\n  @Input() clearButtonIcon: string = 'action_close';\r\n  @Input() clearButtonAriaLabel: string = 'Limpar seleção';\r\n\r\n  // ── Filtro built-in (default on) — UX world-class: acento/pontuação/case-insensitive + fuzzy ──\r\n  /** Filtra options automaticamente ao digitar no input (normalize + fuzzy). */\r\n  @Input({ transform: booleanAttribute }) autoFilter = true;\r\n  /** Tolera typos via Levenshtein (ex: \"saopalo\" → \"São Paulo\"). */\r\n  @Input({ transform: booleanAttribute }) fuzzy = true;\r\n  /** @deprecated NO-OP hoje. `matchaHighlightMatch()` existe e é testada\r\n   *  (matcha-validators/matcha-text-normalize.ts), mas nunca é chamada aqui: envolver o\r\n   *  trecho casado em `<mark>` exige um caminho de `[innerHTML]` no `matcha-option`, que\r\n   *  este componente não tem — `applyFilter` só mexe em `display` e na ordem do DOM, nunca\r\n   *  no conteúdo textual da option. O input segue aceito para não quebrar templates, mas\r\n   *  ligar/desligar não muda nada na renderização. */\r\n  @Input({ transform: booleanAttribute }) highlight = true;\r\n  /** Texto quando filtro zera resultados. */\r\n  @Input() emptyText: string = 'Nenhum resultado';\r\n\r\n  /** Feedback de async search: quando `true`, o painel renderiza \"Carregando...\"\r\n   *  em vez das options. Use enquanto o dev busca dados no servidor. */\r\n  @Input({ transform: booleanAttribute }) loading = false;\r\n  /** Texto do estado de loading. */\r\n  @Input() loadingText: string = 'Carregando...';\r\n\r\n  @Output() opened = new EventEmitter<void>();\r\n  @Output() closed = new EventEmitter<void>();\r\n  @Output() cleared = new EventEmitter<void>();\r\n  @Output() autoSelected = new EventEmitter<any>();\r\n  @Output() optionSelected = new EventEmitter<any>();\r\n  @Output() openedChange = new EventEmitter<boolean>();\r\n\r\n  open = false;\r\n  triggerElement?: HTMLElement;\r\n  private activeIndex = -1;\r\n\r\n  constructor(\r\n    public elRef: ElementRef,\r\n    private renderer: Renderer2,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    // Auto-register listeners no ctor — ativos ANTES do ngOnInit das options\r\n    // projetadas via matcha-field (dispatchEvent em microtask após ngAfterViewInit).\r\n    this.attachOptionRegisterListeners();\r\n  }\r\n\r\n  private attachOptionRegisterListeners(): void {\r\n    const el = this.elRef.nativeElement as HTMLElement;\r\n    el.addEventListener('matcha-option-register', (evt: Event) => {\r\n      const ce = evt as CustomEvent;\r\n      const opt = ce.detail?.option as MatchaOptionComponent | undefined;\r\n      if (!opt || this.registeredOptions.includes(opt)) return;\r\n      this.registeredOptions.push(opt);\r\n      // Conecta sub do optionSelect output — sem isso, click na option não\r\n      // chama selectOption (mesmo padrão de matcha-select.onOptionsListChanged).\r\n      // contentOptions.changes não dispara pra options projetadas via wrapper\r\n      // (matcha-field), então o subscribe inicial em ngAfterContentInit rodou\r\n      // com lista vazia e nada mais conecta.\r\n      this.subscribeToOptionOutputs();\r\n      if (this.open) {\r\n        this.resetActive();\r\n        this.cdr.detectChanges();\r\n      }\r\n      evt.stopPropagation();\r\n    });\r\n    el.addEventListener('matcha-option-unregister', (evt: Event) => {\r\n      const ce = evt as CustomEvent;\r\n      const opt = ce.detail?.option as MatchaOptionComponent | undefined;\r\n      if (!opt) return;\r\n      const i = this.registeredOptions.indexOf(opt);\r\n      if (i >= 0) {\r\n        this.registeredOptions.splice(i, 1);\r\n        this.subscribeToOptionOutputs();\r\n        if (this.open) this.cdr.detectChanges();\r\n      }\r\n      evt.stopPropagation();\r\n    });\r\n  }\r\n\r\n  /** Subscriptions vivas dos `optionSelect` outputs das options. Recriadas\r\n   *  quando QueryList muda. Tipado como `{ unsubscribe }` pra aceitar tanto\r\n   *  rxjs `Subscription` quanto Angular `OutputRefSubscription` (signal outputs). */\r\n  private optionSubs: Array<{ unsubscribe(): void }> = [];\r\n\r\n  ngAfterContentInit() {\r\n    // Quando contentOptions mudarem (uso direto OU options registradas via DOM\r\n    // event), reseta estado E re-subscreve nos outputs. Sem isso, options\r\n    // adicionadas dinamicamente (ex: *ngFor com data assíncrona) ficam órfãs.\r\n    this.subscribeToOptionOutputs();\r\n\r\n    this.contentOptions.changes.subscribe(() => {\r\n      if (this.open) {\r\n        this.resetActive();\r\n        // Options assíncronas (backend search) chegam DEPOIS do filterOptions do\r\n        // input ter rodado com a lista antiga/vazia. Recalcula o empty-state pela\r\n        // contagem real de options visíveis — sem re-filtrar (não esconde resultado\r\n        // de backend). Senão o \"Nenhum resultado\" stale fica junto com os resultados.\r\n        // Ignora options disabled: elas ficam sempre visíveis (sentinela de lazyload,\r\n        // hint), então contá-las faria o empty state nunca aparecer.\r\n        const visibleCount = this.options\r\n          .filter(o => !o.disabled() && o.nativeElement?.style.display !== 'none').length;\r\n        this.setEmptyState(visibleCount === 0);\r\n        this.cdr.detectChanges();\r\n      }\r\n      this.subscribeToOptionOutputs();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Escuta `optionSelect` de cada option diretamente via QueryList — pattern\r\n   * canon idêntico ao matcha-select. Antes: matcha-autocomplete só ouvia o\r\n   * CustomEvent `matcha-option-selected` que é o FALLBACK (só fired quando\r\n   * option NÃO tem parent DI). Como autocomplete PROVIDES MATCHA_OPTION_PARENT,\r\n   * o fallback nunca fired, e o `optionSelect` output ficava órfão → click no\r\n   * mouse não preenchia o input (bug reportado em add-family modal e outros).\r\n   */\r\n  private subscribeToOptionOutputs(): void {\r\n    if (this.isDestroyed) return;\r\n\r\n    // Cleanup das subs anteriores (QueryList mudou)\r\n    this.optionSubs.forEach(s => s.unsubscribe());\r\n    this.optionSubs = [];\r\n\r\n    this.options.forEach(opt => {\r\n      // Skip options já destruídas — `.subscribe()` em OutputRef de componente\r\n      // destroyed dispara NG0953 (acontece em batch destroy durante route change).\r\n      if (opt.isDestroyed) return;\r\n      const sub = opt.optionSelect.subscribe(option => this.selectOption(option));\r\n      this.optionSubs.push(sub);\r\n    });\r\n  }\r\n\r\n  private isDestroyed = false;\r\n\r\n  ngOnDestroy(): void {\r\n    this.isDestroyed = true;\r\n    this.optionSubs.forEach(s => s.unsubscribe());\r\n    this.optionSubs = [];\r\n    this.registeredOptions = [];\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    // Aguarda a view ser inicializada\r\n    this.cdr.detectChanges();\r\n\r\n    // Escuta eventos customizados das opções\r\n    this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\r\n      const { option, value } = event.detail;\r\n      this.selectOption(option);\r\n    });\r\n  }\r\n\r\n  attachTo(input: HTMLElement) {\r\n    this.triggerElement = input;\r\n  }\r\n\r\n\r\n  private notifyDirectiveOfSelection(data: { value: any; displayText?: string }) {\r\n    // Disparar evento customizado para notificar a diretiva sobre a seleção\r\n    const selectionEvent = new CustomEvent('matcha-autocomplete-selection', {\r\n      detail: data,\r\n      bubbles: true\r\n    });\r\n    this.elRef.nativeElement.dispatchEvent(selectionEvent);\r\n  }\r\n\r\n  openPanel() {\r\n    if (this.disabled || this.readonly) return;\r\n\r\n    if (!this.triggerElement) {\r\n      return;\r\n    }\r\n\r\n    this.open = true;\r\n    this.cdr.detectChanges(); // Força detecção de mudanças\r\n\r\n    this.panel.attachTo(this.triggerElement);\r\n    this.panel.openPanel();\r\n    this.resetActive();\r\n    this.opened.emit();\r\n    this.openedChange.emit(true);\r\n  }\r\n\r\n  closePanel() {\r\n    if (!this.open) return;\r\n    this.open = false;\r\n    this.activeIndex = -1;\r\n    this.updateSelectedStates();\r\n    this.panel.closePanel();\r\n    this.closed.emit();\r\n    this.openedChange.emit(false);\r\n  }\r\n\r\n  togglePanel() {\r\n    if (this.disabled || this.readonly) return;\r\n    this.open ? this.closePanel() : this.openPanel();\r\n  }\r\n\r\n\r\n  resetActive() {\r\n    this.activeIndex = -1;\r\n    this.updateSelectedStates();\r\n  }\r\n\r\n  private updateSelectedStates() {\r\n    const items = this.options;\r\n    items.forEach((opt, i) => opt.selected = i === this.activeIndex);\r\n  }\r\n\r\n  highlightNext() {\r\n    const length = this.options.length;\r\n    if (!length) return;\r\n    this.activeIndex = (this.activeIndex + 1) % length;\r\n    this.updateSelectedStates();\r\n    this.scrollToActive();\r\n  }\r\n\r\n  highlightPrevious() {\r\n    const length = this.options.length;\r\n    if (!length) return;\r\n    this.activeIndex = (this.activeIndex - 1 + length) % length;\r\n    this.updateSelectedStates();\r\n    this.scrollToActive();\r\n  }\r\n\r\n  private scrollToActive() {\r\n    const opts = this.options;\r\n    if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\r\n    const host = opts[this.activeIndex].nativeElement;\r\n    if (host && host.scrollIntoView) {\r\n      host.scrollIntoView({ block: 'nearest' });\r\n    }\r\n  }\r\n\r\n  selectActive() {\r\n    if (this.activeIndex < 0) return;\r\n    const opt = this.options[this.activeIndex];\r\n    if (opt?.disabled()) return;\r\n    this.selectOption(opt);\r\n  }\r\n\r\n  // chamado por matcha-option quando clicado\r\n  selectOption(option: MatchaOptionComponent) {\r\n    const optValue = option.value();\r\n\r\n    // Armazenar o valor selecionado\r\n    this.selectedValue = optValue;\r\n\r\n    // Marcar a opção como selecionada diretamente\r\n    option.selected = true;\r\n\r\n    // Marcar todas as outras como não selecionadas\r\n    this.options.forEach(o => {\r\n      if (o !== option) {\r\n        o.selected = false;\r\n      }\r\n    });\r\n\r\n    // Notificar a diretiva sobre a seleção antes de fechar o painel\r\n    const displayText = this.getDisplayValue(optValue);\r\n    this.notifyDirectiveOfSelection({\r\n      value: optValue,\r\n      displayText,\r\n    });\r\n\r\n    // Emitir evento de seleção compatível com MatAutocompleteSelectedEvent\r\n    this.optionSelected.emit({ option: { value: optValue } });\r\n\r\n    // Fechamos painel automaticamente\r\n    this.closePanel();\r\n\r\n    // Forçar detecção de mudanças para garantir que o painel seja fechado\r\n    this.cdr.detectChanges();\r\n\r\n    // indireto: a directive pode ler o value via getSelectedValue()\r\n  }\r\n\r\n  getSelectedValue() {\r\n    // Usar o valor armazenado se disponível, senão buscar na QueryList\r\n    if (this.selectedValue !== undefined) return this.selectedValue;\r\n    const opt = this.options.find(o => o.selected);\r\n    return opt?.value();\r\n  }\r\n\r\n  hasSelection(): boolean {\r\n    return this.selectedValue !== undefined && this.selectedValue !== null;\r\n  }\r\n\r\n  clearSelection(): void {\r\n    this.selectedValue = undefined;\r\n\r\n    // Limpar seleção visual das opções\r\n    this.options.forEach(opt => {\r\n      opt.selected = false;\r\n    });\r\n\r\n    // Notificar diretiva para limpar input\r\n    const clearEvent = new CustomEvent('matcha-autocomplete-clear', {\r\n      bubbles: true\r\n    });\r\n    this.elRef.nativeElement.dispatchEvent(clearEvent);\r\n\r\n    // Emitir evento de limpeza\r\n    this.cleared.emit();\r\n  }\r\n\r\n  /**\r\n   * Obtém o texto de exibição de um valor\r\n   * Usa displayWith se fornecido, senão displayProperty, senão retorna o valor como string\r\n   */\r\n  getDisplayValue(value: any): string {\r\n    if (value == null) return '';\r\n\r\n    if (this.displayWith) {\r\n      return this.displayWith(value) || '';\r\n    }\r\n\r\n    if (typeof value === 'object' && this.displayProperty) {\r\n      return value[this.displayProperty] || '';\r\n    }\r\n\r\n    return String(value);\r\n  }\r\n\r\n  /**\r\n   * Busca uma opção que corresponda ao texto digitado (match EXATO normalizado —\r\n   * ignora acento, case, pontuação/espaço). Usado por autoSelectOnBlur.\r\n   */\r\n  findOptionByText(text: string): MatchaOptionComponent | null {\r\n    const q = matchaNormalize(text);\r\n    if (!q) return null;\r\n    const options = this.options;\r\n    for (const option of options) {\r\n      if (option.disabled()) continue;\r\n      if (matchaNormalize(this.getDisplayValue(option.value())) === q) return option;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * Aplica filtro textual às options: esconde as que não casam e ordena por relevância.\r\n   * Chamado pelo MatchaAutocompleteTriggerDirective quando `autoFilter` está ligado.\r\n   *\r\n   *   query vazia     → mostra todas as options na ordem original\r\n   *   query normalize → score por matchaFuzzyScore (prefix > substring > subseq > Levenshtein)\r\n   *\r\n   * Retorna nº de options visíveis (0 → renderizar empty state).\r\n   */\r\n  /**\r\n   * Busca o container `.matcha-autocomplete-content` via id global.\r\n   * Necessário porque matcha-panel usa `portalToBody=true` — depois de aberto,\r\n   * o conteúdo migra pro body e `this.elRef.querySelector` não enxerga mais.\r\n   * Usando `document.getElementById(listboxId)` o lookup é imune ao portal.\r\n   */\r\n  private getContentContainer(): HTMLElement | null {\r\n    if (typeof document === 'undefined') return null;\r\n    return document.getElementById(this.listboxId);\r\n  }\r\n\r\n  applyFilter(query: string): number {\r\n    const options = this.options;\r\n\r\n    if (!query || !query.trim()) {\r\n      options.forEach(opt => this.renderer.setStyle(opt.nativeElement, 'display', ''));\r\n      this.setEmptyState(false);\r\n      this.resetActive();\r\n      this.cdr.markForCheck();\r\n      return options.length;\r\n    }\r\n\r\n    // Scored pass: calcula relevância + aplica display; ordenação via DOM re-insert.\r\n    const scored = options.map(opt => ({\r\n      opt,\r\n      disabled: opt.disabled(),\r\n      score: opt.disabled() ? 0 : matchaFuzzyScore(query, this.getDisplayValue(opt.value()), { fuzzy: this.fuzzy }),\r\n    }));\r\n\r\n    let visible = 0;\r\n    for (const { opt, disabled, score } of scored) {\r\n      // Options disabled ficam SEMPRE visíveis: são sentinela de matcha-lazyload-data,\r\n      // cabeçalho de seção ou hint — nunca resultado de busca. Esconder no filtro matava\r\n      // o IntersectionObserver do lazyload na primeira letra digitada (a paginação parava).\r\n      // Visibilidade e contagem são decisões separadas: elas aparecem, mas não contam.\r\n      const shouldShow = disabled || score > 0;\r\n      this.renderer.setStyle(opt.nativeElement, 'display', shouldShow ? '' : 'none');\r\n      if (!disabled && score > 0) visible++;\r\n    }\r\n\r\n    // Reorder DOM: resultados por score desc, e as disabled DEPOIS deles — a sentinela do\r\n    // lazyload tem que ser o último nó, senão o observer dispara no início da lista em vez\r\n    // do fim do scroll. (appendChild move o nó se ele já existe.)\r\n    const container = this.getContentContainer();\r\n    if (container) {\r\n      const sortedResults = scored\r\n        .filter(s => !s.disabled && s.score > 0)\r\n        .sort((a, b) => b.score - a.score)\r\n        .map(s => s.opt.nativeElement);\r\n      const trailing = scored.filter(s => s.disabled).map(s => s.opt.nativeElement);\r\n      [...sortedResults, ...trailing].forEach(el => container.appendChild(el));\r\n    }\r\n\r\n    this.setEmptyState(visible === 0);\r\n    this.resetActive();\r\n    this.cdr.markForCheck();\r\n    return visible;\r\n  }\r\n\r\n  private emptyEl: HTMLElement | null = null;\r\n  private setEmptyState(show: boolean): void {\r\n    const container = this.getContentContainer();\r\n    if (!container) return;\r\n    // emptyText vazio → consumer optou por suprimir o empty-state (ex.: já há\r\n    // uma ação de \"criar\" projetada que torna \"Nenhum resultado\" redundante).\r\n    const shouldShow = show && !!this.emptyText?.trim();\r\n    if (shouldShow) {\r\n      if (!this.emptyEl) {\r\n        this.emptyEl = this.renderer.createElement('div');\r\n        this.renderer.addClass(this.emptyEl!, 'matcha-autocomplete-empty');\r\n        this.renderer.setAttribute(this.emptyEl!, 'role', 'status');\r\n        this.renderer.setAttribute(this.emptyEl!, 'aria-live', 'polite');\r\n        this.renderer.appendChild(this.emptyEl!, this.renderer.createText(this.emptyText));\r\n      } else {\r\n        // Re-sincroniza o texto: emptyText pode mudar dinamicamente entre filtros.\r\n        this.emptyEl.textContent = this.emptyText;\r\n      }\r\n      if (!this.emptyEl!.parentNode) this.renderer.appendChild(container, this.emptyEl!);\r\n    } else if (this.emptyEl?.parentNode) {\r\n      this.renderer.removeChild(container, this.emptyEl);\r\n    }\r\n  }\r\n}\r\n","<div class=\"matcha-autocomplete-container\">\r\n    <matcha-panel #panel\r\n                  [open]=\"open\"\r\n                  [placement]=\"placement\"\r\n                  [maxHeight]=\"maxHeight\"\r\n                  [minWidth]=\"minWidth\"\r\n                  [triggerElement]=\"triggerElement\"\r\n                  [portalToBody]=\"true\"\r\n                  (opened)=\"opened.emit()\"\r\n                  (closed)=\"closePanel()\">\r\n        <div class=\"matcha-autocomplete-content\"\r\n             [attr.id]=\"listboxId\"\r\n             [class.is-loading]=\"loading\"\r\n             role=\"listbox\">\r\n            @if (loading) {\r\n                <div class=\"matcha-autocomplete-loading\" role=\"status\" aria-live=\"polite\">\r\n                    <span class=\"matcha-autocomplete-loading-spinner\" aria-hidden=\"true\"></span>\r\n                    <span>{{ loadingText }}</span>\r\n                </div>\r\n            }\r\n            <ng-content></ng-content>\r\n        </div>\r\n    </matcha-panel>\r\n</div>\r\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy, Renderer2, ChangeDetectorRef, Optional, HostBinding, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n/**\r\n * @deprecated Desde a rodada do campo de seleção canônico (2026-08-05). Use\r\n * `<matcha-field type=\"select\">` (com `searchMode=\"backend\"` para lista remota/paginada) —\r\n * ver a nota completa em MatchaAutocompleteComponent. Será removida junto com o componente\r\n * quando o painel concluir a migração.\r\n */\r\n@Directive({\r\n  selector: '[matchaAutocomplete]',\r\n  standalone: true,\r\n})\r\nexport class MatchaAutocompleteTriggerDirective implements AfterViewInit, OnDestroy {\r\n  @Input('matchaAutocomplete') panel!: MatchaAutocompleteComponent;\r\n  @Input() disabled = false;\r\n  private ngControl = inject(NgControl, { optional: true });\r\n\r\n\r\n\r\n  private subs = new Subscription();\r\n  private clearButton?: HTMLElement;\r\n  private chevronIcon?: HTMLElement;\r\n\r\n  constructor(\r\n    private el: ElementRef<HTMLInputElement>,\r\n    private renderer: Renderer2,\r\n    private cdr: ChangeDetectorRef\r\n  ) { }\r\n\r\n  @HostBinding('disabled')\r\n  get hostDisabled(): boolean {\r\n    return !!(this.disabled || this.panel?.disabled || this.ngControl?.control?.disabled);\r\n  }\r\n\r\n  @HostBinding('attr.autocomplete')\r\n  get autocompleteOff(): string {\r\n    return 'off';\r\n  }\r\n\r\n  // ── ARIA combobox (WAI-ARIA 1.2 pattern) ─────────────────────────────────\r\n  @HostBinding('attr.role')              get roleAttr()         { return 'combobox'; }\r\n  @HostBinding('attr.aria-autocomplete') get ariaAutocomplete() { return 'list'; }\r\n  @HostBinding('attr.aria-expanded')     get ariaExpanded()     { return this.panel?.open ? 'true' : 'false'; }\r\n  @HostBinding('attr.aria-haspopup')     get ariaHasPopup()     { return 'listbox'; }\r\n  /** Amarra o input ao listbox do painel enquanto ele está aberto. */\r\n  @HostBinding('attr.aria-controls')         get ariaControls()         { return this.panel?.open ? this.panel.listboxId : null; }\r\n  /** Id da option highlighted pelo teclado — screen reader \"foca\" a option virtualmente. */\r\n  @HostBinding('attr.aria-activedescendant') get ariaActiveDescendant() { return this.panel?.activeDescendantId ?? null; }\r\n\r\n  ngAfterViewInit() {\r\n    if (!this.panel) {\r\n      throw new Error('Você precisa passar uma referência para <matcha-autocomplete> ex: [matchaAutocomplete]=\"auto\"');\r\n    }\r\n    // Usar o matcha-form-field pai se existir (para herdar a largura completa)\r\n    const formField = this.el.nativeElement.closest('matcha-form-field') as HTMLElement | null;\r\n    this.panel.attachTo(formField || this.el.nativeElement);\r\n\r\n    // close panel ao clicar fora - usando click para evitar conflito com focus.\r\n    //\r\n    // ⚠️ Crítico: matcha-panel usa `appendChild(document.body, overlay)` quando\r\n    // portalToBody=true. Nesse caso, `panel.elRef.nativeElement` (host) NÃO\r\n    // contém mais as options renderizadas (elas foram movidas pro body).\r\n    // Conferir `paneElement` (wrapper de positioning, que é o que foi portaled)\r\n    // resolve isso — bug reportado: click numa option fechava o panel ANTES\r\n    // do optionSelect emitir (só teclado funcionava).\r\n    const clickSub = fromEvent(document, 'click').pipe(\r\n      filter((ev: any) => {\r\n        const target = ev.target as Node;\r\n        const isInsideInput = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\r\n        // `panel.elRef` = host de matcha-autocomplete (não-portaled).\r\n        // `panel.panel?.paneElement` = pane real do matcha-panel (PORTALED pro body\r\n        // quando portalToBody=true). Sem checar o pane portaled, click numa option\r\n        // era considerado \"click fora\" → panel fechava antes do optionSelect emitir.\r\n        const isInsidePanelHost = this.panel?.elRef?.nativeElement?.contains?.(target);\r\n        const isInsidePanelPane = this.panel?.panel?.paneElement?.contains?.(target);\r\n        const isInsidePanel = isInsidePanelHost || isInsidePanelPane;\r\n\r\n        // Só fechar se o painel estiver aberto e clicou fora\r\n        return this.panel?.open && !isInsideInput && !isInsidePanel;\r\n      })\r\n    ).subscribe(() => {\r\n      this.panel.closePanel();\r\n    });\r\n\r\n    this.subs.add(clickSub);\r\n\r\n    // Escutar evento de seleção do autocomplete\r\n    const selectionSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe((event: any) => {\r\n      const { value, displayText } = event.detail;\r\n      if (value !== undefined) {\r\n        // Usar displayText se fornecido, senão usar o valor diretamente\r\n        const textToWrite = displayText !== undefined ? displayText : value;\r\n        this.writeValueToInput(textToWrite, value);\r\n      }\r\n    });\r\n\r\n    this.subs.add(selectionSub);\r\n\r\n    // Escutar evento de limpeza\r\n    const clearSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\r\n      this.clearInput();\r\n    });\r\n\r\n    this.subs.add(clearSub);\r\n\r\n    // Criar botão de limpar se necessário\r\n    if (this.panel.showClearButton) {\r\n      this.createClearButton();\r\n\r\n      // Observar mudanças no estado disabled do input\r\n      const input = this.el.nativeElement;\r\n      const observer = new MutationObserver(() => {\r\n        this.updateClearButtonVisibility();\r\n        this.updateChevronVisibility();\r\n      });\r\n      observer.observe(input, {\r\n        attributes: true,\r\n        attributeFilter: ['disabled']\r\n      });\r\n      // Armazenar observer para cleanup\r\n      (this as any)._disabledObserver = observer;\r\n    }\r\n\r\n    // Chevron decorativo dentro de matcha-form-field — afordância visual de\r\n    // \"este campo é um seletor com lista\". Não precisa de click handler porque\r\n    // já clicamos no input (que abre o panel). Esconde quando clearButton tá\r\n    // visível (mesma posição) ou disabled.\r\n    this.createChevronIcon();\r\n\r\n    // Atualiza rotação do chevron quando panel abre/fecha (180° toggle).\r\n    const openedSub = this.panel.opened.subscribe(() => this.updateChevronVisibility());\r\n    const closedSub = this.panel.closed.subscribe(() => this.updateChevronVisibility());\r\n    this.subs.add(openedSub);\r\n    this.subs.add(closedSub);\r\n\r\n    // Observar mudanças na seleção para mostrar/esconder botão\r\n    const selectionChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe(() => {\r\n      this.updateClearButtonVisibility();\r\n    });\r\n\r\n    const clearChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\r\n      this.updateClearButtonVisibility();\r\n    });\r\n\r\n    this.subs.add(selectionChangeSub);\r\n    this.subs.add(clearChangeSub);\r\n\r\n    // Observar mudanças no FormControl para sincronizar o input com displayWith\r\n    if (this.ngControl && this.ngControl.control) {\r\n      // Sincronização inicial: se já houver um valor, aplicar o displayValue imediatamente\r\n      const initialValue = this.ngControl.control.value;\r\n      if (initialValue) {\r\n        // Usamos um pequeno timeout para garantir que o componente do autocomplete (panel)\r\n        // esteja totalmente inicializado e vinculado a este input antes de ler o displayValue\r\n        setTimeout(() => {\r\n          const displayText = this.panel.getDisplayValue(initialValue);\r\n          const input = this.el.nativeElement;\r\n          if (input.value !== displayText) {\r\n            input.value = displayText || '';\r\n          }\r\n          this.updateClearButtonVisibility();\r\n        }, 0);\r\n      }\r\n\r\n      const controlValueSub = this.ngControl.control.valueChanges.subscribe((value) => {\r\n\r\n        // Se o valor é um objeto, usar displayWith para exibir no input\r\n        if (value && typeof value === 'object') {\r\n          const displayText = this.panel.getDisplayValue(value);\r\n\r\n          // Atualizar apenas o input visual, sem disparar eventos do FormControl\r\n          const input = this.el.nativeElement;\r\n          if (input.value !== displayText) {\r\n            input.value = displayText;\r\n          }\r\n\r\n          // Atualizar visibilidade do botão de limpar\r\n          this.updateClearButtonVisibility();\r\n          return;\r\n        }\r\n\r\n        // IN-41940: limpeza programática não dispara `input` nativo, então o\r\n        // onInput acima nem executa — o reset tem que acontecer aqui.\r\n        if (!value && this.panel.autoFilter) {\r\n          this.panel.applyFilter('');\r\n        }\r\n      });\r\n\r\n      this.subs.add(controlValueSub);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subs.unsubscribe();\r\n\r\n    // Limpar observer se existir\r\n    if ((this as any)._disabledObserver) {\r\n      (this as any)._disabledObserver.disconnect();\r\n    }\r\n\r\n    // Remover botão de limpar se existir\r\n    if (this.clearButton && this.clearButton.parentNode) {\r\n      this.renderer.removeChild(this.clearButton.parentNode, this.clearButton);\r\n    }\r\n\r\n    // Remover chevron se existir\r\n    if (this.chevronIcon && this.chevronIcon.parentNode) {\r\n      this.renderer.removeChild(this.chevronIcon.parentNode, this.chevronIcon);\r\n    }\r\n  }\r\n\r\n  private writeValueToInput(displayText: string, actualValue?: any) {\r\n\r\n    const input = this.el.nativeElement;\r\n\r\n    // Se há ngControl e actualValue é um objeto (não string), atualizar FormControl diretamente\r\n    if (this.ngControl && this.ngControl.control && actualValue !== undefined) {\r\n      // Se actualValue é um objeto, atualizar o FormControl com o objeto completo\r\n      if (typeof actualValue === 'object' && actualValue !== null) {\r\n        // Usar setValue com emitEvent: false para evitar loop infinito, depois emitir manualmente\r\n        this.ngControl.control.setValue(actualValue, { emitEvent: false });\r\n        // Atualizar o input visual com o displayText\r\n        input.value = displayText == null ? '' : String(displayText);\r\n        // Emitir eventos de mudança manualmente\r\n        this.ngControl.control.updateValueAndValidity({ emitEvent: true });\r\n      } else {\r\n        // Se actualValue é primitivo, atualizar normalmente\r\n        input.value = displayText == null ? '' : String(displayText);\r\n        // Dispatch eventos para garantir compatibilidade com Angular Forms\r\n        const inputEvent = new Event('input', { bubbles: true });\r\n        const changeEvent = new Event('change', { bubbles: true });\r\n        input.dispatchEvent(inputEvent);\r\n        input.dispatchEvent(changeEvent);\r\n      }\r\n    } else {\r\n      // Sem ngControl ou sem actualValue, apenas atualizar o input visual\r\n      input.value = displayText == null ? '' : String(displayText);\r\n      // Dispatch eventos para garantir compatibilidade com Angular Forms\r\n      const inputEvent = new Event('input', { bubbles: true });\r\n      const changeEvent = new Event('change', { bubbles: true });\r\n      input.dispatchEvent(inputEvent);\r\n      input.dispatchEvent(changeEvent);\r\n    }\r\n\r\n    // Atualizar visibilidade do botão após escrever valor\r\n    setTimeout(() => {\r\n      this.updateClearButtonVisibility();\r\n    }, 0);\r\n\r\n  }\r\n\r\n  private clearInput() {\r\n    const input = this.el.nativeElement;\r\n    input.value = '';\r\n\r\n    // Se há ngControl, limpar o FormControl diretamente\r\n    if (this.ngControl && this.ngControl.control) {\r\n      this.ngControl.control.setValue(null, { emitEvent: true });\r\n    } else {\r\n      // Sem ngControl, apenas disparar eventos\r\n      const inputEvent = new Event('input', { bubbles: true });\r\n      const changeEvent = new Event('change', { bubbles: true });\r\n      const blurEvent = new Event('blur', { bubbles: true });\r\n\r\n      input.dispatchEvent(inputEvent);\r\n      input.dispatchEvent(changeEvent);\r\n      input.dispatchEvent(blurEvent);\r\n    }\r\n\r\n    // Atualizar visibilidade do botão\r\n    this.updateClearButtonVisibility();\r\n\r\n  }\r\n\r\n  /**\r\n   * Inerte = nao aceita mudanca de selecao.\r\n   *\r\n   * `readOnly` entra junto de `disabled` porque e o modo que as telas de leitura usam de\r\n   * proposito — `disabled` apagaria o texto e o tiraria da ordem de foco. O\r\n   * `matcha-form-field` ja sincroniza `readonly` no input projetado; faltava a trigger\r\n   * olhar para ele, entao o painel abria e a opcao era selecionavel numa tela de detalhe.\r\n   */\r\n  private get isInert(): boolean {\r\n    return !!(\r\n      this.disabled ||\r\n      this.panel?.disabled ||\r\n      this.el.nativeElement.disabled ||\r\n      this.el.nativeElement.readOnly\r\n    );\r\n  }\r\n\r\n  @HostListener('click')\r\n  onClick() {\r\n    if (this.isInert) return;\r\n    // Mudado 2026-05-25: SEMPRE abre no click pra dar feel de matcha-select\r\n    // (combobox com lista pré-populada). Antes só abria se hasValue, o que\r\n    // confundia o user que esperava comportamento de seletor (click → lista).\r\n    // On-type ainda filtra. Lista pode estar vazia se consumer não pré-carrega\r\n    // options — esse é o trade-off, mas melhora UX em ~95% dos casos onde\r\n    // options existem desde o início.\r\n    this.panel.openPanel();\r\n  }\r\n\r\n  @HostListener('focus')\r\n  onFocus() {\r\n    // Não abrir automaticamente no focus para evitar conflito com click outside\r\n    // O painel será aberto apenas quando o usuário digitar (on-type) ou via ArrowDown\r\n  }\r\n\r\n  @HostListener('input', ['$event'])\r\n  onInput(e: Event) {\r\n    if (this.isInert) return;\r\n    const query = (e.target as HTMLInputElement).value ?? '';\r\n    // On-type real: painel só aparece com caracteres. Input event vazio pode vir de\r\n    // autofill, re-render de ngModel ou clear programático — não deve abrir dropdown.\r\n    if (!query) {\r\n      // IN-41940: sem resetar aqui, o último termo digitado segue escondendo\r\n      // options no próximo abre do painel.\r\n      if (this.panel.autoFilter) this.panel.applyFilter('');\r\n      if (this.panel.open) this.panel.closePanel();\r\n      return;\r\n    }\r\n    // Reabre painel se foi fechado\r\n    if (!this.panel.open) this.panel.openPanel();\r\n    // Filtro built-in: normaliza (acento/pontuação/case) + fuzzy. Desliga via [autoFilter]=\"false\".\r\n    if (this.panel.autoFilter) {\r\n      this.panel.applyFilter(query);\r\n    }\r\n  }\r\n\r\n  @HostListener('blur')\r\n  onBlur() {\r\n    // Implementar auto-seleção no blur se configurado\r\n    if (!this.panel.autoSelectOnBlur) {\r\n      return;\r\n    }\r\n\r\n    const input = this.el.nativeElement;\r\n    const currentValue = input.value;\r\n\r\n    // Se já há uma seleção válida (objeto), verificar se o texto ainda corresponde\r\n    const selectedValue = this.panel.getSelectedValue();\r\n    if (selectedValue !== undefined && selectedValue !== null) {\r\n      // Verificar se o texto do input corresponde ao valor selecionado\r\n      const displayText = this.panel.getDisplayValue(selectedValue);\r\n      if (displayText.toLowerCase().trim() === currentValue.toLowerCase().trim()) {\r\n        // Texto corresponde à seleção, não fazer nada\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Se o valor é uma string (texto digitado mas não selecionado)\r\n    if (typeof currentValue === 'string' && currentValue.trim() !== '') {\r\n      // Procurar match exato (case-insensitive) nas opções disponíveis\r\n      const exactMatch = this.panel.findOptionByText(currentValue);\r\n\r\n      if (exactMatch) {\r\n        // Match exato encontrado - selecionar automaticamente\r\n        this.panel.selectOption(exactMatch);\r\n\r\n        // Emitir evento de auto-seleção\r\n        this.panel.autoSelected.emit(exactMatch.value);\r\n\r\n        // Atualizar visibilidade do botão de limpar após auto-seleção\r\n        this.updateClearButtonVisibility();\r\n      } else {\r\n        // Nenhum match exato - limpar o campo\r\n        this.panel.clearSelection();\r\n      }\r\n    } else if (currentValue === '' || !currentValue) {\r\n      // Campo vazio - limpar seleção se houver\r\n      if (this.panel.hasSelection()) {\r\n        this.panel.clearSelection();\r\n      }\r\n    }\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onKeydown(ev: KeyboardEvent) {\r\n    if (!this.panel || this.isInert) return;\r\n\r\n    switch (ev.key) {\r\n      case 'ArrowDown':\r\n        ev.preventDefault();\r\n        if (!this.panel.open) this.panel.openPanel();\r\n        this.panel.highlightNext();\r\n        break;\r\n      case 'ArrowUp':\r\n        ev.preventDefault();\r\n        if (!this.panel.open) this.panel.openPanel();\r\n        this.panel.highlightPrevious();\r\n        break;\r\n      case 'Enter':\r\n        ev.preventDefault();\r\n        // selectActive já notifica a diretiva (evento matcha-autocomplete-selection),\r\n        // que escreve o valor no input sincronamente e fecha o painel.\r\n        // Escrever de novo via setTimeout reabria o painel para valores string\r\n        // (o evento 'input' sintético disparava onInput com o painel já fechado).\r\n        this.panel.selectActive();\r\n        break;\r\n      case 'Escape':\r\n        ev.preventDefault();\r\n        this.panel.closePanel();\r\n        break;\r\n      case 'Tab':\r\n        // Com o painel aberto, Tab alterna o destaque entre as opções\r\n        // (Shift+Tab volta para a anterior). A confirmação da seleção é via Enter.\r\n        // Com o painel fechado, Tab mantém o comportamento nativo de mover o foco.\r\n        if (this.panel.open) {\r\n          ev.preventDefault();\r\n          if (ev.shiftKey) {\r\n            this.panel.highlightPrevious();\r\n          } else {\r\n            this.panel.highlightNext();\r\n          }\r\n        }\r\n        break;\r\n    }\r\n  }\r\n\r\n  // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\r\n  // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\r\n  // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\r\n  // Simples solução: observar clicks nas options via delegation:\r\n  @HostListener('document:click', ['$event'])\r\n  onDocClick(ev: MouseEvent) {\r\n    const target = ev.target as HTMLElement;\r\n\r\n    // Verificar se o clique foi em uma opção deste painel específico\r\n    const isOptionClick = target.closest('matcha-option') &&\r\n      this.panel?.elRef?.nativeElement?.contains(target);\r\n\r\n    if (isOptionClick) {\r\n      // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\r\n      setTimeout(() => {\r\n        if (this.panel && typeof this.panel.getSelectedValue === 'function') {\r\n          const val = this.panel.getSelectedValue();\r\n          if (val !== undefined) {\r\n            const displayText = this.panel.getDisplayValue(val);\r\n            this.writeValueToInput(displayText, val);\r\n          }\r\n        }\r\n      }, 10);\r\n    }\r\n  }\r\n\r\n  private createClearButton(): void {\r\n    if (this.clearButton) return;\r\n\r\n    const input = this.el.nativeElement;\r\n    const formField = input.closest('matcha-form-field');\r\n\r\n    if (!formField) {\r\n      console.warn('MatchaAutocomplete: matcha-form-field não encontrado para adicionar botão de limpar');\r\n      return;\r\n    }\r\n\r\n    // Criar botão\r\n    this.clearButton = this.renderer.createElement('span');\r\n    // Adicionar classe do ícone (formato: i-matcha-{iconName})\r\n    const iconClass = this.panel.clearButtonIcon.startsWith('i-matcha-')\r\n      ? this.panel.clearButtonIcon\r\n      : 'i-matcha-' + this.panel.clearButtonIcon;\r\n    this.renderer.addClass(this.clearButton, iconClass);\r\n    this.renderer.addClass(this.clearButton, 'i-size-sm');\r\n    this.renderer.addClass(this.clearButton, 'matcha-autocomplete-clear-button');\r\n    this.renderer.setStyle(this.clearButton, 'cursor', 'pointer');\r\n    this.renderer.setStyle(this.clearButton, 'position', 'absolute');\r\n    this.renderer.setStyle(this.clearButton, 'right', 'var(--matcha-space-150, 12px)');\r\n    // this.renderer.setStyle(this.clearButton, 'z-index', '10');\r\n    this.renderer.setAttribute(this.clearButton, 'aria-label', this.panel.clearButtonAriaLabel);\r\n    this.renderer.setAttribute(this.clearButton, 'role', 'button');\r\n    this.renderer.setAttribute(this.clearButton, 'tabindex', '0');\r\n\r\n    // Adicionar evento de clique\r\n    this.renderer.listen(this.clearButton, 'click', (event: MouseEvent) => {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      this.panel.clearSelection();\r\n    });\r\n\r\n    // Adicionar evento de teclado (Enter e Space)\r\n    this.renderer.listen(this.clearButton, 'keydown', (event: KeyboardEvent) => {\r\n      if (event.key === 'Enter' || event.key === ' ') {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        this.panel.clearSelection();\r\n      }\r\n    });\r\n\r\n    // Inserir botão no form-field (após o input)\r\n    const inputContainer = input.parentElement;\r\n    if (inputContainer) {\r\n      this.renderer.setStyle(inputContainer, 'position', 'relative');\r\n      this.renderer.appendChild(inputContainer, this.clearButton);\r\n    } else {\r\n      this.renderer.appendChild(formField, this.clearButton);\r\n    }\r\n\r\n    // Atualizar visibilidade inicial\r\n    this.updateClearButtonVisibility();\r\n  }\r\n\r\n  private updateClearButtonVisibility(): void {\r\n    if (!this.clearButton) return;\r\n\r\n    const hasSelection = this.panel.hasSelection();\r\n    const isDisabled = this.isInert;\r\n\r\n    if (hasSelection && !isDisabled && this.panel.showClearButton) {\r\n      this.renderer.setStyle(this.clearButton, 'display', 'block');\r\n    } else {\r\n      this.renderer.setStyle(this.clearButton, 'display', 'none');\r\n    }\r\n\r\n    // Chevron e clearButton compartilham posição (right: 12px) — quando um\r\n    // aparece o outro some.\r\n    this.updateChevronVisibility();\r\n  }\r\n\r\n  /**\r\n   * Cria chevron decorativo dentro do matcha-form-field, sinalizando que o\r\n   * campo é um seletor com lista (UX-canon de combobox). Sem click handler —\r\n   * o input parent já abre o panel no click (após fix 2026-05-25).\r\n   * Esconde quando clearButton aparece (selection feita) ou disabled.\r\n   *\r\n   * EM FLUXO, não absolute: o .matcha-form-field é uma flex row — como último\r\n   * filho, o chevron ocupa a borda direita naturalmente, DEPOIS de qualquer\r\n   * matcha-suffix (contador, ícone de erro/sucesso). Antes era\r\n   * position:absolute; right:12px, e o ícone de erro do matcha-field\r\n   * renderizava por cima dele (mesma coordenada, camadas diferentes) — é o\r\n   * mesmo layout que o matcha-select já usa (seta em fluxo no trigger).\r\n   */\r\n  private createChevronIcon(): void {\r\n    if (this.chevronIcon) return;\r\n\r\n    const input = this.el.nativeElement;\r\n    const formField = input.closest('matcha-form-field');\r\n    if (!formField) return; // só dentro de form-field\r\n\r\n    this.chevronIcon = this.renderer.createElement('span');\r\n    this.renderer.addClass(this.chevronIcon, 'i-matcha-action_arrow_down');\r\n    this.renderer.addClass(this.chevronIcon, 'i-size-sm');\r\n    this.renderer.addClass(this.chevronIcon, 'matcha-autocomplete-chevron');\r\n    this.renderer.setStyle(this.chevronIcon, 'flex-shrink', '0');\r\n    this.renderer.setStyle(this.chevronIcon, 'align-self', 'center');\r\n    this.renderer.setStyle(this.chevronIcon, 'margin-left', 'var(--matcha-space-050, 4px)');\r\n    this.renderer.setStyle(this.chevronIcon, 'color', 'var(--matcha-color-text-muted)');\r\n    this.renderer.setStyle(this.chevronIcon, 'pointer-events', 'none');\r\n    this.renderer.setStyle(this.chevronIcon, 'transition', 'transform var(--matcha-duration-fast, 160ms) ease');\r\n    this.renderer.setAttribute(this.chevronIcon, 'aria-hidden', 'true');\r\n\r\n    const inputContainer = input.parentElement;\r\n    if (inputContainer) {\r\n      this.renderer.appendChild(inputContainer, this.chevronIcon);\r\n    } else {\r\n      this.renderer.appendChild(formField, this.chevronIcon);\r\n    }\r\n\r\n    this.updateChevronVisibility();\r\n  }\r\n\r\n  /**\r\n   * Visibilidade do chevron:\r\n   *  - some quando clearButton aparece (mesma posição) ou disabled\r\n   *  - mostra quando idle/empty/sem-seleção\r\n   * Rotação 180° quando panel aberto (feedback visual de toggle).\r\n   */\r\n  private updateChevronVisibility(): void {\r\n    if (!this.chevronIcon) return;\r\n\r\n    const hasSelection = this.panel.hasSelection();\r\n    const isDisabled = this.isInert;\r\n    const clearShown = hasSelection && !isDisabled && this.panel.showClearButton;\r\n\r\n    if (clearShown || isDisabled) {\r\n      this.renderer.setStyle(this.chevronIcon, 'display', 'none');\r\n    } else {\r\n      this.renderer.setStyle(this.chevronIcon, 'display', 'inline-block');\r\n    }\r\n\r\n    // Rotação on/off pra indicar estado do panel (em fluxo: sem translateY)\r\n    const rotateDeg = this.panel.open ? 180 : 0;\r\n    this.renderer.setStyle(this.chevronIcon, 'transform', `rotate(${rotateDeg}deg)`);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaOptionComponent } from './matcha-option.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaOptionComponent],\r\n  exports: [\r\n    MatchaOptionComponent\r\n  ]\r\n})\r\n\r\nexport class MatchaOptionModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaPanelComponent } from './matcha-panel.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaPanelComponent],\r\n  exports: [\r\n    MatchaPanelComponent\r\n  ]\r\n})\r\nexport class MatchaPanelModule { }\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\r\nimport { MatchaAutocompleteTriggerDirective } from './matcha-autocomplete.directive';\r\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\r\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaAutocompleteComponent,\r\n    MatchaAutocompleteTriggerDirective,\r\n    MatchaOptionModule,\r\n    MatchaPanelModule\r\n  ],\r\n  exports: [\r\n    MatchaAutocompleteComponent,\r\n    MatchaAutocompleteTriggerDirective,\r\n    MatchaOptionModule // Re-exporta para conveniência\r\n  ]\r\n})\r\nexport class MatchaAutocompleteModule { }\r\n\r\n","// =============================================================================\r\n// figma-icons.ts — AUTO-GENERATED. DO NOT EDIT BY HAND.\r\n// =============================================================================\r\n// Source: Figma DSV3 file (i04CyWczuVctwRjE5VbJh7), página `Icons` (5594:11367)\r\n// Generated at: 2026-09-15T18:54:05.135Z\r\n// Total: 201 icon names · 367 SVG variants\r\n//\r\n// To regenerate: FIGMA_TOKEN=fig_xxx node scripts/matcha-icons/extract-figma-icons.js\r\n// =============================================================================\r\n\r\nexport interface FigmaIconStyles {\r\n    outlined?: string;\r\n    filled?: string;\r\n}\r\n\r\n/** @deprecated Alias de FigmaIconStyles — sem uso desde o achatamento do `variant`. */\r\nexport type FigmaIconEntry = FigmaIconStyles;\r\n\r\nexport const FIGMA_ICONS: Record<string, FigmaIconStyles> = {\r\n    'Link': { outlined: `<path d=\"M11 16.9999H7C5.61667 16.9999 4.4375 16.5124 3.4625 15.5374C2.4875 14.5624 2 13.3833 2 11.9999C2 10.6166 2.4875 9.43744 3.4625 8.46244C4.4375 7.48744 5.61667 6.99994 7 6.99994H11V8.99994H7C6.16667 8.99994 5.45833 9.29161 4.875 9.87494C4.29167 10.4583 4 11.1666 4 11.9999C4 12.8333 4.29167 13.5416 4.875 14.1249C5.45833 14.7083 6.16667 14.9999 7 14.9999H11V16.9999ZM8 12.9999V10.9999H16V12.9999H8ZM13 16.9999V14.9999H17C17.8333 14.9999 18.5417 14.7083 19.125 14.1249C19.7083 13.5416 20 12.8333 20 11.9999C20 11.1666 19.7083 10.4583 19.125 9.87494C18.5417 9.29161 17.8333 8.99994 17 8.99994H13V6.99994H17C18.3833 6.99994 19.5625 7.48744 20.5375 8.46244C21.5125 9.43744 22 10.6166 22 11.9999C22 13.3833 21.5125 14.5624 20.5375 15.5374C19.5625 16.5124 18.3833 16.9999 17 16.9999H13Z\" fill=\"currentColor\"/>` },\r\n    'Link-add': { outlined: `<path d=\"M17 19.9999V16.9999H14V14.9999H17V11.9999H19V14.9999H22V16.9999H19V19.9999H17ZM11 16.9999H7C5.61667 16.9999 4.4375 16.5124 3.4625 15.5374C2.4875 14.5624 2 13.3833 2 11.9999C2 10.6166 2.4875 9.43744 3.4625 8.46244C4.4375 7.48744 5.61667 6.99994 7 6.99994H11V8.99994H7C6.16667 8.99994 5.45833 9.29161 4.875 9.87494C4.29167 10.4583 4 11.1666 4 11.9999C4 12.8333 4.29167 13.5416 4.875 14.1249C5.45833 14.7083 6.16667 14.9999 7 14.9999H11V16.9999ZM8 12.9999V10.9999H16V12.9999H8ZM22 11.9999H20C20 11.1666 19.7083 10.4583 19.125 9.87494C18.5417 9.29161 17.8333 8.99994 17 8.99994H13V6.99994H17C18.3833 6.99994 19.5625 7.48744 20.5375 8.46244C21.5125 9.43744 22 10.6166 22 11.9999Z\" fill=\"currentColor\"/>` },\r\n    'Link-remove': { outlined: `<path d=\"M19.25 16.4499L17.75 14.8999C18.4167 14.7166 18.9583 14.3624 19.375 13.8374C19.7917 13.3124 20 12.6999 20 11.9999C20 11.1666 19.7083 10.4583 19.125 9.87493C18.5417 9.29159 17.8333 8.99993 17 8.99993H13V6.99993H17C18.3833 6.99993 19.5625 7.48743 20.5375 8.46243C21.5125 9.43743 22 10.6166 22 11.9999C22 12.9499 21.7542 13.8249 21.2625 14.6249C20.7708 15.4249 20.1 16.0333 19.25 16.4499ZM15.85 12.9999L13.85 10.9999H16V12.9999H15.85ZM19.8 22.5999L1.4 4.19993L2.8 2.79993L21.2 21.1999L19.8 22.5999ZM11 16.9999H7C5.61667 16.9999 4.4375 16.5124 3.4625 15.5374C2.4875 14.5624 2 13.3833 2 11.9999C2 10.8499 2.35 9.82493 3.05 8.92493C3.75 8.02493 4.65 7.43326 5.75 7.14993L7.6 8.99993H7C6.16667 8.99993 5.45833 9.29159 4.875 9.87493C4.29167 10.4583 4 11.1666 4 11.9999C4 12.8333 4.29167 13.5416 4.875 14.1249C5.45833 14.7083 6.16667 14.9999 7 14.9999H11V16.9999ZM8 12.9999V10.9999H9.625L11.6 12.9999H8Z\" fill=\"currentColor\"/>` },\r\n    'accounting-export': { outlined: `<path d=\"M7.11458 18.7952C5.6635 18.415 4.44829 17.6053 3.46896 16.3661C2.48965 15.1269 2 13.6715 2 12C2 10.3285 2.48965 8.87315 3.46896 7.63394C4.44829 6.39472 5.6635 5.585 7.11458 5.20477V7.18606C6.12183 7.537 5.32474 8.1552 4.72329 9.04067C4.12183 9.92613 3.8211 10.9126 3.8211 12C3.8211 13.0874 4.12183 14.0739 4.72329 14.9593C5.32474 15.8448 6.12183 16.463 7.11458 16.8139V18.7952ZM13.7663 19C11.8925 19 10.2947 18.3177 8.97283 16.9532C7.65097 15.5887 6.99004 13.9377 6.99004 12C6.99004 10.0623 7.65097 8.41125 8.97283 7.04675C10.2947 5.68225 11.8925 5 13.7663 5C14.683 5 15.5449 5.17578 16.3521 5.52735C17.1593 5.87891 17.8685 6.36325 18.4796 6.98037L17.2083 8.29781C16.7633 7.85554 16.2462 7.50865 15.6569 7.25714C15.0677 7.00561 14.4392 6.87985 13.7713 6.87985C12.3957 6.87985 11.2251 7.3765 10.2595 8.36981C9.29394 9.3631 8.81115 10.5697 8.81115 11.9897C8.81115 13.4131 9.29394 14.624 10.2595 15.6225C11.2251 16.6209 12.3957 17.1202 13.7713 17.1202C14.4392 17.1202 15.0677 16.9944 15.6569 16.7429C16.2462 16.4913 16.7633 16.1445 17.2083 15.7022L18.4796 17.0196C17.8685 17.6368 17.1593 18.1211 16.3521 18.4726C15.5449 18.8242 14.683 19 13.7663 19ZM18.6119 15.4974L17.3954 14.2366L18.6889 12.9014H12.7437V11.0986H18.6889L17.3954 9.76344L18.6119 8.50258L22 12L18.6119 15.4974Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M7.11458 18.7952C5.6635 18.415 4.44829 17.6053 3.46896 16.3661C2.48965 15.1269 2 13.6715 2 12C2 10.3285 2.48965 8.87315 3.46896 7.63394C4.44829 6.39472 5.6635 5.585 7.11458 5.20477V7.18606C6.12183 7.537 5.32474 8.1552 4.72329 9.04067C4.12183 9.92613 3.8211 10.9126 3.8211 12C3.8211 13.0874 4.12183 14.0739 4.72329 14.9593C5.32474 15.8448 6.12183 16.463 7.11458 16.8139V18.7952ZM13.7663 19C11.8925 19 10.2947 18.3177 8.97283 16.9532C7.65097 15.5887 6.99004 13.9377 6.99004 12C6.99004 10.0623 7.65097 8.41125 8.97283 7.04675C10.2947 5.68225 11.8925 5 13.7663 5C14.683 5 15.5449 5.17578 16.3521 5.52735C17.1593 5.87891 17.8685 6.36325 18.4796 6.98037L17.2083 8.29781C16.7633 7.85554 16.2462 7.50865 15.6569 7.25714C15.0677 7.00561 14.4392 6.87985 13.7713 6.87985C12.3957 6.87985 11.2251 7.3765 10.2595 8.36981C9.29394 9.3631 8.81115 10.5697 8.81115 11.9897C8.81115 13.4131 9.29394 14.624 10.2595 15.6225C11.2251 16.6209 12.3957 17.1202 13.7713 17.1202C14.4392 17.1202 15.0677 16.9944 15.6569 16.7429C16.2462 16.4913 16.7633 16.1445 17.2083 15.7022L18.4796 17.0196C17.8685 17.6368 17.1593 18.1211 16.3521 18.4726C15.5449 18.8242 14.683 19 13.7663 19ZM18.6119 15.4974L17.3954 14.2366L18.6889 12.9014H12.7437V11.0986H18.6889L17.3954 9.76344L18.6119 8.50258L22 12L18.6119 15.4974Z\" fill=\"currentColor\"/>` },\r\n    add: { outlined: `<path d=\"M11 13V16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16V13H16C16.2833 13 16.5208 12.9042 16.7125 12.7125C16.9042 12.5208 17 12.2833 17 12C17 11.7167 16.9042 11.4792 16.7125 11.2875C16.5208 11.0958 16.2833 11 16 11H13V8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8V11H8C7.71667 11 7.47917 11.0958 7.2875 11.2875C7.09583 11.4792 7 11.7167 7 12C7 12.2833 7.09583 12.5208 7.2875 12.7125C7.47917 12.9042 7.71667 13 8 13H11ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M11 13V16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16V13H16C16.2833 13 16.5208 12.9042 16.7125 12.7125C16.9042 12.5208 17 12.2833 17 12C17 11.7167 16.9042 11.4792 16.7125 11.2875C16.5208 11.0958 16.2833 11 16 11H13V8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8V11H8C7.71667 11 7.47917 11.0958 7.2875 11.2875C7.09583 11.4792 7 11.7167 7 12C7 12.2833 7.09583 12.5208 7.2875 12.7125C7.47917 12.9042 7.71667 13 8 13H11ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    'add-card': { outlined: `<path d=\"M4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6V11C22 11.2833 21.9042 11.5208 21.7125 11.7125C21.5208 11.9042 21.2833 12 21 12H4V18H13C13.2833 18 13.5208 18.0958 13.7125 18.2875C13.9042 18.4792 14 18.7167 14 19C14 19.2833 13.9042 19.5208 13.7125 19.7125C13.5208 19.9042 13.2833 20 13 20H4ZM4 8H20V6H4V8ZM19 19H17C16.7167 19 16.4792 18.9042 16.2875 18.7125C16.0958 18.5208 16 18.2833 16 18C16 17.7167 16.0958 17.4792 16.2875 17.2875C16.4792 17.0958 16.7167 17 17 17H19V15C19 14.7167 19.0958 14.4792 19.2875 14.2875C19.4792 14.0958 19.7167 14 20 14C20.2833 14 20.5208 14.0958 20.7125 14.2875C20.9042 14.4792 21 14.7167 21 15V17H23C23.2833 17 23.5208 17.0958 23.7125 17.2875C23.9042 17.4792 24 17.7167 24 18C24 18.2833 23.9042 18.5208 23.7125 18.7125C23.5208 18.9042 23.2833 19 23 19H21V21C21 21.2833 20.9042 21.5208 20.7125 21.7125C20.5208 21.9042 20.2833 22 20 22C19.7167 22 19.4792 21.9042 19.2875 21.7125C19.0958 21.5208 19 21.2833 19 21V19Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M19 19H17C16.7167 19 16.4792 18.9042 16.2875 18.7125C16.0958 18.5208 16 18.2833 16 18C16 17.7167 16.0958 17.4792 16.2875 17.2875C16.4792 17.0958 16.7167 17 17 17H19V15C19 14.7167 19.0958 14.4792 19.2875 14.2875C19.4792 14.0958 19.7167 14 20 14C20.2833 14 20.5208 14.0958 20.7125 14.2875C20.9042 14.4792 21 14.7167 21 15V17H23C23.2833 17 23.5208 17.0958 23.7125 17.2875C23.9042 17.4792 24 17.7167 24 18C24 18.2833 23.9042 18.5208 23.7125 18.7125C23.5208 18.9042 23.2833 19 23 19H21V21C21 21.2833 20.9042 21.5208 20.7125 21.7125C20.5208 21.9042 20.2833 22 20 22C19.7167 22 19.4792 21.9042 19.2875 21.7125C19.0958 21.5208 19 21.2833 19 21V19ZM4 12H20V8H4V12ZM4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6V11C22 11.2833 21.9042 11.5208 21.7125 11.7125C21.5208 11.9042 21.2833 12 21 12H19C17.6167 12 16.4375 12.4875 15.4625 13.4625C14.4875 14.4375 14 15.6167 14 17V19C14 19.2833 13.9042 19.5208 13.7125 19.7125C13.5208 19.9042 13.2833 20 13 20H4Z\" fill=\"currentColor\"/>` },\r\n    'add-person': { outlined: `<path d=\"M18 11H16C15.7167 11 15.4792 10.9042 15.2875 10.7125C15.0958 10.5208 15 10.2833 15 10C15 9.71667 15.0958 9.47917 15.2875 9.2875C15.4792 9.09583 15.7167 9 16 9H18V7C18 6.71667 18.0958 6.47917 18.2875 6.2875C18.4792 6.09583 18.7167 6 19 6C19.2833 6 19.5208 6.09583 19.7125 6.2875C19.9042 6.47917 20 6.71667 20 7V9H22C22.2833 9 22.5208 9.09583 22.7125 9.2875C22.9042 9.47917 23 9.71667 23 10C23 10.2833 22.9042 10.5208 22.7125 10.7125C22.5208 10.9042 22.2833 11 22 11H20V13C20 13.2833 19.9042 13.5208 19.7125 13.7125C19.5208 13.9042 19.2833 14 19 14C18.7167 14 18.4792 13.9042 18.2875 13.7125C18.0958 13.5208 18 13.2833 18 13V11ZM9 12C7.9 12 6.95833 11.6083 6.175 10.825C5.39167 10.0417 5 9.1 5 8C5 6.9 5.39167 5.95833 6.175 5.175C6.95833 4.39167 7.9 4 9 4C10.1 4 11.0417 4.39167 11.825 5.175C12.6083 5.95833 13 6.9 13 8C13 9.1 12.6083 10.0417 11.825 10.825C11.0417 11.6083 10.1 12 9 12ZM1 18V17.2C1 16.6333 1.14583 16.1125 1.4375 15.6375C1.72917 15.1625 2.11667 14.8 2.6 14.55C3.63333 14.0333 4.68333 13.6458 5.75 13.3875C6.81667 13.1292 7.9 13 9 13C10.1 13 11.1833 13.1292 12.25 13.3875C13.3167 13.6458 14.3667 14.0333 15.4 14.55C15.8833 14.8 16.2708 15.1625 16.5625 15.6375C16.8542 16.1125 17 16.6333 17 17.2V18C17 18.55 16.8042 19.0208 16.4125 19.4125C16.0208 19.8042 15.55 20 15 20H3C2.45 20 1.97917 19.8042 1.5875 19.4125C1.19583 19.0208 1 18.55 1 18ZM3 18H15V17.2C15 17.0167 14.9542 16.85 14.8625 16.7C14.7708 16.55 14.65 16.4333 14.5 16.35C13.6 15.9 12.6917 15.5625 11.775 15.3375C10.8583 15.1125 9.93333 15 9 15C8.06667 15 7.14167 15.1125 6.225 15.3375C5.30833 15.5625 4.4 15.9 3.5 16.35C3.35 16.4333 3.22917 16.55 3.1375 16.7C3.04583 16.85 3 17.0167 3 17.2V18ZM9 10C9.55 10 10.0208 9.80417 10.4125 9.4125C10.8042 9.02083 11 8.55 11 8C11 7.45 10.8042 6.97917 10.4125 6.5875C10.0208 6.19583 9.55 6 9 6C8.45 6 7.97917 6.19583 7.5875 6.5875C7.19583 6.97917 7 7.45 7 8C7 8.55 7.19583 9.02083 7.5875 9.4125C7.97917 9.80417 8.45 10 9 10Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M18 11H16C15.7167 11 15.4792 10.9042 15.2875 10.7125C15.0958 10.5208 15 10.2833 15 10C15 9.71667 15.0958 9.47917 15.2875 9.2875C15.4792 9.09583 15.7167 9 16 9H18V7C18 6.71667 18.0958 6.47917 18.2875 6.2875C18.4792 6.09583 18.7167 6 19 6C19.2833 6 19.5208 6.09583 19.7125 6.2875C19.9042 6.47917 20 6.71667 20 7V9H22C22.2833 9 22.5208 9.09583 22.7125 9.2875C22.9042 9.47917 23 9.71667 23 10C23 10.2833 22.9042 10.5208 22.7125 10.7125C22.5208 10.9042 22.2833 11 22 11H20V13C20 13.2833 19.9042 13.5208 19.7125 13.7125C19.5208 13.9042 19.2833 14 19 14C18.7167 14 18.4792 13.9042 18.2875 13.7125C18.0958 13.5208 18 13.2833 18 13V11ZM9 12C7.9 12 6.95833 11.6083 6.175 10.825C5.39167 10.0417 5 9.1 5 8C5 6.9 5.39167 5.95833 6.175 5.175C6.95833 4.39167 7.9 4 9 4C10.1 4 11.0417 4.39167 11.825 5.175C12.6083 5.95833 13 6.9 13 8C13 9.1 12.6083 10.0417 11.825 10.825C11.0417 11.6083 10.1 12 9 12ZM1 18V17.2C1 16.6333 1.14583 16.1125 1.4375 15.6375C1.72917 15.1625 2.11667 14.8 2.6 14.55C3.63333 14.0333 4.68333 13.6458 5.75 13.3875C6.81667 13.1292 7.9 13 9 13C10.1 13 11.1833 13.1292 12.25 13.3875C13.3167 13.6458 14.3667 14.0333 15.4 14.55C15.8833 14.8 16.2708 15.1625 16.5625 15.6375C16.8542 16.1125 17 16.6333 17 17.2V18C17 18.55 16.8042 19.0208 16.4125 19.4125C16.0208 19.8042 15.55 20 15 20H3C2.45 20 1.97917 19.8042 1.5875 19.4125C1.19583 19.0208 1 18.55 1 18Z\" fill=\"currentColor\"/>` },\r\n    admins: { outlined: `<path d=\"M12.6152 3.21875L18.7695 5.43457L20 5.88184V13.5225C19.9983 14.9429 19.5993 16.3328 18.8506 17.5254C18.1019 18.718 17.0349 19.6631 15.7783 20.2471L12.7568 21.6484L12 22L11.2432 21.6484L8.22168 20.2471C6.96553 19.6633 5.89909 18.7184 5.15039 17.5264C4.40176 16.3344 4.00233 14.9452 4 13.5254V5.88477L5.23047 5.43848L11.3848 3.21875L12 3L12.6152 3.21875ZM5.8457 7.23242V13.5225C5.84577 14.5767 6.14159 15.6089 6.69727 16.4941C7.25295 17.3794 8.04538 18.0802 8.97852 18.5127L12 19.9141L15.0215 18.5127C15.9546 18.0802 16.7471 17.3794 17.3027 16.4941C17.8584 15.6089 18.1542 14.5767 18.1543 13.5225V7.23242L12 5.0127L5.8457 7.23242ZM16 10.4756L11.5947 15.6943C11.4295 15.8898 11.2052 16 10.9717 16C10.7383 15.9999 10.5147 15.8897 10.3496 15.6943L8 12.9111L9.24512 11.4355L10.9717 13.4814L14.7549 9L16 10.4756Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 3L12.6154 3.21876L18.7692 5.43484L20 5.88186V13.5224C19.9983 14.9428 19.5991 16.3326 18.8504 17.5252C18.1016 18.7179 17.0351 19.6628 15.7785 20.2468L12.7569 21.6481L12 22L11.2431 21.6481L8.22154 20.2468C6.96539 19.663 5.89915 18.7186 5.15045 17.5266C4.40176 16.3345 4.00233 14.9455 4 13.5256V5.88503L5.23077 5.43801L11.3846 3.21876L12 3ZM8 12.911L9.24523 11.4357L10.9721 13.4817L14.7548 9L16 10.4753L11.5947 15.6947C11.4295 15.8902 11.2056 16 10.9721 16C10.7386 16 10.5147 15.8902 10.3495 15.6947L8 12.911Z\" fill=\"currentColor\"/>` },\r\n    ai: { outlined: `<path d=\"M18.8 3H5.2C3.98 3 3 3.92 3 5.06V15.4C3 16.54 3.98 17.46 5.2 17.46H6.64V20.52C6.64 20.7 6.76 20.88 6.94 20.96C7.02 21 7.08 21 7.16 21C7.28 21 7.4 20.96 7.5 20.9L12.04 17.46H18.8C20.02 17.46 21 16.54 21 15.4V5.06C21 3.92 20.02 3 18.8 3ZM19.98 15.38C19.98 15.98 19.46 16.46 18.82 16.46H11.84C11.72 16.46 11.6 16.5 11.5 16.56L7.68 19.46V16.94C7.68 16.68 7.44 16.46 7.16 16.46H5.2C4.56 16.46 4.04 15.98 4.04 15.38V5.1C4.04 4.5 4.56 4.02 5.2 4.02H18.84C19.48 4.02 20 4.5 20 5.1V15.38H19.98Z\" fill=\"currentColor\"/><path d=\"M9.81988 7.26006H8.59988V13.1001H9.81988V7.26006Z\" fill=\"currentColor\"/><path d=\"M12.62 7.26006L10.54 13.1001H11.8L12.2 11.9001H14.36L14.74 13.1001H16.06L14 7.26006H12.62ZM12.54 10.9001L13.3 8.60006L14.04 10.9001H12.54Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M19.5745 2.15454H4.5801C3.23502 2.15454 2.15454 3.16887 2.15454 4.42575V15.8259C2.15454 17.0828 3.23502 18.0971 4.5801 18.0971H6.16774V21.4708C6.16774 21.6693 6.30004 21.8677 6.4985 21.9559C6.5867 22 6.65285 22 6.74105 22C6.87336 22 7.00566 21.9559 7.11591 21.8898L12.1214 18.0971H19.5745C20.9196 18.0971 22 17.0828 22 15.8259V4.42575C22 3.16887 20.9196 2.15454 19.5745 2.15454ZM9.65173 13.2901H8.32869V6.85131H9.65173V13.2901ZM15.0982 13.2901L14.6793 11.967H12.2978L11.8568 13.2901H10.4455L12.7388 6.85131H14.2823L16.5535 13.2901H15.0982Z\" fill=\"currentColor\"/><path d=\"M12.6726 10.8644H14.3264L13.5105 8.32856L12.6726 10.8644Z\" fill=\"currentColor\"/>` },\r\n    api: { outlined: `<path d=\"M12 14L10 12L12 9.99995L14 12L12 14ZM9.875 8.12495L7.375 5.62495L10.575 2.42495C10.775 2.22495 11 2.07495 11.25 1.97495C11.5 1.87495 11.75 1.82495 12 1.82495C12.25 1.82495 12.5 1.87495 12.75 1.97495C13 2.07495 13.225 2.22495 13.425 2.42495L16.625 5.62495L14.125 8.12495L12 5.99995L9.875 8.12495ZM5.625 16.625L2.425 13.425C2.225 13.225 2.075 13 1.975 12.75C1.875 12.5 1.825 12.25 1.825 12C1.825 11.75 1.875 11.5 1.975 11.25C2.075 11 2.225 10.775 2.425 10.575L5.625 7.37495L8.125 9.87495L6 12L8.125 14.125L5.625 16.625ZM18.375 16.625L15.875 14.125L18 12L15.875 9.87495L18.375 7.37495L21.575 10.575C21.775 10.775 21.925 11 22.025 11.25C22.125 11.5 22.175 11.75 22.175 12C22.175 12.25 22.125 12.5 22.025 12.75C21.925 13 21.775 13.225 21.575 13.425L18.375 16.625ZM10.575 21.575L7.375 18.375L9.875 15.875L12 18L14.125 15.875L16.625 18.375L13.425 21.575C13.225 21.775 13 21.925 12.75 22.025C12.5 22.125 12.25 22.175 12 22.175C11.75 22.175 11.5 22.125 11.25 22.025C11 21.925 10.775 21.775 10.575 21.575Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 14L10 12L12 9.99995L14 12L12 14ZM9.875 8.12495L7.375 5.62495L10.575 2.42495C10.775 2.22495 11 2.07495 11.25 1.97495C11.5 1.87495 11.75 1.82495 12 1.82495C12.25 1.82495 12.5 1.87495 12.75 1.97495C13 2.07495 13.225 2.22495 13.425 2.42495L16.625 5.62495L14.125 8.12495L12 5.99995L9.875 8.12495ZM5.625 16.625L2.425 13.425C2.225 13.225 2.075 13 1.975 12.75C1.875 12.5 1.825 12.25 1.825 12C1.825 11.75 1.875 11.5 1.975 11.25C2.075 11 2.225 10.775 2.425 10.575L5.625 7.37495L8.125 9.87495L6 12L8.125 14.125L5.625 16.625ZM18.375 16.625L15.875 14.125L18 12L15.875 9.87495L18.375 7.37495L21.575 10.575C21.775 10.775 21.925 11 22.025 11.25C22.125 11.5 22.175 11.75 22.175 12C22.175 12.25 22.125 12.5 22.025 12.75C21.925 13 21.775 13.225 21.575 13.425L18.375 16.625ZM10.575 21.575L7.375 18.375L9.875 15.875L12 18L14.125 15.875L16.625 18.375L13.425 21.575C13.225 21.775 13 21.925 12.75 22.025C12.5 22.125 12.25 22.175 12 22.175C11.75 22.175 11.5 22.125 11.25 22.025C11 21.925 10.775 21.775 10.575 21.575Z\" fill=\"currentColor\"/>` },\r\n    archive: { outlined: `<path d=\"M11.2875 10.2875C11.0958 10.4792 11 10.7167 11 11V14.2L10.1 13.3C9.91667 13.1167 9.68333 13.025 9.4 13.025C9.11667 13.025 8.88333 13.1167 8.7 13.3C8.51667 13.4833 8.425 13.7167 8.425 14C8.425 14.2833 8.51667 14.5167 8.7 14.7L11.3 17.3C11.5 17.5 11.7333 17.6 12 17.6C12.2667 17.6 12.5 17.5 12.7 17.3L15.3 14.7C15.4833 14.5167 15.575 14.2833 15.575 14C15.575 13.7167 15.4833 13.4833 15.3 13.3C15.1167 13.1167 14.8833 13.025 14.6 13.025C14.3167 13.025 14.0833 13.1167 13.9 13.3L13 14.2V11C13 10.7167 12.9042 10.4792 12.7125 10.2875C12.5208 10.0958 12.2833 10 12 10C11.7167 10 11.4792 10.0958 11.2875 10.2875ZM5 8V19H19V8H5ZM5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V6.525C3 6.29167 3.0375 6.06667 3.1125 5.85C3.1875 5.63333 3.3 5.43333 3.45 5.25L4.7 3.725C4.88333 3.49167 5.1125 3.3125 5.3875 3.1875C5.6625 3.0625 5.95 3 6.25 3H17.75C18.05 3 18.3375 3.0625 18.6125 3.1875C18.8875 3.3125 19.1167 3.49167 19.3 3.725L20.55 5.25C20.7 5.43333 20.8125 5.63333 20.8875 5.85C20.9625 6.06667 21 6.29167 21 6.525V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM5.4 6H18.6L17.75 5H6.25L5.4 6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V6.525C3 6.29167 3.0375 6.06667 3.1125 5.85C3.1875 5.63333 3.3 5.43333 3.45 5.25L4.7 3.725C4.88333 3.49167 5.1125 3.3125 5.3875 3.1875C5.6625 3.0625 5.95 3 6.25 3H17.75C18.05 3 18.3375 3.0625 18.6125 3.1875C18.8875 3.3125 19.1167 3.49167 19.3 3.725L20.55 5.25C20.7 5.43333 20.8125 5.63333 20.8875 5.85C20.9625 6.06667 21 6.29167 21 6.525V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM5.4 6H18.6L17.75 5H6.25L5.4 6ZM11.2875 10.2875C11.0958 10.4792 11 10.7167 11 11V14.2L10.1 13.3C9.91667 13.1167 9.68333 13.025 9.4 13.025C9.11667 13.025 8.88333 13.1167 8.7 13.3C8.51667 13.4833 8.425 13.7167 8.425 14C8.425 14.2833 8.51667 14.5167 8.7 14.7L11.3 17.3C11.5 17.5 11.7333 17.6 12 17.6C12.2667 17.6 12.5 17.5 12.7 17.3L15.3 14.7C15.4833 14.5167 15.575 14.2833 15.575 14C15.575 13.7167 15.4833 13.4833 15.3 13.3C15.1167 13.1167 14.8833 13.025 14.6 13.025C14.3167 13.025 14.0833 13.1167 13.9 13.3L13 14.2V11C13 10.7167 12.9042 10.4792 12.7125 10.2875C12.5208 10.0958 12.2833 10 12 10C11.7167 10 11.4792 10.0958 11.2875 10.2875Z\" fill=\"currentColor\"/>` },\r\n    'arrow-down': { outlined: `<path d=\"M11 16.175V5C11 4.71667 11.0958 4.47917 11.2875 4.2875C11.4792 4.09583 11.7167 4 12 4C12.2833 4 12.5208 4.09583 12.7125 4.2875C12.9042 4.47917 13 4.71667 13 5V16.175L17.9 11.275C18.1 11.075 18.3333 10.9792 18.6 10.9875C18.8667 10.9958 19.1 11.1 19.3 11.3C19.4833 11.5 19.5792 11.7333 19.5875 12C19.5958 12.2667 19.5 12.5 19.3 12.7L12.7 19.3C12.6 19.4 12.4917 19.4708 12.375 19.5125C12.2583 19.5542 12.1333 19.575 12 19.575C11.8667 19.575 11.7417 19.5542 11.625 19.5125C11.5083 19.4708 11.4 19.4 11.3 19.3L4.69999 12.7C4.51665 12.5167 4.42499 12.2875 4.42499 12.0125C4.42499 11.7375 4.51665 11.5 4.69999 11.3C4.89999 11.1 5.13749 11 5.41249 11C5.68749 11 5.92499 11.1 6.12499 11.3L11 16.175Z\" fill=\"currentColor\"/>` },\r\n    'arrow-left': { outlined: `<path d=\"M7.82499 13L12.725 17.9C12.925 18.1 13.0208 18.3333 13.0125 18.6C13.0042 18.8667 12.9 19.1 12.7 19.3C12.5 19.4833 12.2667 19.5792 12 19.5875C11.7333 19.5958 11.5 19.5 11.3 19.3L4.69999 12.7C4.59999 12.6 4.52915 12.4917 4.48749 12.375C4.44582 12.2583 4.42499 12.1333 4.42499 12C4.42499 11.8667 4.44582 11.7417 4.48749 11.625C4.52915 11.5083 4.59999 11.4 4.69999 11.3L11.3 4.69999C11.4833 4.51665 11.7125 4.42499 11.9875 4.42499C12.2625 4.42499 12.5 4.51665 12.7 4.69999C12.9 4.89999 13 5.13749 13 5.41249C13 5.68749 12.9 5.92499 12.7 6.12499L7.82499 11H19C19.2833 11 19.5208 11.0958 19.7125 11.2875C19.9042 11.4792 20 11.7167 20 12C20 12.2833 19.9042 12.5208 19.7125 12.7125C19.5208 12.9042 19.2833 13 19 13H7.82499Z\" fill=\"currentColor\"/>` },\r\n    'arrow-right': { outlined: `<path d=\"M16.175 13H5C4.71667 13 4.47917 12.9042 4.2875 12.7125C4.09583 12.5208 4 12.2833 4 12C4 11.7167 4.09583 11.4792 4.2875 11.2875C4.47917 11.0958 4.71667 11 5 11H16.175L11.275 6.09999C11.075 5.89999 10.9792 5.66665 10.9875 5.39999C10.9958 5.13332 11.1 4.89999 11.3 4.69999C11.5 4.51665 11.7333 4.42082 12 4.41249C12.2667 4.40415 12.5 4.49999 12.7 4.69999L19.3 11.3C19.4 11.4 19.4708 11.5083 19.5125 11.625C19.5542 11.7417 19.575 11.8667 19.575 12C19.575 12.1333 19.5542 12.2583 19.5125 12.375C19.4708 12.4917 19.4 12.6 19.3 12.7L12.7 19.3C12.5167 19.4833 12.2875 19.575 12.0125 19.575C11.7375 19.575 11.5 19.4833 11.3 19.3C11.1 19.1 11 18.8625 11 18.5875C11 18.3125 11.1 18.075 11.3 17.875L16.175 13Z\" fill=\"currentColor\"/>` },\r\n    'arrow-up': { outlined: `<path d=\"M11 7.82499L6.09999 12.725C5.89999 12.925 5.66665 13.0208 5.39999 13.0125C5.13332 13.0042 4.89999 12.9 4.69999 12.7C4.51665 12.5 4.42082 12.2667 4.41249 12C4.40415 11.7333 4.49999 11.5 4.69999 11.3L11.3 4.69999C11.4 4.59999 11.5083 4.52915 11.625 4.48749C11.7417 4.44582 11.8667 4.42499 12 4.42499C12.1333 4.42499 12.2583 4.44582 12.375 4.48749C12.4917 4.52915 12.6 4.59999 12.7 4.69999L19.3 11.3C19.4833 11.4833 19.575 11.7125 19.575 11.9875C19.575 12.2625 19.4833 12.5 19.3 12.7C19.1 12.9 18.8625 13 18.5875 13C18.3125 13 18.075 12.9 17.875 12.7L13 7.82499V19C13 19.2833 12.9042 19.5208 12.7125 19.7125C12.5208 19.9042 12.2833 20 12 20C11.7167 20 11.4792 19.9042 11.2875 19.7125C11.0958 19.5208 11 19.2833 11 19V7.82499Z\" fill=\"currentColor\"/>` },\r\n    autorenew: { outlined: `<path d=\"M6 12.05C6 12.3167 6.01667 12.5792 6.05 12.8375C6.08333 13.0959 6.14167 13.35 6.225 13.6C6.30833 13.8834 6.3 14.1542 6.2 14.4125C6.1 14.6709 5.925 14.8584 5.675 14.975C5.40833 15.1084 5.14583 15.1209 4.8875 15.0125C4.62917 14.9042 4.45833 14.7084 4.375 14.425C4.24167 14.0417 4.14583 13.65 4.0875 13.25C4.02917 12.85 4 12.45 4 12.05C4 9.81672 4.775 7.91672 6.325 6.35005C7.875 4.78338 9.76667 4.00005 12 4.00005H12.175L11.275 3.10005C11.0917 2.91672 11 2.68338 11 2.40005C11 2.11672 11.0917 1.88338 11.275 1.70005C11.4583 1.51672 11.6917 1.42505 11.975 1.42505C12.2583 1.42505 12.4917 1.51672 12.675 1.70005L15.275 4.30005C15.475 4.50005 15.575 4.73338 15.575 5.00005C15.575 5.26672 15.475 5.50005 15.275 5.70005L12.675 8.30005C12.4917 8.48338 12.2583 8.57505 11.975 8.57505C11.6917 8.57505 11.4583 8.48338 11.275 8.30005C11.0917 8.11672 11 7.88338 11 7.60005C11 7.31672 11.0917 7.08338 11.275 6.90005L12.175 6.00005H12C10.3333 6.00005 8.91667 6.58755 7.75 7.76255C6.58333 8.93755 6 10.3667 6 12.05ZM18 11.95C18 11.6834 17.9833 11.4209 17.95 11.1625C17.9167 10.9042 17.8583 10.65 17.775 10.4C17.6917 10.1167 17.7 9.84588 17.8 9.58755C17.9 9.32922 18.075 9.14172 18.325 9.02505C18.5917 8.89172 18.8542 8.87922 19.1125 8.98755C19.3708 9.09588 19.5417 9.29172 19.625 9.57505C19.7583 9.95838 19.8542 10.35 19.9125 10.75C19.9708 11.15 20 11.55 20 11.95C20 14.1834 19.225 16.0834 17.675 17.65C16.125 19.2167 14.2333 20 12 20H11.825L12.725 20.9C12.9083 21.0834 13 21.3167 13 21.6C13 21.8834 12.9083 22.1167 12.725 22.3C12.5417 22.4834 12.3083 22.575 12.025 22.575C11.7417 22.575 11.5083 22.4834 11.325 22.3L8.725 19.7C8.525 19.5 8.425 19.2667 8.425 19C8.425 18.7334 8.525 18.5 8.725 18.3L11.325 15.7C11.5083 15.5167 11.7417 15.425 12.025 15.425C12.3083 15.425 12.5417 15.5167 12.725 15.7C12.9083 15.8834 13 16.1167 13 16.4C13 16.6834 12.9083 16.9167 12.725 17.1L11.825 18H12C13.6667 18 15.0833 17.4125 16.25 16.2375C17.4167 15.0625 18 13.6334 18 11.95Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 12.05C6 12.3167 6.01667 12.5792 6.05 12.8375C6.08333 13.0959 6.14167 13.35 6.225 13.6C6.30833 13.8834 6.3 14.1542 6.2 14.4125C6.1 14.6709 5.925 14.8584 5.675 14.975C5.40833 15.1084 5.14583 15.1209 4.8875 15.0125C4.62917 14.9042 4.45833 14.7084 4.375 14.425C4.24167 14.0417 4.14583 13.65 4.0875 13.25C4.02917 12.85 4 12.45 4 12.05C4 9.81672 4.775 7.91672 6.325 6.35005C7.875 4.78338 9.76667 4.00005 12 4.00005H12.175L11.275 3.10005C11.0917 2.91672 11 2.68338 11 2.40005C11 2.11672 11.0917 1.88338 11.275 1.70005C11.4583 1.51672 11.6917 1.42505 11.975 1.42505C12.2583 1.42505 12.4917 1.51672 12.675 1.70005L15.275 4.30005C15.475 4.50005 15.575 4.73338 15.575 5.00005C15.575 5.26672 15.475 5.50005 15.275 5.70005L12.675 8.30005C12.4917 8.48338 12.2583 8.57505 11.975 8.57505C11.6917 8.57505 11.4583 8.48338 11.275 8.30005C11.0917 8.11672 11 7.88338 11 7.60005C11 7.31672 11.0917 7.08338 11.275 6.90005L12.175 6.00005H12C10.3333 6.00005 8.91667 6.58755 7.75 7.76255C6.58333 8.93755 6 10.3667 6 12.05ZM18 11.95C18 11.6834 17.9833 11.4209 17.95 11.1625C17.9167 10.9042 17.8583 10.65 17.775 10.4C17.6917 10.1167 17.7 9.84588 17.8 9.58755C17.9 9.32922 18.075 9.14172 18.325 9.02505C18.5917 8.89172 18.8542 8.87922 19.1125 8.98755C19.3708 9.09588 19.5417 9.29172 19.625 9.57505C19.7583 9.95838 19.8542 10.35 19.9125 10.75C19.9708 11.15 20 11.55 20 11.95C20 14.1834 19.225 16.0834 17.675 17.65C16.125 19.2167 14.2333 20 12 20H11.825L12.725 20.9C12.9083 21.0834 13 21.3167 13 21.6C13 21.8834 12.9083 22.1167 12.725 22.3C12.5417 22.4834 12.3083 22.575 12.025 22.575C11.7417 22.575 11.5083 22.4834 11.325 22.3L8.725 19.7C8.525 19.5 8.425 19.2667 8.425 19C8.425 18.7334 8.525 18.5 8.725 18.3L11.325 15.7C11.5083 15.5167 11.7417 15.425 12.025 15.425C12.3083 15.425 12.5417 15.5167 12.725 15.7C12.9083 15.8834 13 16.1167 13 16.4C13 16.6834 12.9083 16.9167 12.725 17.1L11.825 18H12C13.6667 18 15.0833 17.4125 16.25 16.2375C17.4167 15.0625 18 13.6334 18 11.95Z\" fill=\"currentColor\"/>` },\r\n    award: { outlined: `<path d=\"M12 14.475L13.9 15.625C14.0833 15.7417 14.2667 15.7375 14.45 15.6125C14.6333 15.4875 14.7 15.3167 14.65 15.1L14.15 12.925L15.85 11.45C16.0167 11.3 16.0667 11.1208 16 10.9125C15.9333 10.7042 15.7833 10.5917 15.55 10.575L13.325 10.4L12.45 8.35C12.3667 8.15 12.2167 8.05 12 8.05C11.7833 8.05 11.6333 8.15 11.55 8.35L10.675 10.4L8.45 10.575C8.21667 10.5917 8.06667 10.7042 8 10.9125C7.93333 11.1208 7.98333 11.3 8.15 11.45L9.85 12.925L9.35 15.1C9.3 15.3167 9.36667 15.4875 9.55 15.6125C9.73333 15.7375 9.91667 15.7417 10.1 15.625L12 14.475ZM8.65 20H6C5.45 20 4.97917 19.8042 4.5875 19.4125C4.19583 19.0208 4 18.55 4 18V15.35L2.075 13.4C1.89167 13.2 1.75 12.9792 1.65 12.7375C1.55 12.4958 1.5 12.25 1.5 12C1.5 11.75 1.55 11.5042 1.65 11.2625C1.75 11.0208 1.89167 10.8 2.075 10.6L4 8.65V6C4 5.45 4.19583 4.97917 4.5875 4.5875C4.97917 4.19583 5.45 4 6 4H8.65L10.6 2.075C10.8 1.89167 11.0208 1.75 11.2625 1.65C11.5042 1.55 11.75 1.5 12 1.5C12.25 1.5 12.4958 1.55 12.7375 1.65C12.9792 1.75 13.2 1.89167 13.4 2.075L15.35 4H18C18.55 4 19.0208 4.19583 19.4125 4.5875C19.8042 4.97917 20 5.45 20 6V8.65L21.925 10.6C22.1083 10.8 22.25 11.0208 22.35 11.2625C22.45 11.5042 22.5 11.75 22.5 12C22.5 12.25 22.45 12.4958 22.35 12.7375C22.25 12.9792 22.1083 13.2 21.925 13.4L20 15.35V18C20 18.55 19.8042 19.0208 19.4125 19.4125C19.0208 19.8042 18.55 20 18 20H15.35L13.4 21.925C13.2 22.1083 12.9792 22.25 12.7375 22.35C12.4958 22.45 12.25 22.5 12 22.5C11.75 22.5 11.5042 22.45 11.2625 22.35C11.0208 22.25 10.8 22.1083 10.6 21.925L8.65 20ZM9.5 18L12 20.5L14.5 18H18V14.5L20.5 12L18 9.5V6H14.5L12 3.5L9.5 6H6V9.5L3.5 12L6 14.5V18H9.5Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 14.475L13.925 15.625C14.1083 15.7417 14.2875 15.7375 14.4625 15.6125C14.6375 15.4875 14.7 15.3167 14.65 15.1L14.15 12.925L15.85 11.45C16.0167 11.3 16.0667 11.1208 16 10.9125C15.9333 10.7042 15.7833 10.5917 15.55 10.575L13.325 10.4L12.45 8.325C12.3667 8.125 12.2167 8.025 12 8.025C11.7833 8.025 11.6333 8.125 11.55 8.325L10.675 10.4L8.45 10.575C8.21667 10.5917 8.06667 10.7042 8 10.9125C7.93333 11.1208 7.98333 11.3 8.15 11.45L9.85 12.925L9.35 15.1C9.3 15.3167 9.3625 15.4875 9.5375 15.6125C9.7125 15.7375 9.89167 15.7417 10.075 15.625L12 14.475ZM8.65 20H6C5.45 20 4.97917 19.8042 4.5875 19.4125C4.19583 19.0208 4 18.55 4 18V15.35L2.075 13.4C1.89167 13.2 1.75 12.9792 1.65 12.7375C1.55 12.4958 1.5 12.25 1.5 12C1.5 11.75 1.55 11.5042 1.65 11.2625C1.75 11.0208 1.89167 10.8 2.075 10.6L4 8.65V6C4 5.45 4.19583 4.97917 4.5875 4.5875C4.97917 4.19583 5.45 4 6 4H8.65L10.6 2.075C10.8 1.89167 11.0208 1.75 11.2625 1.65C11.5042 1.55 11.75 1.5 12 1.5C12.25 1.5 12.4958 1.55 12.7375 1.65C12.9792 1.75 13.2 1.89167 13.4 2.075L15.35 4H18C18.55 4 19.0208 4.19583 19.4125 4.5875C19.8042 4.97917 20 5.45 20 6V8.65L21.925 10.6C22.1083 10.8 22.25 11.0208 22.35 11.2625C22.45 11.5042 22.5 11.75 22.5 12C22.5 12.25 22.45 12.4958 22.35 12.7375C22.25 12.9792 22.1083 13.2 21.925 13.4L20 15.35V18C20 18.55 19.8042 19.0208 19.4125 19.4125C19.0208 19.8042 18.55 20 18 20H15.35L13.4 21.925C13.2 22.1083 12.9792 22.25 12.7375 22.35C12.4958 22.45 12.25 22.5 12 22.5C11.75 22.5 11.5042 22.45 11.2625 22.35C11.0208 22.25 10.8 22.1083 10.6 21.925L8.65 20Z\" fill=\"currentColor\"/>` },\r\n    'balance-adjust': { outlined: `<path d=\"M12.1227 15.3955C12.5727 15.3955 12.958 15.2898 13.2784 15.0784C13.5989 14.867 13.7591 14.5364 13.7591 14.0864C13.7591 13.6909 13.592 13.3705 13.258 13.125C12.9239 12.8795 12.3273 12.6 11.4682 12.2864C10.6636 12 10.0739 11.6591 9.69886 11.2636C9.32386 10.8682 9.13636 10.35 9.13636 9.70909C9.13636 9.15 9.33068 8.64205 9.71932 8.18523C10.108 7.72841 10.6364 7.43182 11.3045 7.29545V6.98864C11.3045 6.79773 11.3761 6.63068 11.5193 6.4875C11.6625 6.34432 11.8295 6.27273 12.0205 6.27273C12.2114 6.27273 12.3784 6.34432 12.5216 6.4875C12.6648 6.63068 12.7364 6.79773 12.7364 6.98864V7.29545C13.1318 7.32273 13.4966 7.45568 13.8307 7.69432C14.1648 7.93295 14.4341 8.22273 14.6386 8.56364C14.7341 8.71364 14.7409 8.87386 14.6591 9.04432C14.5773 9.21477 14.4409 9.33409 14.25 9.40227C14.0727 9.47045 13.8955 9.47727 13.7182 9.42273C13.5409 9.36818 13.3977 9.26591 13.2886 9.11591C13.1523 8.95227 12.9818 8.81932 12.7773 8.71705C12.5727 8.61477 12.3273 8.56364 12.0409 8.56364C11.5636 8.56364 11.1989 8.66591 10.9466 8.87045C10.6943 9.075 10.5682 9.35455 10.5682 9.70909C10.5682 10.0636 10.725 10.3432 11.0386 10.5477C11.3523 10.7523 11.9182 10.9909 12.7364 11.2636C13.7182 11.6182 14.3727 12.0341 14.7 12.5114C15.0273 12.9886 15.1909 13.5136 15.1909 14.0864C15.1909 14.4818 15.1227 14.8295 14.9864 15.1295C14.85 15.4295 14.6693 15.6852 14.4443 15.8966C14.2193 16.108 13.9568 16.2784 13.6568 16.408C13.3568 16.5375 13.0364 16.6364 12.6955 16.7045V17.0114C12.6955 17.2023 12.6239 17.3693 12.4807 17.5125C12.3375 17.6557 12.1705 17.7273 11.9795 17.7273C11.7886 17.7273 11.6216 17.6557 11.4784 17.5125C11.3352 17.3693 11.2636 17.2023 11.2636 17.0114V16.6636C10.7455 16.5545 10.3023 16.35 9.93409 16.05C9.56591 15.75 9.27273 15.3682 9.05455 14.9045C8.97273 14.7136 8.97614 14.5295 9.06477 14.3523C9.15341 14.175 9.29318 14.0523 9.48409 13.9841C9.66136 13.9159 9.83864 13.9193 10.0159 13.9943C10.1932 14.0693 10.3295 14.1886 10.425 14.3523C10.6159 14.7068 10.858 14.9693 11.1511 15.1398C11.4443 15.3102 11.7682 15.3955 12.1227 15.3955ZM12 21C10.4727 21 9.06818 20.6523 7.78636 19.9568C6.50455 19.2614 5.45455 18.3341 4.63636 17.175V18.5455C4.63636 18.7773 4.55795 18.9716 4.40114 19.1284C4.24432 19.2852 4.05 19.3636 3.81818 19.3636C3.58636 19.3636 3.39205 19.2852 3.23523 19.1284C3.07841 18.9716 3 18.7773 3 18.5455V15.2727C3 15.0409 3.07841 14.8466 3.23523 14.6898C3.39205 14.533 3.58636 14.4545 3.81818 14.4545H7.09091C7.32273 14.4545 7.51705 14.533 7.67386 14.6898C7.83068 14.8466 7.90909 15.0409 7.90909 15.2727C7.90909 15.5045 7.83068 15.6989 7.67386 15.8557C7.51705 16.0125 7.32273 16.0909 7.09091 16.0909H5.88409C6.53864 17.0727 7.40114 17.8636 8.47159 18.4636C9.54205 19.0636 10.7182 19.3636 12 19.3636C13.9227 19.3636 15.5761 18.7227 16.9602 17.4409C18.3443 16.1591 19.1318 14.5841 19.3227 12.7159C19.35 12.4977 19.4455 12.3239 19.6091 12.1943C19.7727 12.0648 19.9636 12 20.1818 12C20.4136 12 20.6114 12.0716 20.775 12.2148C20.9386 12.358 21.0068 12.5318 20.9795 12.7364C20.8841 13.8955 20.5841 14.9761 20.0795 15.9784C19.575 16.9807 18.9205 17.8534 18.1159 18.5966C17.3114 19.3398 16.3875 19.9261 15.3443 20.3557C14.3011 20.7852 13.1864 21 12 21ZM12 4.63636C10.0773 4.63636 8.42386 5.27727 7.03977 6.55909C5.65568 7.84091 4.86818 9.41591 4.67727 11.2841C4.65 11.5023 4.55455 11.6761 4.39091 11.8057C4.22727 11.9352 4.03636 12 3.81818 12C3.58636 12 3.38864 11.9284 3.225 11.7852C3.06136 11.642 2.99318 11.4682 3.02045 11.2636C3.11591 10.1045 3.41591 9.02386 3.92045 8.02159C4.425 7.01932 5.07955 6.14659 5.88409 5.40341C6.68864 4.66023 7.6125 4.07386 8.65568 3.64432C9.69886 3.21477 10.8136 3 12 3C13.5273 3 14.9318 3.34773 16.2136 4.04318C17.4955 4.73864 18.5455 5.66591 19.3636 6.825V5.45455C19.3636 5.22273 19.442 5.02841 19.5989 4.87159C19.7557 4.71477 19.95 4.63636 20.1818 4.63636C20.4136 4.63636 20.608 4.71477 20.7648 4.87159C20.9216 5.02841 21 5.22273 21 5.45455V8.72727C21 8.95909 20.9216 9.15341 20.7648 9.31023C20.608 9.46705 20.4136 9.54545 20.1818 9.54545H16.9091C16.6773 9.54545 16.483 9.46705 16.3261 9.31023C16.1693 9.15341 16.0909 8.95909 16.0909 8.72727C16.0909 8.49545 16.1693 8.30114 16.3261 8.14432C16.483 7.9875 16.6773 7.90909 16.9091 7.90909H18.1159C17.4614 6.92727 16.5989 6.13636 15.5284 5.53636C14.458 4.93636 13.2818 4.63636 12 4.63636Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.1227 15.3955C12.5727 15.3955 12.958 15.2898 13.2784 15.0784C13.5989 14.867 13.7591 14.5364 13.7591 14.0864C13.7591 13.6909 13.592 13.3705 13.258 13.125C12.9239 12.8795 12.3273 12.6 11.4682 12.2864C10.6636 12 10.0739 11.6591 9.69886 11.2636C9.32386 10.8682 9.13636 10.35 9.13636 9.70909C9.13636 9.15 9.33068 8.64205 9.71932 8.18523C10.108 7.72841 10.6364 7.43182 11.3045 7.29545V6.98864C11.3045 6.79773 11.3761 6.63068 11.5193 6.4875C11.6625 6.34432 11.8295 6.27273 12.0205 6.27273C12.2114 6.27273 12.3784 6.34432 12.5216 6.4875C12.6648 6.63068 12.7364 6.79773 12.7364 6.98864V7.29545C13.1318 7.32273 13.4966 7.45568 13.8307 7.69432C14.1648 7.93295 14.4341 8.22273 14.6386 8.56364C14.7341 8.71364 14.7409 8.87386 14.6591 9.04432C14.5773 9.21477 14.4409 9.33409 14.25 9.40227C14.0727 9.47045 13.8955 9.47727 13.7182 9.42273C13.5409 9.36818 13.3977 9.26591 13.2886 9.11591C13.1523 8.95227 12.9818 8.81932 12.7773 8.71705C12.5727 8.61477 12.3273 8.56364 12.0409 8.56364C11.5636 8.56364 11.1989 8.66591 10.9466 8.87045C10.6943 9.075 10.5682 9.35455 10.5682 9.70909C10.5682 10.0636 10.725 10.3432 11.0386 10.5477C11.3523 10.7523 11.9182 10.9909 12.7364 11.2636C13.7182 11.6182 14.3727 12.0341 14.7 12.5114C15.0273 12.9886 15.1909 13.5136 15.1909 14.0864C15.1909 14.4818 15.1227 14.8295 14.9864 15.1295C14.85 15.4295 14.6693 15.6852 14.4443 15.8966C14.2193 16.108 13.9568 16.2784 13.6568 16.408C13.3568 16.5375 13.0364 16.6364 12.6955 16.7045V17.0114C12.6955 17.2023 12.6239 17.3693 12.4807 17.5125C12.3375 17.6557 12.1705 17.7273 11.9795 17.7273C11.7886 17.7273 11.6216 17.6557 11.4784 17.5125C11.3352 17.3693 11.2636 17.2023 11.2636 17.0114V16.6636C10.7455 16.5545 10.3023 16.35 9.93409 16.05C9.56591 15.75 9.27273 15.3682 9.05455 14.9045C8.97273 14.7136 8.97614 14.5295 9.06477 14.3523C9.15341 14.175 9.29318 14.0523 9.48409 13.9841C9.66136 13.9159 9.83864 13.9193 10.0159 13.9943C10.1932 14.0693 10.3295 14.1886 10.425 14.3523C10.6159 14.7068 10.858 14.9693 11.1511 15.1398C11.4443 15.3102 11.7682 15.3955 12.1227 15.3955ZM12 21C10.4727 21 9.06818 20.6523 7.78636 19.9568C6.50455 19.2614 5.45455 18.3341 4.63636 17.175V18.5455C4.63636 18.7773 4.55795 18.9716 4.40114 19.1284C4.24432 19.2852 4.05 19.3636 3.81818 19.3636C3.58636 19.3636 3.39205 19.2852 3.23523 19.1284C3.07841 18.9716 3 18.7773 3 18.5455V15.2727C3 15.0409 3.07841 14.8466 3.23523 14.6898C3.39205 14.533 3.58636 14.4545 3.81818 14.4545H7.09091C7.32273 14.4545 7.51705 14.533 7.67386 14.6898C7.83068 14.8466 7.90909 15.0409 7.90909 15.2727C7.90909 15.5045 7.83068 15.6989 7.67386 15.8557C7.51705 16.0125 7.32273 16.0909 7.09091 16.0909H5.88409C6.53864 17.0727 7.40114 17.8636 8.47159 18.4636C9.54205 19.0636 10.7182 19.3636 12 19.3636C13.9227 19.3636 15.5761 18.7227 16.9602 17.4409C18.3443 16.1591 19.1318 14.5841 19.3227 12.7159C19.35 12.4977 19.4455 12.3239 19.6091 12.1943C19.7727 12.0648 19.9636 12 20.1818 12C20.4136 12 20.6114 12.0716 20.775 12.2148C20.9386 12.358 21.0068 12.5318 20.9795 12.7364C20.8841 13.8955 20.5841 14.9761 20.0795 15.9784C19.575 16.9807 18.9205 17.8534 18.1159 18.5966C17.3114 19.3398 16.3875 19.9261 15.3443 20.3557C14.3011 20.7852 13.1864 21 12 21ZM12 4.63636C10.0773 4.63636 8.42386 5.27727 7.03977 6.55909C5.65568 7.84091 4.86818 9.41591 4.67727 11.2841C4.65 11.5023 4.55455 11.6761 4.39091 11.8057C4.22727 11.9352 4.03636 12 3.81818 12C3.58636 12 3.38864 11.9284 3.225 11.7852C3.06136 11.642 2.99318 11.4682 3.02045 11.2636C3.11591 10.1045 3.41591 9.02386 3.92045 8.02159C4.425 7.01932 5.07955 6.14659 5.88409 5.40341C6.68864 4.66023 7.6125 4.07386 8.65568 3.64432C9.69886 3.21477 10.8136 3 12 3C13.5273 3 14.9318 3.34773 16.2136 4.04318C17.4955 4.73864 18.5455 5.66591 19.3636 6.825V5.45455C19.3636 5.22273 19.442 5.02841 19.5989 4.87159C19.7557 4.71477 19.95 4.63636 20.1818 4.63636C20.4136 4.63636 20.608 4.71477 20.7648 4.87159C20.9216 5.02841 21 5.22273 21 5.45455V8.72727C21 8.95909 20.9216 9.15341 20.7648 9.31023C20.608 9.46705 20.4136 9.54545 20.1818 9.54545H16.9091C16.6773 9.54545 16.483 9.46705 16.3261 9.31023C16.1693 9.15341 16.0909 8.95909 16.0909 8.72727C16.0909 8.49545 16.1693 8.30114 16.3261 8.14432C16.483 7.9875 16.6773 7.90909 16.9091 7.90909H18.1159C17.4614 6.92727 16.5989 6.13636 15.5284 5.53636C14.458 4.93636 13.2818 4.63636 12 4.63636Z\" fill=\"currentColor\"/>` },\r\n    bank: { outlined: `<g clip-path=\"url(#clip0_5929_78554)\"><path d=\"M12.67 2.217L21.17 6.967C21.4195 7.09157 21.6294 7.28323 21.776 7.52047C21.9226 7.7577 22.0002 8.03112 22 8.31V9.75C22 10.44 21.44 11 20.75 11H20V19H21C21.2652 19 21.5196 19.1054 21.7071 19.2929C21.8946 19.4804 22 19.7348 22 20C22 20.2652 21.8946 20.5196 21.7071 20.7071C21.5196 20.8946 21.2652 21 21 21H3C2.73478 21 2.48043 20.8946 2.29289 20.7071C2.10536 20.5196 2 20.2652 2 20C2 19.7348 2.10536 19.4804 2.29289 19.2929C2.48043 19.1054 2.73478 19 3 19H4V11H3.25C2.56 11 2 10.44 2 9.75V8.31C2 7.788 2.27 7.308 2.706 7.036L11.329 2.217C11.5373 2.1128 11.7671 2.05855 12 2.05855C12.2329 2.05855 12.4617 2.1128 12.67 2.217ZM18 11H6V19H9V13H11V19H13V13H15V19H18V11ZM12 4.118L4 8.618V9H20V8.618L12 4.118ZM12 6C12.2652 6 12.5196 6.10536 12.7071 6.29289C12.8946 6.48043 13 6.73478 13 7C13 7.26522 12.8946 7.51957 12.7071 7.70711C12.5196 7.89464 12.2652 8 12 8C11.7348 8 11.4804 7.89464 11.2929 7.70711C11.1054 7.51957 11 7.26522 11 7C11 6.73478 11.1054 6.48043 11.2929 6.29289C11.4804 6.10536 11.7348 6 12 6Z\" fill=\"currentColor\"/></g><defs><clipPath id=\"clip0_5929_78554\"><rect width=\"24\" height=\"24\" fill=\"white\"/></clipPath></defs>`, filled: `<g clip-path=\"url(#clip0_5929_78555)\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.67 2.217L21.17 6.967C21.4195 7.09157 21.6294 7.28323 21.776 7.52047C21.9226 7.7577 22.0002 8.03112 22 8.31V9.75C22 10.44 21.44 11 20.75 11H20V19H21C21.2652 19 21.5196 19.1054 21.7071 19.2929C21.8946 19.4804 22 19.7348 22 20C22 20.2652 21.8946 20.5196 21.7071 20.7071C21.5196 20.8946 21.2652 21 21 21H3C2.73478 21 2.48043 20.8946 2.29289 20.7071C2.10536 20.5196 2 20.2652 2 20C2 19.7348 2.10536 19.4804 2.29289 19.2929C2.48043 19.1054 2.73478 19 3 19H4V11H3.25C2.56 11 2 10.44 2 9.75V8.31C2 7.788 2.27 7.308 2.706 7.036L11.329 2.217C11.5373 2.1128 11.7671 2.05855 12 2.05855C12.2329 2.05855 12.4617 2.1128 12.67 2.217ZM17 11H7V19H9V13H11V19H13V13H15V19H17V11ZM12 6C11.7348 6 11.4804 6.10536 11.2929 6.29289C11.1054 6.48043 11 6.73478 11 7C11 7.26522 11.1054 7.51957 11.2929 7.70711C11.4804 7.89464 11.7348 8 12 8C12.2652 8 12.5196 7.89464 12.7071 7.70711C12.8946 7.51957 13 7.26522 13 7C13 6.73478 12.8946 6.48043 12.7071 6.29289C12.5196 6.10536 12.2652 6 12 6Z\" fill=\"currentColor\"/></g><defs><clipPath id=\"clip0_5929_78555\"><rect width=\"24\" height=\"24\" fill=\"white\"/></clipPath></defs>` },\r\n    banner: { outlined: `<path d=\"M7 14V20C7 20.2833 6.90417 20.5208 6.7125 20.7125C6.52083 20.9042 6.28333 21 6 21C5.71667 21 5.47917 20.9042 5.2875 20.7125C5.09583 20.5208 5 20.2833 5 20V5C5 4.71667 5.09583 4.47917 5.2875 4.2875C5.47917 4.09583 5.71667 4 6 4H13.175C13.4083 4 13.6167 4.075 13.8 4.225C13.9833 4.375 14.1 4.56667 14.15 4.8L14.4 6H19C19.2833 6 19.5208 6.09583 19.7125 6.2875C19.9042 6.47917 20 6.71667 20 7V15C20 15.2833 19.9042 15.5208 19.7125 15.7125C19.5208 15.9042 19.2833 16 19 16H13.825C13.5917 16 13.3833 15.925 13.2 15.775C13.0167 15.625 12.9 15.4333 12.85 15.2L12.6 14H7ZM14.65 14H18V8H13.575C13.3417 8 13.1333 7.925 12.95 7.775C12.7667 7.625 12.65 7.43333 12.6 7.2L12.35 6H7V12H13.425C13.6583 12 13.8667 12.075 14.05 12.225C14.2333 12.375 14.35 12.5667 14.4 12.8L14.65 14Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M7 14V20C7 20.2833 6.90417 20.5208 6.7125 20.7125C6.52083 20.9042 6.28333 21 6 21C5.71667 21 5.47917 20.9042 5.2875 20.7125C5.09583 20.5208 5 20.2833 5 20V5C5 4.71667 5.09583 4.47917 5.2875 4.2875C5.47917 4.09583 5.71667 4 6 4H13.175C13.4083 4 13.6167 4.075 13.8 4.225C13.9833 4.375 14.1 4.56667 14.15 4.8L14.4 6H19C19.2833 6 19.5208 6.09583 19.7125 6.2875C19.9042 6.47917 20 6.71667 20 7V15C20 15.2833 19.9042 15.5208 19.7125 15.7125C19.5208 15.9042 19.2833 16 19 16H13.825C13.5917 16 13.3833 15.925 13.2 15.775C13.0167 15.625 12.9 15.4333 12.85 15.2L12.6 14H7Z\" fill=\"currentColor\"/>` },\r\n    bible: { outlined: `<path d=\"M7.5 22C6.51667 22 5.6875 21.6625 5.0125 20.9875C4.3375 20.3125 4 19.4833 4 18.5V5.5C4 4.53333 4.3375 3.70833 5.0125 3.025C5.6875 2.34167 6.51667 2 7.5 2H19.6C19.8209 2 20 2.17909 20 2.4V16.6C20 16.8209 19.8181 16.9931 19.6035 17.0457C19.343 17.1094 19.1168 17.24 18.925 17.4375C18.6417 17.7292 18.5 18.0833 18.5 18.5C18.5 18.9333 18.6417 19.2917 18.925 19.575C19.1168 19.7668 19.3429 19.8936 19.6034 19.9556C19.8183 20.0067 20 20.1791 20 20.4V21.6C20 21.8209 19.8209 22 19.6 22H7.5ZM7.5 20H16.2184C16.5056 20 16.7005 19.7049 16.6239 19.4282C16.611 19.3814 16.5989 19.3345 16.5875 19.2875C16.5292 19.0458 16.5 18.7833 16.5 18.5C16.5 18.2333 16.525 17.975 16.575 17.725C16.583 17.6851 16.5918 17.6454 16.6015 17.606C16.6723 17.3172 16.4751 17 16.1778 17H7.5C7.06667 17 6.70833 17.1458 6.425 17.4375C6.14167 17.7292 6 18.0833 6 18.5C6 18.9333 6.14167 19.2917 6.425 19.575C6.70833 19.8583 7.06667 20 7.5 20ZM6 15.325C6.23333 15.2083 6.47083 15.125 6.7125 15.075C6.95417 15.025 7.21667 15 7.5 15H17.6C17.8209 15 18 14.8209 18 14.6V4.4C18 4.17909 17.8209 4 17.6 4H7.5C7.06667 4 6.70833 4.14583 6.425 4.4375C6.14167 4.72917 6 5.08333 6 5.5V15.325Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.1062 9.16308H9.8934C9.47212 9.16308 9.12744 8.8184 9.12744 8.39712C9.12744 7.97585 9.47212 7.63116 9.8934 7.63116H14.1062C14.5274 7.63116 14.8721 7.97585 14.8721 8.39712C14.8721 8.8184 14.5274 9.16308 14.1062 9.16308Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.9998 13.8354C11.5786 13.8354 11.2339 13.4907 11.2339 13.0695V6.52054C11.2339 6.09926 11.5786 5.75458 11.9998 5.75458C12.4211 5.75458 12.7658 6.09926 12.7658 6.52054V13.0695C12.7658 13.4907 12.4211 13.8354 11.9998 13.8354Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20 16.6C20 16.8209 19.8181 16.9931 19.6035 17.0456C19.3429 17.1094 19.1166 17.24 18.9248 17.4375C18.6415 17.7291 18.5 18.0834 18.5 18.5C18.5 18.9333 18.6415 19.2919 18.9248 19.5752C19.1166 19.767 19.3428 19.8938 19.6033 19.9557C19.8183 20.0067 20 20.1791 20 20.4V21.6C20 21.8209 19.8209 22 19.6 22H7.5C6.51667 22 5.6877 21.6623 5.0127 20.9873C4.3377 20.3123 4 19.4833 4 18.5V5.5C4 4.53338 4.33776 3.7087 5.0127 3.02539C5.6877 2.34206 6.51667 2 7.5 2H19.6C19.8209 2 20 2.17909 20 2.4V16.6ZM7.5 17C7.06667 17 6.70814 17.1458 6.4248 17.4375C6.14153 17.7291 6 18.0834 6 18.5C6 18.9333 6.14147 19.2919 6.4248 19.5752C6.70814 19.8585 7.06667 20 7.5 20H16.2186C16.5057 20 16.7009 19.7049 16.6244 19.4281C16.6114 19.3812 16.5993 19.3342 16.5879 19.2871C16.5296 19.0455 16.5 18.7832 16.5 18.5C16.5 18.2333 16.5252 17.9746 16.5752 17.7246C16.5832 17.6848 16.592 17.6453 16.6016 17.6059C16.6724 17.3171 16.4753 17 16.178 17H7.5ZM12 5.75488C11.5787 5.75488 11.2344 6.09924 11.2344 6.52051V7.23086C11.2344 7.45177 11.0553 7.63086 10.8344 7.63086H9.89355C9.47228 7.63086 9.12793 7.97618 9.12793 8.39746C9.12811 8.81858 9.47239 9.16309 9.89355 9.16309H10.8344C11.0553 9.16309 11.2344 9.34217 11.2344 9.56309V13.0693C11.2344 13.4906 11.5787 13.835 12 13.835C12.4212 13.8349 12.7656 13.4906 12.7656 13.0693V9.56309C12.7656 9.34217 12.9447 9.16309 13.1656 9.16309H14.1064C14.5275 9.16293 14.8719 8.81849 14.8721 8.39746C14.8721 7.97628 14.5276 7.63101 14.1064 7.63086H13.1656C12.9447 7.63086 12.7656 7.45177 12.7656 7.23086V6.52051C12.7656 6.0993 12.4212 5.75497 12 5.75488Z\" fill=\"currentColor\"/>` },\r\n    blocked: { outlined: `<path d=\"M8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22C10.6167 22 9.31667 21.7375 8.1 21.2125ZM12 20C12.9 20 13.7667 19.8542 14.6 19.5625C15.4333 19.2708 16.2 18.85 16.9 18.3L5.7 7.1C5.15 7.8 4.72917 8.56667 4.4375 9.4C4.14583 10.2333 4 11.1 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20ZM18.3 16.9C18.85 16.2 19.2708 15.4333 19.5625 14.6C19.8542 13.7667 20 12.9 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C11.1 4 10.2333 4.14583 9.4 4.4375C8.56667 4.72917 7.8 5.15 7.1 5.7L18.3 16.9Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22C10.6167 22 9.31667 21.7375 8.1 21.2125ZM16.925 18.325C17.1917 18.125 17.4417 17.9083 17.675 17.675C17.9083 17.4417 18.125 17.1917 18.325 16.925L7.075 5.675C6.80833 5.875 6.55833 6.09167 6.325 6.325C6.09167 6.55833 5.875 6.80833 5.675 7.075L16.925 18.325Z\" fill=\"currentColor\"/>` },\r\n    body: { outlined: `<path d=\"M7 17H12C12.2833 17 12.5208 16.9042 12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16C13 15.7167 12.9042 15.4792 12.7125 15.2875C12.5208 15.0958 12.2833 15 12 15H7C6.71667 15 6.47917 15.0958 6.2875 15.2875C6.09583 15.4792 6 15.7167 6 16C6 16.2833 6.09583 16.5208 6.2875 16.7125C6.47917 16.9042 6.71667 17 7 17ZM17 7C16.7167 7 16.4792 7.09583 16.2875 7.2875C16.0958 7.47917 16 7.71667 16 8V16C16 16.2833 16.0958 16.5208 16.2875 16.7125C16.4792 16.9042 16.7167 17 17 17C17.2833 17 17.5208 16.9042 17.7125 16.7125C17.9042 16.5208 18 16.2833 18 16V8C18 7.71667 17.9042 7.47917 17.7125 7.2875C17.5208 7.09583 17.2833 7 17 7ZM7 13H12C12.2833 13 12.5208 12.9042 12.7125 12.7125C12.9042 12.5208 13 12.2833 13 12C13 11.7167 12.9042 11.4792 12.7125 11.2875C12.5208 11.0958 12.2833 11 12 11H7C6.71667 11 6.47917 11.0958 6.2875 11.2875C6.09583 11.4792 6 11.7167 6 12C6 12.2833 6.09583 12.5208 6.2875 12.7125C6.47917 12.9042 6.71667 13 7 13ZM7 9H12C12.2833 9 12.5208 8.90417 12.7125 8.7125C12.9042 8.52083 13 8.28333 13 8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7H7C6.71667 7 6.47917 7.09583 6.2875 7.2875C6.09583 7.47917 6 7.71667 6 8C6 8.28333 6.09583 8.52083 6.2875 8.7125C6.47917 8.90417 6.71667 9 7 9ZM4 21C3.45 21 2.97917 20.8042 2.5875 20.4125C2.19583 20.0208 2 19.55 2 19V5C2 4.45 2.19583 3.97917 2.5875 3.5875C2.97917 3.19583 3.45 3 4 3H20C20.55 3 21.0208 3.19583 21.4125 3.5875C21.8042 3.97917 22 4.45 22 5V19C22 19.55 21.8042 20.0208 21.4125 20.4125C21.0208 20.8042 20.55 21 20 21H4ZM4 18.4C4 18.7314 4.26863 19 4.6 19H19.4C19.7314 19 20 18.7314 20 18.4V5.6C20 5.26863 19.7314 5 19.4 5H4.6C4.26863 5 4 5.26863 4 5.6V18.4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M7 17H12C12.2833 17 12.5208 16.9042 12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16C13 15.7167 12.9042 15.4792 12.7125 15.2875C12.5208 15.0958 12.2833 15 12 15H7C6.71667 15 6.47917 15.0958 6.2875 15.2875C6.09583 15.4792 6 15.7167 6 16C6 16.2833 6.09583 16.5208 6.2875 16.7125C6.47917 16.9042 6.71667 17 7 17ZM17 7C16.7167 7 16.4792 7.09583 16.2875 7.2875C16.0958 7.47917 16 7.71667 16 8V16C16 16.2833 16.0958 16.5208 16.2875 16.7125C16.4792 16.9042 16.7167 17 17 17C17.2833 17 17.5208 16.9042 17.7125 16.7125C17.9042 16.5208 18 16.2833 18 16V8C18 7.71667 17.9042 7.47917 17.7125 7.2875C17.5208 7.09583 17.2833 7 17 7ZM7 13H12C12.2833 13 12.5208 12.9042 12.7125 12.7125C12.9042 12.5208 13 12.2833 13 12C13 11.7167 12.9042 11.4792 12.7125 11.2875C12.5208 11.0958 12.2833 11 12 11H7C6.71667 11 6.47917 11.0958 6.2875 11.2875C6.09583 11.4792 6 11.7167 6 12C6 12.2833 6.09583 12.5208 6.2875 12.7125C6.47917 12.9042 6.71667 13 7 13ZM7 9H12C12.2833 9 12.5208 8.90417 12.7125 8.7125C12.9042 8.52083 13 8.28333 13 8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7H7C6.71667 7 6.47917 7.09583 6.2875 7.2875C6.09583 7.47917 6 7.71667 6 8C6 8.28333 6.09583 8.52083 6.2875 8.7125C6.47917 8.90417 6.71667 9 7 9ZM4 21C3.45 21 2.97917 20.8042 2.5875 20.4125C2.19583 20.0208 2 19.55 2 19V5C2 4.45 2.19583 3.97917 2.5875 3.5875C2.97917 3.19583 3.45 3 4 3H20C20.55 3 21.0208 3.19583 21.4125 3.5875C21.8042 3.97917 22 4.45 22 5V19C22 19.55 21.8042 20.0208 21.4125 20.4125C21.0208 20.8042 20.55 21 20 21H4Z\" fill=\"currentColor\"/>` },\r\n    bold: { outlined: `<path d=\"M8.79999 19C8.24999 19 7.77915 18.8042 7.38749 18.4125C6.99582 18.0208 6.79999 17.55 6.79999 17V7C6.79999 6.45 6.99582 5.97917 7.38749 5.5875C7.77915 5.19583 8.24999 5 8.79999 5H12.325C13.4083 5 14.4083 5.33333 15.325 6C16.2417 6.66667 16.7 7.59167 16.7 8.775C16.7 9.625 16.5083 10.2792 16.125 10.7375C15.7417 11.1958 15.3833 11.525 15.05 11.725C15.4667 11.9083 15.9292 12.25 16.4375 12.75C16.9458 13.25 17.2 14 17.2 15C17.2 16.4833 16.6583 17.5208 15.575 18.1125C14.4917 18.7042 13.475 19 12.525 19H8.79999ZM9.82499 16.2H12.425C13.225 16.2 13.7125 15.9958 13.8875 15.5875C14.0625 15.1792 14.15 14.8833 14.15 14.7C14.15 14.5167 14.0625 14.2208 13.8875 13.8125C13.7125 13.4042 13.2 13.2 12.35 13.2H9.82499V16.2ZM9.82499 10.5H12.15C12.7 10.5 13.1 10.3583 13.35 10.075C13.6 9.79167 13.725 9.475 13.725 9.125C13.725 8.725 13.5833 8.4 13.3 8.15C13.0167 7.9 12.65 7.775 12.2 7.775H9.82499V10.5Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8.79999 19C8.24999 19 7.77915 18.8042 7.38749 18.4125C6.99582 18.0208 6.79999 17.55 6.79999 17V7C6.79999 6.45 6.99582 5.97917 7.38749 5.5875C7.77915 5.19583 8.24999 5 8.79999 5H12.325C13.4083 5 14.4083 5.33333 15.325 6C16.2417 6.66667 16.7 7.59167 16.7 8.775C16.7 9.625 16.5083 10.2792 16.125 10.7375C15.7417 11.1958 15.3833 11.525 15.05 11.725C15.4667 11.9083 15.9292 12.25 16.4375 12.75C16.9458 13.25 17.2 14 17.2 15C17.2 16.4833 16.6583 17.5208 15.575 18.1125C14.4917 18.7042 13.475 19 12.525 19H8.79999ZM9.82499 16.2H12.425C13.225 16.2 13.7125 15.9958 13.8875 15.5875C14.0625 15.1792 14.15 14.8833 14.15 14.7C14.15 14.5167 14.0625 14.2208 13.8875 13.8125C13.7125 13.4042 13.2 13.2 12.35 13.2H9.82499V16.2ZM9.82499 10.5H12.15C12.7 10.5 13.1 10.3583 13.35 10.075C13.6 9.79167 13.725 9.475 13.725 9.125C13.725 8.725 13.5833 8.4 13.3 8.15C13.0167 7.9 12.65 7.775 12.2 7.775H9.82499V10.5Z\" fill=\"currentColor\"/>` },\r\n    boleto: { outlined: `<path d=\"M3.6084 4C4.16068 4 4.6084 4.44772 4.6084 5V20.3916C4.60824 20.9437 4.16058 21.3916 3.6084 21.3916H3C2.44781 21.3916 2.00016 20.9437 2 20.3916V5C2 4.44772 2.44772 4 3 4H3.6084ZM21 4C21.5523 4 22 4.44772 22 5V20.3916C21.9998 20.9437 21.5522 21.3916 21 21.3916H20.3916C19.8394 21.3916 19.3918 20.9437 19.3916 20.3916V5C19.3916 4.44772 19.8393 4 20.3916 4H21ZM7.95605 4C8.50834 4 8.95605 4.44772 8.95605 5V16.9131C8.95603 17.4654 8.50833 17.9131 7.95605 17.9131H7.34766C6.79546 17.913 6.34768 17.4653 6.34766 16.9131V5C6.34766 4.44777 6.79545 4.00009 7.34766 4H7.95605ZM12.3047 4C12.8568 4.00018 13.3047 4.44783 13.3047 5V16.9131C13.3047 17.4652 12.8568 17.9129 12.3047 17.9131H11.6953C11.1432 17.9129 10.6953 17.4652 10.6953 16.9131V5C10.6953 4.44783 11.1432 4.00018 11.6953 4H12.3047ZM16.6523 4C17.2046 4.00009 17.6523 4.44777 17.6523 5V16.9131C17.6523 17.4653 17.2045 17.913 16.6523 17.9131H16.0439C15.4917 17.9131 15.044 17.4654 15.0439 16.9131V5C15.0439 4.44772 15.4917 4 16.0439 4H16.6523Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M3.6084 4C4.16068 4 4.6084 4.44772 4.6084 5V20.3916C4.60824 20.9437 4.16058 21.3916 3.6084 21.3916H3C2.44781 21.3916 2.00016 20.9437 2 20.3916V5C2 4.44772 2.44772 4 3 4H3.6084ZM21 4C21.5523 4 22 4.44772 22 5V20.3916C21.9998 20.9437 21.5522 21.3916 21 21.3916H20.3916C19.8394 21.3916 19.3918 20.9437 19.3916 20.3916V5C19.3916 4.44772 19.8393 4 20.3916 4H21ZM7.95605 4C8.50834 4 8.95605 4.44772 8.95605 5V16.9131C8.95603 17.4654 8.50833 17.9131 7.95605 17.9131H7.34766C6.79546 17.913 6.34768 17.4653 6.34766 16.9131V5C6.34766 4.44777 6.79545 4.00009 7.34766 4H7.95605ZM12.3047 4C12.8568 4.00018 13.3047 4.44783 13.3047 5V16.9131C13.3047 17.4652 12.8568 17.9129 12.3047 17.9131H11.6953C11.1432 17.9129 10.6953 17.4652 10.6953 16.9131V5C10.6953 4.44783 11.1432 4.00018 11.6953 4H12.3047ZM16.6523 4C17.2046 4.00009 17.6523 4.44777 17.6523 5V16.9131C17.6523 17.4653 17.2045 17.913 16.6523 17.9131H16.0439C15.4917 17.9131 15.044 17.4654 15.0439 16.9131V5C15.0439 4.44772 15.4917 4 16.0439 4H16.6523Z\" fill=\"currentColor\"/>` },\r\n    bot: { outlined: `<path d=\"M12.0898 3.12988C12.5309 3.17488 12.875 3.5471 12.875 4V7.125H18C19.5878 7.125 20.875 8.41218 20.875 10V13.125H22C22.4832 13.125 22.875 13.5168 22.875 14C22.875 14.4832 22.4832 14.875 22 14.875H20.875V18C20.875 19.5878 19.5878 20.875 18 20.875H6C4.41218 20.875 3.125 19.5878 3.125 18V14.875H2C1.51675 14.875 1.125 14.4832 1.125 14C1.125 13.5168 1.51675 13.125 2 13.125H3.125V10C3.125 8.41218 4.41218 7.125 6 7.125H11.125V4.875H8C7.51675 4.875 7.125 4.48325 7.125 4C7.125 3.51675 7.51675 3.125 8 3.125H12L12.0898 3.12988ZM6 8.875C5.37868 8.875 4.875 9.37868 4.875 10V18C4.875 18.6213 5.37868 19.125 6 19.125H18C18.6213 19.125 19.125 18.6213 19.125 18V10C19.125 9.37868 18.6213 8.875 18 8.875H6ZM9 12.125C9.48325 12.125 9.875 12.5168 9.875 13V15C9.875 15.4832 9.48325 15.875 9 15.875C8.51675 15.875 8.125 15.4832 8.125 15V13C8.125 12.5168 8.51675 12.125 9 12.125ZM15 12.125C15.4832 12.125 15.875 12.5168 15.875 13V15C15.875 15.4832 15.4832 15.875 15 15.875C14.5168 15.875 14.125 15.4832 14.125 15V13C14.125 12.5168 14.5168 12.125 15 12.125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.0898 3.12988C12.5309 3.17488 12.875 3.5471 12.875 4V7.125H18C19.5878 7.125 20.875 8.41218 20.875 10V13.125H22C22.4832 13.125 22.875 13.5168 22.875 14C22.875 14.4832 22.4832 14.875 22 14.875H20.875V18C20.875 19.5878 19.5878 20.875 18 20.875H6C4.41218 20.875 3.125 19.5878 3.125 18V14.875H2C1.51675 14.875 1.125 14.4832 1.125 14C1.125 13.5168 1.51675 13.125 2 13.125H3.125V10C3.125 8.41218 4.41218 7.125 6 7.125H11.125V4.875H8C7.51675 4.875 7.125 4.48325 7.125 4C7.125 3.51675 7.51675 3.125 8 3.125H12L12.0898 3.12988ZM9 11.875C8.37868 11.875 7.875 12.3787 7.875 13V15C7.875 15.6213 8.37868 16.125 9 16.125C9.62132 16.125 10.125 15.6213 10.125 15V13C10.125 12.3787 9.62132 11.875 9 11.875ZM15 11.875C14.3787 11.875 13.875 12.3787 13.875 13V15C13.875 15.6213 14.3787 16.125 15 16.125C15.6213 16.125 16.125 15.6213 16.125 15V13C16.125 12.3787 15.6213 11.875 15 11.875Z\" fill=\"currentColor\"/>` },\r\n    broadcast: { outlined: `<path d=\"M7.1 11.35C7.33334 10.8833 7.575 10.4333 7.825 9.99996C8.075 9.56663 8.35 9.13329 8.65 8.69996L7.25 8.42496L5.15 10.525L7.1 11.35ZM19.15 4.47496C17.9833 4.50829 16.7375 4.84996 15.4125 5.49996C14.0875 6.14996 12.8833 7.01663 11.8 8.09996C11.1 8.79996 10.475 9.54996 9.925 10.35C9.375 11.15 8.96667 11.9 8.7 12.6L11.55 15.425C12.25 15.1583 13 14.75 13.8 14.2C14.6 13.65 15.35 13.025 16.05 12.325C17.1333 11.2416 18 10.0416 18.65 8.72496C19.3 7.40829 19.6417 6.16663 19.675 4.99996C19.675 4.93329 19.6625 4.86663 19.6375 4.79996C19.6125 4.73329 19.575 4.67496 19.525 4.62496C19.475 4.57496 19.4167 4.53746 19.35 4.51246C19.2833 4.48746 19.2167 4.47496 19.15 4.47496ZM13.075 9.06246C13.075 8.50413 13.2667 8.03329 13.65 7.64996C14.0333 7.26663 14.5083 7.07496 15.075 7.07496C15.6417 7.07496 16.1167 7.26663 16.5 7.64996C16.8833 8.03329 17.075 8.50413 17.075 9.06246C17.075 9.62079 16.8833 10.0916 16.5 10.475C16.1167 10.8583 15.6417 11.05 15.075 11.05C14.5083 11.05 14.0333 10.8583 13.65 10.475C13.2667 10.0916 13.075 9.62079 13.075 9.06246ZM12.8 17.025L13.625 19L15.725 16.9L15.45 15.5C15.0167 15.8 14.5833 16.0708 14.15 16.3125C13.7167 16.5541 13.2667 16.7916 12.8 17.025ZM21.575 3.67496C21.7083 5.50829 21.4083 7.29579 20.675 9.03746C19.9417 10.7791 18.7833 12.4416 17.2 14.025L17.7 16.5C17.7667 16.8333 17.75 17.1583 17.65 17.475C17.55 17.7916 17.3833 18.0666 17.15 18.3L14 21.45C13.75 21.7 13.45 21.7958 13.1 21.7375C12.75 21.6791 12.5083 21.4833 12.375 21.15L10.85 17.575L6.575 13.3L3 11.775C2.66667 11.6416 2.46667 11.4 2.4 11.05C2.33334 10.7 2.425 10.4 2.675 10.15L5.825 6.99996C6.05834 6.76663 6.3375 6.59996 6.6625 6.49996C6.9875 6.39996 7.31667 6.38329 7.65 6.44996L10.125 6.94996C11.7083 5.36663 13.3708 4.20829 15.1125 3.47496C16.8542 2.74163 18.6417 2.44163 20.475 2.57496C20.6083 2.59163 20.7417 2.62913 20.875 2.68746C21.0083 2.74579 21.125 2.82496 21.225 2.92496C21.325 3.02496 21.4042 3.14163 21.4625 3.27496C21.5208 3.40829 21.5583 3.54163 21.575 3.67496ZM3.925 15.975C4.50834 15.3916 5.22084 15.0958 6.0625 15.0875C6.90417 15.0791 7.61667 15.3666 8.2 15.95C8.78334 16.5333 9.07084 17.2458 9.0625 18.0875C9.05417 18.9291 8.75834 19.6416 8.175 20.225C7.375 21.025 6.42917 21.5 5.3375 21.65C4.24584 21.8 3.15 21.95 2.05 22.1C2.2 21 2.35 19.9041 2.5 18.8125C2.65 17.7208 3.125 16.775 3.925 15.975ZM5.35 17.375C5.06667 17.6583 4.87084 18 4.7625 18.4C4.65417 18.8 4.56667 19.2083 4.5 19.625C4.91667 19.5583 5.325 19.475 5.725 19.375C6.125 19.275 6.46667 19.0833 6.75 18.8C6.95 18.6 7.05834 18.3583 7.075 18.075C7.09167 17.7916 7 17.55 6.8 17.35C6.6 17.15 6.35834 17.0541 6.075 17.0625C5.79167 17.0708 5.55 17.175 5.35 17.375Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6.125 12.15C6.55834 11.05 7.07917 9.99162 7.6875 8.97495C8.29584 7.95828 8.98334 6.99995 9.75 6.09995L8.45 5.82495C8.11667 5.75828 7.79167 5.77495 7.475 5.87495C7.15834 5.97495 6.88334 6.14162 6.65 6.37495L3.5 9.52495C3.25 9.77495 3.15417 10.075 3.2125 10.425C3.27084 10.775 3.46667 11.0166 3.8 11.15L6.125 12.15ZM20.825 2.39995C19.0583 2.31662 17.3792 2.65828 15.7875 3.42495C14.1958 4.19162 12.775 5.19995 11.525 6.44995C10.725 7.24995 10.0208 8.11662 9.4125 9.04995C8.80417 9.98328 8.275 10.9666 7.825 12C7.74167 12.2166 7.7 12.4375 7.7 12.6625C7.7 12.8875 7.78334 13.0833 7.95 13.25L11.075 16.3749C11.2417 16.5416 11.4375 16.6249 11.6625 16.6249C11.8875 16.6249 12.1083 16.5833 12.325 16.4999C13.3583 16.0499 14.3417 15.5208 15.275 14.9125C16.2083 14.3041 17.075 13.6 17.875 12.8C19.125 11.55 20.1333 10.1291 20.9 8.53745C21.6667 6.94578 22.0083 5.26662 21.925 3.49995C21.925 3.36662 21.8917 3.23328 21.825 3.09995C21.7583 2.96662 21.675 2.84995 21.575 2.74995C21.475 2.64995 21.3583 2.56662 21.225 2.49995C21.0917 2.43328 20.9583 2.39995 20.825 2.39995ZM13.9 8.43745C13.9 7.87912 14.0917 7.40828 14.475 7.02495C14.8583 6.64162 15.3292 6.44995 15.8875 6.44995C16.4458 6.44995 16.9167 6.64162 17.3 7.02495C17.6833 7.40828 17.875 7.87912 17.875 8.43745C17.875 8.99578 17.6833 9.46662 17.3 9.84995C16.9167 10.2333 16.4458 10.425 15.8875 10.425C15.3292 10.425 14.8583 10.2333 14.475 9.84995C14.0917 9.46662 13.9 8.99578 13.9 8.43745ZM12.175 18.2L13.175 20.525C13.3083 20.8583 13.55 21.0583 13.9 21.125C14.25 21.1916 14.55 21.1 14.8 20.85L17.95 17.7C18.1833 17.4666 18.35 17.1874 18.45 16.8624C18.55 16.5374 18.5667 16.2083 18.5 15.8749L18.25 14.575C17.3333 15.3416 16.3708 16.0291 15.3625 16.6375C14.3542 17.2458 13.2917 17.7666 12.175 18.2ZM4.05 16.0499C4.63334 15.4666 5.34167 15.1708 6.175 15.1625C7.00834 15.1541 7.71667 15.4416 8.3 16.025C8.88334 16.6083 9.175 17.3166 9.175 18.15C9.175 18.9833 8.88334 19.6916 8.3 20.275C7.5 21.0749 6.55417 21.5499 5.4625 21.6999C4.37084 21.8499 3.275 22 2.175 22.15C2.325 21.0499 2.47917 19.9541 2.6375 18.8624C2.79584 17.7708 3.26667 16.8333 4.05 16.0499Z\" fill=\"currentColor\"/>` },\r\n    cake: { outlined: `<path d=\"M3.96484 22C3.68151 22 3.44401 21.9042 3.25234 21.7125C3.06068 21.5208 2.96484 21.2833 2.96484 21V16C2.96484 15.45 3.16068 14.9792 3.55234 14.5875C3.94401 14.1958 4.41484 14 4.96484 14V10C4.96484 9.45 5.16068 8.97917 5.55234 8.5875C5.94401 8.19583 6.41484 8 6.96484 8H10.5648C10.7858 8 10.9648 7.82091 10.9648 7.6V6.76407C10.9648 6.63033 10.8966 6.50711 10.7914 6.42463C10.5702 6.25138 10.3864 6.0515 10.2398 5.825C10.0565 5.54167 9.96484 5.2 9.96484 4.8C9.96484 4.55 10.0148 4.30417 10.1148 4.0625C10.2148 3.82083 10.3648 3.6 10.5648 3.4L11.682 2.28284C11.8382 2.12663 12.0915 2.12663 12.2477 2.28284L13.3648 3.4C13.5648 3.6 13.7148 3.82083 13.8148 4.0625C13.9148 4.30417 13.9648 4.55 13.9648 4.8C13.9648 5.2 13.8732 5.54167 13.6898 5.825C13.5433 6.0515 13.3594 6.25138 13.1383 6.42463C13.033 6.50711 12.9648 6.63033 12.9648 6.76407V7.6C12.9648 7.82091 13.1439 8 13.3648 8H16.9648C17.5148 8 17.9857 8.19583 18.3773 8.5875C18.769 8.97917 18.9648 9.45 18.9648 10V14C19.5148 14 19.9857 14.1958 20.3773 14.5875C20.769 14.9792 20.9648 15.45 20.9648 16V21C20.9648 21.2833 20.869 21.5208 20.6773 21.7125C20.4857 21.9042 20.2482 22 19.9648 22H3.96484ZM6.96484 13.6C6.96484 13.8209 7.14393 14 7.36484 14H16.5648C16.7858 14 16.9648 13.8209 16.9648 13.6V10.4C16.9648 10.1791 16.7858 10 16.5648 10H7.36484C7.14393 10 6.96484 10.1791 6.96484 10.4V13.6ZM4.96484 19.6C4.96484 19.8209 5.14393 20 5.36484 20H18.5648C18.7858 20 18.9648 19.8209 18.9648 19.6V16.4C18.9648 16.1791 18.7858 16 18.5648 16H5.36484C5.14393 16 4.96484 16.1791 4.96484 16.4V19.6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M3.96484 22C3.68151 22 3.44401 21.9042 3.25234 21.7125C3.06068 21.5208 2.96484 21.2833 2.96484 21V17C2.96484 16.45 3.16068 15.9792 3.55234 15.5875C3.94401 15.1958 4.41484 15 4.96484 15H18.9648C19.5148 15 19.9857 15.1958 20.3773 15.5875C20.769 15.9792 20.9648 16.45 20.9648 17V21C20.9648 21.2833 20.869 21.5208 20.6773 21.7125C20.4857 21.9042 20.2482 22 19.9648 22H3.96484ZM5.36484 13C5.14393 13 4.96484 12.8209 4.96484 12.6V10C4.96484 9.45 5.16068 8.97917 5.55234 8.5875C5.94401 8.19583 6.41484 8 6.96484 8H10.5648C10.7858 8 10.9648 7.82091 10.9648 7.6V6.76407C10.9648 6.63033 10.8966 6.50711 10.7914 6.42463C10.5702 6.25138 10.3864 6.0515 10.2398 5.825C10.0565 5.54167 9.96484 5.2 9.96484 4.8C9.96484 4.55 10.0148 4.30417 10.1148 4.0625C10.2148 3.82083 10.3648 3.6 10.5648 3.4L11.682 2.28284C11.8382 2.12663 12.0915 2.12663 12.2477 2.28284L13.3648 3.4C13.5648 3.6 13.7148 3.82083 13.8148 4.0625C13.9148 4.30417 13.9648 4.55 13.9648 4.8C13.9648 5.2 13.8732 5.54167 13.6898 5.825C13.5433 6.0515 13.3594 6.25138 13.1383 6.42463C13.033 6.50711 12.9648 6.63033 12.9648 6.76407V7.6C12.9648 7.82091 13.1439 8 13.3648 8H16.9648C17.5148 8 17.9857 8.19583 18.3773 8.5875C18.769 8.97917 18.9648 9.45 18.9648 10V12.6C18.9648 12.8209 18.7858 13 18.5648 13H5.36484Z\" fill=\"currentColor\"/>` },\r\n    camera: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.25 2.26L14.17 2.22L14.16 2.24C13.46 2.09 12.74 2 12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 7.25 18.69 3.28 14.25 2.26ZM19.41 9H11.42L14.13 4.3C16.53 4.96 18.48 6.72 19.41 9ZM13.1 4.08L9.12 11L6.4 6.3C7.84 4.88 9.82 4 12 4C12.37 4 12.74 4.03 13.1 4.08ZM5.7 7.09L8.54 12L9.69 14H4.26C4.1 13.36 4 12.69 4 12C4 10.15 4.64 8.45 5.7 7.09ZM4.59 15H12.57L9.86 19.7C7.46 19.03 5.52 17.28 4.59 15ZM10.9 19.91L14.89 13L17.61 17.7C16.16 19.12 14.18 20 12 20C11.62 20 11.26 19.96 10.9 19.91ZM19.1009 15.6648C18.7733 16.2935 17.9124 16.2404 17.5572 15.6269L15.1689 11.501C14.783 10.8343 15.264 10 16.0343 10H18.9609C19.4144 10 19.8179 10.3041 19.8934 10.7512C19.9621 11.1583 20 11.5754 20 12C20 13.3212 19.6736 14.5658 19.1009 15.6648Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.4 10.5L14.17 2.24C13.47 2.09 12.75 2 12 2C9.6 2 7.4 2.85 5.68 4.25L9.34 10.6L9.4 10.5ZM21.54 9C20.62 6.08 18.39 3.74 15.54 2.66L11.88 9H21.54ZM21.8 10H14.31L14.6 10.5L19.36 18.75C21 16.97 22 14.61 22 12C22 11.31 21.93 10.65 21.8 10ZM8.54 12L4.64 5.25C3.01 7.03 2 9.39 2 12C2 12.69 2.07 13.35 2.2 14H9.69L8.54 12ZM2.46 15C3.38 17.92 5.61 20.26 8.46 21.34L12.12 15H2.46ZM13.73 15L9.83 21.76C10.53 21.91 11.25 22 12 22C14.4 22 16.6 21.15 18.32 19.75L14.66 13.4L13.73 15Z\" fill=\"currentColor\"/>` },\r\n    cards: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 13C9.53043 13 10.039 13.2109 10.4141 13.5859C10.7891 13.961 11 14.4696 11 15V19C11 19.5304 10.7891 20.039 10.4141 20.4141C10.039 20.7891 9.53043 21 9 21H5C4.46957 21 3.96101 20.7891 3.58594 20.4141C3.21086 20.039 3 19.5304 3 19V15C3 14.4696 3.21086 13.961 3.58594 13.5859C3.96101 13.2109 4.46957 13 5 13H9ZM5 19H9V15H5V19Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19 13C19.5304 13 20.039 13.2109 20.4141 13.5859C20.7891 13.961 21 14.4696 21 15V19C21 19.5304 20.7891 20.039 20.4141 20.4141C20.039 20.7891 19.5304 21 19 21H15C14.4696 21 13.961 20.7891 13.5859 20.4141C13.2109 20.039 13 19.5304 13 19V15C13 14.4696 13.2109 13.961 13.5859 13.5859C13.961 13.2109 14.4696 13 15 13H19ZM15 15V19H19V15H15Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 3C9.53043 3 10.039 3.21086 10.4141 3.58594C10.7891 3.96101 11 4.46957 11 5V9C11 9.53043 10.7891 10.039 10.4141 10.4141C10.039 10.7891 9.53043 11 9 11H5C4.46957 11 3.96101 10.7891 3.58594 10.4141C3.21086 10.039 3 9.53043 3 9V5C3 4.46957 3.21086 3.96101 3.58594 3.58594C3.96101 3.21086 4.46957 3 5 3H9ZM5 9H9V5H5V9Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19 3C19.5304 3 20.039 3.21086 20.4141 3.58594C20.7891 3.96101 21 4.46957 21 5V9C21 9.53043 20.7891 10.039 20.4141 10.4141C20.039 10.7891 19.5304 11 19 11H15C14.4696 11 13.961 10.7891 13.5859 10.4141C13.2109 10.039 13 9.53043 13 9V5C13 4.46957 13.2109 3.96101 13.5859 3.58594C13.961 3.21086 14.4696 3 15 3H19ZM15 9H19V5H15V9Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M9 13C9.53043 13 10.039 13.2109 10.4141 13.5859C10.7891 13.961 11 14.4696 11 15V19C11 19.5304 10.7891 20.039 10.4141 20.4141C10.039 20.7891 9.53043 21 9 21H5C4.46957 21 3.96101 20.7891 3.58594 20.4141C3.21086 20.039 3 19.5304 3 19V15C3 14.4696 3.21086 13.961 3.58594 13.5859C3.96101 13.2109 4.46957 13 5 13H9Z\" fill=\"currentColor\"/><path d=\"M19 13C19.5304 13 20.039 13.2109 20.4141 13.5859C20.7891 13.961 21 14.4696 21 15V19C21 19.5304 20.7891 20.039 20.4141 20.4141C20.039 20.7891 19.5304 21 19 21H15C14.4696 21 13.961 20.7891 13.5859 20.4141C13.2109 20.039 13 19.5304 13 19V15C13 14.4696 13.2109 13.961 13.5859 13.5859C13.961 13.2109 14.4696 13 15 13H19Z\" fill=\"currentColor\"/><path d=\"M9 3C9.53043 3 10.039 3.21086 10.4141 3.58594C10.7891 3.96101 11 4.46957 11 5V9C11 9.53043 10.7891 10.039 10.4141 10.4141C10.039 10.7891 9.53043 11 9 11H5C4.46957 11 3.96101 10.7891 3.58594 10.4141C3.21086 10.039 3 9.53043 3 9V5C3 4.46957 3.21086 3.96101 3.58594 3.58594C3.96101 3.21086 4.46957 3 5 3H9Z\" fill=\"currentColor\"/><path d=\"M19 3C19.5304 3 20.039 3.21086 20.4141 3.58594C20.7891 3.96101 21 4.46957 21 5V9C21 9.53043 20.7891 10.039 20.4141 10.4141C20.039 10.7891 19.5304 11 19 11H15C14.4696 11 13.961 10.7891 13.5859 10.4141C13.2109 10.039 13 9.53043 13 9V5C13 4.46957 13.2109 3.96101 13.5859 3.58594C13.961 3.21086 14.4696 3 15 3H19Z\" fill=\"currentColor\"/>` },\r\n    cast: { outlined: `<path d=\"M22 6V18C22 18.55 21.8042 19.0208 21.4125 19.4125C21.0208 19.8042 20.55 20 20 20H15.95C15.6667 20 15.4292 19.9042 15.2375 19.7125C15.0458 19.5208 14.95 19.2833 14.95 19C14.95 18.7167 15.0458 18.4792 15.2375 18.2875C15.4292 18.0958 15.6667 18 15.95 18H20V6H4V6.15C4 6.43333 3.90417 6.67083 3.7125 6.8625C3.52083 7.05417 3.28333 7.15 3 7.15C2.71667 7.15 2.47917 7.05417 2.2875 6.8625C2.09583 6.67083 2 6.43333 2 6.15V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6ZM8 20C7.73333 20 7.5 19.9208 7.3 19.7625C7.1 19.6042 6.975 19.3917 6.925 19.125C6.74167 18.075 6.27083 17.1833 5.5125 16.45C4.75417 15.7167 3.85 15.2583 2.8 15.075C2.55 15.0417 2.35417 14.9208 2.2125 14.7125C2.07083 14.5042 2 14.2667 2 14C2 13.7167 2.09167 13.4792 2.275 13.2875C2.45833 13.0958 2.675 13.0167 2.925 13.05C4.49167 13.25 5.82917 13.9083 6.9375 15.025C8.04583 16.1417 8.70833 17.4833 8.925 19.05C8.95833 19.3167 8.88333 19.5417 8.7 19.725C8.51667 19.9083 8.28333 20 8 20ZM12 20C11.7167 20 11.4792 19.9083 11.2875 19.725C11.0958 19.5417 10.9833 19.3083 10.95 19.025C10.7167 16.8917 9.84583 15.0833 8.3375 13.6C6.82917 12.1167 5.00833 11.2667 2.875 11.05C2.60833 11.0167 2.39583 10.9 2.2375 10.7C2.07917 10.5 2 10.2667 2 10C2 9.71667 2.0875 9.475 2.2625 9.275C2.4375 9.075 2.65 8.99167 2.9 9.025C5.58333 9.24167 7.86667 10.2833 9.75 12.15C11.6333 14.0167 12.7 16.2917 12.95 18.975C12.9833 19.2583 12.9042 19.5 12.7125 19.7C12.5208 19.9 12.2833 20 12 20ZM3.25 20C2.9 20 2.60417 19.8792 2.3625 19.6375C2.12083 19.3958 2 19.1 2 18.75C2 18.4 2.12083 18.1042 2.3625 17.8625C2.60417 17.6208 2.9 17.5 3.25 17.5C3.6 17.5 3.89583 17.6208 4.1375 17.8625C4.37917 18.1042 4.5 18.4 4.5 18.75C4.5 19.1 4.37917 19.3958 4.1375 19.6375C3.89583 19.8792 3.6 20 3.25 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M22 18C22 18.55 21.8042 19.0208 21.4125 19.4125C21.0208 19.8042 20.55 20 20 20H15.825C15.5917 20 15.3958 19.9125 15.2375 19.7375C15.0792 19.5625 14.9917 19.3583 14.975 19.125C14.875 17.5417 14.5125 16.0625 13.8875 14.6875C13.2625 13.3125 12.4458 12.0917 11.4375 11.025C10.4292 9.95833 9.25417 9.08333 7.9125 8.4C6.57083 7.71667 5.125 7.28333 3.575 7.1C3.14167 7.05 2.77083 6.87917 2.4625 6.5875C2.15417 6.29583 2 5.93333 2 5.5C2 5.06667 2.15417 4.70833 2.4625 4.425C2.77083 4.14167 3.14167 4 3.575 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6V18ZM8 20C7.73333 20 7.5 19.9208 7.3 19.7625C7.1 19.6042 6.975 19.3917 6.925 19.125C6.74167 18.075 6.27083 17.1833 5.5125 16.45C4.75417 15.7167 3.85 15.2583 2.8 15.075C2.55 15.0417 2.35417 14.9208 2.2125 14.7125C2.07083 14.5042 2 14.2667 2 14C2 13.7167 2.09167 13.4792 2.275 13.2875C2.45833 13.0958 2.675 13.0167 2.925 13.05C4.49167 13.25 5.82917 13.9083 6.9375 15.025C8.04583 16.1417 8.70833 17.4833 8.925 19.05C8.95833 19.3167 8.88333 19.5417 8.7 19.725C8.51667 19.9083 8.28333 20 8 20ZM12 20C11.7167 20 11.4792 19.9083 11.2875 19.725C11.0958 19.5417 10.9833 19.3083 10.95 19.025C10.7167 16.8917 9.84583 15.0833 8.3375 13.6C6.82917 12.1167 5.00833 11.2667 2.875 11.05C2.60833 11.0167 2.39583 10.9 2.2375 10.7C2.07917 10.5 2 10.2667 2 10C2 9.71667 2.0875 9.475 2.2625 9.275C2.4375 9.075 2.65 8.99167 2.9 9.025C5.58333 9.24167 7.86667 10.2833 9.75 12.15C11.6333 14.0167 12.7 16.2917 12.95 18.975C12.9833 19.2583 12.9042 19.5 12.7125 19.7C12.5208 19.9 12.2833 20 12 20ZM3.25 20C2.9 20 2.60417 19.8792 2.3625 19.6375C2.12083 19.3958 2 19.1 2 18.75C2 18.4 2.12083 18.1042 2.3625 17.8625C2.60417 17.6208 2.9 17.5 3.25 17.5C3.6 17.5 3.89583 17.6208 4.1375 17.8625C4.37917 18.1042 4.5 18.4 4.5 18.75C4.5 19.1 4.37917 19.3958 4.1375 19.6375C3.89583 19.8792 3.6 20 3.25 20Z\" fill=\"currentColor\"/>` },\r\n    category: { outlined: `<path d=\"M4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H15C15.3167 4 15.6167 4.07083 15.9 4.2125C16.1833 4.35417 16.4167 4.55 16.6 4.8L21.1 10.8C21.3667 11.15 21.5 11.55 21.5 12C21.5 12.45 21.3667 12.85 21.1 13.2L16.6 19.2C16.4167 19.45 16.1833 19.6458 15.9 19.7875C15.6167 19.9292 15.3167 20 15 20H4ZM4 18H15L19.5 12L15 6H4V18Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H15C15.3167 4 15.6167 4.07083 15.9 4.2125C16.1833 4.35417 16.4167 4.55 16.6 4.8L21.1 10.8C21.3667 11.15 21.5 11.55 21.5 12C21.5 12.45 21.3667 12.85 21.1 13.2L16.6 19.2C16.4167 19.45 16.1833 19.6458 15.9 19.7875C15.6167 19.9292 15.3167 20 15 20H4Z\" fill=\"currentColor\"/>` },\r\n    celebrate: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.44452 7.33901L8.53795 7.42471L16.8833 16.1853C16.9927 16.3 17.0748 16.4402 17.1229 16.5944C17.171 16.7487 17.1838 16.9127 17.1602 17.0731C17.1367 17.2335 17.0774 17.3859 16.9873 17.5177C16.8971 17.6496 16.7786 17.7573 16.6414 17.8321L16.5273 17.8837L6.31441 21.835C4.39476 22.5784 2.52526 20.6838 3.10843 18.6715L3.1576 18.5208L6.92021 7.79847C6.96995 7.65643 7.04882 7.52762 7.15125 7.42113C7.25367 7.31465 7.37713 7.23311 7.5129 7.18228C7.64867 7.13145 7.79342 7.11258 7.93691 7.12699C8.08039 7.14141 8.21911 7.18877 8.34323 7.26571L8.44452 7.33901ZM8.23407 10.0255L5.0035 19.2352C4.97347 19.3209 4.96562 19.4134 4.98075 19.5033C4.99588 19.5933 5.03345 19.6773 5.08964 19.747C5.14582 19.8167 5.2186 19.8695 5.30057 19.9001C5.38253 19.9306 5.47073 19.9377 5.55619 19.9208L5.63486 19.897L14.4051 16.5043L8.23407 10.0255ZM17.3259 11.8241C18.2218 11.8737 19.4501 12.0719 20.5181 12.7451C20.7346 12.8798 20.8937 13.0966 20.9625 13.3508C21.0313 13.605 21.0047 13.8772 20.8882 14.1114C20.7716 14.3456 20.5739 14.524 20.3358 14.6098C20.0978 14.6955 19.8374 14.6822 19.6084 14.5726L19.5061 14.5158C18.8354 14.0925 17.9779 13.9273 17.2226 13.886C16.9114 13.8671 16.5994 13.8684 16.2884 13.8901L15.9776 13.9221C15.7211 13.9569 15.4618 13.8841 15.256 13.7196C15.0502 13.5551 14.9144 13.3121 14.8781 13.0432C14.8417 12.7743 14.9077 12.5012 15.0618 12.2831C15.2159 12.065 15.4456 11.9193 15.7012 11.8778C16.2399 11.8047 16.7839 11.7864 17.3259 11.8231M19.3173 8.94658C19.5679 8.94713 19.8088 9.04808 19.9909 9.22882C20.173 9.40955 20.2825 9.65644 20.297 9.91907C20.3116 10.1817 20.2301 10.4402 20.0692 10.6419C19.9084 10.8436 19.6802 10.9732 19.4314 11.0043L19.3173 11.0115H18.6211C18.3705 11.011 18.1296 10.91 17.9475 10.7293C17.7654 10.5486 17.6559 10.3017 17.6413 10.0391C17.6268 9.77643 17.7083 9.51787 17.8691 9.31618C18.03 9.11449 18.2582 8.98488 18.507 8.95381L18.6211 8.94658H19.3173ZM16.188 8.15467C16.3574 8.33246 16.4591 8.569 16.4741 8.81992C16.4891 9.07084 16.4165 9.31889 16.2697 9.51754L16.188 9.6146L15.1456 10.7101C14.969 10.8972 14.731 11.0064 14.4803 11.0153C14.2295 11.0243 13.985 10.9322 13.7968 10.7581C13.6085 10.584 13.4908 10.3409 13.4677 10.0786C13.4446 9.81628 13.5178 9.55463 13.6724 9.34718L13.7541 9.25013L14.7965 8.1557C14.8878 8.05971 14.9963 7.98355 15.1157 7.9316C15.2351 7.87964 15.363 7.85289 15.4923 7.85289C15.6215 7.85289 15.7495 7.87964 15.8689 7.9316C15.9883 7.98355 16.0967 8.05868 16.188 8.15467ZM13.6439 2.71867C14.0845 4.10839 13.8485 5.63026 13.5731 6.69372C13.4076 7.35672 13.1803 8.001 12.8945 8.61722C12.7781 8.8623 12.5737 9.04877 12.3263 9.13561C12.0788 9.22246 11.8087 9.20255 11.5753 9.08029C11.3418 8.95802 11.1642 8.74341 11.0815 8.48366C10.9988 8.22391 11.0177 7.9403 11.1342 7.69522C11.3623 7.2002 11.5434 6.68285 11.6751 6.15063C11.8983 5.29161 12.0104 4.35928 11.8383 3.59525L11.7783 3.37223C11.7355 3.24311 11.7175 3.10634 11.7254 2.96985C11.7333 2.83336 11.7669 2.69988 11.8244 2.57716C11.8818 2.45444 11.9619 2.34491 12.06 2.25495C12.1581 2.16498 12.2722 2.09637 12.3957 2.05309C12.5193 2.00981 12.6498 1.99272 12.7797 2.00282C12.9095 2.01292 13.0362 2.05001 13.1524 2.11193C13.2685 2.17385 13.3717 2.25937 13.4561 2.36353C13.5405 2.46769 13.6043 2.5884 13.6439 2.71867ZM18.9692 5.23586C19.1536 5.42947 19.2571 5.69204 19.2571 5.96582C19.2571 6.23959 19.1536 6.50216 18.9692 6.69578L18.2739 7.42574C18.1832 7.52435 18.0747 7.60301 17.9547 7.65712C17.8347 7.71123 17.7057 7.73972 17.5751 7.74091C17.4445 7.7421 17.315 7.71597 17.1941 7.66406C17.0733 7.61215 16.9635 7.53548 16.8711 7.43854C16.7788 7.3416 16.7058 7.22632 16.6563 7.09943C16.6069 6.97254 16.582 6.83659 16.5831 6.6995C16.5843 6.5624 16.6114 6.42692 16.6629 6.30096C16.7145 6.17499 16.7894 6.06106 16.8833 5.96582L17.5786 5.23586C17.763 5.0423 18.0131 4.93356 18.2739 4.93356C18.5347 4.93356 18.7848 5.0423 18.9692 5.23586Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8.44452 7.33901L8.53795 7.42471L16.8833 16.1853C16.9927 16.3 17.0748 16.4402 17.1229 16.5944C17.171 16.7487 17.1838 16.9127 17.1602 17.0731C17.1367 17.2335 17.0774 17.3859 16.9873 17.5177C16.8971 17.6496 16.7786 17.7573 16.6414 17.8321L16.5273 17.8837L6.31441 21.835C4.39476 22.5784 2.52526 20.6838 3.10843 18.6715L3.1576 18.5208L6.92021 7.79847C6.96995 7.65643 7.04882 7.52762 7.15125 7.42113C7.25367 7.31465 7.37713 7.23311 7.5129 7.18228C7.64867 7.13145 7.79342 7.11258 7.93691 7.12699C8.08039 7.14141 8.21911 7.18877 8.34323 7.26571L8.44452 7.33901ZM17.3259 11.8241C18.2218 11.8737 19.4501 12.0719 20.5181 12.7451C20.7346 12.8798 20.8937 13.0966 20.9625 13.3508C21.0313 13.605 21.0047 13.8772 20.8882 14.1114C20.7716 14.3456 20.5739 14.524 20.3358 14.6098C20.0978 14.6955 19.8374 14.6822 19.6084 14.5726L19.5061 14.5158C18.8354 14.0925 17.9779 13.9273 17.2226 13.886C16.9114 13.8671 16.5994 13.8684 16.2884 13.8901L15.9776 13.9221C15.7211 13.9569 15.4618 13.8841 15.256 13.7196C15.0502 13.5551 14.9144 13.3121 14.8781 13.0432C14.8417 12.7743 14.9077 12.5012 15.0618 12.2831C15.2159 12.065 15.4456 11.9193 15.7012 11.8778C16.2399 11.8047 16.7839 11.7864 17.3259 11.8231M19.3173 8.94658C19.5679 8.94713 19.8088 9.04808 19.9909 9.22882C20.173 9.40955 20.2825 9.65644 20.297 9.91907C20.3116 10.1817 20.2301 10.4402 20.0692 10.6419C19.9084 10.8436 19.6802 10.9732 19.4314 11.0043L19.3173 11.0115H18.6211C18.3705 11.011 18.1296 10.91 17.9475 10.7293C17.7654 10.5486 17.6559 10.3017 17.6413 10.0391C17.6268 9.77643 17.7083 9.51787 17.8691 9.31618C18.03 9.11449 18.2582 8.98488 18.507 8.95381L18.6211 8.94658H19.3173ZM16.188 8.15467C16.3574 8.33246 16.4591 8.569 16.4741 8.81992C16.4891 9.07084 16.4165 9.31889 16.2697 9.51754L16.188 9.6146L15.1446 10.7101C14.9677 10.8952 14.7302 11.0027 14.4804 11.0107C14.2307 11.0187 13.9874 10.9267 13.8 10.7532C13.6126 10.5797 13.4951 10.3378 13.4714 10.0767C13.4477 9.81552 13.5196 9.5547 13.6724 9.34718L13.7541 9.25013L14.7965 8.1557C14.8878 8.05971 14.9963 7.98355 15.1157 7.9316C15.2351 7.87964 15.363 7.85289 15.4923 7.85289C15.6215 7.85289 15.7495 7.87964 15.8689 7.9316C15.9883 7.98355 16.0967 8.05868 16.188 8.15467ZM13.6439 2.71867C14.0845 4.10839 13.8485 5.63026 13.5731 6.69372C13.4076 7.35672 13.1803 8.001 12.8945 8.61722C12.7781 8.8623 12.5737 9.04877 12.3263 9.13561C12.0788 9.22246 11.8087 9.20255 11.5753 9.08029C11.3418 8.95802 11.1642 8.74341 11.0815 8.48366C10.9988 8.22391 11.0177 7.9403 11.1342 7.69522C11.3623 7.2002 11.5434 6.68285 11.6751 6.15063C11.8983 5.29161 12.0104 4.35928 11.8383 3.59525L11.7783 3.37223C11.7355 3.24311 11.7175 3.10634 11.7254 2.96985C11.7333 2.83336 11.7669 2.69988 11.8244 2.57716C11.8818 2.45444 11.9619 2.34491 12.06 2.25495C12.1581 2.16498 12.2722 2.09637 12.3957 2.05309C12.5193 2.00981 12.6498 1.99272 12.7797 2.00282C12.9095 2.01292 13.0362 2.05001 13.1524 2.11193C13.2685 2.17385 13.3717 2.25937 13.4561 2.36353C13.5405 2.46769 13.6043 2.5884 13.6439 2.71867ZM18.9692 5.23586C19.1536 5.42947 19.2571 5.69204 19.2571 5.96582C19.2571 6.23959 19.1536 6.50216 18.9692 6.69578L18.2739 7.42574C18.1832 7.52435 18.0747 7.60301 17.9547 7.65712C17.8347 7.71123 17.7057 7.73972 17.5751 7.74091C17.4445 7.7421 17.315 7.71597 17.1941 7.66406C17.0733 7.61215 16.9635 7.53548 16.8711 7.43854C16.7788 7.3416 16.7058 7.22632 16.6563 7.09943C16.6069 6.97254 16.582 6.83659 16.5831 6.6995C16.5843 6.5624 16.6114 6.42692 16.6629 6.30096C16.7145 6.17499 16.7894 6.06106 16.8833 5.96582L17.5786 5.23586C17.763 5.0423 18.0131 4.93356 18.2739 4.93356C18.5347 4.93356 18.7848 5.0423 18.9692 5.23586Z\" fill=\"currentColor\"/>` },\r\n    'cell-location': { outlined: `<path d=\"M18.0001 9C18.0001 5.68228 15.3178 3 12.0001 3C8.68241 3 6.00012 5.68228 6.00012 9C6.00012 10.1101 6.3764 11.4294 7.00696 12.8369C7.63165 14.2313 8.47313 15.6403 9.32922 16.9092C10.1834 18.1752 11.0394 19.2844 11.6827 20.0771C11.7953 20.2158 11.9021 20.3438 12.0001 20.4619C12.0982 20.3438 12.205 20.2158 12.3175 20.0771C12.9609 19.2844 13.8168 18.1752 14.671 16.9092C15.5271 15.6403 16.3686 14.2313 16.9933 12.8369C17.6238 11.4294 18.0001 10.1101 18.0001 9ZM20.0001 9C20.0001 10.5148 19.5014 12.1331 18.8195 13.6553C18.1317 15.1905 17.2231 16.7035 16.3292 18.0283C15.4335 19.3559 14.5393 20.5125 13.8702 21.3369C13.5352 21.7497 13.2557 22.0809 13.0587 22.3096C12.9603 22.4238 12.8821 22.5123 12.8282 22.5732C12.8014 22.6037 12.7802 22.6274 12.7657 22.6436C12.7585 22.6517 12.7531 22.6587 12.7491 22.6631C12.7472 22.6652 12.7454 22.6667 12.7443 22.668L12.7433 22.6699L12.0001 23.4922L11.2579 22.6699L11.256 22.668C11.2549 22.6667 11.253 22.6652 11.2511 22.6631C11.2471 22.6587 11.2417 22.6517 11.2345 22.6436C11.22 22.6274 11.1989 22.6037 11.172 22.5732C11.1182 22.5123 11.0399 22.4238 10.9415 22.3096C10.7445 22.0809 10.465 21.7497 10.13 21.3369C9.4609 20.5125 8.56675 19.3559 7.67102 18.0283C6.77716 16.7035 5.86857 15.1905 5.18079 13.6553C4.49887 12.1331 4.00012 10.5148 4.00012 9C4.00012 4.57772 7.57784 1 12.0001 1C16.4224 1 20.0001 4.57772 20.0001 9Z\" fill=\"currentColor\"/><path d=\"M13.7262 6.72987C13.7262 7.6665 12.9669 8.42579 12.0302 8.42579C11.0936 8.42579 10.3343 7.6665 10.3343 6.72987C10.3343 5.79324 11.0936 5.03394 12.0302 5.03394C12.9669 5.03394 13.7262 5.79324 13.7262 6.72987Z\" fill=\"currentColor\"/><path d=\"M16.3308 11.4139C16.3308 12.3505 15.5715 13.1098 14.6349 13.1098C13.6983 13.1098 12.939 12.3505 12.939 11.4139C12.939 10.4773 13.6983 9.71798 14.6349 9.71798C15.5715 9.71798 16.3308 10.4773 16.3308 11.4139Z\" fill=\"currentColor\"/><path d=\"M11.0612 11.4139C11.0612 12.3505 10.3019 13.1098 9.36523 13.1098C8.42859 13.1098 7.6693 12.3505 7.6693 11.4139C7.6693 10.4773 8.42859 9.71798 9.36523 9.71798C10.3019 9.71798 11.0612 10.4773 11.0612 11.4139Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.9996 1.5C16.063 1.5 19.35 4.78629 19.3502 8.84961C19.3502 14.3621 11.9996 22.5 11.9996 22.5C11.9583 22.4542 4.65 14.3465 4.65 8.84961C4.65021 4.78642 7.93642 1.50021 11.9996 1.5ZM9.23301 9.04297C8.24966 9.04311 7.45273 9.84084 7.45273 10.8242C7.45281 11.8075 8.2497 12.6044 9.23301 12.6045C10.2164 12.6045 11.0142 11.8076 11.0143 10.8242C11.0143 9.84075 10.2165 9.04297 9.23301 9.04297ZM14.7662 9.04297C13.7828 9.043 12.9859 9.84077 12.9859 10.8242C12.986 11.8076 13.7828 12.6045 14.7662 12.6045C15.7496 12.6045 16.5474 11.8076 16.5475 10.8242C16.5475 9.84075 15.7497 9.04297 14.7662 9.04297ZM12.0318 4.125C11.0485 4.125 10.2508 4.92201 10.2506 5.90527C10.2506 6.88874 11.0484 7.68652 12.0318 7.68652C13.0152 7.68645 13.8121 6.88869 13.8121 5.90527C13.8119 4.92206 13.0151 4.12507 12.0318 4.125Z\" fill=\"currentColor\"/>` },\r\n    'cell-referrals': { outlined: `<path d=\"M6 20C5.45 20 4.97917 19.8042 4.5875 19.4125C4.19583 19.0208 4 18.55 4 18V17.2C4 16.6333 4.14583 16.1125 4.4375 15.6375C4.72917 15.1625 5.11667 14.8 5.6 14.55C6.63333 14.0333 7.68333 13.6458 8.75 13.3875C9.81667 13.1292 10.9 13 12 13C12.1833 13 12.3625 13.0042 12.5375 13.0125C12.7125 13.0208 12.8917 13.0333 13.075 13.05C13.3417 13.0833 13.5625 13.1958 13.7375 13.3875C13.9125 13.5792 14 13.8083 14 14.075C14 14.3583 13.8875 14.5958 13.6625 14.7875C13.4375 14.9792 13.1833 15.0583 12.9 15.025C12.75 15.0083 12.6 15 12.45 15H12C11.0667 15 10.1417 15.1125 9.225 15.3375C8.30833 15.5625 7.4 15.9 6.5 16.35C6.35 16.4333 6.22917 16.55 6.1375 16.7C6.04583 16.85 6 17.0167 6 17.2V18H13C13.2833 18 13.5208 18.0958 13.7125 18.2875C13.9042 18.4792 14 18.7167 14 19C14 19.2833 13.9042 19.5208 13.7125 19.7125C13.5208 19.9042 13.2833 20 13 20H6ZM9.175 10.825C8.39167 10.0417 8 9.1 8 8C8 6.9 8.39167 5.95833 9.175 5.175C9.95833 4.39167 10.9 4 12 4C13.1 4 14.0417 4.39167 14.825 5.175C15.6083 5.95833 16 6.9 16 8C16 9.1 15.6083 10.0417 14.825 10.825C14.0417 11.6083 13.1 12 12 12C10.9 12 9.95833 11.6083 9.175 10.825ZM13.4125 9.4125C13.8042 9.02083 14 8.55 14 8C14 7.45 13.8042 6.97917 13.4125 6.5875C13.0208 6.19583 12.55 6 12 6C11.45 6 10.9792 6.19583 10.5875 6.5875C10.1958 6.97917 10 7.45 10 8C10 8.55 10.1958 9.02083 10.5875 9.4125C10.9792 9.80417 11.45 10 12 10C12.55 10 13.0208 9.80417 13.4125 9.4125ZM18 19H17C16.7167 19 16.4792 18.9042 16.2875 18.7125C16.0958 18.5208 16 18.2833 16 18V14C16 13.7167 16.0958 13.4792 16.2875 13.2875C16.4792 13.0958 16.7167 13 17 13H20.775C21.0583 13 21.275 13.1167 21.425 13.35C21.575 13.5833 21.5833 13.825 21.45 14.075L20 17H20.7C20.9833 17 21.1958 17.125 21.3375 17.375C21.4792 17.625 21.4833 17.875 21.35 18.125L18.475 23.175C18.4083 23.2917 18.3125 23.3333 18.1875 23.3C18.0625 23.2667 18 23.1833 18 23.05V19Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 20C5.45 20 4.97917 19.8042 4.5875 19.4125C4.19583 19.0208 4 18.55 4 18V17.2C4 16.6333 4.14583 16.1125 4.4375 15.6375C4.72917 15.1625 5.11667 14.8 5.6 14.55C6.63333 14.0333 7.68333 13.6458 8.75 13.3875C9.81667 13.1292 10.9 13 12 13C12.1833 13 12.3625 13.0042 12.5375 13.0125C12.7125 13.0208 12.8917 13.0333 13.075 13.05C13.3417 13.0833 13.5625 13.1958 13.7375 13.3875C13.9125 13.5792 14 13.8083 14 14.075V19C14 19.2833 13.9042 19.5208 13.7125 19.7125C13.5208 19.9042 13.2833 20 13 20H6ZM9.175 10.825C8.39167 10.0417 8 9.1 8 8C8 6.9 8.39167 5.95833 9.175 5.175C9.95833 4.39167 10.9 4 12 4C13.1 4 14.0417 4.39167 14.825 5.175C15.6083 5.95833 16 6.9 16 8C16 9.1 15.6083 10.0417 14.825 10.825C14.0417 11.6083 13.1 12 12 12C10.9 12 9.95833 11.6083 9.175 10.825ZM18 19H17C16.7167 19 16.4792 18.9042 16.2875 18.7125C16.0958 18.5208 16 18.2833 16 18V14C16 13.7167 16.0958 13.4792 16.2875 13.2875C16.4792 13.0958 16.7167 13 17 13H20.775C21.0583 13 21.275 13.1167 21.425 13.35C21.575 13.5833 21.5833 13.825 21.45 14.075L20 17H20.7C20.9833 17 21.1958 17.125 21.3375 17.375C21.4792 17.625 21.4833 17.875 21.35 18.125L18.475 23.175C18.4083 23.2917 18.3125 23.3333 18.1875 23.3C18.0625 23.2667 18 23.1833 18 23.05V19Z\" fill=\"currentColor\"/>` },\r\n    cells: { outlined: `<path d=\"M9 16C9.55 16 10.0208 15.8042 10.4125 15.4125C10.8042 15.0208 11 14.55 11 14C11 13.45 10.8042 12.9792 10.4125 12.5875C10.0208 12.1958 9.55 12 9 12C8.45 12 7.97917 12.1958 7.5875 12.5875C7.19583 12.9792 7 13.45 7 14C7 14.55 7.19583 15.0208 7.5875 15.4125C7.97917 15.8042 8.45 16 9 16ZM15 16C15.55 16 16.0208 15.8042 16.4125 15.4125C16.8042 15.0208 17 14.55 17 14C17 13.45 16.8042 12.9792 16.4125 12.5875C16.0208 12.1958 15.55 12 15 12C14.45 12 13.9792 12.1958 13.5875 12.5875C13.1958 12.9792 13 13.45 13 14C13 14.55 13.1958 15.0208 13.5875 15.4125C13.9792 15.8042 14.45 16 15 16ZM12 11C12.55 11 13.0208 10.8042 13.4125 10.4125C13.8042 10.0208 14 9.55 14 9C14 8.45 13.8042 7.97917 13.4125 7.5875C13.0208 7.19583 12.55 7 12 7C11.45 7 10.9792 7.19583 10.5875 7.5875C10.1958 7.97917 10 8.45 10 9C10 9.55 10.1958 10.0208 10.5875 10.4125C10.9792 10.8042 11.45 11 12 11ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M9 16C9.55 16 10.0208 15.8042 10.4125 15.4125C10.8042 15.0208 11 14.55 11 14C11 13.45 10.8042 12.9792 10.4125 12.5875C10.0208 12.1958 9.55 12 9 12C8.45 12 7.97917 12.1958 7.5875 12.5875C7.19583 12.9792 7 13.45 7 14C7 14.55 7.19583 15.0208 7.5875 15.4125C7.97917 15.8042 8.45 16 9 16ZM15 16C15.55 16 16.0208 15.8042 16.4125 15.4125C16.8042 15.0208 17 14.55 17 14C17 13.45 16.8042 12.9792 16.4125 12.5875C16.0208 12.1958 15.55 12 15 12C14.45 12 13.9792 12.1958 13.5875 12.5875C13.1958 12.9792 13 13.45 13 14C13 14.55 13.1958 15.0208 13.5875 15.4125C13.9792 15.8042 14.45 16 15 16ZM12 11C12.55 11 13.0208 10.8042 13.4125 10.4125C13.8042 10.0208 14 9.55 14 9C14 8.45 13.8042 7.97917 13.4125 7.5875C13.0208 7.19583 12.55 7 12 7C11.45 7 10.9792 7.19583 10.5875 7.5875C10.1958 7.97917 10 8.45 10 9C10 9.55 10.1958 10.0208 10.5875 10.4125C10.9792 10.8042 11.45 11 12 11ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    certificate: { outlined: `<path d=\"M4.62718 21.3532C4.08256 21.3532 3.61633 21.1593 3.22848 20.7715C2.84065 20.3836 2.64673 19.9174 2.64673 19.3728V4.62714C2.64673 4.07864 2.84065 3.60908 3.22848 3.21847C3.61633 2.82787 4.08256 2.63257 4.62718 2.63257H9.3989C9.53877 2.04923 9.84783 1.57007 10.3261 1.19507C10.8043 0.820068 11.3623 0.632568 12 0.632568C12.6377 0.632568 13.1957 0.820068 13.6739 1.19507C14.1522 1.57007 14.4612 2.04923 14.6011 2.63257H19.3728C19.9213 2.63257 20.3909 2.82787 20.7815 3.21847C21.1721 3.60908 21.3674 4.07864 21.3674 4.62714V19.3728C21.3674 19.9174 21.1721 20.3836 20.7815 20.7715C20.3909 21.1593 19.9213 21.3532 19.3728 21.3532H4.62718ZM4.62718 19.3728H19.3728V4.62714H4.62718V19.3728ZM7.12718 16.8728H13.7968V15.3728H7.12718V16.8728ZM7.12718 12.75H16.8728V11.25H7.12718V12.75ZM7.12718 8.62714H16.8728V7.12714H7.12718V8.62714ZM12 4.15974C12.266 4.15974 12.4925 4.06629 12.6794 3.87937C12.8663 3.69244 12.9598 3.46597 12.9598 3.19997C12.9598 2.93397 12.8663 2.7075 12.6794 2.52057C12.4925 2.33365 12.266 2.24019 12 2.24019C11.734 2.24019 11.5075 2.33365 11.3206 2.52057C11.1337 2.7075 11.0402 2.93397 11.0402 3.19997C11.0402 3.46597 11.1337 3.69244 11.3206 3.87937C11.5075 4.06629 11.734 4.15974 12 4.15974Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4.5 21C4.08333 21 3.72917 20.8542 3.4375 20.5625C3.14583 20.2708 3 19.9167 3 19.5V4.5C3 4.08333 3.14583 3.72917 3.4375 3.4375C3.72917 3.14583 4.08333 3 4.5 3H9.625C9.70833 2.41667 9.975 1.9375 10.425 1.5625C10.875 1.1875 11.4 1 12 1C12.6 1 13.125 1.1875 13.575 1.5625C14.025 1.9375 14.2917 2.41667 14.375 3H19.5C19.9167 3 20.2708 3.14583 20.5625 3.4375C20.8542 3.72917 21 4.08333 21 4.5V19.5C21 19.9167 20.8542 20.2708 20.5625 20.5625C20.2708 20.8542 19.9167 21 19.5 21H4.5ZM7 17H13.825V15.5H7V17ZM7 12.75H17V11.25H7V12.75ZM7 8.5H17V7H7V8.5ZM12 4.075C12.2333 4.075 12.4375 3.9875 12.6125 3.8125C12.7875 3.6375 12.875 3.43333 12.875 3.2C12.875 2.96667 12.7875 2.7625 12.6125 2.5875C12.4375 2.4125 12.2333 2.325 12 2.325C11.7667 2.325 11.5625 2.4125 11.3875 2.5875C11.2125 2.7625 11.125 2.96667 11.125 3.2C11.125 3.43333 11.2125 3.6375 11.3875 3.8125C11.5625 3.9875 11.7667 4.075 12 4.075Z\" fill=\"currentColor\"/>` },\r\n    'check-circle': { outlined: `<path d=\"M10.1036 15.5036C10.4551 15.8551 11.0249 15.8551 11.3764 15.5036L16.455 10.425C16.8029 10.0771 16.8029 9.51294 16.455 9.165C16.1071 8.81706 15.5429 8.81706 15.195 9.165L11.3764 12.9836C11.0249 13.3351 10.4551 13.3351 10.1036 12.9836L8.805 11.685C8.45706 11.3371 7.89294 11.3371 7.545 11.685C7.19706 12.0329 7.19706 12.5971 7.545 12.945L10.1036 15.5036ZM12 21C10.755 21 9.585 20.7637 8.49 20.2912C7.395 19.8187 6.4425 19.1775 5.6325 18.3675C4.8225 17.5575 4.18125 16.605 3.70875 15.51C3.23625 14.415 3 13.245 3 12C3 10.755 3.23625 9.585 3.70875 8.49C4.18125 7.395 4.8225 6.4425 5.6325 5.6325C6.4425 4.8225 7.395 4.18125 8.49 3.70875C9.585 3.23625 10.755 3 12 3C13.245 3 14.415 3.23625 15.51 3.70875C16.605 4.18125 17.5575 4.8225 18.3675 5.6325C19.1775 6.4425 19.8187 7.395 20.2912 8.49C20.7637 9.585 21 10.755 21 12C21 13.245 20.7637 14.415 20.2912 15.51C19.8187 16.605 19.1775 17.5575 18.3675 18.3675C17.5575 19.1775 16.605 19.8187 15.51 20.2912C14.415 20.7637 13.245 21 12 21ZM12 19.2C14.01 19.2 15.7125 18.5025 17.1075 17.1075C18.5025 15.7125 19.2 14.01 19.2 12C19.2 9.99 18.5025 8.2875 17.1075 6.8925C15.7125 5.4975 14.01 4.8 12 4.8C9.99 4.8 8.2875 5.4975 6.8925 6.8925C5.4975 8.2875 4.8 9.99 4.8 12C4.8 14.01 5.4975 15.7125 6.8925 17.1075C8.2875 18.5025 9.99 19.2 12 19.2Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10.1036 15.5036C10.4551 15.8551 11.0249 15.8551 11.3764 15.5036L16.455 10.425C16.8029 10.0771 16.8029 9.51294 16.455 9.165C16.1071 8.81706 15.5429 8.81706 15.195 9.165L11.3764 12.9836C11.0249 13.3351 10.4551 13.3351 10.1036 12.9836L8.805 11.685C8.45706 11.3371 7.89294 11.3371 7.545 11.685C7.19706 12.0329 7.19706 12.5971 7.545 12.945L10.1036 15.5036ZM12 21C10.755 21 9.585 20.7637 8.49 20.2912C7.395 19.8187 6.4425 19.1775 5.6325 18.3675C4.8225 17.5575 4.18125 16.605 3.70875 15.51C3.23625 14.415 3 13.245 3 12C3 10.755 3.23625 9.585 3.70875 8.49C4.18125 7.395 4.8225 6.4425 5.6325 5.6325C6.4425 4.8225 7.395 4.18125 8.49 3.70875C9.585 3.23625 10.755 3 12 3C13.245 3 14.415 3.23625 15.51 3.70875C16.605 4.18125 17.5575 4.8225 18.3675 5.6325C19.1775 6.4425 19.8187 7.395 20.2912 8.49C20.7637 9.585 21 10.755 21 12C21 13.245 20.7637 14.415 20.2912 15.51C19.8187 16.605 19.1775 17.5575 18.3675 18.3675C17.5575 19.1775 16.605 19.8187 15.51 20.2912C14.415 20.7637 13.245 21 12 21Z\" fill=\"currentColor\"/>` },\r\n    'check-in': { outlined: `<path d=\"M15.2089 5.54063C15.2089 6.39237 14.4214 7.08144 13.4484 7.08144C12.4753 7.08144 11.688 6.39237 11.688 5.54063C11.688 4.68907 12.4753 4 13.4484 4C14.4214 4 15.2089 4.68907 15.2089 5.54063Z\" fill=\"currentColor\"/><path d=\"M17.5572 12.1189C17.2133 11.9835 14.944 10.9965 14.944 10.9965C14.944 10.9965 14.1394 9.49494 13.7232 8.67342C13.3314 7.89991 13.0495 7.69849 12.4923 7.69849H11.6327C11.1824 7.69849 11.0174 7.84284 10.7422 7.97831L8.41807 9.70863C8.21494 9.81085 8.08433 9.96427 8.00552 10.181L7.50686 13.109C7.43475 13.5757 7.71668 13.7742 8.0364 13.8313C8.29436 13.8795 8.68273 13.7652 8.76175 13.437C8.8237 13.1662 9.29454 10.7707 9.29454 10.7707L10.8111 9.75058C10.5602 10.7678 10.3057 11.8811 10.223 12.2605C10.0786 12.9076 10.4465 13.3979 10.7387 13.783C11.0034 14.1321 14.435 18.866 14.8855 19.3803C15.3391 19.8952 15.752 20.1508 16.3811 19.8438C16.9104 19.5849 16.8211 18.9952 16.529 18.5586C16.2369 18.122 12.7744 13.1933 12.7744 13.1933L13.3554 10.9965C13.3554 10.9965 13.7576 11.499 13.9639 11.7819C14.0635 11.9145 14.1668 11.9685 14.4384 12.0978C14.7581 12.2514 16.309 12.8683 16.7798 13.055C17.1993 13.2174 17.7184 13.2807 17.925 12.9556C18.1346 12.6334 17.8702 12.2453 17.5572 12.1189Z\" fill=\"currentColor\"/><path d=\"M9.89602 14.1113L9.19464 16.275C9.19464 16.275 7.72992 18.1289 7.32408 18.6464C7.01817 19.0375 6.78763 19.5131 7.31047 19.8592C7.89851 20.2473 8.36955 19.7417 8.672 19.4407C8.95048 19.167 10.0851 17.7796 10.4048 17.4274C10.6181 17.1897 10.7349 16.9913 10.8279 16.7925C10.8862 16.6603 11.1168 16.1125 11.2645 15.7573L9.89602 14.1113Z\" fill=\"currentColor\"/>` },\r\n    'check-indeterminate': { outlined: `<path d=\"M19 3C19.55 3 20.0204 3.19622 20.4121 3.58789C20.8038 3.97956 21 4.45 21 5V19C21 19.55 20.8038 20.0204 20.4121 20.4121C20.0204 20.8038 19.55 21 19 21H5C4.45 21 3.97956 20.8038 3.58789 20.4121C3.19622 20.0204 3 19.55 3 19V5C3 4.45 3.19622 3.97956 3.58789 3.58789C3.97956 3.19622 4.45 3 5 3H19ZM7 11C6.44772 11 6 11.4477 6 12C6 12.5523 6.44772 13 7 13H17C17.5523 13 18 12.5523 18 12C18 11.4477 17.5523 11 17 11H7Z\" fill=\"currentColor\"/>` },\r\n    'check-off': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19 5V19H5V5H19ZM19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3Z\" fill=\"currentColor\"/>` },\r\n    'check-on': { outlined: `<path d=\"M10.6 13.4L8.45 11.25C8.26667 11.0667 8.03333 10.975 7.75 10.975C7.46667 10.975 7.23333 11.0667 7.05 11.25C6.86667 11.4333 6.775 11.6667 6.775 11.95C6.775 12.2333 6.86667 12.4667 7.05 12.65L9.9 15.5C10.1 15.7 10.3333 15.8 10.6 15.8C10.8667 15.8 11.1 15.7 11.3 15.5L16.95 9.85C17.1333 9.66667 17.225 9.43333 17.225 9.15C17.225 8.86667 17.1333 8.63333 16.95 8.45C16.7667 8.26667 16.5333 8.175 16.25 8.175C15.9667 8.175 15.7333 8.26667 15.55 8.45L10.6 13.4ZM5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5Z\" fill=\"currentColor\"/>` },\r\n    'check-out': { outlined: `<path d=\"M9.79112 5.54063C9.79112 6.39237 10.5786 7.08144 11.5516 7.08144C12.5247 7.08144 13.3121 6.39237 13.3121 5.54063C13.3121 4.68907 12.5247 4 11.5516 4C10.5786 4 9.79112 4.68907 9.79112 5.54063Z\" fill=\"currentColor\"/><path d=\"M7.44283 12.1189C7.78672 11.9835 10.056 10.9965 10.056 10.9965C10.056 10.9965 10.8606 9.49494 11.2768 8.67342C11.6686 7.89991 11.9505 7.69849 12.5077 7.69849H13.3673C13.8176 7.69849 13.9826 7.84284 14.2578 7.97831L16.5819 9.70863C16.7851 9.81085 16.9157 9.96427 16.9945 10.181L17.4931 13.109C17.5653 13.5757 17.2833 13.7742 16.9636 13.8313C16.7056 13.8795 16.3173 13.7652 16.2383 13.437C16.1763 13.1662 15.7055 10.7707 15.7055 10.7707L14.1889 9.75058C14.4398 10.7678 14.6943 11.8811 14.777 12.2605C14.9214 12.9076 14.5536 13.3979 14.2613 13.783C13.9966 14.1321 10.565 18.866 10.1145 19.3803C9.66093 19.8952 9.24798 20.1508 8.61891 19.8438C8.08957 19.5849 8.17895 18.9952 8.47104 18.5586C8.76313 18.122 12.2256 13.1933 12.2256 13.1933L11.6446 10.9965C11.6446 10.9965 11.2424 11.499 11.0361 11.7819C10.9365 11.9145 10.8332 11.9685 10.5616 12.0978C10.2419 12.2514 8.69102 12.8683 8.22018 13.055C7.80073 13.2174 7.28155 13.2807 7.07498 12.9556C6.86535 12.6334 7.12982 12.2453 7.44283 12.1189Z\" fill=\"currentColor\"/><path d=\"M15.104 14.1113L15.8054 16.275C15.8054 16.275 17.2701 18.1289 17.6759 18.6464C17.9818 19.0375 18.2124 19.5131 17.6895 19.8592C17.1015 20.2473 16.6305 19.7417 16.328 19.4407C16.0495 19.167 14.9149 17.7796 14.5952 17.4274C14.3819 17.1897 14.2651 16.9913 14.1721 16.7925C14.1138 16.6603 13.8832 16.1125 13.7355 15.7573L15.104 14.1113Z\" fill=\"currentColor\"/>` },\r\n    'chevron-down': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.11333 8.50671C3.56388 8.13726 4.25786 8.17053 4.66336 8.58104L11.75 15.7552L18.8366 8.58104C19.2421 8.17053 19.9361 8.13726 20.3866 8.50671C20.8372 8.87617 20.8737 9.50846 20.4682 9.91897L12.5658 17.919C12.3577 18.1297 12.0611 18.25 11.75 18.25C11.4388 18.25 11.1423 18.1297 10.9342 17.919L3.03174 9.91897C2.62624 9.50846 2.66277 8.87617 3.11333 8.50671Z\" fill=\"currentColor\"/>` },\r\n    'chevron-left': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.4013 3.10622C15.8662 3.58118 15.8662 4.35125 15.4013 4.82621L8.62406 11.75L15.4013 18.6738C15.8662 19.1488 15.8662 19.9188 15.4013 20.3938C14.9364 20.8687 14.1826 20.8687 13.7177 20.3938L6.09868 12.61C5.63377 12.135 5.63377 11.365 6.09868 10.89L13.7177 3.10622C14.1826 2.63126 14.9364 2.63126 15.4013 3.10622Z\" fill=\"currentColor\"/>` },\r\n    'chevron-right': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.59868 3.10622C8.13377 3.58118 8.13377 4.35125 8.59868 4.82621L15.3759 11.75L8.59868 18.6738C8.13377 19.1488 8.13377 19.9188 8.59868 20.3938C9.06359 20.8687 9.81736 20.8687 10.2823 20.3938L17.9013 12.61C18.3662 12.135 18.3662 11.365 17.9013 10.89L10.2823 3.10622C9.81736 2.63126 9.06359 2.63126 8.59868 3.10622Z\" fill=\"currentColor\"/>` },\r\n    'chevron-up': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.10622 15.4013C3.58118 15.8662 4.35125 15.8662 4.82621 15.4013L11.75 8.62406L18.6738 15.4013C19.1488 15.8662 19.9188 15.8662 20.3938 15.4013C20.8687 14.9364 20.8687 14.1826 20.3938 13.7177L12.61 6.09868C12.135 5.63377 11.365 5.63377 10.89 6.09868L3.10622 13.7177C2.63126 14.1826 2.63126 14.9364 3.10622 15.4013Z\" fill=\"currentColor\"/>` },\r\n    church: { outlined: `<path d=\"M2 20V15.3C2 14.9 2.10833 14.5375 2.325 14.2125C2.54167 13.8875 2.83333 13.6417 3.2 13.475L6 12.225V10.225C6 9.84167 6.1 9.49583 6.3 9.1875C6.5 8.87917 6.76667 8.63333 7.1 8.45L11 6.5V5H10C9.71667 5 9.47917 4.90417 9.2875 4.7125C9.09583 4.52083 9 4.28333 9 4C9 3.71667 9.09583 3.47917 9.2875 3.2875C9.47917 3.09583 9.71667 3 10 3H11V2C11 1.71667 11.0958 1.47917 11.2875 1.2875C11.4792 1.09583 11.7167 1 12 1C12.2833 1 12.5208 1.09583 12.7125 1.2875C12.9042 1.47917 13 1.71667 13 2V3H14C14.2833 3 14.5208 3.09583 14.7125 3.2875C14.9042 3.47917 15 3.71667 15 4C15 4.28333 14.9042 4.52083 14.7125 4.7125C14.5208 4.90417 14.2833 5 14 5H13V6.5L16.9 8.45C17.2333 8.63333 17.5 8.87917 17.7 9.1875C17.9 9.49583 18 9.84167 18 10.225V12.225L20.8 13.475C21.1667 13.6417 21.4583 13.8875 21.675 14.2125C21.8917 14.5375 22 14.9 22 15.3V20C22 20.55 21.8042 21.0208 21.4125 21.4125C21.0208 21.8042 20.55 22 20 22H14C13.7167 22 13.4792 21.9042 13.2875 21.7125C13.0958 21.5208 13 21.2833 13 21V18C13 17.7167 12.9042 17.4792 12.7125 17.2875C12.5208 17.0958 12.2833 17 12 17C11.7167 17 11.4792 17.0958 11.2875 17.2875C11.0958 17.4792 11 17.7167 11 18V21C11 21.2833 10.9042 21.5208 10.7125 21.7125C10.5208 21.9042 10.2833 22 10 22H4C3.45 22 2.97917 21.8042 2.5875 21.4125C2.19583 21.0208 2 20.55 2 20ZM4 20H9V17.95C9 17.1 9.29167 16.3792 9.875 15.7875C10.4583 15.1958 11.1667 14.9 12 14.9C12.8333 14.9 13.5417 15.1958 14.125 15.7875C14.7083 16.3792 15 17.1 15 17.95V20H20V15.2L16 13.4V10.05L12 8L8 10.05V13.4L4 15.2V20ZM12 13.5C12.4167 13.5 12.7708 13.3542 13.0625 13.0625C13.3542 12.7708 13.5 12.4167 13.5 12C13.5 11.5833 13.3542 11.2292 13.0625 10.9375C12.7708 10.6458 12.4167 10.5 12 10.5C11.5833 10.5 11.2292 10.6458 10.9375 10.9375C10.6458 11.2292 10.5 11.5833 10.5 12C10.5 12.4167 10.6458 12.7708 10.9375 13.0625C11.2292 13.3542 11.5833 13.5 12 13.5Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M2 20V15.3C2 14.9 2.10833 14.5375 2.325 14.2125C2.54167 13.8875 2.83333 13.6417 3.2 13.475L6 12.225V10.225C6 9.84167 6.1 9.49583 6.3 9.1875C6.5 8.87917 6.76667 8.63333 7.1 8.45L11 6.5V5H10C9.71667 5 9.47917 4.90417 9.2875 4.7125C9.09583 4.52083 9 4.28333 9 4C9 3.71667 9.09583 3.47917 9.2875 3.2875C9.47917 3.09583 9.71667 3 10 3H11V2C11 1.71667 11.0958 1.47917 11.2875 1.2875C11.4792 1.09583 11.7167 1 12 1C12.2833 1 12.5208 1.09583 12.7125 1.2875C12.9042 1.47917 13 1.71667 13 2V3H14C14.2833 3 14.5208 3.09583 14.7125 3.2875C14.9042 3.47917 15 3.71667 15 4C15 4.28333 14.9042 4.52083 14.7125 4.7125C14.5208 4.90417 14.2833 5 14 5H13V6.5L16.9 8.45C17.2333 8.63333 17.5 8.87917 17.7 9.1875C17.9 9.49583 18 9.84167 18 10.225V12.225L20.8 13.475C21.1667 13.6417 21.4583 13.8875 21.675 14.2125C21.8917 14.5375 22 14.9 22 15.3V20C22 20.55 21.8042 21.0208 21.4125 21.4125C21.0208 21.8042 20.55 22 20 22H15C14.7167 22 14.4792 21.9042 14.2875 21.7125C14.0958 21.5208 14 21.2833 14 21V19C14 18.45 13.8042 17.9792 13.4125 17.5875C13.0208 17.1958 12.55 17 12 17C11.45 17 10.9792 17.1958 10.5875 17.5875C10.1958 17.9792 10 18.45 10 19V21C10 21.2833 9.90417 21.5208 9.7125 21.7125C9.52083 21.9042 9.28333 22 9 22H4C3.45 22 2.97917 21.8042 2.5875 21.4125C2.19583 21.0208 2 20.55 2 20ZM12 13.5C12.4167 13.5 12.7708 13.3542 13.0625 13.0625C13.3542 12.7708 13.5 12.4167 13.5 12C13.5 11.5833 13.3542 11.2292 13.0625 10.9375C12.7708 10.6458 12.4167 10.5 12 10.5C11.5833 10.5 11.2292 10.6458 10.9375 10.9375C10.6458 11.2292 10.5 11.5833 10.5 12C10.5 12.4167 10.6458 12.7708 10.9375 13.0625C11.2292 13.3542 11.5833 13.5 12 13.5Z\" fill=\"currentColor\"/>` },\r\n    class: { outlined: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM6 20H18V4H16V10.125C16 10.325 15.9167 10.4708 15.75 10.5625C15.5833 10.6542 15.4167 10.65 15.25 10.55L14.025 9.8C13.8583 9.7 13.6875 9.65 13.5125 9.65C13.3375 9.65 13.1667 9.7 13 9.8L11.775 10.55C11.6083 10.65 11.4375 10.6542 11.2625 10.5625C11.0875 10.4708 11 10.325 11 10.125V4H6V20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM11 4V10.125C11 10.325 11.0792 10.4708 11.2375 10.5625C11.3958 10.6542 11.5667 10.65 11.75 10.55L12.975 9.825C13.1417 9.725 13.3125 9.675 13.4875 9.675C13.6625 9.675 13.8333 9.725 14 9.825L15.225 10.55C15.4083 10.65 15.5833 10.6542 15.75 10.5625C15.9167 10.4708 16 10.325 16 10.125V4H11Z\" fill=\"currentColor\"/>` },\r\n    clock: { outlined: `<path d=\"M13 12.6V9.00002C13 8.71669 12.9042 8.47919 12.7125 8.28752C12.5209 8.09586 12.2834 8.00002 12 8.00002C11.7167 8.00002 11.4792 8.09586 11.2875 8.28752C11.0959 8.47919 11 8.71669 11 9.00002V12.975C11 13.1084 11.025 13.2375 11.075 13.3625C11.125 13.4875 11.2 13.6 11.3 13.7L14.1 16.5C14.2834 16.6834 14.5167 16.775 14.8 16.775C15.0834 16.775 15.3167 16.6834 15.5 16.5C15.6834 16.3167 15.775 16.0834 15.775 15.8C15.775 15.5167 15.6834 15.2834 15.5 15.1L13 12.6ZM8.48752 21.2875C7.39586 20.8125 6.44586 20.1709 5.63752 19.3625C4.82919 18.5542 4.18752 17.6042 3.71252 16.5125C3.23752 15.4209 3.00002 14.25 3.00002 13C3.00002 11.75 3.23752 10.5792 3.71252 9.48752C4.18752 8.39586 4.82919 7.44586 5.63752 6.63752C6.44586 5.82919 7.39586 5.18752 8.48752 4.71252C9.57919 4.23752 10.75 4.00002 12 4.00002C13.25 4.00002 14.4209 4.23752 15.5125 4.71252C16.6042 5.18752 17.5542 5.82919 18.3625 6.63752C19.1709 7.44586 19.8125 8.39586 20.2875 9.48752C20.7625 10.5792 21 11.75 21 13C21 14.25 20.7625 15.4209 20.2875 16.5125C19.8125 17.6042 19.1709 18.5542 18.3625 19.3625C17.5542 20.1709 16.6042 20.8125 15.5125 21.2875C14.4209 21.7625 13.25 22 12 22C10.75 22 9.57919 21.7625 8.48752 21.2875ZM2.05002 7.30002C1.86669 7.11669 1.77502 6.88336 1.77502 6.60002C1.77502 6.31669 1.86669 6.08336 2.05002 5.90002L4.90002 3.05002C5.08336 2.86669 5.31669 2.77502 5.60002 2.77502C5.88336 2.77502 6.11669 2.86669 6.30002 3.05002C6.48336 3.23336 6.57502 3.46669 6.57502 3.75002C6.57502 4.03336 6.48336 4.26669 6.30002 4.45002L3.45002 7.30002C3.26669 7.48336 3.03336 7.57502 2.75002 7.57502C2.46669 7.57502 2.23336 7.48336 2.05002 7.30002ZM21.95 7.30002C21.7667 7.48336 21.5334 7.57502 21.25 7.57502C20.9667 7.57502 20.7334 7.48336 20.55 7.30002L17.7 4.45002C17.5167 4.26669 17.425 4.03336 17.425 3.75002C17.425 3.46669 17.5167 3.23336 17.7 3.05002C17.8834 2.86669 18.1167 2.77502 18.4 2.77502C18.6834 2.77502 18.9167 2.86669 19.1 3.05002L21.95 5.90002C22.1334 6.08336 22.225 6.31669 22.225 6.60002C22.225 6.88336 22.1334 7.11669 21.95 7.30002ZM12 20C13.95 20 15.6042 19.3209 16.9625 17.9625C18.3209 16.6042 19 14.95 19 13C19 11.05 18.3209 9.39586 16.9625 8.03752C15.6042 6.67919 13.95 6.00002 12 6.00002C10.05 6.00002 8.39586 6.67919 7.03752 8.03752C5.67919 9.39586 5.00002 11.05 5.00002 13C5.00002 14.95 5.67919 16.6042 7.03752 17.9625C8.39586 19.3209 10.05 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M13 12.6V9.00002C13 8.71669 12.9042 8.47919 12.7125 8.28752C12.5209 8.09586 12.2834 8.00002 12 8.00002C11.7167 8.00002 11.4792 8.09586 11.2875 8.28752C11.0959 8.47919 11 8.71669 11 9.00002V12.975C11 13.1084 11.025 13.2375 11.075 13.3625C11.125 13.4875 11.2 13.6 11.3 13.7L14.1 16.5C14.2834 16.6834 14.5167 16.775 14.8 16.775C15.0834 16.775 15.3167 16.6834 15.5 16.5C15.6834 16.3167 15.775 16.0834 15.775 15.8C15.775 15.5167 15.6834 15.2834 15.5 15.1L13 12.6ZM8.48752 21.2875C7.39586 20.8125 6.44586 20.1709 5.63752 19.3625C4.82919 18.5542 4.18752 17.6042 3.71252 16.5125C3.23752 15.4209 3.00002 14.25 3.00002 13C3.00002 11.75 3.23752 10.5792 3.71252 9.48752C4.18752 8.39586 4.82919 7.44586 5.63752 6.63752C6.44586 5.82919 7.39586 5.18752 8.48752 4.71252C9.57919 4.23752 10.75 4.00002 12 4.00002C13.25 4.00002 14.4209 4.23752 15.5125 4.71252C16.6042 5.18752 17.5542 5.82919 18.3625 6.63752C19.1709 7.44586 19.8125 8.39586 20.2875 9.48752C20.7625 10.5792 21 11.75 21 13C21 14.25 20.7625 15.4209 20.2875 16.5125C19.8125 17.6042 19.1709 18.5542 18.3625 19.3625C17.5542 20.1709 16.6042 20.8125 15.5125 21.2875C14.4209 21.7625 13.25 22 12 22C10.75 22 9.57919 21.7625 8.48752 21.2875ZM2.05002 7.30002C1.86669 7.11669 1.77502 6.88336 1.77502 6.60002C1.77502 6.31669 1.86669 6.08336 2.05002 5.90002L4.90002 3.05002C5.08336 2.86669 5.31669 2.77502 5.60002 2.77502C5.88336 2.77502 6.11669 2.86669 6.30002 3.05002C6.48336 3.23336 6.57502 3.46669 6.57502 3.75002C6.57502 4.03336 6.48336 4.26669 6.30002 4.45002L3.45002 7.30002C3.26669 7.48336 3.03336 7.57502 2.75002 7.57502C2.46669 7.57502 2.23336 7.48336 2.05002 7.30002ZM21.95 7.30002C21.7667 7.48336 21.5334 7.57502 21.25 7.57502C20.9667 7.57502 20.7334 7.48336 20.55 7.30002L17.7 4.45002C17.5167 4.26669 17.425 4.03336 17.425 3.75002C17.425 3.46669 17.5167 3.23336 17.7 3.05002C17.8834 2.86669 18.1167 2.77502 18.4 2.77502C18.6834 2.77502 18.9167 2.86669 19.1 3.05002L21.95 5.90002C22.1334 6.08336 22.225 6.31669 22.225 6.60002C22.225 6.88336 22.1334 7.11669 21.95 7.30002Z\" fill=\"currentColor\"/>` },\r\n    close: { outlined: `<path d=\"M12 13.4L7.1 18.3C6.91667 18.4833 6.68334 18.575 6.4 18.575C6.11667 18.575 5.88334 18.4833 5.7 18.3C5.51667 18.1167 5.425 17.8833 5.425 17.6C5.425 17.3167 5.51667 17.0833 5.7 16.9L10.6 12L5.7 7.09999C5.51667 6.91665 5.425 6.68332 5.425 6.39999C5.425 6.11665 5.51667 5.88332 5.7 5.69999C5.88334 5.51665 6.11667 5.42499 6.4 5.42499C6.68334 5.42499 6.91667 5.51665 7.1 5.69999L12 10.6L16.9 5.69999C17.0833 5.51665 17.3167 5.42499 17.6 5.42499C17.8833 5.42499 18.1167 5.51665 18.3 5.69999C18.4833 5.88332 18.575 6.11665 18.575 6.39999C18.575 6.68332 18.4833 6.91665 18.3 7.09999L13.4 12L18.3 16.9C18.4833 17.0833 18.575 17.3167 18.575 17.6C18.575 17.8833 18.4833 18.1167 18.3 18.3C18.1167 18.4833 17.8833 18.575 17.6 18.575C17.3167 18.575 17.0833 18.4833 16.9 18.3L12 13.4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 13.4L7.1 18.3C6.91667 18.4833 6.68334 18.575 6.4 18.575C6.11667 18.575 5.88334 18.4833 5.7 18.3C5.51667 18.1167 5.425 17.8833 5.425 17.6C5.425 17.3167 5.51667 17.0833 5.7 16.9L10.6 12L5.7 7.09999C5.51667 6.91665 5.425 6.68332 5.425 6.39999C5.425 6.11665 5.51667 5.88332 5.7 5.69999C5.88334 5.51665 6.11667 5.42499 6.4 5.42499C6.68334 5.42499 6.91667 5.51665 7.1 5.69999L12 10.6L16.9 5.69999C17.0833 5.51665 17.3167 5.42499 17.6 5.42499C17.8833 5.42499 18.1167 5.51665 18.3 5.69999C18.4833 5.88332 18.575 6.11665 18.575 6.39999C18.575 6.68332 18.4833 6.91665 18.3 7.09999L13.4 12L18.3 16.9C18.4833 17.0833 18.575 17.3167 18.575 17.6C18.575 17.8833 18.4833 18.1167 18.3 18.3C18.1167 18.4833 17.8833 18.575 17.6 18.575C17.3167 18.575 17.0833 18.4833 16.9 18.3L12 13.4Z\" fill=\"currentColor\"/>` },\r\n    code: { outlined: `<path d=\"M9.24926 12.4243C9.01495 12.1899 9.01495 11.8101 9.24926 11.5757L10.3 10.525C10.5 10.325 10.6 10.0917 10.6 9.825C10.6 9.55833 10.5 9.325 10.3 9.125C10.1 8.925 9.8625 8.825 9.5875 8.825C9.3125 8.825 9.075 8.925 8.875 9.125L6.7 11.3C6.6 11.4 6.52917 11.5083 6.4875 11.625C6.44583 11.7417 6.425 11.8667 6.425 12C6.425 12.1333 6.44583 12.2583 6.4875 12.375C6.52917 12.4917 6.6 12.6 6.7 12.7L8.875 14.875C9.075 15.075 9.3125 15.175 9.5875 15.175C9.8625 15.175 10.1 15.075 10.3 14.875C10.5 14.675 10.6 14.4417 10.6 14.175C10.6 13.9083 10.5 13.675 10.3 13.475L9.24926 12.4243ZM14.7507 11.5757C14.9851 11.8101 14.9851 12.1899 14.7507 12.4243L13.7 13.475C13.5 13.675 13.4 13.9083 13.4 14.175C13.4 14.4417 13.5 14.675 13.7 14.875C13.9 15.075 14.1375 15.175 14.4125 15.175C14.6875 15.175 14.925 15.075 15.125 14.875L17.3 12.7C17.4 12.6 17.4708 12.4917 17.5125 12.375C17.5542 12.2583 17.575 12.1333 17.575 12C17.575 11.8667 17.5542 11.7417 17.5125 11.625C17.4708 11.5083 17.4 11.4 17.3 11.3L15.125 9.125C15.025 9.025 14.9125 8.95 14.7875 8.9C14.6625 8.85 14.5375 8.825 14.4125 8.825C14.2875 8.825 14.1625 8.85 14.0375 8.9C13.9125 8.95 13.8 9.025 13.7 9.125C13.5 9.325 13.4 9.55833 13.4 9.825C13.4 10.0917 13.5 10.325 13.7 10.525L14.7507 11.5757ZM5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM5 18.4C5 18.7314 5.26863 19 5.6 19H18.4C18.7314 19 19 18.7314 19 18.4V5.6C19 5.26863 18.7314 5 18.4 5H5.6C5.26863 5 5 5.26863 5 5.6V18.4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M9.24926 12.4243C9.01495 12.1899 9.01495 11.8101 9.24926 11.5757L10.3 10.525C10.5 10.325 10.6 10.0917 10.6 9.825C10.6 9.55833 10.5 9.325 10.3 9.125C10.1 8.925 9.8625 8.825 9.5875 8.825C9.3125 8.825 9.075 8.925 8.875 9.125L6.7 11.3C6.6 11.4 6.52917 11.5083 6.4875 11.625C6.44583 11.7417 6.425 11.8667 6.425 12C6.425 12.1333 6.44583 12.2583 6.4875 12.375C6.52917 12.4917 6.6 12.6 6.7 12.7L8.875 14.875C9.075 15.075 9.3125 15.175 9.5875 15.175C9.8625 15.175 10.1 15.075 10.3 14.875C10.5 14.675 10.6 14.4417 10.6 14.175C10.6 13.9083 10.5 13.675 10.3 13.475L9.24926 12.4243ZM14.7507 11.5757C14.9851 11.8101 14.9851 12.1899 14.7507 12.4243L13.7 13.475C13.5 13.675 13.4 13.9083 13.4 14.175C13.4 14.4417 13.5 14.675 13.7 14.875C13.9 15.075 14.1375 15.175 14.4125 15.175C14.6875 15.175 14.925 15.075 15.125 14.875L17.3 12.7C17.4 12.6 17.4708 12.4917 17.5125 12.375C17.5542 12.2583 17.575 12.1333 17.575 12C17.575 11.8667 17.5542 11.7417 17.5125 11.625C17.4708 11.5083 17.4 11.4 17.3 11.3L15.125 9.125C15.025 9.025 14.9125 8.95 14.7875 8.9C14.6625 8.85 14.5375 8.825 14.4125 8.825C14.2875 8.825 14.1625 8.85 14.0375 8.9C13.9125 8.95 13.8 9.025 13.7 9.125C13.5 9.325 13.4 9.55833 13.4 9.825C13.4 10.0917 13.5 10.325 13.7 10.525L14.7507 11.5757ZM5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5Z\" fill=\"currentColor\"/>` },\r\n    contact: { outlined: `<path d=\"M21 20.6C20.8667 20.6 20.7417 20.575 20.625 20.525C20.5083 20.475 20.4 20.4 20.3 20.3L18 18H8C7.45 18 6.97917 17.8042 6.5875 17.4125C6.19583 17.0208 6 16.55 6 16V15H17C17.55 15 18.0208 14.8042 18.4125 14.4125C18.8042 14.0208 19 13.55 19 13V6H20C20.55 6 21.0208 6.19583 21.4125 6.5875C21.8042 6.97917 22 7.45 22 8V19.575C22 19.875 21.9 20.1208 21.7 20.3125C21.5 20.5042 21.2667 20.6 21 20.6ZM4 12.175L5.175 11H15V4H4V12.175ZM3 15.6C2.73333 15.6 2.5 15.5042 2.3 15.3125C2.1 15.1208 2 14.875 2 14.575V4C2 3.45 2.19583 2.97917 2.5875 2.5875C2.97917 2.19583 3.45 2 4 2H15C15.55 2 16.0208 2.19583 16.4125 2.5875C16.8042 2.97917 17 3.45 17 4V11C17 11.55 16.8042 12.0208 16.4125 12.4125C16.0208 12.8042 15.55 13 15 13H6L3.7 15.3C3.6 15.4 3.49167 15.475 3.375 15.525C3.25833 15.575 3.13333 15.6 3 15.6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M21 20.6C20.8667 20.6 20.7417 20.575 20.625 20.525C20.5083 20.475 20.4 20.4 20.3 20.3L18 18H8C7.45 18 6.97917 17.8042 6.5875 17.4125C6.19583 17.0208 6 16.55 6 16V15H17C17.55 15 18.0208 14.8042 18.4125 14.4125C18.8042 14.0208 19 13.55 19 13V6H20C20.55 6 21.0208 6.19583 21.4125 6.5875C21.8042 6.97917 22 7.45 22 8V19.575C22 19.875 21.9 20.1208 21.7 20.3125C21.5 20.5042 21.2667 20.6 21 20.6ZM3 15.6C2.73333 15.6 2.5 15.5042 2.3 15.3125C2.1 15.1208 2 14.875 2 14.575V4C2 3.45 2.19583 2.97917 2.5875 2.5875C2.97917 2.19583 3.45 2 4 2H15C15.55 2 16.0208 2.19583 16.4125 2.5875C16.8042 2.97917 17 3.45 17 4V11C17 11.55 16.8042 12.0208 16.4125 12.4125C16.0208 12.8042 15.55 13 15 13H6L3.7 15.3C3.6 15.4 3.49167 15.475 3.375 15.525C3.25833 15.575 3.13333 15.6 3 15.6Z\" fill=\"currentColor\"/>` },\r\n    content: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.1818 3H3.81818C2.81818 3 2 3.9 2 5V17C2 18.1 2.81818 19 3.81818 19H7.96364C8.18455 19 8.36364 19.1791 8.36364 19.4V20C8.36364 20.55 8.77273 21 9.27273 21H14.7273C15.2273 21 15.6364 20.55 15.6364 20V19.4C15.6364 19.1791 15.8154 19 16.0364 19H20.1818C21.1818 19 21.9909 18.1 21.9909 17L22 5C22 3.89 21.1818 3 20.1818 3ZM19.2729 17H4.72747C4.22747 17 3.81838 16.55 3.81838 16V6C3.81838 5.45 4.22747 5 4.72747 5H19.2729C19.7729 5 20.182 5.45 20.182 6V16C20.182 16.55 19.7729 17 19.2729 17ZM14.2546 11.87L10.6364 14.15C10.0273 14.53 9.27279 14.04 9.27279 13.28V8.72003C9.27279 7.95003 10.0273 7.47003 10.6364 7.85003L14.2546 10.13C14.8637 10.52 14.8637 11.48 14.2546 11.87Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.1818 3H3.81818C2.81818 3 2 3.9 2 5V17C2 18.1 2.81818 19 3.81818 19H7.96364C8.18455 19 8.36364 19.1791 8.36364 19.4V20C8.36364 20.55 8.77273 21 9.27273 21H14.7273C15.2273 21 15.6364 20.55 15.6364 20V19.4C15.6364 19.1791 15.8154 19 16.0364 19H20.1818C21.1818 19 21.9909 18.1 21.9909 17L22 5C22 3.89 21.1818 3 20.1818 3ZM14.2537 11.87L10.6355 14.15C10.0264 14.53 9.27189 14.04 9.27189 13.28V8.72004C9.27189 7.95003 10.0264 7.47003 10.6355 7.85003L14.2537 10.13C14.8628 10.52 14.8628 11.48 14.2537 11.87Z\" fill=\"currentColor\"/>` },\r\n    contract: { outlined: `<path d=\"M6 22C5.16667 22 4.45833 21.7083 3.875 21.125C3.29167 20.5417 3 19.8333 3 19V16H6V2H21V19C21 19.8333 20.7083 20.5417 20.125 21.125C19.5417 21.7083 18.8333 22 18 22H6ZM18 20C18.2833 20 18.5208 19.9042 18.7125 19.7125C18.9042 19.5208 19 19.2833 19 19V4H8V16H17V19C17 19.2833 17.0958 19.5208 17.2875 19.7125C17.4792 19.9042 17.7167 20 18 20ZM9 9V7H18V9H9ZM9 12V10H18V12H9ZM6 20H15V18H5V19C5 19.2833 5.09583 19.5208 5.2875 19.7125C5.47917 19.9042 5.71667 20 6 20ZM6 20H5H15H6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 22C5.16667 22 4.45833 21.7083 3.875 21.125C3.29167 20.5417 3 19.8333 3 19V16H6V2H21V19C21 19.8333 20.7083 20.5417 20.125 21.125C19.5417 21.7083 18.8333 22 18 22H6ZM18 20C18.2833 20 18.5208 19.9042 18.7125 19.7125C18.9042 19.5208 19 19.2833 19 19V4H8V16H17V19C17 19.2833 17.0958 19.5208 17.2875 19.7125C17.4792 19.9042 17.7167 20 18 20ZM9 9V7H18V9H9ZM9 12V10H18V12H9Z\" fill=\"currentColor\"/>` },\r\n    cookies: { outlined: `<path d=\"M12 22.0001C10.6167 22.0001 9.31667 21.7376 8.1 21.2126C6.88333 20.6876 5.825 19.9751 4.925 19.0751C4.025 18.1751 3.3125 17.1168 2.7875 15.9001C2.2625 14.6834 2 13.3834 2 12.0001C2 10.7501 2.24167 9.5251 2.725 8.3251C3.20833 7.1251 3.88333 6.05426 4.75 5.1126C5.61667 4.17093 6.65833 3.4126 7.875 2.8376C9.09167 2.2626 10.425 1.9751 11.875 1.9751C12.225 1.9751 12.5833 1.99176 12.95 2.0251C13.3167 2.05843 13.6917 2.11676 14.075 2.2001C13.925 2.9501 13.975 3.65843 14.225 4.3251C14.475 4.99176 14.85 5.54593 15.35 5.9876C15.85 6.42926 16.4458 6.73343 17.1375 6.9001C17.8292 7.06676 18.5417 7.0251 19.275 6.7751C18.8417 7.75843 18.9042 8.7001 19.4625 9.6001C20.0208 10.5001 20.85 10.9668 21.95 11.0001C21.9667 11.1834 21.9792 11.3543 21.9875 11.5126C21.9958 11.6709 22 11.8418 22 12.0251C22 13.3918 21.7375 14.6793 21.2125 15.8876C20.6875 17.0959 19.975 18.1543 19.075 19.0626C18.175 19.9709 17.1167 20.6876 15.9 21.2126C14.6833 21.7376 13.3833 22.0001 12 22.0001ZM10.5 10.0001C10.9167 10.0001 11.2708 9.85426 11.5625 9.5626C11.8542 9.27093 12 8.91676 12 8.5001C12 8.08343 11.8542 7.72926 11.5625 7.4376C11.2708 7.14593 10.9167 7.0001 10.5 7.0001C10.0833 7.0001 9.72917 7.14593 9.4375 7.4376C9.14583 7.72926 9 8.08343 9 8.5001C9 8.91676 9.14583 9.27093 9.4375 9.5626C9.72917 9.85426 10.0833 10.0001 10.5 10.0001ZM8.5 15.0001C8.91667 15.0001 9.27083 14.8543 9.5625 14.5626C9.85417 14.2709 10 13.9168 10 13.5001C10 13.0834 9.85417 12.7293 9.5625 12.4376C9.27083 12.1459 8.91667 12.0001 8.5 12.0001C8.08333 12.0001 7.72917 12.1459 7.4375 12.4376C7.14583 12.7293 7 13.0834 7 13.5001C7 13.9168 7.14583 14.2709 7.4375 14.5626C7.72917 14.8543 8.08333 15.0001 8.5 15.0001ZM15 16.0001C15.2833 16.0001 15.5208 15.9043 15.7125 15.7126C15.9042 15.5209 16 15.2834 16 15.0001C16 14.7168 15.9042 14.4793 15.7125 14.2876C15.5208 14.0959 15.2833 14.0001 15 14.0001C14.7167 14.0001 14.4792 14.0959 14.2875 14.2876C14.0958 14.4793 14 14.7168 14 15.0001C14 15.2834 14.0958 15.5209 14.2875 15.7126C14.4792 15.9043 14.7167 16.0001 15 16.0001ZM12 20.0001C14.0333 20.0001 15.8375 19.3001 17.4125 17.9001C18.9875 16.5001 19.85 14.7168 20 12.5501C19.1667 12.1834 18.5125 11.6834 18.0375 11.0501C17.5625 10.4168 17.2417 9.70843 17.075 8.9251C15.7917 8.74176 14.6917 8.19176 13.775 7.2751C12.8583 6.35843 12.2917 5.25843 12.075 3.9751C10.7417 3.94176 9.57083 4.18343 8.5625 4.7001C7.55417 5.21676 6.7125 5.87926 6.0375 6.6876C5.3625 7.49593 4.85417 8.3751 4.5125 9.3251C4.17083 10.2751 4 11.1668 4 12.0001C4 14.2168 4.77917 16.1043 6.3375 17.6626C7.89583 19.2209 9.78333 20.0001 12 20.0001Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 22.0001C10.6167 22.0001 9.31667 21.7376 8.1 21.2126C6.88333 20.6876 5.825 19.9751 4.925 19.0751C4.025 18.1751 3.3125 17.1167 2.7875 15.9001C2.2625 14.6834 2 13.3834 2 12.0001C2 10.6501 2.27917 9.33757 2.8375 8.06257C3.39583 6.78757 4.17083 5.66674 5.1625 4.70007C6.15417 3.7334 7.33333 3.00007 8.7 2.50007C10.0667 2.00007 11.5667 1.85007 13.2 2.05007C13.45 2.0834 13.6417 2.18757 13.775 2.36257C13.9083 2.53757 13.9833 2.77507 14 3.07507C14.0333 4.14174 14.4292 5.05424 15.1875 5.81257C15.9458 6.5709 16.85 6.96674 17.9 7.00007C18.25 7.01674 18.5167 7.11674 18.7 7.30007C18.8833 7.4834 18.9833 7.76674 19 8.15007C19.0333 8.85007 19.2458 9.42507 19.6375 9.87507C20.0292 10.3251 20.575 10.6667 21.275 10.9001C21.5083 10.9834 21.6875 11.1042 21.8125 11.2626C21.9375 11.4209 22 11.6167 22 11.8501C22.0333 13.2334 21.7917 14.5417 21.275 15.7751C20.7583 17.0084 20.05 18.0876 19.15 19.0126C18.25 19.9376 17.1833 20.6667 15.95 21.2001C14.7167 21.7334 13.4 22.0001 12 22.0001ZM10.5 10.0001C10.9167 10.0001 11.2708 9.85424 11.5625 9.56257C11.8542 9.2709 12 8.91674 12 8.50007C12 8.0834 11.8542 7.72924 11.5625 7.43757C11.2708 7.1459 10.9167 7.00007 10.5 7.00007C10.0833 7.00007 9.72917 7.1459 9.4375 7.43757C9.14583 7.72924 9 8.0834 9 8.50007C9 8.91674 9.14583 9.2709 9.4375 9.56257C9.72917 9.85424 10.0833 10.0001 10.5 10.0001ZM8.5 15.0001C8.91667 15.0001 9.27083 14.8542 9.5625 14.5626C9.85417 14.2709 10 13.9167 10 13.5001C10 13.0834 9.85417 12.7292 9.5625 12.4376C9.27083 12.1459 8.91667 12.0001 8.5 12.0001C8.08333 12.0001 7.72917 12.1459 7.4375 12.4376C7.14583 12.7292 7 13.0834 7 13.5001C7 13.9167 7.14583 14.2709 7.4375 14.5626C7.72917 14.8542 8.08333 15.0001 8.5 15.0001ZM15 16.0001C15.2833 16.0001 15.5208 15.9042 15.7125 15.7126C15.9042 15.5209 16 15.2834 16 15.0001C16 14.7167 15.9042 14.4792 15.7125 14.2876C15.5208 14.0959 15.2833 14.0001 15 14.0001C14.7167 14.0001 14.4792 14.0959 14.2875 14.2876C14.0958 14.4792 14 14.7167 14 15.0001C14 15.2834 14.0958 15.5209 14.2875 15.7126C14.4792 15.9042 14.7167 16.0001 15 16.0001Z\" fill=\"currentColor\"/>` },\r\n    'copy-text': { outlined: `<path d=\"M19.1053 18.3636H8.68421C8.16316 18.3636 7.71711 18.1856 7.34605 17.8295C6.975 17.4735 6.78947 17.0455 6.78947 16.5455V3.81818C6.78947 3.31818 6.975 2.89015 7.34605 2.53409C7.71711 2.17803 8.16316 2 8.68421 2H14.5342C14.7868 2 15.0276 2.04545 15.2566 2.13636C15.4855 2.22727 15.6868 2.35606 15.8605 2.52273L20.4553 6.93182C20.6289 7.09848 20.7632 7.29167 20.8579 7.51136C20.9526 7.73106 21 7.96212 21 8.20455V16.5455C21 17.0455 20.8145 17.4735 20.4434 17.8295C20.0724 18.1856 19.6263 18.3636 19.1053 18.3636ZM19.1053 8.36364H15.7895C15.3947 8.36364 15.0592 8.23106 14.7829 7.96591C14.5066 7.70076 14.3684 7.37879 14.3684 7V3.81818H8.68421V16.5455H19.1053V8.36364ZM4.89474 22C4.37368 22 3.92763 21.822 3.55658 21.4659C3.18553 21.1098 3 20.6818 3 20.1818V8.36364C3 8.10606 3.09079 7.89015 3.27237 7.71591C3.45395 7.54167 3.67895 7.45455 3.94737 7.45455C4.21579 7.45455 4.44079 7.54167 4.62237 7.71591C4.80395 7.89015 4.89474 8.10606 4.89474 8.36364V20.1818H14.3684C14.6368 20.1818 14.8618 20.2689 15.0434 20.4432C15.225 20.6174 15.3158 20.8333 15.3158 21.0909C15.3158 21.3485 15.225 21.5644 15.0434 21.7386C14.8618 21.9129 14.6368 22 14.3684 22H4.89474Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M19.1053 18.3636H8.68421C8.16316 18.3636 7.71711 18.1856 7.34605 17.8295C6.975 17.4735 6.78947 17.0455 6.78947 16.5455V3.81818C6.78947 3.31818 6.975 2.89015 7.34605 2.53409C7.71711 2.17803 8.16316 2 8.68421 2H14.5342C14.7868 2 15.0276 2.04545 15.2566 2.13636C15.4855 2.22727 15.6868 2.35606 15.8605 2.52273L20.4553 6.93182C20.6289 7.09848 20.7632 7.29167 20.8579 7.51136C20.9526 7.73106 21 7.96212 21 8.20455V16.5455C21 17.0455 20.8145 17.4735 20.4434 17.8295C20.0724 18.1856 19.6263 18.3636 19.1053 18.3636ZM19.1053 8.36364L14.3684 3.81818V7C14.3684 7.37879 14.5066 7.70076 14.7829 7.96591C15.0592 8.23106 15.3947 8.36364 15.7895 8.36364H19.1053ZM4.89474 22C4.37368 22 3.92763 21.822 3.55658 21.4659C3.18553 21.1098 3 20.6818 3 20.1818V8.36364C3 8.10606 3.09079 7.89015 3.27237 7.71591C3.45395 7.54167 3.67895 7.45455 3.94737 7.45455C4.21579 7.45455 4.44079 7.54167 4.62237 7.71591C4.80395 7.89015 4.89474 8.10606 4.89474 8.36364V20.1818H14.3684C14.6368 20.1818 14.8618 20.2689 15.0434 20.4432C15.225 20.6174 15.3158 20.8333 15.3158 21.0909C15.3158 21.3485 15.225 21.5644 15.0434 21.7386C14.8618 21.9129 14.6368 22 14.3684 22H4.89474Z\" fill=\"currentColor\"/>` },\r\n    'cost-center': { outlined: `<path d=\"M12 16.65C13.3 16.65 14.4 16.2 15.3 15.3C16.2 14.4 16.65 13.3 16.65 12C16.65 10.7 16.2 9.6 15.3 8.7C14.4 7.8 13.3 7.35 12 7.35C10.7 7.35 9.6 7.8 8.7 8.7C7.8 9.6 7.35 10.7 7.35 12C7.35 13.3 7.8 14.4 8.7 15.3C9.6 16.2 10.7 16.65 12 16.65ZM12 22C10.6333 22 9.34167 21.7375 8.125 21.2125C6.90833 20.6875 5.84583 19.9708 4.9375 19.0625C4.02917 18.1542 3.3125 17.0917 2.7875 15.875C2.2625 14.6583 2 13.3667 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.02917 5.825 4.9375 4.925C5.84583 4.025 6.90833 3.3125 8.125 2.7875C9.34167 2.2625 10.6333 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3667 21.7375 14.6583 21.2125 15.875C20.6875 17.0917 19.975 18.1542 19.075 19.0625C18.175 19.9708 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20.5C14.3667 20.5 16.375 19.6708 18.025 18.0125C19.675 16.3542 20.5 14.35 20.5 12C20.5 9.63333 19.675 7.625 18.025 5.975C16.375 4.325 14.3667 3.5 12 3.5C9.65 3.5 7.64583 4.325 5.9875 5.975C4.32917 7.625 3.5 9.63333 3.5 12C3.5 14.35 4.32917 16.3542 5.9875 18.0125C7.64583 19.6708 9.65 20.5 12 20.5Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 16.65C13.3 16.65 14.4 16.2 15.3 15.3C16.2 14.4 16.65 13.3 16.65 12C16.65 10.7 16.2 9.6 15.3 8.7C14.4 7.8 13.3 7.35 12 7.35C10.7 7.35 9.6 7.8 8.7 8.7C7.8 9.6 7.35 10.7 7.35 12C7.35 13.3 7.8 14.4 8.7 15.3C9.6 16.2 10.7 16.65 12 16.65ZM12 22C10.6333 22 9.34167 21.7375 8.125 21.2125C6.90833 20.6875 5.84583 19.9708 4.9375 19.0625C4.02917 18.1542 3.3125 17.0917 2.7875 15.875C2.2625 14.6583 2 13.3667 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.02917 5.825 4.9375 4.925C5.84583 4.025 6.90833 3.3125 8.125 2.7875C9.34167 2.2625 10.6333 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3667 21.7375 14.6583 21.2125 15.875C20.6875 17.0917 19.975 18.1542 19.075 19.0625C18.175 19.9708 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20.5C14.3667 20.5 16.375 19.6708 18.025 18.0125C19.675 16.3542 20.5 14.35 20.5 12C20.5 9.63333 19.675 7.625 18.025 5.975C16.375 4.325 14.3667 3.5 12 3.5C9.65 3.5 7.64583 4.325 5.9875 5.975C4.32917 7.625 3.5 9.63333 3.5 12C3.5 14.35 4.32917 16.3542 5.9875 18.0125C7.64583 19.6708 9.65 20.5 12 20.5Z\" fill=\"currentColor\"/>` },\r\n    counseling: { outlined: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H16.225C15.8417 22 15.4958 21.9 15.1875 21.7C14.8792 21.5 14.6333 21.2333 14.45 20.9L14 20H10L9.55 20.9C9.36667 21.2333 9.12083 21.5 8.8125 21.7C8.50417 21.9 8.15833 22 7.775 22H6ZM6 20H7.75L8.2 19.1C8.38333 18.7667 8.62917 18.5 8.9375 18.3C9.24583 18.1 9.59167 18 9.975 18H14.025C14.4083 18 14.7542 18.1 15.0625 18.3C15.3708 18.5 15.6167 18.7667 15.8 19.1L16.25 20H18V4H6V20ZM8.55 15H15.45C15.6 15 15.7292 14.9458 15.8375 14.8375C15.9458 14.7292 16 14.6 16 14.45C16 13.5833 15.5833 12.9583 14.75 12.575C13.9167 12.1917 13 12 12 12C11 12 10.0833 12.1917 9.25 12.575C8.41667 12.9583 8 13.5833 8 14.45C8 14.6 8.05417 14.7292 8.1625 14.8375C8.27083 14.9458 8.4 15 8.55 15ZM13.4125 10.4125C13.8042 10.0208 14 9.55 14 9C14 8.45 13.8042 7.97917 13.4125 7.5875C13.0208 7.19583 12.55 7 12 7C11.45 7 10.9792 7.19583 10.5875 7.5875C10.1958 7.97917 10 8.45 10 9C10 9.55 10.1958 10.0208 10.5875 10.4125C10.9792 10.8042 11.45 11 12 11C12.55 11 13.0208 10.8042 13.4125 10.4125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H16.225C15.8417 22 15.4958 21.9 15.1875 21.7C14.8792 21.5 14.6333 21.2333 14.45 20.9L14 20H10L9.55 20.9C9.36667 21.2333 9.12083 21.5 8.8125 21.7C8.50417 21.9 8.15833 22 7.775 22H6ZM8.55 15H15.45C15.6 15 15.7292 14.9458 15.8375 14.8375C15.9458 14.7292 16 14.6 16 14.45C16 13.5833 15.5833 12.9583 14.75 12.575C13.9167 12.1917 13 12 12 12C11 12 10.0833 12.1917 9.25 12.575C8.41667 12.9583 8 13.5833 8 14.45C8 14.6 8.05417 14.7292 8.1625 14.8375C8.27083 14.9458 8.4 15 8.55 15ZM13.4125 10.4125C13.8042 10.0208 14 9.55 14 9C14 8.45 13.8042 7.97917 13.4125 7.5875C13.0208 7.19583 12.55 7 12 7C11.45 7 10.9792 7.19583 10.5875 7.5875C10.1958 7.97917 10 8.45 10 9C10 9.55 10.1958 10.0208 10.5875 10.4125C10.9792 10.8042 11.45 11 12 11C12.55 11 13.0208 10.8042 13.4125 10.4125Z\" fill=\"currentColor\"/>` },\r\n    courses: { outlined: `<path d=\"M4.66504 13.5361C6.49581 13.3343 8.49671 13.4881 10.0273 13.9688C10.4174 14.0842 10.6378 14.4973 10.5078 14.8721C10.4078 15.1797 10.117 15.3721 9.79688 15.3721C9.72699 15.372 9.64722 15.3619 9.56738 15.3428C8.22681 14.9294 6.45566 14.7852 4.83496 14.9678C4.4249 15.0062 4.05509 14.7279 4.00488 14.334C3.95486 13.9399 4.25485 13.5842 4.66504 13.5361Z\" fill=\"currentColor\"/><path d=\"M4.66504 10.9785C6.4958 10.7767 8.49672 10.9305 10.0273 11.4111C10.4173 11.5265 10.6375 11.9397 10.5078 12.3145C10.4078 12.6221 10.117 12.8145 9.79688 12.8145C9.72702 12.8144 9.64719 12.8053 9.56738 12.7861C8.22679 12.3728 6.45568 12.2285 4.83496 12.4111C4.42477 12.4592 4.05491 12.1705 4.00488 11.7764C3.95493 11.3823 4.25489 11.0266 4.66504 10.9785Z\" fill=\"currentColor\"/><path d=\"M4.66504 8.42188C6.49581 8.22005 8.4867 8.37389 10.0273 8.85449C10.4174 8.96993 10.6378 9.38299 10.5078 9.75781C10.4078 10.0654 10.117 10.2578 9.79688 10.2578C9.727 10.2578 9.64721 10.2381 9.56738 10.2285C8.22681 9.81519 6.45566 9.6709 4.83496 9.85352C4.4249 9.90156 4.05509 9.61365 4.00488 9.21973C3.95486 8.82561 4.25485 8.46994 4.66504 8.42188Z\" fill=\"currentColor\"/><path d=\"M13.5176 13.9688C15.0482 13.4881 17.0491 13.3343 18.8799 13.5361C19.2901 13.5842 19.5901 13.9399 19.54 14.334C19.4898 14.7279 19.12 15.0062 18.71 14.9678C17.0893 14.7852 15.3181 14.9294 13.9775 15.3428C13.8977 15.3619 13.8179 15.372 13.748 15.3721C13.4279 15.3721 13.1372 15.1797 13.0371 14.8721C12.9071 14.4973 13.1275 14.0842 13.5176 13.9688Z\" fill=\"currentColor\"/><path d=\"M13.5176 11.4111C15.0482 10.9305 17.0491 10.7767 18.8799 10.9785C19.29 11.0266 19.59 11.3823 19.54 11.7764C19.49 12.1705 19.1201 12.4592 18.71 12.4111C17.0892 12.2285 15.3181 12.3728 13.9775 12.7861C13.8977 12.8053 13.8179 12.8144 13.748 12.8145C13.4279 12.8145 13.1372 12.6221 13.0371 12.3145C12.9074 11.9397 13.1276 11.5265 13.5176 11.4111Z\" fill=\"currentColor\"/><path d=\"M13.5176 8.85449C15.0582 8.37389 17.0491 8.22005 18.8799 8.42188C19.2901 8.46994 19.5901 8.82561 19.54 9.21973C19.4898 9.61365 19.12 9.90156 18.71 9.85352C17.0893 9.6709 15.3181 9.81519 13.9775 10.2285C13.8977 10.2381 13.8179 10.2578 13.748 10.2578C13.4279 10.2578 13.1372 10.0654 13.0371 9.75781C12.9071 9.38299 13.1275 8.96993 13.5176 8.85449Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.5078 4C18.9584 4.00003 20.4988 4.21189 21.7793 4.75977C22.5096 5.07698 23 5.75948 23 6.53809V17.3809C22.9998 18.64 21.779 19.5623 20.5186 19.2451C19.5382 19.0049 18.4974 18.8994 17.4971 18.8994C15.9365 18.8995 14.276 19.1402 12.9355 19.7842C12.3453 20.0725 11.6647 20.0725 11.0645 19.7842C9.72397 19.1498 8.06351 18.8995 6.50293 18.8994C5.5026 18.8994 4.46178 19.0049 3.48145 19.2451C2.22096 19.5527 1.00017 18.6303 1 17.3809V6.53809C1 5.75948 1.49038 5.07698 2.2207 4.75977C3.51129 4.21185 5.05227 4 6.50293 4C8.45356 4.00006 10.5543 4.38428 12.0049 5.44141C13.4555 4.38411 15.557 4 17.5078 4ZM6.50098 6C5.5807 6.00003 4.67007 6.08692 3.7998 6.26953C3.3399 6.3658 3.00012 6.75939 3 7.21094V16.3145C3.00016 16.9199 3.58003 17.3615 4.2002 17.2559C4.9504 17.1213 5.73077 17.0645 6.50098 17.0645C8.20175 17.0645 10.6533 17.6888 12.0039 18.5059V7.44141C10.6532 6.62441 8.20166 6 6.50098 6ZM17.5078 5.92285C15.807 5.92285 13.3555 6.5472 12.0049 7.36426V18.4287C13.3555 17.6116 15.807 16.9863 17.5078 16.9863C18.2781 16.9863 19.0584 17.0442 19.8086 17.1787C20.4289 17.2844 21.0088 16.8419 21.0088 16.2363V7.13379C21.0088 6.68207 20.6691 6.2876 20.209 6.19141C19.3387 6.00879 18.4281 5.92287 17.5078 5.92285Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M13.7556 13.9678C15.2862 13.4872 17.2872 13.3333 19.1179 13.5352C19.528 13.5832 19.8279 13.939 19.7781 14.333C19.7281 14.7271 19.3582 15.0062 18.948 14.9678C17.3273 14.7852 15.5561 14.9294 14.2156 15.3428C14.1357 15.3619 14.056 15.3721 13.9861 15.3721C13.666 15.3721 13.3752 15.1796 13.2751 14.8721C13.1451 14.4972 13.3655 14.0831 13.7556 13.9678Z\" fill=\"currentColor\"/><path d=\"M13.7556 11.4111C15.2862 10.9305 17.2872 10.7767 19.1179 10.9785C19.5281 11.0266 19.828 11.3823 19.7781 11.7764C19.7281 12.1705 19.3582 12.4592 18.948 12.4111C17.3273 12.2285 15.5562 12.3728 14.2156 12.7861C14.1358 12.8053 14.0559 12.8144 13.9861 12.8145C13.6659 12.8145 13.3752 12.6221 13.2751 12.3145C13.1454 11.9397 13.3657 11.5265 13.7556 11.4111Z\" fill=\"currentColor\"/><path d=\"M13.7556 8.85449C15.2962 8.37389 17.2872 8.22006 19.1179 8.42188C19.5281 8.46994 19.8281 8.82561 19.7781 9.21973C19.728 9.61374 19.3581 9.90255 18.948 9.85449C17.3273 9.67187 15.5562 9.81519 14.2156 10.2285C14.1357 10.2381 14.056 10.2578 13.9861 10.2578C13.6659 10.2578 13.3752 10.0654 13.2751 9.75781C13.1452 9.38304 13.3656 8.9699 13.7556 8.85449Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.5085 4C18.9591 4.00003 20.4995 4.21189 21.78 4.75977C22.5104 5.07698 23.0007 5.75948 23.0007 6.53809V17.3809C23.0006 18.64 21.7798 19.5623 20.5193 19.2451C19.5389 19.0049 18.4981 18.8994 17.4978 18.8994C15.9372 18.8995 14.2768 19.1402 12.9363 19.7842C12.3461 20.0725 11.6654 20.0725 11.0652 19.7842C9.7247 19.1498 8.06425 18.8995 6.50366 18.8994C5.50333 18.8994 4.46252 19.0049 3.48218 19.2451C2.22169 19.5527 1.0009 18.6303 1.00073 17.3809V6.53809C1.00073 5.75948 1.49111 5.07698 2.22144 4.75977C3.51202 4.21185 5.053 4 6.50366 4C8.45429 4.00006 10.5551 4.38428 12.0056 5.44141C13.4563 4.38411 15.5577 4 17.5085 4ZM17.5085 5.92285C15.8079 5.92287 13.3573 6.54733 12.0066 7.36426V18.4287C13.3572 17.6117 15.8079 16.9863 17.5085 16.9863C18.2788 16.9863 19.0591 17.0442 19.8093 17.1787C20.4296 17.2844 21.0105 16.8419 21.0105 16.2363V7.13379C21.0105 6.682 20.6699 6.28753 20.2097 6.19141C19.3394 6.00879 18.4289 5.92285 17.5085 5.92285Z\" fill=\"currentColor\"/>` },\r\n    'create-note': { outlined: `<path d=\"M11 15V17C11 17.2833 11.0958 17.5208 11.2875 17.7125C11.4792 17.9042 11.7167 18 12 18C12.2833 18 12.5208 17.9042 12.7125 17.7125C12.9042 17.5208 13 17.2833 13 17V15H15C15.2833 15 15.5208 14.9042 15.7125 14.7125C15.9042 14.5208 16 14.2833 16 14C16 13.7167 15.9042 13.4792 15.7125 13.2875C15.5208 13.0958 15.2833 13 15 13H13V11C13 10.7167 12.9042 10.4792 12.7125 10.2875C12.5208 10.0958 12.2833 10 12 10C11.7167 10 11.4792 10.0958 11.2875 10.2875C11.0958 10.4792 11 10.7167 11 11V13H9C8.71667 13 8.47917 13.0958 8.2875 13.2875C8.09583 13.4792 8 13.7167 8 14C8 14.2833 8.09583 14.5208 8.2875 14.7125C8.47917 14.9042 8.71667 15 9 15H11ZM6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H13.175C13.4417 2 13.6958 2.05 13.9375 2.15C14.1792 2.25 14.3917 2.39167 14.575 2.575L19.425 7.425C19.6083 7.60833 19.75 7.82083 19.85 8.0625C19.95 8.30417 20 8.55833 20 8.825V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM13 8V4H6V20H18V9H14C13.7167 9 13.4792 8.90417 13.2875 8.7125C13.0958 8.52083 13 8.28333 13 8Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H13.175C13.4417 2 13.6958 2.05 13.9375 2.15C14.1792 2.25 14.3917 2.39167 14.575 2.575L19.425 7.425C19.6083 7.60833 19.75 7.82083 19.85 8.0625C19.95 8.30417 20 8.55833 20 8.825V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM13 8C13 8.28333 13.0958 8.52083 13.2875 8.7125C13.4792 8.90417 13.7167 9 14 9H18L13 4V8ZM11 15V17C11 17.2833 11.0958 17.5208 11.2875 17.7125C11.4792 17.9042 11.7167 18 12 18C12.2833 18 12.5208 17.9042 12.7125 17.7125C12.9042 17.5208 13 17.2833 13 17V15H15C15.2833 15 15.5208 14.9042 15.7125 14.7125C15.9042 14.5208 16 14.2833 16 14C16 13.7167 15.9042 13.4792 15.7125 13.2875C15.5208 13.0958 15.2833 13 15 13H13V11C13 10.7167 12.9042 10.4792 12.7125 10.2875C12.5208 10.0958 12.2833 10 12 10C11.7167 10 11.4792 10.0958 11.2875 10.2875C11.0958 10.4792 11 10.7167 11 11V13H9C8.71667 13 8.47917 13.0958 8.2875 13.2875C8.09583 13.4792 8 13.7167 8 14C8 14.2833 8.09583 14.5208 8.2875 14.7125C8.47917 14.9042 8.71667 15 9 15H11Z\" fill=\"currentColor\"/>` },\r\n    'credit-card': { outlined: `<path d=\"M22 6V18C22 18.55 21.8042 19.0208 21.4125 19.4125C21.0208 19.8042 20.55 20 20 20H4C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6ZM4 8H20V6H4V8ZM4 12V18H20V12H4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6V18C22 18.55 21.8042 19.0208 21.4125 19.4125C21.0208 19.8042 20.55 20 20 20H4ZM4 12H20V8H4V12Z\" fill=\"currentColor\"/>` },\r\n    crop: { outlined: `<path d=\"M17 22V19H7C6.45 19 5.97917 18.8042 5.5875 18.4125C5.19583 18.0208 5 17.55 5 17V7H2C1.71667 7 1.47917 6.90417 1.2875 6.7125C1.09583 6.52083 1 6.28333 1 6C1 5.71667 1.09583 5.47917 1.2875 5.2875C1.47917 5.09583 1.71667 5 2 5H5V2C5 1.71667 5.09583 1.47917 5.2875 1.2875C5.47917 1.09583 5.71667 1 6 1C6.28333 1 6.52083 1.09583 6.7125 1.2875C6.90417 1.47917 7 1.71667 7 2V17H22C22.2833 17 22.5208 17.0958 22.7125 17.2875C22.9042 17.4792 23 17.7167 23 18C23 18.2833 22.9042 18.5208 22.7125 18.7125C22.5208 18.9042 22.2833 19 22 19H19V22C19 22.2833 18.9042 22.5208 18.7125 22.7125C18.5208 22.9042 18.2833 23 18 23C17.7167 23 17.4792 22.9042 17.2875 22.7125C17.0958 22.5208 17 22.2833 17 22ZM17 15V7H9V5H17C17.55 5 18.0208 5.19583 18.4125 5.5875C18.8042 5.97917 19 6.45 19 7V15H17Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M17 22V19H7C6.45 19 5.97917 18.8042 5.5875 18.4125C5.19583 18.0208 5 17.55 5 17V7H2C1.71667 7 1.47917 6.90417 1.2875 6.7125C1.09583 6.52083 1 6.28333 1 6C1 5.71667 1.09583 5.47917 1.2875 5.2875C1.47917 5.09583 1.71667 5 2 5H5V2C5 1.71667 5.09583 1.47917 5.2875 1.2875C5.47917 1.09583 5.71667 1 6 1C6.28333 1 6.52083 1.09583 6.7125 1.2875C6.90417 1.47917 7 1.71667 7 2V17H22C22.2833 17 22.5208 17.0958 22.7125 17.2875C22.9042 17.4792 23 17.7167 23 18C23 18.2833 22.9042 18.5208 22.7125 18.7125C22.5208 18.9042 22.2833 19 22 19H19V22C19 22.2833 18.9042 22.5208 18.7125 22.7125C18.5208 22.9042 18.2833 23 18 23C17.7167 23 17.4792 22.9042 17.2875 22.7125C17.0958 22.5208 17 22.2833 17 22ZM17 15V7H9V5H17C17.55 5 18.0208 5.19583 18.4125 5.5875C18.8042 5.97917 19 6.45 19 7V15H17Z\" fill=\"currentColor\"/>` },\r\n    'dark-mode': { outlined: `<path d=\"M12 21C9.48333 21 7.35417 20.1291 5.6125 18.3875C3.87083 16.6458 3 14.5166 3 12C3 9.69995 3.75 7.70412 5.25 6.01245C6.75 4.32079 8.66667 3.33329 11 3.04995C11.2167 3.01662 11.4083 3.04579 11.575 3.13745C11.7417 3.22912 11.875 3.34995 11.975 3.49995C12.075 3.64995 12.1292 3.82495 12.1375 4.02495C12.1458 4.22495 12.0833 4.41662 11.95 4.59995C11.6667 5.03329 11.4542 5.49162 11.3125 5.97495C11.1708 6.45829 11.1 6.96662 11.1 7.49995C11.1 8.99995 11.625 10.275 12.675 11.325C13.725 12.375 15 12.9 16.5 12.9C17.0167 12.9 17.5292 12.825 18.0375 12.675C18.5458 12.525 19 12.3166 19.4 12.05C19.5833 11.9333 19.7708 11.8791 19.9625 11.8875C20.1542 11.8958 20.325 11.9416 20.475 12.025C20.6417 12.1083 20.7708 12.2333 20.8625 12.4C20.9542 12.5666 20.9833 12.7666 20.95 13C20.7167 15.3 19.7375 17.2083 18.0125 18.725C16.2875 20.2416 14.2833 21 12 21ZM12 19C13.4667 19 14.7833 18.5958 15.95 17.7875C17.1167 16.9791 17.9667 15.925 18.5 14.625C18.1667 14.7083 17.8333 14.775 17.5 14.825C17.1667 14.875 16.8333 14.9 16.5 14.9C14.45 14.9 12.7042 14.1791 11.2625 12.7375C9.82083 11.2958 9.1 9.54995 9.1 7.49995C9.1 7.16662 9.125 6.83329 9.175 6.49995C9.225 6.16662 9.29167 5.83329 9.375 5.49995C8.075 6.03329 7.02083 6.88329 6.2125 8.04995C5.40417 9.21662 5 10.5333 5 12C5 13.9333 5.68333 15.5833 7.05 16.95C8.41667 18.3166 10.0667 19 12 19Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 21C9.48333 21 7.35417 20.1291 5.6125 18.3875C3.87083 16.6458 3 14.5166 3 12C3 9.69995 3.75 7.70412 5.25 6.01245C6.75 4.32079 8.66667 3.33329 11 3.04995C11.2167 3.01662 11.4083 3.04579 11.575 3.13745C11.7417 3.22912 11.875 3.34995 11.975 3.49995C12.075 3.64995 12.1292 3.82495 12.1375 4.02495C12.1458 4.22495 12.0833 4.41662 11.95 4.59995C11.6667 5.03329 11.4542 5.49162 11.3125 5.97495C11.1708 6.45829 11.1 6.96662 11.1 7.49995C11.1 8.99995 11.625 10.275 12.675 11.325C13.725 12.375 15 12.9 16.5 12.9C17.0167 12.9 17.5292 12.825 18.0375 12.675C18.5458 12.525 19 12.3166 19.4 12.05C19.5833 11.9333 19.7708 11.8791 19.9625 11.8875C20.1542 11.8958 20.325 11.9416 20.475 12.025C20.6417 12.1083 20.7708 12.2333 20.8625 12.4C20.9542 12.5666 20.9833 12.7666 20.95 13C20.7167 15.3 19.7375 17.2083 18.0125 18.725C16.2875 20.2416 14.2833 21 12 21Z\" fill=\"currentColor\"/>` },\r\n    dashboard: { outlined: `<path d=\"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM5 19H11V5H5V19ZM13 19H19V12H13V19ZM13 10H19V5H13V10Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H9C9.55 3 10.0208 3.19583 10.4125 3.5875C10.8042 3.97917 11 4.45 11 5V19C11 19.55 10.8042 20.0208 10.4125 20.4125C10.0208 20.8042 9.55 21 9 21H5ZM15 21C14.45 21 13.9792 20.8042 13.5875 20.4125C13.1958 20.0208 13 19.55 13 19V14C13 13.45 13.1958 12.9792 13.5875 12.5875C13.9792 12.1958 14.45 12 15 12H19C19.55 12 20.0208 12.1958 20.4125 12.5875C20.8042 12.9792 21 13.45 21 14V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H15ZM15 10C14.45 10 13.9792 9.80417 13.5875 9.4125C13.1958 9.02083 13 8.55 13 8V5C13 4.45 13.1958 3.97917 13.5875 3.5875C13.9792 3.19583 14.45 3 15 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V8C21 8.55 20.8042 9.02083 20.4125 9.4125C20.0208 9.80417 19.55 10 19 10H15Z\" fill=\"currentColor\"/>` },\r\n    delete: { outlined: `<path d=\"M7 21C6.45 21 5.97917 20.8042 5.5875 20.4125C5.19583 20.0208 5 19.55 5 19V6C4.71667 6 4.47917 5.90417 4.2875 5.7125C4.09583 5.52083 4 5.28333 4 5C4 4.71667 4.09583 4.47917 4.2875 4.2875C4.47917 4.09583 4.71667 4 5 4H9C9 3.71667 9.09583 3.47917 9.2875 3.2875C9.47917 3.09583 9.71667 3 10 3H14C14.2833 3 14.5208 3.09583 14.7125 3.2875C14.9042 3.47917 15 3.71667 15 4H19C19.2833 4 19.5208 4.09583 19.7125 4.2875C19.9042 4.47917 20 4.71667 20 5C20 5.28333 19.9042 5.52083 19.7125 5.7125C19.5208 5.90417 19.2833 6 19 6V19C19 19.55 18.8042 20.0208 18.4125 20.4125C18.0208 20.8042 17.55 21 17 21H7ZM17 6H7V19H17V6ZM10 17C10.2833 17 10.5208 16.9042 10.7125 16.7125C10.9042 16.5208 11 16.2833 11 16V9C11 8.71667 10.9042 8.47917 10.7125 8.2875C10.5208 8.09583 10.2833 8 10 8C9.71667 8 9.47917 8.09583 9.2875 8.2875C9.09583 8.47917 9 8.71667 9 9V16C9 16.2833 9.09583 16.5208 9.2875 16.7125C9.47917 16.9042 9.71667 17 10 17ZM14 17C14.2833 17 14.5208 16.9042 14.7125 16.7125C14.9042 16.5208 15 16.2833 15 16V9C15 8.71667 14.9042 8.47917 14.7125 8.2875C14.5208 8.09583 14.2833 8 14 8C13.7167 8 13.4792 8.09583 13.2875 8.2875C13.0958 8.47917 13 8.71667 13 9V16C13 16.2833 13.0958 16.5208 13.2875 16.7125C13.4792 16.9042 13.7167 17 14 17Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M7 21C6.45 21 5.97917 20.8042 5.5875 20.4125C5.19583 20.0208 5 19.55 5 19V6C4.71667 6 4.47917 5.90417 4.2875 5.7125C4.09583 5.52083 4 5.28333 4 5C4 4.71667 4.09583 4.47917 4.2875 4.2875C4.47917 4.09583 4.71667 4 5 4H9C9 3.71667 9.09583 3.47917 9.2875 3.2875C9.47917 3.09583 9.71667 3 10 3H14C14.2833 3 14.5208 3.09583 14.7125 3.2875C14.9042 3.47917 15 3.71667 15 4H19C19.2833 4 19.5208 4.09583 19.7125 4.2875C19.9042 4.47917 20 4.71667 20 5C20 5.28333 19.9042 5.52083 19.7125 5.7125C19.5208 5.90417 19.2833 6 19 6V19C19 19.55 18.8042 20.0208 18.4125 20.4125C18.0208 20.8042 17.55 21 17 21H7ZM10 17C10.2833 17 10.5208 16.9042 10.7125 16.7125C10.9042 16.5208 11 16.2833 11 16V9C11 8.71667 10.9042 8.47917 10.7125 8.2875C10.5208 8.09583 10.2833 8 10 8C9.71667 8 9.47917 8.09583 9.2875 8.2875C9.09583 8.47917 9 8.71667 9 9V16C9 16.2833 9.09583 16.5208 9.2875 16.7125C9.47917 16.9042 9.71667 17 10 17ZM14 17C14.2833 17 14.5208 16.9042 14.7125 16.7125C14.9042 16.5208 15 16.2833 15 16V9C15 8.71667 14.9042 8.47917 14.7125 8.2875C14.5208 8.09583 14.2833 8 14 8C13.7167 8 13.4792 8.09583 13.2875 8.2875C13.0958 8.47917 13 8.71667 13 9V16C13 16.2833 13.0958 16.5208 13.2875 16.7125C13.4792 16.9042 13.7167 17 14 17Z\" fill=\"currentColor\"/>` },\r\n    desktop: { outlined: `<path d=\"M9.425 22C8.975 22 8.66267 21.7957 8.488 21.387C8.31267 20.979 8.38333 20.6167 8.7 20.3L10 19H4C3.45 19 2.97933 18.8043 2.588 18.413C2.196 18.021 2 17.55 2 17V5C2 4.45 2.196 3.979 2.588 3.587C2.97933 3.19567 3.45 3 4 3H20C20.55 3 21.021 3.19567 21.413 3.587C21.8043 3.979 22 4.45 22 5V17C22 17.55 21.8043 18.021 21.413 18.413C21.021 18.8043 20.55 19 20 19H14L15.3 20.3C15.6167 20.6167 15.6873 20.979 15.512 21.387C15.3373 21.7957 15.025 22 14.575 22H9.425ZM4 14H20V5H4V14Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M9.425 22C8.975 22 8.66267 21.7957 8.488 21.387C8.31267 20.979 8.38333 20.6167 8.7 20.3L10 19H4C3.45 19 2.97933 18.8043 2.588 18.413C2.196 18.021 2 17.55 2 17V5C2 4.45 2.196 3.979 2.588 3.587C2.97933 3.19567 3.45 3 4 3H20C20.55 3 21.021 3.19567 21.413 3.587C21.8043 3.979 22 4.45 22 5V17C22 17.55 21.8043 18.021 21.413 18.413C21.021 18.8043 20.55 19 20 19H14L15.3 20.3C15.6167 20.6167 15.6873 20.979 15.512 21.387C15.3373 21.7957 15.025 22 14.575 22H9.425Z\" fill=\"currentColor\"/>` },\r\n    dislike: { outlined: `<path d=\"M3.90476 15.0619C3.39683 15.0619 2.95238 14.8763 2.57143 14.5052C2.19048 14.134 2 13.701 2 13.2062V11.3505C2 11.2423 2.01587 11.1263 2.04762 11.0026C2.07937 10.8789 2.11111 10.7629 2.14286 10.6546L5 4.1134C5.14286 3.80412 5.38095 3.54124 5.71429 3.32474C6.04762 3.10825 6.39683 3 6.7619 3H17.2381V15.0619L11.5238 20.5825C11.2857 20.8144 11.004 20.9497 10.6786 20.9884C10.3532 21.0271 10.0397 20.9691 9.7381 20.8144C9.43651 20.6598 9.21429 20.4433 9.07143 20.1649C8.92857 19.8866 8.89683 19.6005 8.97619 19.3067L10.0476 15.0619H3.90476ZM15.3333 14.2732V4.85567H6.7619L3.90476 11.3505V13.2062H12.4762L11.1905 18.3093L15.3333 14.2732ZM20.0952 3C20.619 3 21.0675 3.1817 21.4405 3.5451C21.8135 3.90851 22 4.34536 22 4.85567V13.2062C22 13.7165 21.8135 14.1534 21.4405 14.5168C21.0675 14.8802 20.619 15.0619 20.0952 15.0619H17.2381V13.2062H20.0952V4.85567H17.2381V3H20.0952Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M3.90476 15.0511C3.39683 15.0511 2.95238 14.8657 2.57143 14.4949C2.19048 14.1241 2 13.6915 2 13.1971V11.3431C2 11.2349 2.0119 11.119 2.03571 10.9954C2.05952 10.8718 2.09524 10.756 2.14286 10.6478L5 4.11241C5.14286 3.80341 5.38095 3.54075 5.71429 3.32445C6.04762 3.10815 6.39683 3 6.7619 3H14.381C14.9048 3 15.3532 3.18154 15.7262 3.54462C16.0992 3.9077 16.2857 4.34416 16.2857 4.85402V14.2863C16.2857 14.5335 16.2341 14.7691 16.131 14.9932C16.0278 15.2172 15.8889 15.4142 15.7143 15.5841L10.5476 20.59C10.3095 20.8063 10.0278 20.9376 9.70238 20.984C9.37698 21.0303 9.06349 20.9762 8.7619 20.8217C8.46032 20.6672 8.24206 20.4509 8.10714 20.1728C7.97222 19.8947 7.94444 19.6089 8.02381 19.3153L9.09524 15.0511H3.90476ZM20.0952 3C20.619 3 21.0675 3.18154 21.4405 3.54462C21.8135 3.9077 22 4.34416 22 4.85402V13.1971C22 13.7069 21.8135 14.1434 21.4405 14.5065C21.0675 14.8696 20.619 15.0511 20.0952 15.0511C19.5714 15.0511 19.123 14.8696 18.75 14.5065C18.377 14.1434 18.1905 13.7069 18.1905 13.1971V4.85402C18.1905 4.34416 18.377 3.9077 18.75 3.54462C19.123 3.18154 19.5714 3 20.0952 3Z\" fill=\"currentColor\"/>` },\r\n    'double chevron-down': { outlined: `<path d=\"M12.0065 9.58152L15.9065 5.70652C16.0899 5.52318 16.319 5.42735 16.594 5.41902C16.869 5.41068 17.1065 5.50652 17.3065 5.70652C17.4899 5.88985 17.5815 6.12318 17.5815 6.40652C17.5815 6.68985 17.4899 6.92318 17.3065 7.10652L12.7065 11.7065C12.6065 11.8065 12.4982 11.8774 12.3815 11.919C12.2649 11.9607 12.1399 11.9815 12.0065 11.9815C11.8732 11.9815 11.7482 11.9607 11.6315 11.919C11.5149 11.8774 11.4065 11.8065 11.3065 11.7065L6.70652 7.10652C6.52319 6.92318 6.42735 6.69402 6.41902 6.41902C6.41069 6.14402 6.50652 5.90652 6.70652 5.70652C6.88985 5.52318 7.12319 5.43152 7.40652 5.43152C7.68985 5.43152 7.92319 5.52318 8.10652 5.70652L12.0065 9.58152ZM12.0065 16.1815L15.9065 12.3065C16.0899 12.1232 16.319 12.0274 16.594 12.019C16.869 12.0107 17.1065 12.1065 17.3065 12.3065C17.4899 12.4899 17.5815 12.7232 17.5815 13.0065C17.5815 13.2899 17.4899 13.5232 17.3065 13.7065L12.7065 18.3065C12.6065 18.4065 12.4982 18.4774 12.3815 18.519C12.2649 18.5607 12.1399 18.5815 12.0065 18.5815C11.8732 18.5815 11.7482 18.5607 11.6315 18.519C11.5149 18.4774 11.4065 18.4065 11.3065 18.3065L6.70652 13.7065C6.52319 13.5232 6.42735 13.294 6.41902 13.019C6.41068 12.744 6.50652 12.5065 6.70652 12.3065C6.88985 12.1232 7.12318 12.0315 7.40652 12.0315C7.68985 12.0315 7.92318 12.1232 8.10652 12.3065L12.0065 16.1815Z\" fill=\"currentColor\"/>` },\r\n    'double chevron-left': { outlined: `<path d=\"M14.4185 12.0065L18.2935 15.9065C18.4769 16.0899 18.5727 16.319 18.581 16.594C18.5894 16.869 18.4935 17.1065 18.2935 17.3065C18.1102 17.4899 17.8769 17.5815 17.5935 17.5815C17.3102 17.5815 17.0769 17.4899 16.8935 17.3065L12.2935 12.7065C12.1935 12.6065 12.1227 12.4982 12.081 12.3815C12.0394 12.2649 12.0185 12.1399 12.0185 12.0065C12.0185 11.8732 12.0394 11.7482 12.081 11.6315C12.1227 11.5149 12.1935 11.4065 12.2935 11.3065L16.8935 6.70652C17.0769 6.52319 17.306 6.42735 17.581 6.41902C17.856 6.41068 18.0935 6.50652 18.2935 6.70652C18.4769 6.88985 18.5685 7.12318 18.5685 7.40652C18.5685 7.68985 18.4769 7.92318 18.2935 8.10652L14.4185 12.0065ZM7.81852 12.0065L11.6935 15.9065C11.8769 16.0899 11.9727 16.319 11.981 16.594C11.9894 16.869 11.8935 17.1065 11.6935 17.3065C11.5102 17.4899 11.2769 17.5815 10.9935 17.5815C10.7102 17.5815 10.4769 17.4899 10.2935 17.3065L5.69352 12.7065C5.59352 12.6065 5.52268 12.4982 5.48102 12.3815C5.43935 12.2649 5.41852 12.1399 5.41852 12.0065C5.41852 11.8732 5.43935 11.7482 5.48102 11.6315C5.52268 11.5149 5.59352 11.4065 5.69352 11.3065L10.2935 6.70652C10.4769 6.52319 10.706 6.42735 10.981 6.41902C11.256 6.41069 11.4935 6.50652 11.6935 6.70652C11.8769 6.88985 11.9685 7.12319 11.9685 7.40652C11.9685 7.68985 11.8769 7.92319 11.6935 8.10652L7.81852 12.0065Z\" fill=\"currentColor\"/>` },\r\n    'double chevron-right': { outlined: `<path d=\"M9.58152 11.9935L5.70652 8.09352C5.52318 7.91018 5.42735 7.68102 5.41902 7.40602C5.41068 7.13102 5.50652 6.89352 5.70652 6.69352C5.88985 6.51018 6.12318 6.41852 6.40652 6.41852C6.68985 6.41852 6.92318 6.51018 7.10652 6.69352L11.7065 11.2935C11.8065 11.3935 11.8774 11.5019 11.919 11.6185C11.9607 11.7352 11.9815 11.8602 11.9815 11.9935C11.9815 12.1269 11.9607 12.2519 11.919 12.3685C11.8774 12.4852 11.8065 12.5935 11.7065 12.6935L7.10652 17.2935C6.92318 17.4769 6.69402 17.5727 6.41902 17.581C6.14402 17.5894 5.90652 17.4935 5.70652 17.2935C5.52318 17.1102 5.43152 16.8769 5.43152 16.5935C5.43152 16.3102 5.52318 16.0769 5.70652 15.8935L9.58152 11.9935ZM16.1815 11.9935L12.3065 8.09352C12.1232 7.91018 12.0274 7.68102 12.019 7.40602C12.0107 7.13102 12.1065 6.89352 12.3065 6.69352C12.4899 6.51018 12.7232 6.41852 13.0065 6.41852C13.2899 6.41852 13.5232 6.51018 13.7065 6.69352L18.3065 11.2935C18.4065 11.3935 18.4774 11.5019 18.519 11.6185C18.5607 11.7352 18.5815 11.8602 18.5815 11.9935C18.5815 12.1269 18.5607 12.2519 18.519 12.3685C18.4774 12.4852 18.4065 12.5935 18.3065 12.6935L13.7065 17.2935C13.5232 17.4769 13.294 17.5727 13.019 17.581C12.744 17.5894 12.5065 17.4935 12.3065 17.2935C12.1232 17.1102 12.0315 16.8769 12.0315 16.5935C12.0315 16.3102 12.1232 16.0769 12.3065 15.8935L16.1815 11.9935Z\" fill=\"currentColor\"/>` },\r\n    'double chevron-up': { outlined: `<path d=\"M11.9935 14.4185L8.09352 18.2935C7.91018 18.4769 7.68102 18.5727 7.40602 18.581C7.13102 18.5894 6.89352 18.4935 6.69352 18.2935C6.51018 18.1102 6.41852 17.8769 6.41852 17.5935C6.41852 17.3102 6.51018 17.0769 6.69352 16.8935L11.2935 12.2935C11.3935 12.1935 11.5019 12.1227 11.6185 12.081C11.7352 12.0394 11.8602 12.0185 11.9935 12.0185C12.1269 12.0185 12.2519 12.0394 12.3685 12.081C12.4852 12.1227 12.5935 12.1935 12.6935 12.2935L17.2935 16.8935C17.4769 17.0769 17.5727 17.306 17.581 17.581C17.5894 17.856 17.4935 18.0935 17.2935 18.2935C17.1102 18.4769 16.8769 18.5685 16.5935 18.5685C16.3102 18.5685 16.0769 18.4769 15.8935 18.2935L11.9935 14.4185ZM11.9935 7.81852L8.09352 11.6935C7.91018 11.8769 7.68102 11.9727 7.40602 11.981C7.13102 11.9894 6.89352 11.8935 6.69352 11.6935C6.51018 11.5102 6.41852 11.2769 6.41852 10.9935C6.41852 10.7102 6.51018 10.4769 6.69352 10.2935L11.2935 5.69352C11.3935 5.59352 11.5019 5.52268 11.6185 5.48102C11.7352 5.43935 11.8602 5.41852 11.9935 5.41852C12.1269 5.41852 12.2519 5.43935 12.3685 5.48102C12.4852 5.52268 12.5935 5.59352 12.6935 5.69352L17.2935 10.2935C17.4769 10.4769 17.5727 10.706 17.581 10.981C17.5894 11.256 17.4935 11.4935 17.2935 11.6935C17.1102 11.8769 16.8769 11.9685 16.5935 11.9685C16.3102 11.9685 16.0769 11.8769 15.8935 11.6935L11.9935 7.81852Z\" fill=\"currentColor\"/>` },\r\n    downloads: { outlined: `<path d=\"M11 12.1501V6.1001C9.73333 6.33343 8.75 6.94593 8.05 7.9376C7.35 8.92926 7 9.9501 7 11.0001H6.5C5.53333 11.0001 4.70833 11.3418 4.025 12.0251C3.34167 12.7084 3 13.5334 3 14.5001C3 15.4668 3.34167 16.2918 4.025 16.9751C4.70833 17.6584 5.53333 18.0001 6.5 18.0001H18.5C19.2 18.0001 19.7917 17.7584 20.275 17.2751C20.7583 16.7918 21 16.2001 21 15.5001C21 14.8001 20.7583 14.2084 20.275 13.7251C19.7917 13.2418 19.2 13.0001 18.5 13.0001H17V11.0001C17 10.2001 16.8167 9.45426 16.45 8.7626C16.0833 8.07093 15.6 7.48343 15 7.0001V4.6751C16.2333 5.25843 17.2083 6.12093 17.925 7.2626C18.6417 8.40426 19 9.6501 19 11.0001C20.15 11.1334 21.1042 11.6293 21.8625 12.4876C22.6208 13.3459 23 14.3501 23 15.5001C23 16.7501 22.5625 17.8126 21.6875 18.6876C20.8125 19.5626 19.75 20.0001 18.5 20.0001H6.5C4.98333 20.0001 3.6875 19.4751 2.6125 18.4251C1.5375 17.3751 1 16.0918 1 14.5751C1 13.2751 1.39167 12.1168 2.175 11.1001C2.95833 10.0834 3.98333 9.43343 5.25 9.1501C5.53333 7.9501 6.24167 6.80843 7.375 5.7251C8.50833 4.64176 9.71667 4.1001 11 4.1001C11.55 4.1001 12.0208 4.29593 12.4125 4.6876C12.8042 5.07926 13 5.5501 13 6.1001V12.1501L13.9 11.2751C14.0833 11.0918 14.3125 11.0001 14.5875 11.0001C14.8625 11.0001 15.1 11.1001 15.3 11.3001C15.4833 11.4834 15.575 11.7168 15.575 12.0001C15.575 12.2834 15.4833 12.5168 15.3 12.7001L12.7 15.3001C12.5 15.5001 12.2667 15.6001 12 15.6001C11.7333 15.6001 11.5 15.5001 11.3 15.3001L8.7 12.7001C8.51667 12.5168 8.42083 12.2876 8.4125 12.0126C8.40417 11.7376 8.5 11.5001 8.7 11.3001C8.88333 11.1168 9.1125 11.0209 9.3875 11.0126C9.6625 11.0043 9.9 11.0918 10.1 11.2751L11 12.1501Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6.5 20C4.98333 20 3.6875 19.475 2.6125 18.425C1.5375 17.375 1 16.0916 1 14.575C1 13.275 1.39167 12.1166 2.175 11.1C2.95833 10.0833 3.98333 9.43328 5.25 9.14995C5.63333 7.79995 6.34583 6.66662 7.3875 5.74995C8.42917 4.83328 9.63333 4.27495 11 4.07495V12.15L10.1 11.275C9.91667 11.0916 9.6875 11 9.4125 11C9.1375 11 8.9 11.1 8.7 11.3C8.51667 11.4833 8.425 11.7166 8.425 12C8.425 12.2833 8.51667 12.5166 8.7 12.7L11.3 15.3C11.5 15.5 11.7333 15.6 12 15.6C12.2667 15.6 12.5 15.5 12.7 15.3L15.3 12.7C15.4833 12.5166 15.5792 12.2875 15.5875 12.0125C15.5958 11.7375 15.5 11.5 15.3 11.3C15.1167 11.1166 14.8875 11.0208 14.6125 11.0125C14.3375 11.0041 14.1 11.0916 13.9 11.275L13 12.15V4.07495C14.7167 4.30828 16.1458 5.07912 17.2875 6.38745C18.4292 7.69578 19 9.23328 19 11C20.15 11.1333 21.1042 11.6291 21.8625 12.4875C22.6208 13.3458 23 14.35 23 15.5C23 16.75 22.5625 17.8125 21.6875 18.6875C20.8125 19.5625 19.75 20 18.5 20H6.5Z\" fill=\"currentColor\"/>` },\r\n    drag: { outlined: `<path d=\"M8.75 20C8.26667 20 7.85417 19.8292 7.5125 19.4875C7.17083 19.1458 7 18.7333 7 18.25C7 17.7667 7.17083 17.3542 7.5125 17.0125C7.85417 16.6708 8.26667 16.5 8.75 16.5C9.23333 16.5 9.64583 16.6708 9.9875 17.0125C10.3292 17.3542 10.5 17.7667 10.5 18.25C10.5 18.7333 10.3292 19.1458 9.9875 19.4875C9.64583 19.8292 9.23333 20 8.75 20ZM15.25 20C14.7667 20 14.3542 19.8292 14.0125 19.4875C13.6708 19.1458 13.5 18.7333 13.5 18.25C13.5 17.7667 13.6708 17.3542 14.0125 17.0125C14.3542 16.6708 14.7667 16.5 15.25 16.5C15.7333 16.5 16.1458 16.6708 16.4875 17.0125C16.8292 17.3542 17 17.7667 17 18.25C17 18.7333 16.8292 19.1458 16.4875 19.4875C16.1458 19.8292 15.7333 20 15.25 20ZM8.75 13.75C8.26667 13.75 7.85417 13.5792 7.5125 13.2375C7.17083 12.8958 7 12.4833 7 12C7 11.5167 7.17083 11.1042 7.5125 10.7625C7.85417 10.4208 8.26667 10.25 8.75 10.25C9.23333 10.25 9.64583 10.4208 9.9875 10.7625C10.3292 11.1042 10.5 11.5167 10.5 12C10.5 12.4833 10.3292 12.8958 9.9875 13.2375C9.64583 13.5792 9.23333 13.75 8.75 13.75ZM15.25 13.75C14.7667 13.75 14.3542 13.5792 14.0125 13.2375C13.6708 12.8958 13.5 12.4833 13.5 12C13.5 11.5167 13.6708 11.1042 14.0125 10.7625C14.3542 10.4208 14.7667 10.25 15.25 10.25C15.7333 10.25 16.1458 10.4208 16.4875 10.7625C16.8292 11.1042 17 11.5167 17 12C17 12.4833 16.8292 12.8958 16.4875 13.2375C16.1458 13.5792 15.7333 13.75 15.25 13.75ZM8.75 7.5C8.26667 7.5 7.85417 7.32917 7.5125 6.9875C7.17083 6.64583 7 6.23333 7 5.75C7 5.26667 7.17083 4.85417 7.5125 4.5125C7.85417 4.17083 8.26667 4 8.75 4C9.23333 4 9.64583 4.17083 9.9875 4.5125C10.3292 4.85417 10.5 5.26667 10.5 5.75C10.5 6.23333 10.3292 6.64583 9.9875 6.9875C9.64583 7.32917 9.23333 7.5 8.75 7.5ZM15.25 7.5C14.7667 7.5 14.3542 7.32917 14.0125 6.9875C13.6708 6.64583 13.5 6.23333 13.5 5.75C13.5 5.26667 13.6708 4.85417 14.0125 4.5125C14.3542 4.17083 14.7667 4 15.25 4C15.7333 4 16.1458 4.17083 16.4875 4.5125C16.8292 4.85417 17 5.26667 17 5.75C17 6.23333 16.8292 6.64583 16.4875 6.9875C16.1458 7.32917 15.7333 7.5 15.25 7.5Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8.75 20C8.26667 20 7.85417 19.8292 7.5125 19.4875C7.17083 19.1458 7 18.7333 7 18.25C7 17.7667 7.17083 17.3542 7.5125 17.0125C7.85417 16.6708 8.26667 16.5 8.75 16.5C9.23333 16.5 9.64583 16.6708 9.9875 17.0125C10.3292 17.3542 10.5 17.7667 10.5 18.25C10.5 18.7333 10.3292 19.1458 9.9875 19.4875C9.64583 19.8292 9.23333 20 8.75 20ZM15.25 20C14.7667 20 14.3542 19.8292 14.0125 19.4875C13.6708 19.1458 13.5 18.7333 13.5 18.25C13.5 17.7667 13.6708 17.3542 14.0125 17.0125C14.3542 16.6708 14.7667 16.5 15.25 16.5C15.7333 16.5 16.1458 16.6708 16.4875 17.0125C16.8292 17.3542 17 17.7667 17 18.25C17 18.7333 16.8292 19.1458 16.4875 19.4875C16.1458 19.8292 15.7333 20 15.25 20ZM8.75 13.75C8.26667 13.75 7.85417 13.5792 7.5125 13.2375C7.17083 12.8958 7 12.4833 7 12C7 11.5167 7.17083 11.1042 7.5125 10.7625C7.85417 10.4208 8.26667 10.25 8.75 10.25C9.23333 10.25 9.64583 10.4208 9.9875 10.7625C10.3292 11.1042 10.5 11.5167 10.5 12C10.5 12.4833 10.3292 12.8958 9.9875 13.2375C9.64583 13.5792 9.23333 13.75 8.75 13.75ZM15.25 13.75C14.7667 13.75 14.3542 13.5792 14.0125 13.2375C13.6708 12.8958 13.5 12.4833 13.5 12C13.5 11.5167 13.6708 11.1042 14.0125 10.7625C14.3542 10.4208 14.7667 10.25 15.25 10.25C15.7333 10.25 16.1458 10.4208 16.4875 10.7625C16.8292 11.1042 17 11.5167 17 12C17 12.4833 16.8292 12.8958 16.4875 13.2375C16.1458 13.5792 15.7333 13.75 15.25 13.75ZM8.75 7.5C8.26667 7.5 7.85417 7.32917 7.5125 6.9875C7.17083 6.64583 7 6.23333 7 5.75C7 5.26667 7.17083 4.85417 7.5125 4.5125C7.85417 4.17083 8.26667 4 8.75 4C9.23333 4 9.64583 4.17083 9.9875 4.5125C10.3292 4.85417 10.5 5.26667 10.5 5.75C10.5 6.23333 10.3292 6.64583 9.9875 6.9875C9.64583 7.32917 9.23333 7.5 8.75 7.5ZM15.25 7.5C14.7667 7.5 14.3542 7.32917 14.0125 6.9875C13.6708 6.64583 13.5 6.23333 13.5 5.75C13.5 5.26667 13.6708 4.85417 14.0125 4.5125C14.3542 4.17083 14.7667 4 15.25 4C15.7333 4 16.1458 4.17083 16.4875 4.5125C16.8292 4.85417 17 5.26667 17 5.75C17 6.23333 16.8292 6.64583 16.4875 6.9875C16.1458 7.32917 15.7333 7.5 15.25 7.5Z\" fill=\"currentColor\"/>` },\r\n    'drop-down': { outlined: `<path d=\"M11.475 14.475L7.85 10.85C7.8 10.8 7.7625 10.7458 7.7375 10.6875C7.7125 10.6292 7.7 10.5667 7.7 10.5C7.7 10.3667 7.74583 10.25 7.8375 10.15C7.92916 10.05 8.05 10 8.2 10H15.8C15.95 10 16.0708 10.05 16.1625 10.15C16.2542 10.25 16.3 10.3667 16.3 10.5C16.3 10.5333 16.25 10.65 16.15 10.85L12.525 14.475C12.4417 14.5583 12.3583 14.6167 12.275 14.65C12.1917 14.6833 12.1 14.7 12 14.7C11.9 14.7 11.8083 14.6833 11.725 14.65C11.6417 14.6167 11.5583 14.5583 11.475 14.475Z\" fill=\"currentColor\"/>` },\r\n    'drop-left': { outlined: `<path d=\"M13.15 16.15L9.525 12.525C9.44167 12.4417 9.38334 12.3583 9.35 12.275C9.31667 12.1917 9.3 12.1 9.3 12C9.3 11.9 9.31667 11.8083 9.35 11.725C9.38334 11.6417 9.44167 11.5583 9.525 11.475L13.15 7.85001C13.2 7.80001 13.2542 7.76251 13.3125 7.73751C13.3708 7.71251 13.4333 7.70001 13.5 7.70001C13.6333 7.70001 13.75 7.74585 13.85 7.83751C13.95 7.92918 14 8.05001 14 8.20001V15.8C14 15.95 13.95 16.0708 13.85 16.1625C13.75 16.2542 13.6333 16.3 13.5 16.3C13.4667 16.3 13.35 16.25 13.15 16.15Z\" fill=\"currentColor\"/>` },\r\n    'drop-right': { outlined: `<path d=\"M10.5 16.3C10.3667 16.3 10.25 16.2542 10.15 16.1625C10.05 16.0708 10 15.95 10 15.8V8.20001C10 8.05001 10.05 7.92918 10.15 7.83751C10.25 7.74585 10.3667 7.70001 10.5 7.70001C10.5333 7.70001 10.65 7.75001 10.85 7.85001L14.475 11.475C14.5583 11.5583 14.6167 11.6417 14.65 11.725C14.6833 11.8083 14.7 11.9 14.7 12C14.7 12.1 14.6833 12.1917 14.65 12.275C14.6167 12.3583 14.5583 12.4417 14.475 12.525L10.85 16.15C10.8 16.2 10.7458 16.2375 10.6875 16.2625C10.6292 16.2875 10.5667 16.3 10.5 16.3Z\" fill=\"currentColor\"/>` },\r\n    'drop-up': { outlined: `<path d=\"M8.2 14C8.05 14 7.92916 13.95 7.8375 13.85C7.74583 13.75 7.7 13.6333 7.7 13.5C7.7 13.4667 7.75 13.35 7.85 13.15L11.475 9.52499C11.5583 9.44165 11.6417 9.38332 11.725 9.34999C11.8083 9.31665 11.9 9.29999 12 9.29999C12.1 9.29999 12.1917 9.31665 12.275 9.34999C12.3583 9.38332 12.4417 9.44165 12.525 9.52499L16.15 13.15C16.2 13.2 16.2375 13.2542 16.2625 13.3125C16.2875 13.3708 16.3 13.4333 16.3 13.5C16.3 13.6333 16.2542 13.75 16.1625 13.85C16.0708 13.95 15.95 14 15.8 14H8.2Z\" fill=\"currentColor\"/>` },\r\n    edit: { outlined: `<path d=\"M4.8 21C4.305 21 3.88125 20.824 3.52875 20.4719C3.17625 20.1199 3 19.6966 3 19.2022V6.61798C3 6.1236 3.17625 5.70037 3.52875 5.34831C3.88125 4.99625 4.305 4.82022 4.8 4.82022H10.6725C10.9725 4.82022 11.1975 4.91386 11.3475 5.10112C11.4975 5.28839 11.5725 5.49438 11.5725 5.7191C11.5725 5.94382 11.4937 6.14981 11.3362 6.33708C11.1788 6.52434 10.95 6.61798 10.65 6.61798H4.8V19.2022H17.4V13.3371C17.4 13.0375 17.4937 12.8127 17.6812 12.6629C17.8687 12.5131 18.075 12.4382 18.3 12.4382C18.525 12.4382 18.7312 12.5131 18.9187 12.6629C19.1062 12.8127 19.2 13.0375 19.2 13.3371V19.2022C19.2 19.6966 19.0238 20.1199 18.6713 20.4719C18.3188 20.824 17.895 21 17.4 21H4.8ZM8.4 14.7079V12.5281C8.4 12.2884 8.445 12.0599 8.535 11.8427C8.625 11.6255 8.7525 11.4345 8.9175 11.2697L16.6575 3.53933C16.8375 3.35955 17.04 3.22472 17.265 3.13483C17.49 3.04494 17.715 3 17.94 3C18.18 3 18.4088 3.04494 18.6263 3.13483C18.8438 3.22472 19.0425 3.35955 19.2225 3.53933L20.4825 4.82022C20.6475 5 20.775 5.1985 20.865 5.41573C20.955 5.63296 21 5.85393 21 6.07865C21 6.30337 20.9587 6.52434 20.8763 6.74157C20.7938 6.9588 20.6625 7.1573 20.4825 7.33708L12.7425 15.0674C12.5775 15.2322 12.3862 15.3633 12.1687 15.4607C11.9513 15.5581 11.7225 15.6067 11.4825 15.6067H9.3C9.045 15.6067 8.83125 15.5206 8.65875 15.3483C8.48625 15.176 8.4 14.9625 8.4 14.7079ZM10.2 13.809H11.46L16.68 8.59551L16.05 7.96629L15.3975 7.33708L10.2 12.5281V13.809Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M9.3 15.6067C9.045 15.6067 8.83125 15.5206 8.65875 15.3483C8.48625 15.176 8.4 14.9625 8.4 14.7079V12.5281C8.4 12.2884 8.445 12.0599 8.535 11.8427C8.625 11.6255 8.7525 11.4345 8.9175 11.2697L16.6575 3.53933C16.8375 3.35955 17.04 3.22472 17.265 3.13483C17.49 3.04494 17.715 3 17.94 3C18.18 3 18.4088 3.04494 18.6263 3.13483C18.8438 3.22472 19.0425 3.35955 19.2225 3.53933L20.4825 4.82022C20.6475 5 20.775 5.1985 20.865 5.41573C20.955 5.63296 21 5.85393 21 6.07865C21 6.30337 20.9587 6.52434 20.8763 6.74157C20.7938 6.9588 20.6625 7.1573 20.4825 7.33708L12.7425 15.0674C12.5775 15.2322 12.3862 15.3633 12.1687 15.4607C11.9513 15.5581 11.7225 15.6067 11.4825 15.6067H9.3ZM17.94 7.33708L19.2225 6.07865L17.9625 4.82022L16.68 6.07865L17.94 7.33708ZM4.8 21C4.305 21 3.88125 20.824 3.52875 20.4719C3.17625 20.1199 3 19.6966 3 19.2022V6.61798C3 6.1236 3.17625 5.70037 3.52875 5.34831C3.88125 4.99625 4.305 4.82022 4.8 4.82022H10.65C10.86 4.82022 11.0325 4.87266 11.1675 4.97753C11.3025 5.0824 11.4075 5.21723 11.4825 5.38202C11.5575 5.54682 11.5837 5.71161 11.5612 5.8764C11.5387 6.0412 11.4525 6.1985 11.3025 6.34831L7.1175 10.5281C6.9525 10.6929 6.825 10.8839 6.735 11.1011C6.645 11.3184 6.6 11.5468 6.6 11.7865V15.6067C6.6 16.1011 6.77625 16.5243 7.12875 16.8764C7.48125 17.2285 7.905 17.4045 8.4 17.4045H12.2025C12.4425 17.4045 12.6713 17.3596 12.8888 17.2697C13.1062 17.1798 13.2975 17.0524 13.4625 16.8876L17.67 12.6854C17.82 12.5356 17.9775 12.4494 18.1425 12.427C18.3075 12.4045 18.4725 12.4307 18.6375 12.5056C18.8025 12.5805 18.9375 12.6854 19.0425 12.8202C19.1475 12.9551 19.2 13.1273 19.2 13.3371V19.2022C19.2 19.6966 19.0238 20.1199 18.6713 20.4719C18.3188 20.824 17.895 21 17.4 21H4.8Z\" fill=\"currentColor\"/>` },\r\n    education: { outlined: `<path d=\"M5.79928 17.957C5.48069 17.7679 5.23377 17.5143 5.05854 17.1963C4.88331 16.8782 4.7957 16.5215 4.7957 16.1261V11.1748L2.50179 9.80802C2.32656 9.70487 2.19912 9.57593 2.11947 9.4212C2.03982 9.26648 2 9.09456 2 8.90544C2 8.71633 2.03982 8.54441 2.11947 8.38968C2.19912 8.23496 2.32656 8.10602 2.50179 8.00286L10.5783 3.25788C10.7216 3.17192 10.869 3.10745 11.0203 3.06447C11.1716 3.02149 11.327 3 11.4863 3C11.6456 3 11.8009 3.02149 11.9522 3.06447C12.1035 3.10745 12.2509 3.17192 12.3943 3.25788L21.4982 8.62178C21.6575 8.70774 21.781 8.83238 21.8686 8.9957C21.9562 9.15903 22 9.33524 22 9.52436V16.1261C22 16.4183 21.9084 16.6633 21.7252 16.861C21.542 17.0587 21.315 17.1576 21.0442 17.1576C20.7734 17.1576 20.5464 17.0587 20.3632 16.861C20.18 16.6633 20.0884 16.4183 20.0884 16.1261V10.0401L18.1768 11.1748V16.1261C18.1768 16.5215 18.0892 16.8782 17.914 17.1963C17.7388 17.5143 17.4918 17.7679 17.1732 17.957L12.3943 20.7421C12.2509 20.8281 12.1035 20.8925 11.9522 20.9355C11.8009 20.9785 11.6456 21 11.4863 21C11.327 21 11.1716 20.9785 11.0203 20.9355C10.869 20.8925 10.7216 20.8281 10.5783 20.7421L5.79928 17.957ZM11.4863 12.7221L18.0335 8.90544L11.4863 5.08883L4.93907 8.90544L11.4863 12.7221ZM11.4863 18.937L16.2652 16.1519V12.2579L12.4182 14.553C12.2748 14.639 12.1235 14.7034 11.9642 14.7464C11.8049 14.7894 11.6456 14.8109 11.4863 14.8109C11.327 14.8109 11.1677 14.7894 11.0084 14.7464C10.8491 14.7034 10.6977 14.639 10.5544 14.553L6.70729 12.2579V16.1519L11.4863 18.937Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M20.0861 16.1261V10.0401L12.3828 14.553C12.0957 14.7249 11.7927 14.8109 11.4737 14.8109C11.1547 14.8109 10.8517 14.7249 10.5646 14.553L2.47847 9.80802C2.30303 9.70487 2.17943 9.57593 2.10766 9.4212C2.03589 9.26648 2 9.09456 2 8.90544C2 8.71633 2.03589 8.54441 2.10766 8.38968C2.17943 8.23496 2.30303 8.10602 2.47847 8.00286L10.5646 3.25788C10.7081 3.17192 10.8557 3.10745 11.0072 3.06447C11.1587 3.02149 11.3142 3 11.4737 3C11.6332 3 11.7887 3.02149 11.9402 3.06447C12.0917 3.10745 12.2392 3.17192 12.3828 3.25788L21.4976 8.62178C21.6571 8.70774 21.7807 8.83238 21.8684 8.9957C21.9561 9.15903 22 9.33524 22 9.52436V16.1261C22 16.4183 21.9083 16.6633 21.7249 16.861C21.5415 17.0587 21.3142 17.1576 21.0431 17.1576C20.7719 17.1576 20.5447 17.0587 20.3612 16.861C20.1778 16.6633 20.0861 16.4183 20.0861 16.1261ZM10.5646 20.7421L5.7799 17.957C5.46093 17.7679 5.21372 17.51 5.03828 17.1834C4.86284 16.8567 4.77512 16.5043 4.77512 16.1261V12.2063L10.5646 15.5845C10.8517 15.7564 11.1547 15.8424 11.4737 15.8424C11.7927 15.8424 12.0957 15.7564 12.3828 15.5845L18.1722 12.2063V16.1261C18.1722 16.5043 18.0845 16.8567 17.9091 17.1834C17.7337 17.51 17.4864 17.7679 17.1675 17.957L12.3828 20.7421C12.2392 20.8281 12.0917 20.8925 11.9402 20.9355C11.7887 20.9785 11.6332 21 11.4737 21C11.3142 21 11.1587 20.9785 11.0072 20.9355C10.8557 20.8925 10.7081 20.8281 10.5646 20.7421Z\" fill=\"currentColor\"/>` },\r\n    email: { outlined: `<path d=\"M4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6V18C22 18.55 21.8042 19.0208 21.4125 19.4125C21.0208 19.8042 20.55 20 20 20H4ZM20 8L12.525 12.675C12.4417 12.725 12.3542 12.7625 12.2625 12.7875C12.1708 12.8125 12.0833 12.825 12 12.825C11.9167 12.825 11.8292 12.8125 11.7375 12.7875C11.6458 12.7625 11.5583 12.725 11.475 12.675L4 8V18H20V8ZM12 11L20 6H4L12 11ZM4 8.25V6.775V6.8V6.7875V8.25Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6V18C22 18.55 21.8042 19.0208 21.4125 19.4125C21.0208 19.8042 20.55 20 20 20H4ZM12 12.825C12.0833 12.825 12.1708 12.8125 12.2625 12.7875C12.3542 12.7625 12.4417 12.725 12.525 12.675L19.6 8.25C19.7333 8.16667 19.8333 8.0625 19.9 7.9375C19.9667 7.8125 20 7.675 20 7.525C20 7.19167 19.8583 6.94167 19.575 6.775C19.2917 6.60833 19 6.61667 18.7 6.8L12 11L5.3 6.8C5 6.61667 4.70833 6.6125 4.425 6.7875C4.14167 6.9625 4 7.20833 4 7.525C4 7.69167 4.03333 7.8375 4.1 7.9625C4.16667 8.0875 4.26667 8.18333 4.4 8.25L11.475 12.675C11.5583 12.725 11.6458 12.7625 11.7375 12.7875C11.8292 12.8125 11.9167 12.825 12 12.825Z\" fill=\"currentColor\"/>` },\r\n    events: { outlined: `<path d=\"M9.52844 14.8226C9.41407 15.193 9.84055 15.4932 10.1506 15.2607L11.7227 14.0816C11.8659 13.9742 12.0631 13.975 12.2054 14.0837L13.7208 15.2409C14.0303 15.4773 14.4607 15.177 14.3458 14.805L13.746 12.8627C13.6971 12.7045 13.7508 12.5325 13.881 12.4301L15.5554 11.1145C15.8541 10.8798 15.6882 10.4 15.3083 10.4H13.3558C13.1824 10.4 13.0287 10.2882 12.9753 10.1231L12.3454 8.17633C12.226 7.80717 11.7037 7.80717 11.5843 8.17633L10.9544 10.1231C10.901 10.2882 10.7473 10.4 10.5738 10.4H8.60516C8.22705 10.4 8.06002 10.8761 8.35528 11.1123L10.0022 12.4299C10.1305 12.5325 10.183 12.7032 10.1345 12.8602L9.52844 14.8226ZM3.96484 20C3.41484 20 2.94401 19.8042 2.55234 19.4125C2.16068 19.0208 1.96484 18.55 1.96484 18V14.625C1.96484 14.4417 2.02318 14.2833 2.13984 14.15C2.25651 14.0167 2.40651 13.9333 2.58984 13.9C2.98984 13.7667 3.31901 13.525 3.57734 13.175C3.83568 12.825 3.96484 12.4333 3.96484 12C3.96484 11.5667 3.83568 11.175 3.57734 10.825C3.31901 10.475 2.98984 10.2333 2.58984 10.1C2.40651 10.0667 2.25651 9.98333 2.13984 9.85C2.02318 9.71667 1.96484 9.55833 1.96484 9.375V6C1.96484 5.45 2.16068 4.97917 2.55234 4.5875C2.94401 4.19583 3.41484 4 3.96484 4H19.9648C20.5148 4 20.9857 4.19583 21.3773 4.5875C21.769 4.97917 21.9648 5.45 21.9648 6V9.375C21.9648 9.55833 21.9065 9.71667 21.7898 9.85C21.6732 9.98333 21.5232 10.0667 21.3398 10.1C20.9398 10.2333 20.6107 10.475 20.3523 10.825C20.094 11.175 19.9648 11.5667 19.9648 12C19.9648 12.4333 20.094 12.825 20.3523 13.175C20.6107 13.525 20.9398 13.7667 21.3398 13.9C21.5232 13.9333 21.6732 14.0167 21.7898 14.15C21.9065 14.2833 21.9648 14.4417 21.9648 14.625V18C21.9648 18.55 21.769 19.0208 21.3773 19.4125C20.9857 19.8042 20.5148 20 19.9648 20H3.96484ZM3.96484 17.6C3.96484 17.8209 4.14393 18 4.36484 18H19.5648C19.7858 18 19.9648 17.8209 19.9648 17.6V15.6775C19.9648 15.5365 19.8897 15.407 19.7723 15.3288C19.2458 14.9782 18.8225 14.5311 18.5023 13.9875C18.144 13.3792 17.9648 12.7167 17.9648 12C17.9648 11.2833 18.144 10.6208 18.5023 10.0125C18.8225 9.46893 19.2458 9.02184 19.7723 8.67122C19.8897 8.59301 19.9648 8.46354 19.9648 8.32247V6.4C19.9648 6.17909 19.7858 6 19.5648 6H4.36484C4.14393 6 3.96484 6.17909 3.96484 6.4V8.32247C3.96484 8.46354 4.03999 8.59301 4.1574 8.67122C4.68385 9.02184 5.10716 9.46893 5.42734 10.0125C5.78568 10.6208 5.96484 11.2833 5.96484 12C5.96484 12.7167 5.78568 13.3792 5.42734 13.9875C5.10716 14.5311 4.68385 14.9782 4.1574 15.3288C4.03999 15.407 3.96484 15.5365 3.96484 15.6775V17.6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M9.52844 14.8226C9.41407 15.193 9.84055 15.4932 10.1506 15.2607L11.7227 14.0816C11.8659 13.9742 12.0631 13.975 12.2054 14.0837L13.7208 15.2409C14.0303 15.4773 14.4607 15.177 14.3458 14.805L13.746 12.8627C13.6971 12.7045 13.7508 12.5325 13.881 12.4301L15.5554 11.1145C15.8541 10.8798 15.6882 10.4 15.3083 10.4H13.3558C13.1824 10.4 13.0287 10.2882 12.9753 10.1231L12.3454 8.17633C12.226 7.80717 11.7037 7.80717 11.5843 8.17633L10.9544 10.1231C10.901 10.2882 10.7473 10.4 10.5738 10.4H8.60516C8.22705 10.4 8.06002 10.8761 8.35528 11.1123L10.0022 12.4299C10.1305 12.5325 10.183 12.7032 10.1345 12.8602L9.52844 14.8226ZM3.96484 20C3.41484 20 2.94401 19.8042 2.55234 19.4125C2.16068 19.0208 1.96484 18.55 1.96484 18V14.625C1.96484 14.4417 2.02318 14.2833 2.13984 14.15C2.25651 14.0167 2.40651 13.9333 2.58984 13.9C2.98984 13.7667 3.31901 13.525 3.57734 13.175C3.83568 12.825 3.96484 12.4333 3.96484 12C3.96484 11.5667 3.83568 11.175 3.57734 10.825C3.31901 10.475 2.98984 10.2333 2.58984 10.1C2.40651 10.0667 2.25651 9.98333 2.13984 9.85C2.02318 9.71667 1.96484 9.55833 1.96484 9.375V6C1.96484 5.45 2.16068 4.97917 2.55234 4.5875C2.94401 4.19583 3.41484 4 3.96484 4H19.9648C20.5148 4 20.9857 4.19583 21.3773 4.5875C21.769 4.97917 21.9648 5.45 21.9648 6V9.375C21.9648 9.55833 21.9065 9.71667 21.7898 9.85C21.6732 9.98333 21.5232 10.0667 21.3398 10.1C20.9398 10.2333 20.6107 10.475 20.3523 10.825C20.094 11.175 19.9648 11.5667 19.9648 12C19.9648 12.4333 20.094 12.825 20.3523 13.175C20.6107 13.525 20.9398 13.7667 21.3398 13.9C21.5232 13.9333 21.6732 14.0167 21.7898 14.15C21.9065 14.2833 21.9648 14.4417 21.9648 14.625V18C21.9648 18.55 21.769 19.0208 21.3773 19.4125C20.9857 19.8042 20.5148 20 19.9648 20H3.96484Z\" fill=\"currentColor\"/>` },\r\n    'file-export': { outlined: `<path d=\"M8 19.425L5.75 21.675C5.55 21.875 5.31667 21.9708 5.05 21.9625C4.78333 21.9542 4.55 21.85 4.35 21.65C4.16667 21.45 4.07083 21.2167 4.0625 20.95C4.05417 20.6833 4.15 20.45 4.35 20.25L6.6 18H5.35C5.06667 18 4.82917 17.9042 4.6375 17.7125C4.44583 17.5208 4.35 17.2833 4.35 17C4.35 16.7167 4.44583 16.4792 4.6375 16.2875C4.82917 16.0958 5.06667 16 5.35 16H9C9.28333 16 9.52083 16.0958 9.7125 16.2875C9.90417 16.4792 10 16.7167 10 17V20.65C10 20.9333 9.90417 21.1708 9.7125 21.3625C9.52083 21.5542 9.28333 21.65 9 21.65C8.71667 21.65 8.47917 21.5542 8.2875 21.3625C8.09583 21.1708 8 20.9333 8 20.65V19.425ZM5 14C4.71667 14 4.47917 13.9042 4.2875 13.7125C4.09583 13.5208 4 13.2833 4 13V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H14L20 8V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H13C12.7167 22 12.4792 21.9042 12.2875 21.7125C12.0958 21.5208 12 21.2833 12 21C12 20.7167 12.0958 20.4792 12.2875 20.2875C12.4792 20.0958 12.7167 20 13 20H18V9H14C13.7167 9 13.4792 8.90417 13.2875 8.7125C13.0958 8.52083 13 8.28333 13 8V4H6V13C6 13.2833 5.90417 13.5208 5.7125 13.7125C5.52083 13.9042 5.28333 14 5 14Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8 19.425L5.75 21.675C5.55 21.875 5.31667 21.9708 5.05 21.9625C4.78333 21.9542 4.55 21.85 4.35 21.65C4.16667 21.45 4.07083 21.2167 4.0625 20.95C4.05417 20.6833 4.15 20.45 4.35 20.25L6.6 18H5.35C5.06667 18 4.82917 17.9042 4.6375 17.7125C4.44583 17.5208 4.35 17.2833 4.35 17C4.35 16.7167 4.44583 16.4792 4.6375 16.2875C4.82917 16.0958 5.06667 16 5.35 16H9C9.28333 16 9.52083 16.0958 9.7125 16.2875C9.90417 16.4792 10 16.7167 10 17V20.65C10 20.9333 9.90417 21.1708 9.7125 21.3625C9.52083 21.5542 9.28333 21.65 9 21.65C8.71667 21.65 8.47917 21.5542 8.2875 21.3625C8.09583 21.1708 8 20.9333 8 20.65V19.425ZM13 22C12.7167 22 12.4792 21.9042 12.2875 21.7125C12.0958 21.5208 12 21.2833 12 21V17C12 16.1667 11.7083 15.4583 11.125 14.875C10.5417 14.2917 9.83333 14 9 14H5C4.71667 14 4.47917 13.9042 4.2875 13.7125C4.09583 13.5208 4 13.2833 4 13V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H14L20 8V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H13ZM13 9H18L13 4V9Z\" fill=\"currentColor\"/>` },\r\n    filter: { outlined: `<path d=\"M11 20C10.7167 20 10.4792 19.9042 10.2875 19.7125C10.0958 19.5208 9.99999 19.2833 9.99999 19V13L4.19999 5.6C3.94999 5.26667 3.91249 4.91667 4.08749 4.55C4.26249 4.18333 4.56666 4 4.99999 4H19C19.4333 4 19.7375 4.18333 19.9125 4.55C20.0875 4.91667 20.05 5.26667 19.8 5.6L14 13V19C14 19.2833 13.9042 19.5208 13.7125 19.7125C13.5208 19.9042 13.2833 20 13 20H11ZM12 12.3L16.95 6H7.04999L12 12.3Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M11 20C10.7167 20 10.4792 19.9042 10.2875 19.7125C10.0958 19.5208 9.99999 19.2833 9.99999 19V13L4.19999 5.6C3.94999 5.26667 3.91249 4.91667 4.08749 4.55C4.26249 4.18333 4.56666 4 4.99999 4H19C19.4333 4 19.7375 4.18333 19.9125 4.55C20.0875 4.91667 20.05 5.26667 19.8 5.6L14 13V19C14 19.2833 13.9042 19.5208 13.7125 19.7125C13.5208 19.9042 13.2833 20 13 20H11Z\" fill=\"currentColor\"/>` },\r\n    finance: { outlined: `<path d=\"M14 13C13.1667 13 12.4583 12.7083 11.875 12.125C11.2917 11.5417 11 10.8333 11 10C11 9.16667 11.2917 8.45833 11.875 7.875C12.4583 7.29167 13.1667 7 14 7C14.8333 7 15.5417 7.29167 16.125 7.875C16.7083 8.45833 17 9.16667 17 10C17 10.8333 16.7083 11.5417 16.125 12.125C15.5417 12.7083 14.8333 13 14 13ZM7 16C6.45 16 5.97917 15.8042 5.5875 15.4125C5.19583 15.0208 5 14.55 5 14V6C5 5.45 5.19583 4.97917 5.5875 4.5875C5.97917 4.19583 6.45 4 7 4H21C21.55 4 22.0208 4.19583 22.4125 4.5875C22.8042 4.97917 23 5.45 23 6V14C23 14.55 22.8042 15.0208 22.4125 15.4125C22.0208 15.8042 21.55 16 21 16H7ZM9 14H19C19 13.45 19.1958 12.9792 19.5875 12.5875C19.9792 12.1958 20.45 12 21 12V8C20.45 8 19.9792 7.80417 19.5875 7.4125C19.1958 7.02083 19 6.55 19 6H9C9 6.55 8.80417 7.02083 8.4125 7.4125C8.02083 7.80417 7.55 8 7 8V12C7.55 12 8.02083 12.1958 8.4125 12.5875C8.80417 12.9792 9 13.45 9 14ZM19 20H3C2.45 20 1.97917 19.8042 1.5875 19.4125C1.19583 19.0208 1 18.55 1 18V8C1 7.71667 1.09583 7.47917 1.2875 7.2875C1.47917 7.09583 1.71667 7 2 7C2.28333 7 2.52083 7.09583 2.7125 7.2875C2.90417 7.47917 3 7.71667 3 8V18H19C19.2833 18 19.5208 18.0958 19.7125 18.2875C19.9042 18.4792 20 18.7167 20 19C20 19.2833 19.9042 19.5208 19.7125 19.7125C19.5208 19.9042 19.2833 20 19 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M3 20C2.45 20 1.97917 19.8042 1.5875 19.4125C1.19583 19.0208 1 18.55 1 18V8C1 7.71667 1.09583 7.47917 1.2875 7.2875C1.47917 7.09583 1.71667 7 2 7C2.28333 7 2.52083 7.09583 2.7125 7.2875C2.90417 7.47917 3 7.71667 3 8V18H19C19.2833 18 19.5208 18.0958 19.7125 18.2875C19.9042 18.4792 20 18.7167 20 19C20 19.2833 19.9042 19.5208 19.7125 19.7125C19.5208 19.9042 19.2833 20 19 20H3ZM7 16C6.45 16 5.97917 15.8042 5.5875 15.4125C5.19583 15.0208 5 14.55 5 14V6C5 5.45 5.19583 4.97917 5.5875 4.5875C5.97917 4.19583 6.45 4 7 4H21C21.55 4 22.0208 4.19583 22.4125 4.5875C22.8042 4.97917 23 5.45 23 6V14C23 14.55 22.8042 15.0208 22.4125 15.4125C22.0208 15.8042 21.55 16 21 16H7ZM9 14C9 13.45 8.80417 12.9792 8.4125 12.5875C8.02083 12.1958 7.55 12 7 12V14H9ZM19 14H21V12C20.45 12 19.9792 12.1958 19.5875 12.5875C19.1958 12.9792 19 13.45 19 14ZM14 13C14.8333 13 15.5417 12.7083 16.125 12.125C16.7083 11.5417 17 10.8333 17 10C17 9.16667 16.7083 8.45833 16.125 7.875C15.5417 7.29167 14.8333 7 14 7C13.1667 7 12.4583 7.29167 11.875 7.875C11.2917 8.45833 11 9.16667 11 10C11 10.8333 11.2917 11.5417 11.875 12.125C12.4583 12.7083 13.1667 13 14 13ZM7 8C7.55 8 8.02083 7.80417 8.4125 7.4125C8.80417 7.02083 9 6.55 9 6H7V8ZM21 8V6H19C19 6.55 19.1958 7.02083 19.5875 7.4125C19.9792 7.80417 20.45 8 21 8Z\" fill=\"currentColor\"/>` },\r\n    folder: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20 6H12L10.59 4.59C10.21 4.21 9.7 4 9.17 4H4C2.9 4 2.01 4.9 2.01 6L2 18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6ZM19 18H5C4.45 18 4 17.55 4 17V9C4 8.45 4.45 8 5 8H19C19.55 8 20 8.45 20 9V17C20 17.55 19.55 18 19 18Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.59 4.59C10.21 4.21 9.7 4 9.17 4H4C2.9 4 2.01 4.9 2.01 6L2 18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6H12L10.59 4.59Z\" fill=\"currentColor\"/>` },\r\n    fullscreen: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 14C5.45 14 5 14.45 5 15V18C5 18.55 5.45 19 6 19H9C9.55 19 10 18.55 10 18C10 17.45 9.55 17 9 17H7V15C7 14.45 6.55 14 6 14ZM6 10C6.55 10 7 9.55 7 9V7H9C9.55 7 10 6.55 10 6C10 5.45 9.55 5 9 5H6C5.45 5 5 5.45 5 6V9C5 9.55 5.45 10 6 10ZM17 17H15C14.45 17 14 17.45 14 18C14 18.55 14.45 19 15 19H18C18.55 19 19 18.55 19 18V15C19 14.45 18.55 14 18 14C17.45 14 17 14.45 17 15V17ZM14 6C14 6.55 14.45 7 15 7H17V9C17 9.55 17.45 10 18 10C18.55 10 19 9.55 19 9V6C19 5.45 18.55 5 18 5H15C14.45 5 14 5.45 14 6Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 14C5.45 14 5 14.45 5 15V18C5 18.55 5.45 19 6 19H9C9.55 19 10 18.55 10 18C10 17.45 9.55 17 9 17H7V15C7 14.45 6.55 14 6 14ZM6 10C6.55 10 7 9.55 7 9V7H9C9.55 7 10 6.55 10 6C10 5.45 9.55 5 9 5H6C5.45 5 5 5.45 5 6V9C5 9.55 5.45 10 6 10ZM17 17H15C14.45 17 14 17.45 14 18C14 18.55 14.45 19 15 19H18C18.55 19 19 18.55 19 18V15C19 14.45 18.55 14 18 14C17.45 14 17 14.45 17 15V17ZM14 6C14 6.55 14.45 7 15 7H17V9C17 9.55 17.45 10 18 10C18.55 10 19 9.55 19 9V6C19 5.45 18.55 5 18 5H15C14.45 5 14 5.45 14 6Z\" fill=\"currentColor\"/>` },\r\n    'fullscreen-exit': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 16H8V18C8 18.55 8.45 19 9 19C9.55 19 10 18.55 10 18V15C10 14.45 9.55 14 9 14H6C5.45 14 5 14.45 5 15C5 15.55 5.45 16 6 16ZM8 8H6C5.45 8 5 8.45 5 9C5 9.55 5.45 10 6 10H9C9.55 10 10 9.55 10 9V6C10 5.45 9.55 5 9 5C8.45 5 8 5.45 8 6V8ZM15 19C15.55 19 16 18.55 16 18V16H18C18.55 16 19 15.55 19 15C19 14.45 18.55 14 18 14H15C14.45 14 14 14.45 14 15V18C14 18.55 14.45 19 15 19ZM16 8V6C16 5.45 15.55 5 15 5C14.45 5 14 5.45 14 6V9C14 9.55 14.45 10 15 10H18C18.55 10 19 9.55 19 9C19 8.45 18.55 8 18 8H16Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 16H8V18C8 18.55 8.45 19 9 19C9.55 19 10 18.55 10 18V15C10 14.45 9.55 14 9 14H6C5.45 14 5 14.45 5 15C5 15.55 5.45 16 6 16ZM8 8H6C5.45 8 5 8.45 5 9C5 9.55 5.45 10 6 10H9C9.55 10 10 9.55 10 9V6C10 5.45 9.55 5 9 5C8.45 5 8 5.45 8 6V8ZM15 19C15.55 19 16 18.55 16 18V16H18C18.55 16 19 15.55 19 15C19 14.45 18.55 14 18 14H15C14.45 14 14 14.45 14 15V18C14 18.55 14.45 19 15 19ZM16 8V6C16 5.45 15.55 5 15 5C14.45 5 14 5.45 14 6V9C14 9.55 14.45 10 15 10H18C18.55 10 19 9.55 19 9C19 8.45 18.55 8 18 8H16Z\" fill=\"currentColor\"/>` },\r\n    gallery: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19 5V19H5.00001V5H19ZM19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM14.14 11.86L11.14 15.73L9 13.14L6 17H18L14.14 11.86Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM14.14 11.86L11.14 15.73L9 13.14L6 17H18L14.14 11.86Z\" fill=\"currentColor\"/>` },\r\n    globe: { outlined: `<path d=\"M12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 11.8833 19.9958 11.7625 19.9875 11.6375C19.9792 11.5125 19.975 11.4083 19.975 11.325C19.8917 11.8083 19.6667 12.2083 19.3 12.525C18.9333 12.8417 18.5 13 18 13H16C15.45 13 14.9792 12.8042 14.5875 12.4125C14.1958 12.0208 14 11.55 14 11V10H10V8C10 7.45 10.1958 6.97917 10.5875 6.5875C10.9792 6.19583 11.45 6 12 6H13C13 5.61667 13.1042 5.27917 13.3125 4.9875C13.5208 4.69583 13.775 4.45833 14.075 4.275C13.7417 4.19167 13.4042 4.125 13.0625 4.075C12.7208 4.025 12.3667 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12H9C10.1 12 11.0417 12.3917 11.825 13.175C12.6083 13.9583 13 14.9 13 16V17H10V19.75C10.3333 19.8333 10.6625 19.8958 10.9875 19.9375C11.3125 19.9792 11.65 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 11.8833 19.9958 11.7625 19.9875 11.6375C19.9792 11.5125 19.975 11.4083 19.975 11.325C19.8917 11.8083 19.6667 12.2083 19.3 12.525C18.9333 12.8417 18.5 13 18 13H16C15.45 13 14.9792 12.8042 14.5875 12.4125C14.1958 12.0208 14 11.55 14 11V10H10V8C10 7.45 10.1958 6.97917 10.5875 6.5875C10.9792 6.19583 11.45 6 12 6H13C13 5.61667 13.1042 5.27917 13.3125 4.9875C13.5208 4.69583 13.775 4.45833 14.075 4.275C13.7417 4.19167 13.4042 4.125 13.0625 4.075C12.7208 4.025 12.3667 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12H9C10.1 12 11.0417 12.3917 11.825 13.175C12.6083 13.9583 13 14.9 13 16V17H10V19.75C10.3333 19.8333 10.6625 19.8958 10.9875 19.9375C11.3125 19.9792 11.65 20 12 20Z\" fill=\"currentColor\"/>` },\r\n    group: { outlined: `<path d=\"M2.4 19C2.17909 19 2 18.8209 2 18.6V16.375C2 15.8438 2.13258 15.3555 2.39773 14.9102C2.66288 14.4648 3.01515 14.125 3.45455 13.8906C4.39394 13.4063 5.34848 13.043 6.31818 12.8008C7.28788 12.5586 8.27273 12.4375 9.27273 12.4375C10.2727 12.4375 11.2576 12.5586 12.2273 12.8008C13.197 13.043 14.1515 13.4063 15.0909 13.8906C15.5303 14.125 15.8826 14.4648 16.1477 14.9102C16.4129 15.3555 16.5455 15.8438 16.5455 16.375V18.6C16.5455 18.8209 16.3664 19 16.1455 19H2.4ZM18.7636 19C18.5427 19 18.3636 18.8209 18.3636 18.6V16.1875C18.3636 15.5 18.178 14.8398 17.8068 14.207C17.7055 14.0343 17.5927 13.8683 17.4682 13.709C17.2087 13.3768 17.4745 12.7877 17.8812 12.8989C18.0601 12.9479 18.236 13.0011 18.4091 13.0586C19.0909 13.2852 19.7273 13.5625 20.3182 13.8906C20.8636 14.2031 21.2803 14.5508 21.5682 14.9336C21.8561 15.3164 22 15.7344 22 16.1875V18.6C22 18.8209 21.8209 19 21.6 19H18.7636ZM9.27273 11.5C8.27273 11.5 7.41667 11.1328 6.70455 10.3984C5.99242 9.66406 5.63636 8.78125 5.63636 7.75C5.63636 6.71875 5.99242 5.83594 6.70455 5.10156C7.41667 4.36719 8.27273 4 9.27273 4C10.2727 4 11.1288 4.36719 11.8409 5.10156C12.553 5.83594 12.9091 6.71875 12.9091 7.75C12.9091 8.78125 12.553 9.66406 11.8409 10.3984C11.1288 11.1328 10.2727 11.5 9.27273 11.5ZM18.3636 7.75C18.3636 8.78125 18.0076 9.66406 17.2955 10.3984C16.5833 11.1328 15.7273 11.5 14.7273 11.5C14.5606 11.5 14.3485 11.4805 14.0909 11.4414C14.0781 11.4395 14.0653 11.4375 14.0527 11.4355C13.7678 11.3911 13.6579 11.0613 13.8155 10.8198C14.0537 10.4548 14.2478 10.0644 14.3977 9.64844C14.6174 9.03906 14.7273 8.40625 14.7273 7.75C14.7273 7.09375 14.6174 6.46094 14.3977 5.85156C14.2421 5.41987 14.0389 5.01562 13.7882 4.63882C13.636 4.40995 13.7253 4.08764 13.9972 4.04728C14.0285 4.04265 14.0597 4.03861 14.0909 4.03516C14.303 4.01172 14.5152 4 14.7273 4C15.7273 4 16.5833 4.36719 17.2955 5.10156C18.0076 5.83594 18.3636 6.71875 18.3636 7.75ZM3.81818 16.725C3.81818 16.9459 3.99727 17.125 4.21818 17.125H14.3273C14.5482 17.125 14.7273 16.9459 14.7273 16.725V16.375C14.7273 16.2031 14.6856 16.0469 14.6023 15.9063C14.5189 15.7656 14.4091 15.6563 14.2727 15.5781C13.4545 15.1563 12.6288 14.8398 11.7955 14.6289C10.9621 14.418 10.1212 14.3125 9.27273 14.3125C8.42424 14.3125 7.58333 14.418 6.75 14.6289C5.91667 14.8398 5.09091 15.1563 4.27273 15.5781C4.13636 15.6563 4.02652 15.7656 3.94318 15.9063C3.85985 16.0469 3.81818 16.2031 3.81818 16.375V16.725ZM9.27273 9.625C9.77273 9.625 10.2008 9.44141 10.5568 9.07422C10.9129 8.70703 11.0909 8.26563 11.0909 7.75C11.0909 7.23438 10.9129 6.79297 10.5568 6.42578C10.2008 6.05859 9.77273 5.875 9.27273 5.875C8.77273 5.875 8.3447 6.05859 7.98864 6.42578C7.63258 6.79297 7.45455 7.23438 7.45455 7.75C7.45455 8.26563 7.63258 8.70703 7.98864 9.07422C8.3447 9.44141 8.77273 9.625 9.27273 9.625Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M2.9 19C2.40294 19 2 18.5683 2 18.0357V16.375C2 15.8438 2.13258 15.3555 2.39773 14.9102C2.66288 14.4648 3.01515 14.125 3.45455 13.8906C4.39394 13.4062 5.34848 13.043 6.31818 12.8008C7.28788 12.5586 8.27273 12.4375 9.27273 12.4375C10.2727 12.4375 11.2576 12.5586 12.2273 12.8008C13.197 13.043 14.1515 13.4062 15.0909 13.8906C15.5303 14.125 15.8826 14.4648 16.1477 14.9102C16.4129 15.3555 16.5455 15.8438 16.5455 16.375V18.0357C16.5455 18.5683 16.1425 19 15.6455 19H2.9ZM19.2636 19C18.7666 19 18.3636 18.5683 18.3636 18.0357V16.1875C18.3636 15.5 18.178 14.8398 17.8068 14.207C17.7055 14.0343 17.5927 13.8683 17.4682 13.709C17.2087 13.3768 17.4745 12.7877 17.8812 12.8989C18.0601 12.9479 18.236 13.0011 18.4091 13.0586C19.0909 13.2852 19.7273 13.5625 20.3182 13.8906C20.8636 14.2031 21.2803 14.5508 21.5682 14.9336C21.8561 15.3164 22 15.7344 22 16.1875V18.0357C22 18.5683 21.5971 19 21.1 19H19.2636ZM9.27273 11.5C8.27273 11.5 7.41667 11.1328 6.70455 10.3984C5.99242 9.66406 5.63636 8.78125 5.63636 7.75C5.63636 6.71875 5.99242 5.83594 6.70455 5.10156C7.41667 4.36719 8.27273 4 9.27273 4C10.2727 4 11.1288 4.36719 11.8409 5.10156C12.553 5.83594 12.9091 6.71875 12.9091 7.75C12.9091 8.78125 12.553 9.66406 11.8409 10.3984C11.1288 11.1328 10.2727 11.5 9.27273 11.5ZM18.3636 7.75C18.3636 8.78125 18.0076 9.66406 17.2955 10.3984C16.5833 11.1328 15.7273 11.5 14.7273 11.5C14.5606 11.5 14.3485 11.4805 14.0909 11.4414C14.0781 11.4395 14.0653 11.4375 14.0527 11.4355C13.7678 11.3911 13.6579 11.0613 13.8155 10.8198C14.0537 10.4548 14.2478 10.0644 14.3977 9.64844C14.6174 9.03906 14.7273 8.40625 14.7273 7.75C14.7273 7.09375 14.6174 6.46094 14.3977 5.85156C14.2421 5.41987 14.0389 5.01562 13.7882 4.63882C13.636 4.40995 13.7253 4.08764 13.9972 4.04728C14.0285 4.04265 14.0597 4.03861 14.0909 4.03516C14.303 4.01172 14.5152 4 14.7273 4C15.7273 4 16.5833 4.36719 17.2955 5.10156C18.0076 5.83594 18.3636 6.71875 18.3636 7.75Z\" fill=\"currentColor\"/>` },\r\n    header: { outlined: `<path d=\"M4 5C3.71667 5 3.47917 4.90417 3.2875 4.7125C3.09583 4.52083 3 4.28333 3 4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H20C20.2833 3 20.5208 3.09583 20.7125 3.2875C20.9042 3.47917 21 3.71667 21 4C21 4.28333 20.9042 4.52083 20.7125 4.7125C20.5208 4.90417 20.2833 5 20 5H4ZM19 7C19.55 7 20.0208 7.19583 20.4125 7.5875C20.8042 7.97917 21 8.45 21 9V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V9C3 8.45 3.19583 7.97917 3.5875 7.5875C3.97917 7.19583 4.45 7 5 7H19ZM19 9.6C19 9.26863 18.7314 9 18.4 9H5.6C5.26863 9 5 9.26863 5 9.6V18.4C5 18.7314 5.26863 19 5.6 19H18.4C18.7314 19 19 18.7314 19 18.4V9.6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 5C3.71667 5 3.47917 4.90417 3.2875 4.7125C3.09583 4.52083 3 4.28333 3 4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H20C20.2833 3 20.5208 3.09583 20.7125 3.2875C20.9042 3.47917 21 3.71667 21 4C21 4.28333 20.9042 4.52083 20.7125 4.7125C20.5208 4.90417 20.2833 5 20 5H4ZM19 7C19.55 7 20.0208 7.19583 20.4125 7.5875C20.8042 7.97917 21 8.45 21 9V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V9C3 8.45 3.19583 7.97917 3.5875 7.5875C3.97917 7.19583 4.45 7 5 7H19Z\" fill=\"currentColor\"/>` },\r\n    heart: { outlined: `<path d=\"M12.5944 20.772C12.2545 21.076 11.7455 21.076 11.4056 20.772L10.55 20.0069C8.86667 18.494 7.475 17.189 6.375 16.0918C5.275 14.9946 4.4 14.0096 3.75 13.1368C3.1 12.264 2.64583 11.4619 2.3875 10.7304C2.12917 9.99891 2 9.25081 2 8.48608C2 6.92338 2.525 5.61836 3.575 4.57101C4.625 3.52367 5.93333 3 7.5 3C8.36667 3 9.19167 3.18287 9.975 3.54861C10.7583 3.91435 11.4333 4.42971 12 5.09469C12.5667 4.42971 13.2417 3.91435 14.025 3.54861C14.8083 3.18287 15.6333 3 16.5 3C18.0667 3 19.375 3.52367 20.425 4.57101C21.475 5.61836 22 6.92338 22 8.48608C22 9.25081 21.8708 9.99891 21.6125 10.7304C21.3542 11.4619 20.9 12.264 20.25 13.1368C19.6 14.0096 18.725 14.9946 17.625 16.0918C16.525 17.189 15.1333 18.494 13.45 20.0069L12.5944 20.772ZM11.401 18.0631C11.7419 18.3753 12.2581 18.3753 12.599 18.0631C13.5088 17.23 15.211 15.6634 15.95 14.9322C16.9833 13.9098 17.8 13.0204 18.4 12.264C19 11.5076 19.4167 10.8343 19.65 10.2441C19.8833 9.65395 20 9.06794 20 8.48608C20 7.48861 19.6667 6.65739 19 5.99241C18.3333 5.32743 17.5 4.99494 16.5 4.99494C15.7167 4.99494 14.9917 5.21521 14.325 5.65576C13.8543 5.96684 13.4874 6.338 13.2244 6.76926C13.0264 7.09398 12.7009 7.33899 12.3251 7.33899H11.6749C11.2991 7.33899 10.9736 7.09398 10.7756 6.76926C10.5126 6.338 10.1457 5.96684 9.675 5.65576C9.00833 5.21521 8.28333 4.99494 7.5 4.99494C6.5 4.99494 5.66667 5.32743 5 5.99241C4.33333 6.65739 4 7.48861 4 8.48608C4 9.06794 4.11667 9.65395 4.35 10.2441C4.58333 10.8343 5 11.5076 5.6 12.264C6.2 13.0204 7.01667 13.9098 8.05 14.9322C8.789 15.6634 10.4912 17.23 11.401 18.0631Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.2463 20.7683C12.0953 20.9009 11.8695 20.9009 11.7185 20.7683L10.5298 19.7248C8.84354 18.2371 7.44942 16.9537 6.34749 15.8747C5.24555 14.7956 4.36901 13.827 3.71786 12.9687C3.06672 12.1104 2.61175 11.3215 2.35296 10.6022C2.09418 9.88283 2 9.15656 2 8.40452C2 6.86773 2.49071 5.57493 3.54256 4.54496C4.5944 3.51499 5.90504 3 7.47447 3C8.34266 3 9.16911 3.17984 9.95382 3.53951C10.5983 3.83491 11.1696 4.22957 11.6677 4.72347C11.8404 4.89477 12.1244 4.89477 12.2971 4.72347C12.7952 4.22957 13.3665 3.83491 14.011 3.53951C14.7957 3.17984 15.6221 3 16.4903 3C18.0597 3 19.3704 3.51499 20.4222 4.54496C21.4741 5.57493 22 6.85831 22 8.3951C22 9.14714 21.8706 9.88283 21.6118 10.6022C21.353 11.3215 20.8981 12.1104 20.2469 12.9687C19.5958 13.827 18.7192 14.7956 17.6173 15.8747C16.5154 16.9537 15.1212 18.2371 13.4349 19.7248L12.2463 20.7683Z\" fill=\"currentColor\"/>` },\r\n    help: { outlined: `<path d=\"M12.8375 17.6375C13.0792 17.3958 13.2 17.1 13.2 16.75C13.2 16.4 13.0792 16.1042 12.8375 15.8625C12.5958 15.6208 12.3 15.5 11.95 15.5C11.6 15.5 11.3042 15.6208 11.0625 15.8625C10.8208 16.1042 10.7 16.4 10.7 16.75C10.7 17.1 10.8208 17.3958 11.0625 17.6375C11.3042 17.8792 11.6 18 11.95 18C12.3 18 12.5958 17.8792 12.8375 17.6375ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20ZM12.1 7.7C12.5167 7.7 12.8792 7.83333 13.1875 8.1C13.4958 8.36667 13.65 8.7 13.65 9.1C13.65 9.46667 13.5375 9.79167 13.3125 10.075C13.0875 10.3583 12.8333 10.625 12.55 10.875C12.1667 11.2083 11.8292 11.575 11.5375 11.975C11.2458 12.375 11.1 12.825 11.1 13.325C11.1 13.5583 11.1875 13.7542 11.3625 13.9125C11.5375 14.0708 11.7417 14.15 11.975 14.15C12.225 14.15 12.4375 14.0667 12.6125 13.9C12.7875 13.7333 12.9 13.525 12.95 13.275C13.0167 12.925 13.1667 12.6125 13.4 12.3375C13.6333 12.0625 13.8833 11.8 14.15 11.55C14.5333 11.1833 14.8625 10.7833 15.1375 10.35C15.4125 9.91667 15.55 9.43333 15.55 8.9C15.55 8.05 15.2042 7.35417 14.5125 6.8125C13.8208 6.27083 13.0167 6 12.1 6C11.4667 6 10.8625 6.13333 10.2875 6.4C9.7125 6.66667 9.275 7.075 8.975 7.625C8.85833 7.825 8.82083 8.0375 8.8625 8.2625C8.90417 8.4875 9.01667 8.65833 9.2 8.775C9.43333 8.90833 9.675 8.95 9.925 8.9C10.175 8.85 10.3833 8.70833 10.55 8.475C10.7333 8.225 10.9625 8.03333 11.2375 7.9C11.5125 7.76667 11.8 7.7 12.1 7.7Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.8375 17.6375C13.0792 17.3958 13.2 17.1 13.2 16.75C13.2 16.4 13.0792 16.1042 12.8375 15.8625C12.5958 15.6208 12.3 15.5 11.95 15.5C11.6 15.5 11.3042 15.6208 11.0625 15.8625C10.8208 16.1042 10.7 16.4 10.7 16.75C10.7 17.1 10.8208 17.3958 11.0625 17.6375C11.3042 17.8792 11.6 18 11.95 18C12.3 18 12.5958 17.8792 12.8375 17.6375ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12.1 7.7C12.5167 7.7 12.8792 7.83333 13.1875 8.1C13.4958 8.36667 13.65 8.7 13.65 9.1C13.65 9.46667 13.5375 9.79167 13.3125 10.075C13.0875 10.3583 12.8333 10.625 12.55 10.875C12.1667 11.2083 11.8292 11.575 11.5375 11.975C11.2458 12.375 11.1 12.825 11.1 13.325C11.1 13.5583 11.1875 13.7542 11.3625 13.9125C11.5375 14.0708 11.7417 14.15 11.975 14.15C12.225 14.15 12.4375 14.0667 12.6125 13.9C12.7875 13.7333 12.9 13.525 12.95 13.275C13.0167 12.925 13.1667 12.6125 13.4 12.3375C13.6333 12.0625 13.8833 11.8 14.15 11.55C14.5333 11.1833 14.8625 10.7833 15.1375 10.35C15.4125 9.91667 15.55 9.43333 15.55 8.9C15.55 8.05 15.2042 7.35417 14.5125 6.8125C13.8208 6.27083 13.0167 6 12.1 6C11.4667 6 10.8625 6.13333 10.2875 6.4C9.7125 6.66667 9.275 7.075 8.975 7.625C8.85833 7.825 8.82083 8.0375 8.8625 8.2625C8.90417 8.4875 9.01667 8.65833 9.2 8.775C9.43333 8.90833 9.675 8.95 9.925 8.9C10.175 8.85 10.3833 8.70833 10.55 8.475C10.7333 8.225 10.9625 8.03333 11.2375 7.9C11.5125 7.76667 11.8 7.7 12.1 7.7Z\" fill=\"currentColor\"/>` },\r\n    hierarchy: { outlined: `<path d=\"M2 18V10.825C2 10.5583 2.05 10.3042 2.15 10.0625C2.25 9.82083 2.39167 9.60833 2.575 9.425L6.575 5.425C6.775 5.225 7 5.075 7.25 4.975C7.5 4.875 7.75 4.825 8 4.825C8.25 4.825 8.5 4.875 8.75 4.975C9 5.075 9.225 5.225 9.425 5.425L13.425 9.425C13.6083 9.60833 13.75 9.82083 13.85 10.0625C13.95 10.3042 14 10.5583 14 10.825V18C14 18.55 13.8042 19.0208 13.4125 19.4125C13.0208 19.8042 12.55 20 12 20H4C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18ZM4 18H7V16C7 15.7167 7.09583 15.4792 7.2875 15.2875C7.47917 15.0958 7.71667 15 8 15C8.28333 15 8.52083 15.0958 8.7125 15.2875C8.90417 15.4792 9 15.7167 9 16V18H12V10.825L8 6.825L4 10.825V18ZM16 19V9.175L12.525 5.7C12.2083 5.38333 12.1333 5.02083 12.3 4.6125C12.4667 4.20417 12.775 4 13.225 4C13.3583 4 13.4917 4.02917 13.625 4.0875C13.7583 4.14583 13.8667 4.21667 13.95 4.3L17.425 7.775C17.6083 7.95833 17.75 8.17083 17.85 8.4125C17.95 8.65417 18 8.90833 18 9.175V19C18 19.2833 17.9042 19.5208 17.7125 19.7125C17.5208 19.9042 17.2833 20 17 20C16.7167 20 16.4792 19.9042 16.2875 19.7125C16.0958 19.5208 16 19.2833 16 19ZM20 19V7.525L18.175 5.7C17.8583 5.38333 17.7833 5.02083 17.95 4.6125C18.1167 4.20417 18.425 4 18.875 4C19.0083 4 19.1417 4.02917 19.275 4.0875C19.4083 4.14583 19.5167 4.21667 19.6 4.3L21.425 6.125C21.6083 6.30833 21.75 6.52083 21.85 6.7625C21.95 7.00417 22 7.25833 22 7.525V19C22 19.2833 21.9042 19.5208 21.7125 19.7125C21.5208 19.9042 21.2833 20 21 20C20.7167 20 20.4792 19.9042 20.2875 19.7125C20.0958 19.5208 20 19.2833 20 19ZM8 13C7.71667 13 7.47917 12.9042 7.2875 12.7125C7.09583 12.5208 7 12.2833 7 12C7 11.7167 7.09583 11.4792 7.2875 11.2875C7.47917 11.0958 7.71667 11 8 11C8.28333 11 8.52083 11.0958 8.7125 11.2875C8.90417 11.4792 9 11.7167 9 12C9 12.2833 8.90417 12.5208 8.7125 12.7125C8.52083 12.9042 8.28333 13 8 13Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V10.825C2 10.5583 2.05 10.3042 2.15 10.0625C2.25 9.82083 2.39167 9.60833 2.575 9.425L6.575 5.425C6.775 5.225 7 5.075 7.25 4.975C7.5 4.875 7.75 4.825 8 4.825C8.25 4.825 8.5 4.875 8.75 4.975C9 5.075 9.225 5.225 9.425 5.425L13.425 9.425C13.6083 9.60833 13.75 9.82083 13.85 10.0625C13.95 10.3042 14 10.5583 14 10.825V18C14 18.55 13.8042 19.0208 13.4125 19.4125C13.0208 19.8042 12.55 20 12 20H9.5C9.36667 20 9.25 19.95 9.15 19.85C9.05 19.75 9 19.6333 9 19.5V16C9 15.7167 8.90417 15.4792 8.7125 15.2875C8.52083 15.0958 8.28333 15 8 15C7.71667 15 7.47917 15.0958 7.2875 15.2875C7.09583 15.4792 7 15.7167 7 16V19.5C7 19.6333 6.95 19.75 6.85 19.85C6.75 19.95 6.63333 20 6.5 20H4ZM16 19V9.175L12.525 5.7C12.2083 5.38333 12.1333 5.02083 12.3 4.6125C12.4667 4.20417 12.775 4 13.225 4C13.3583 4 13.4917 4.02917 13.625 4.0875C13.7583 4.14583 13.8667 4.21667 13.95 4.3L17.425 7.775C17.6083 7.95833 17.75 8.17083 17.85 8.4125C17.95 8.65417 18 8.90833 18 9.175V19C18 19.2833 17.9042 19.5208 17.7125 19.7125C17.5208 19.9042 17.2833 20 17 20C16.7167 20 16.4792 19.9042 16.2875 19.7125C16.0958 19.5208 16 19.2833 16 19ZM20 19V7.525L18.175 5.7C17.8583 5.38333 17.7833 5.02083 17.95 4.6125C18.1167 4.20417 18.425 4 18.875 4C19.0083 4 19.1417 4.02917 19.275 4.0875C19.4083 4.14583 19.5167 4.21667 19.6 4.3L21.425 6.125C21.6083 6.30833 21.75 6.52083 21.85 6.7625C21.95 7.00417 22 7.25833 22 7.525V19C22 19.2833 21.9042 19.5208 21.7125 19.7125C21.5208 19.9042 21.2833 20 21 20C20.7167 20 20.4792 19.9042 20.2875 19.7125C20.0958 19.5208 20 19.2833 20 19ZM8 13C8.28333 13 8.52083 12.9042 8.7125 12.7125C8.90417 12.5208 9 12.2833 9 12C9 11.7167 8.90417 11.4792 8.7125 11.2875C8.52083 11.0958 8.28333 11 8 11C7.71667 11 7.47917 11.0958 7.2875 11.2875C7.09583 11.4792 7 11.7167 7 12C7 12.2833 7.09583 12.5208 7.2875 12.7125C7.47917 12.9042 7.71667 13 8 13Z\" fill=\"currentColor\"/>` },\r\n    history: { outlined: `<path d=\"M12 21C9.9 21 8.04167 20.3625 6.425 19.0875C4.80833 17.8125 3.75833 16.1833 3.275 14.2C3.20833 13.95 3.25833 13.7208 3.425 13.5125C3.59167 13.3042 3.81667 13.1833 4.1 13.15C4.36667 13.1167 4.60833 13.1667 4.825 13.3C5.04167 13.4333 5.19167 13.6333 5.275 13.9C5.675 15.4 6.5 16.625 7.75 17.575C9 18.525 10.4167 19 12 19C13.95 19 15.6042 18.3208 16.9625 16.9625C18.3208 15.6042 19 13.95 19 12C19 10.05 18.3208 8.39583 16.9625 7.0375C15.6042 5.67917 13.95 5 12 5C10.85 5 9.775 5.26667 8.775 5.8C7.775 6.33333 6.93333 7.06667 6.25 8H8C8.28333 8 8.52083 8.09583 8.7125 8.2875C8.90417 8.47917 9 8.71667 9 9C9 9.28333 8.90417 9.52083 8.7125 9.7125C8.52083 9.90417 8.28333 10 8 10H4C3.71667 10 3.47917 9.90417 3.2875 9.7125C3.09583 9.52083 3 9.28333 3 9V5C3 4.71667 3.09583 4.47917 3.2875 4.2875C3.47917 4.09583 3.71667 4 4 4C4.28333 4 4.52083 4.09583 4.7125 4.2875C4.90417 4.47917 5 4.71667 5 5V6.35C5.85 5.28333 6.8875 4.45833 8.1125 3.875C9.3375 3.29167 10.6333 3 12 3C13.25 3 14.4208 3.2375 15.5125 3.7125C16.6042 4.1875 17.5542 4.82917 18.3625 5.6375C19.1708 6.44583 19.8125 7.39583 20.2875 8.4875C20.7625 9.57917 21 10.75 21 12C21 13.25 20.7625 14.4208 20.2875 15.5125C19.8125 16.6042 19.1708 17.5542 18.3625 18.3625C17.5542 19.1708 16.6042 19.8125 15.5125 20.2875C14.4208 20.7625 13.25 21 12 21ZM13 11.6L15.5 14.1C15.6833 14.2833 15.775 14.5167 15.775 14.8C15.775 15.0833 15.6833 15.3167 15.5 15.5C15.3167 15.6833 15.0833 15.775 14.8 15.775C14.5167 15.775 14.2833 15.6833 14.1 15.5L11.3 12.7C11.2 12.6 11.125 12.4875 11.075 12.3625C11.025 12.2375 11 12.1083 11 11.975V8C11 7.71667 11.0958 7.47917 11.2875 7.2875C11.4792 7.09583 11.7167 7 12 7C12.2833 7 12.5208 7.09583 12.7125 7.2875C12.9042 7.47917 13 7.71667 13 8V11.6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 21C9.9 21 8.04167 20.3625 6.425 19.0875C4.80833 17.8125 3.75833 16.1833 3.275 14.2C3.20833 13.95 3.25833 13.7208 3.425 13.5125C3.59167 13.3042 3.81667 13.1833 4.1 13.15C4.36667 13.1167 4.60833 13.1667 4.825 13.3C5.04167 13.4333 5.19167 13.6333 5.275 13.9C5.675 15.4 6.5 16.625 7.75 17.575C9 18.525 10.4167 19 12 19C13.95 19 15.6042 18.3208 16.9625 16.9625C18.3208 15.6042 19 13.95 19 12C19 10.05 18.3208 8.39583 16.9625 7.0375C15.6042 5.67917 13.95 5 12 5C10.85 5 9.775 5.26667 8.775 5.8C7.775 6.33333 6.93333 7.06667 6.25 8H8C8.28333 8 8.52083 8.09583 8.7125 8.2875C8.90417 8.47917 9 8.71667 9 9C9 9.28333 8.90417 9.52083 8.7125 9.7125C8.52083 9.90417 8.28333 10 8 10H4C3.71667 10 3.47917 9.90417 3.2875 9.7125C3.09583 9.52083 3 9.28333 3 9V5C3 4.71667 3.09583 4.47917 3.2875 4.2875C3.47917 4.09583 3.71667 4 4 4C4.28333 4 4.52083 4.09583 4.7125 4.2875C4.90417 4.47917 5 4.71667 5 5V6.35C5.85 5.28333 6.8875 4.45833 8.1125 3.875C9.3375 3.29167 10.6333 3 12 3C13.25 3 14.4208 3.2375 15.5125 3.7125C16.6042 4.1875 17.5542 4.82917 18.3625 5.6375C19.1708 6.44583 19.8125 7.39583 20.2875 8.4875C20.7625 9.57917 21 10.75 21 12C21 13.25 20.7625 14.4208 20.2875 15.5125C19.8125 16.6042 19.1708 17.5542 18.3625 18.3625C17.5542 19.1708 16.6042 19.8125 15.5125 20.2875C14.4208 20.7625 13.25 21 12 21ZM13 11.6L15.5 14.1C15.6833 14.2833 15.775 14.5167 15.775 14.8C15.775 15.0833 15.6833 15.3167 15.5 15.5C15.3167 15.6833 15.0833 15.775 14.8 15.775C14.5167 15.775 14.2833 15.6833 14.1 15.5L11.3 12.7C11.2 12.6 11.125 12.4875 11.075 12.3625C11.025 12.2375 11 12.1083 11 11.975V8C11 7.71667 11.0958 7.47917 11.2875 7.2875C11.4792 7.09583 11.7167 7 12 7C12.2833 7 12.5208 7.09583 12.7125 7.2875C12.9042 7.47917 13 7.71667 13 8V11.6Z\" fill=\"currentColor\"/>` },\r\n    home: { outlined: `<path d=\"M6 19H9V14C9 13.7167 9.09583 13.4792 9.2875 13.2875C9.47917 13.0958 9.71667 13 10 13H14C14.2833 13 14.5208 13.0958 14.7125 13.2875C14.9042 13.4792 15 13.7167 15 14V19H18V10L12 5.5L6 10V19ZM4 19V10C4 9.68333 4.07083 9.38333 4.2125 9.1C4.35417 8.81667 4.55 8.58333 4.8 8.4L10.8 3.9C11.15 3.63333 11.55 3.5 12 3.5C12.45 3.5 12.85 3.63333 13.2 3.9L19.2 8.4C19.45 8.58333 19.6458 8.81667 19.7875 9.1C19.9292 9.38333 20 9.68333 20 10V19C20 19.55 19.8042 20.0208 19.4125 20.4125C19.0208 20.8042 18.55 21 18 21H14C13.7167 21 13.4792 20.9042 13.2875 20.7125C13.0958 20.5208 13 20.2833 13 20V15H11V20C11 20.2833 10.9042 20.5208 10.7125 20.7125C10.5208 20.9042 10.2833 21 10 21H6C5.45 21 4.97917 20.8042 4.5875 20.4125C4.19583 20.0208 4 19.55 4 19Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 19V10C4 9.68333 4.07083 9.38333 4.2125 9.1C4.35417 8.81667 4.55 8.58333 4.8 8.4L10.8 3.9C11.15 3.63333 11.55 3.5 12 3.5C12.45 3.5 12.85 3.63333 13.2 3.9L19.2 8.4C19.45 8.58333 19.6458 8.81667 19.7875 9.1C19.9292 9.38333 20 9.68333 20 10V19C20 19.55 19.8042 20.0208 19.4125 20.4125C19.0208 20.8042 18.55 21 18 21H15C14.7167 21 14.4792 20.9042 14.2875 20.7125C14.0958 20.5208 14 20.2833 14 20V15C14 14.7167 13.9042 14.4792 13.7125 14.2875C13.5208 14.0958 13.2833 14 13 14H11C10.7167 14 10.4792 14.0958 10.2875 14.2875C10.0958 14.4792 10 14.7167 10 15V20C10 20.2833 9.90417 20.5208 9.7125 20.7125C9.52083 20.9042 9.28333 21 9 21H6C5.45 21 4.97917 20.8042 4.5875 20.4125C4.19583 20.0208 4 19.55 4 19Z\" fill=\"currentColor\"/>` },\r\n    id: { outlined: `<path d=\"M4 20C3.45 20 2.97917 19.7911 2.5875 19.3733C2.19583 18.9556 2 18.4533 2 17.8667V6.13333C2 5.54667 2.19583 5.04444 2.5875 4.62667C2.97917 4.20889 3.45 4 4 4H9C10.5 4 9.23017 4 11 4H13C13.5 4 14.5 4 15 4H20C20.55 4 21.0208 4.20889 21.4125 4.62667C21.8042 5.04444 22 5.54667 22 6.13333V17.8667C22 18.4533 21.8042 18.9556 21.4125 19.3733C21.0208 19.7911 20.55 20 20 20H4ZM4 17.2667C4 17.598 4.26863 17.8667 4.6 17.8667H19.4C19.7314 17.8667 20 17.598 20 17.2667V6.73333C20 6.40196 19.7314 6.13333 19.4 6.13333H15C15 6.13333 15.0465 6.13333 14.4125 6.13333C13.5 6.13333 13.55 6.13333 13 6.13333H11C10.45 6.13333 10 6.13333 9.5875 6.13333H4.6C4.26863 6.13333 4 6.40196 4 6.73333V17.2667ZM6 15.2533C6 15.5184 6.2149 15.7333 6.48 15.7333H11.52C11.7851 15.7333 12 15.5184 12 15.2533C12 14.9511 11.9208 14.6711 11.7625 14.4133C11.6042 14.1556 11.3833 13.9556 11.1 13.8133C10.7667 13.6533 10.4292 13.5333 10.0875 13.4533C9.74583 13.3733 9.38333 13.3333 9 13.3333C8.61667 13.3333 8.25417 13.3733 7.9125 13.4533C7.57083 13.5333 7.23333 13.6533 6.9 13.8133C6.61667 13.9556 6.39583 14.1556 6.2375 14.4133C6.07917 14.6711 6 14.9511 6 15.2533ZM14 13.3333C14 13.7752 14.3582 14.1333 14.8 14.1333H17.2C17.6418 14.1333 18 13.7752 18 13.3333C18 12.8915 17.6418 12.5333 17.2 12.5333H14.8C14.3582 12.5333 14 12.8915 14 13.3333ZM9 12.5333C9.41667 12.5333 9.77083 12.3778 10.0625 12.0667C10.3542 11.7556 10.5 11.3778 10.5 10.9333C10.5 10.4889 10.3542 10.1111 10.0625 9.8C9.77083 9.48889 9.41667 9.33333 9 9.33333C8.58333 9.33333 8.22917 9.48889 7.9375 9.8C7.64583 10.1111 7.5 10.4889 7.5 10.9333C7.5 11.3778 7.64583 11.7556 7.9375 12.0667C8.22917 12.3778 8.58333 12.5333 9 12.5333ZM14 10.1333C14 10.5752 14.3582 10.9333 14.8 10.9333H17.2C17.6418 10.9333 18 10.5752 18 10.1333C18 9.69151 17.6418 9.33333 17.2 9.33333H14.8C14.3582 9.33333 14 9.69151 14 10.1333Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 20C3.45 20 2.97917 19.7911 2.5875 19.3733C2.19583 18.9556 2 18.4533 2 17.8667V6.13336C2 5.5467 2.19583 5.04447 2.5875 4.6267C2.97917 4.20892 3.45 4.00003 4 4.00003L9.5875 4C9.5875 4 10.45 4.00003 11 4.00003C11 4.00003 12.45 4 13 4C13.55 4 15 4.00007 15 4.00007L20 4.00003C20.55 4.00003 21.0208 4.20892 21.4125 4.6267C21.8042 5.04447 22 5.5467 22 6.13336V17.8667C22 18.4533 21.8042 18.9556 21.4125 19.3733C21.0208 19.7911 20.55 20 20 20H4ZM6 15.2533C6 15.5184 6.2149 15.7333 6.48 15.7333H11.52C11.7851 15.7333 12 15.5184 12 15.2533C12 14.9511 11.9208 14.6711 11.7625 14.4133C11.6042 14.1556 11.3833 13.9556 11.1 13.8133C10.7667 13.6533 10.4292 13.5333 10.0875 13.4533C9.74583 13.3733 9.38333 13.3333 9 13.3333C8.61667 13.3333 8.25417 13.3733 7.9125 13.4533C7.57083 13.5333 7.23333 13.6533 6.9 13.8133C6.61667 13.9556 6.39583 14.1556 6.2375 14.4133C6.07917 14.6711 6 14.9511 6 15.2533ZM14 13.5333C14 13.8647 14.2686 14.1333 14.6 14.1333H17.4C17.7314 14.1333 18 13.8647 18 13.5333V13.1333C18 12.802 17.7314 12.5333 17.4 12.5333H14.6C14.2686 12.5333 14 12.802 14 13.1333V13.5333ZM9 12.5333C9.41667 12.5333 9.77083 12.3778 10.0625 12.0667C10.3542 11.7556 10.5 11.3778 10.5 10.9334C10.5 10.4889 10.3542 10.1111 10.0625 9.80002C9.77083 9.48891 9.41667 9.33335 9 9.33335C8.58333 9.33335 8.22917 9.48891 7.9375 9.80002C7.64583 10.1111 7.5 10.4889 7.5 10.9334C7.5 11.3778 7.64583 11.7556 7.9375 12.0667C8.22917 12.3778 8.58333 12.5333 9 12.5333ZM14 10.3334C14 10.6647 14.2686 10.9334 14.6 10.9334H17.4C17.7314 10.9334 18 10.6647 18 10.3334V9.93335C18 9.60198 17.7314 9.33335 17.4 9.33335H14.6C14.2686 9.33335 14 9.60198 14 9.93335V10.3334Z\" fill=\"currentColor\"/>` },\r\n    idea: { outlined: `<path d=\"M10 18C9.45 18 8.97917 17.8042 8.5875 17.4125C8.19583 17.0208 8 16.55 8 16V14.75C7.05 14.1 6.3125 13.2667 5.7875 12.25C5.2625 11.2333 5 10.15 5 9C5 7.05 5.67917 5.39583 7.0375 4.0375C8.39583 2.67917 10.05 2 12 2C13.95 2 15.6042 2.67917 16.9625 4.0375C18.3208 5.39583 19 7.05 19 9C19 10.15 18.7375 11.2292 18.2125 12.2375C17.6875 13.2458 16.95 14.0833 16 14.75V16C16 16.55 15.8042 17.0208 15.4125 17.4125C15.0208 17.8042 14.55 18 14 18H10ZM10 16H14V14.225C14 14.0583 14.0375 13.9 14.1125 13.75C14.1875 13.6 14.2917 13.4833 14.425 13.4L14.85 13.1C15.5333 12.6333 16.0625 12.0375 16.4375 11.3125C16.8125 10.5875 17 9.81667 17 9C17 7.61667 16.5125 6.4375 15.5375 5.4625C14.5625 4.4875 13.3833 4 12 4C10.6167 4 9.4375 4.4875 8.4625 5.4625C7.4875 6.4375 7 7.61667 7 9C7 9.81667 7.1875 10.5875 7.5625 11.3125C7.9375 12.0375 8.46667 12.6333 9.15 13.1L9.575 13.4C9.70833 13.4833 9.8125 13.6 9.8875 13.75C9.9625 13.9 10 14.0583 10 14.225V16ZM10 22C9.71667 22 9.47917 21.9042 9.2875 21.7125C9.09583 21.5208 9 21.2833 9 21C9 20.7167 9.09583 20.4792 9.2875 20.2875C9.47917 20.0958 9.71667 20 10 20H14C14.2833 20 14.5208 20.0958 14.7125 20.2875C14.9042 20.4792 15 20.7167 15 21C15 21.2833 14.9042 21.5208 14.7125 21.7125C14.5208 21.9042 14.2833 22 14 22H10Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10 18C9.45 18 8.97917 17.8042 8.5875 17.4125C8.19583 17.0208 8 16.55 8 16V14.75C7.05 14.1 6.3125 13.2667 5.7875 12.25C5.2625 11.2333 5 10.15 5 9C5 7.05 5.67917 5.39583 7.0375 4.0375C8.39583 2.67917 10.05 2 12 2C13.95 2 15.6042 2.67917 16.9625 4.0375C18.3208 5.39583 19 7.05 19 9C19 10.15 18.7375 11.2292 18.2125 12.2375C17.6875 13.2458 16.95 14.0833 16 14.75V16C16 16.55 15.8042 17.0208 15.4125 17.4125C15.0208 17.8042 14.55 18 14 18H10ZM10 22C9.71667 22 9.47917 21.9042 9.2875 21.7125C9.09583 21.5208 9 21.2833 9 21C9 20.7167 9.09583 20.4792 9.2875 20.2875C9.47917 20.0958 9.71667 20 10 20H14C14.2833 20 14.5208 20.0958 14.7125 20.2875C14.9042 20.4792 15 20.7167 15 21C15 21.2833 14.9042 21.5208 14.7125 21.7125C14.5208 21.9042 14.2833 22 14 22H10Z\" fill=\"currentColor\"/>` },\r\n    info: { outlined: `<path d=\"M12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16V12C13 11.7167 12.9042 11.4792 12.7125 11.2875C12.5208 11.0958 12.2833 11 12 11C11.7167 11 11.4792 11.0958 11.2875 11.2875C11.0958 11.4792 11 11.7167 11 12V16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125ZM12.7125 8.7125C12.9042 8.52083 13 8.28333 13 8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8C11 8.28333 11.0958 8.52083 11.2875 8.7125C11.4792 8.90417 11.7167 9 12 9C12.2833 9 12.5208 8.90417 12.7125 8.7125ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16V12C13 11.7167 12.9042 11.4792 12.7125 11.2875C12.5208 11.0958 12.2833 11 12 11C11.7167 11 11.4792 11.0958 11.2875 11.2875C11.0958 11.4792 11 11.7167 11 12V16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125ZM12.7125 8.7125C12.9042 8.52083 13 8.28333 13 8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8C11 8.28333 11.0958 8.52083 11.2875 8.7125C11.4792 8.90417 11.7167 9 12 9C12.2833 9 12.5208 8.90417 12.7125 8.7125ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    italic: { outlined: `<path d=\"M6.25 19C5.9 19 5.60417 18.8792 5.3625 18.6375C5.12083 18.3958 5 18.1 5 17.75C5 17.4 5.12083 17.1042 5.3625 16.8625C5.60417 16.6208 5.9 16.5 6.25 16.5H9L12 7.5H9.25C8.9 7.5 8.60417 7.37917 8.3625 7.1375C8.12083 6.89583 8 6.6 8 6.25C8 5.9 8.12083 5.60417 8.3625 5.3625C8.60417 5.12083 8.9 5 9.25 5H16.75C17.1 5 17.3958 5.12083 17.6375 5.3625C17.8792 5.60417 18 5.9 18 6.25C18 6.6 17.8792 6.89583 17.6375 7.1375C17.3958 7.37917 17.1 7.5 16.75 7.5H14.5L11.5 16.5H13.75C14.1 16.5 14.3958 16.6208 14.6375 16.8625C14.8792 17.1042 15 17.4 15 17.75C15 18.1 14.8792 18.3958 14.6375 18.6375C14.3958 18.8792 14.1 19 13.75 19H6.25Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6.25 19C5.9 19 5.60417 18.8792 5.3625 18.6375C5.12083 18.3958 5 18.1 5 17.75C5 17.4 5.12083 17.1042 5.3625 16.8625C5.60417 16.6208 5.9 16.5 6.25 16.5H9L12 7.5H9.25C8.9 7.5 8.60417 7.37917 8.3625 7.1375C8.12083 6.89583 8 6.6 8 6.25C8 5.9 8.12083 5.60417 8.3625 5.3625C8.60417 5.12083 8.9 5 9.25 5H16.75C17.1 5 17.3958 5.12083 17.6375 5.3625C17.8792 5.60417 18 5.9 18 6.25C18 6.6 17.8792 6.89583 17.6375 7.1375C17.3958 7.37917 17.1 7.5 16.75 7.5H14.5L11.5 16.5H13.75C14.1 16.5 14.3958 16.6208 14.6375 16.8625C14.8792 17.1042 15 17.4 15 17.75C15 18.1 14.8792 18.3958 14.6375 18.6375C14.3958 18.8792 14.1 19 13.75 19H6.25Z\" fill=\"currentColor\"/>` },\r\n    jesus: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.00073 11H2.00073C1.45073 11 1.00073 11.45 1.00073 12C1.00073 12.55 1.45073 13 2.00073 13H6.00073C6.55073 13 7.00073 12.55 7.00073 12C7.00073 11.45 6.55073 11 6.00073 11ZM8.47117 7.06L7.75117 6.34C7.36117 5.95 6.73117 5.95 6.34117 6.34C5.95117 6.73 5.95117 7.36 6.34117 7.75L7.05117 8.46C7.44117 8.85 8.07117 8.85 8.46117 8.46C8.85117 8.08 8.85117 7.44 8.47117 7.06ZM12.0016 1C11.4416 1 11.0016 1.45 11.0016 2V6C11.0016 6.55 11.4516 7 12.0016 7C12.5516 7 13.0016 6.55 13.0016 6V2C13.0016 1.45 12.5516 1 12.0016 1ZM17.6603 6.35C17.2703 5.96 16.6403 5.96 16.2503 6.35L15.5403 7.06C15.1503 7.45 15.1503 8.08 15.5403 8.47C15.9303 8.86 16.5603 8.86 16.9503 8.47L17.6603 7.76C18.0403 7.37 18.0403 6.73 17.6603 6.35ZM17.0015 12C17.0015 12.56 17.4515 13 18.0015 13H22.0015C22.5515 13 23.0015 12.55 23.0015 12C23.0015 11.45 22.5515 11 22.0015 11H18.0015C17.4515 11 17.0015 11.45 17.0015 12ZM11.9999 9C10.3399 9 8.99991 10.34 8.99991 12C8.99991 13.66 10.3399 15 11.9999 15C13.6599 15 14.9999 13.66 14.9999 12C14.9999 10.34 13.6599 9 11.9999 9ZM15.5311 16.94L16.2411 17.65C16.6311 18.04 17.2611 18.04 17.6511 17.65C18.0411 17.26 18.0411 16.63 17.6511 16.24L16.9411 15.53C16.5511 15.14 15.9211 15.14 15.5311 15.53C15.1511 15.92 15.1511 16.56 15.5311 16.94ZM6.34067 17.65C6.73067 18.04 7.36067 18.04 7.75067 17.65L8.46067 16.94C8.85067 16.55 8.85067 15.92 8.46067 15.53C8.07067 15.14 7.44067 15.14 7.05067 15.53L6.34067 16.24C5.96067 16.63 5.96067 17.27 6.34067 17.65ZM12.0016 23C12.5616 23 13.0016 22.55 13.0016 22V18C13.0016 17.45 12.5516 17 12.0016 17C11.4516 17 11.0016 17.45 11.0016 18V22C11.0016 22.55 11.4516 23 12.0016 23Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.00073 11H2.00073C1.45073 11 1.00073 11.45 1.00073 12C1.00073 12.55 1.45073 13 2.00073 13H6.00073C6.55073 13 7.00073 12.55 7.00073 12C7.00073 11.45 6.55073 11 6.00073 11ZM8.47117 7.06L7.75117 6.34C7.36117 5.95 6.73117 5.95 6.34117 6.34C5.95117 6.73 5.95117 7.36 6.34117 7.75L7.05117 8.46C7.44117 8.85 8.07117 8.85 8.46117 8.46C8.85117 8.08 8.85117 7.44 8.47117 7.06ZM12.0016 1C11.4416 1 11.0016 1.45 11.0016 2V6C11.0016 6.55 11.4516 7 12.0016 7C12.5516 7 13.0016 6.55 13.0016 6V2C13.0016 1.45 12.5516 1 12.0016 1ZM17.6603 6.35C17.2703 5.96 16.6403 5.96 16.2503 6.35L15.5403 7.06C15.1503 7.45 15.1503 8.08 15.5403 8.47C15.9303 8.86 16.5603 8.86 16.9503 8.47L17.6603 7.76C18.0403 7.37 18.0403 6.73 17.6603 6.35ZM17.0015 12C17.0015 12.56 17.4515 13 18.0015 13H22.0015C22.5515 13 23.0015 12.55 23.0015 12C23.0015 11.45 22.5515 11 22.0015 11H18.0015C17.4515 11 17.0015 11.45 17.0015 12ZM11.9999 9C10.3399 9 8.99991 10.34 8.99991 12C8.99991 13.66 10.3399 15 11.9999 15C13.6599 15 14.9999 13.66 14.9999 12C14.9999 10.34 13.6599 9 11.9999 9ZM15.5311 16.94L16.2411 17.65C16.6311 18.04 17.2611 18.04 17.6511 17.65C18.0411 17.26 18.0411 16.63 17.6511 16.24L16.9411 15.53C16.5511 15.14 15.9211 15.14 15.5311 15.53C15.1511 15.92 15.1511 16.56 15.5311 16.94ZM6.34067 17.65C6.73067 18.04 7.36067 18.04 7.75067 17.65L8.46067 16.94C8.85067 16.55 8.85067 15.92 8.46067 15.53C8.07067 15.14 7.44067 15.14 7.05067 15.53L6.34067 16.24C5.96067 16.63 5.96067 17.27 6.34067 17.65ZM12.0016 23C12.5616 23 13.0016 22.55 13.0016 22V18C13.0016 17.45 12.5516 17 12.0016 17C11.4516 17 11.0016 17.45 11.0016 18V22C11.0016 22.55 11.4516 23 12.0016 23Z\" fill=\"currentColor\"/>` },\r\n    key: { outlined: `<path d=\"M5.5875 13.4125C5.19583 13.0208 5 12.55 5 12C5 11.45 5.19583 10.9792 5.5875 10.5875C5.97917 10.1958 6.45 10 7 10C7.55 10 8.02083 10.1958 8.4125 10.5875C8.80417 10.9792 9 11.45 9 12C9 12.55 8.80417 13.0208 8.4125 13.4125C8.02083 13.8042 7.55 14 7 14C6.45 14 5.97917 13.8042 5.5875 13.4125ZM7 18C5.33333 18 3.91667 17.4167 2.75 16.25C1.58333 15.0833 1 13.6667 1 12C1 10.3333 1.58333 8.91667 2.75 7.75C3.91667 6.58333 5.33333 6 7 6C8.11667 6 9.12917 6.275 10.0375 6.825C10.9458 7.375 11.6667 8.1 12.2 9H20.575C20.7083 9 20.8375 9.025 20.9625 9.075C21.0875 9.125 21.2 9.2 21.3 9.3L23.3 11.3C23.4 11.4 23.4708 11.5083 23.5125 11.625C23.5542 11.7417 23.575 11.8667 23.575 12C23.575 12.1333 23.5542 12.2583 23.5125 12.375C23.4708 12.4917 23.4 12.6 23.3 12.7L20.125 15.875C20.0417 15.9583 19.9417 16.025 19.825 16.075C19.7083 16.125 19.5917 16.1583 19.475 16.175C19.3583 16.1917 19.2417 16.1833 19.125 16.15C19.0083 16.1167 18.9 16.0583 18.8 15.975L17.5 15L16.075 16.075C15.9917 16.1417 15.9 16.1917 15.8 16.225C15.7 16.2583 15.6 16.275 15.5 16.275C15.4 16.275 15.2958 16.2583 15.1875 16.225C15.0792 16.1917 14.9833 16.1417 14.9 16.075L13.375 15H12.2C11.6667 15.9 10.9458 16.625 10.0375 17.175C9.12917 17.725 8.11667 18 7 18ZM7 16C7.93333 16 8.75417 15.7167 9.4625 15.15C10.1708 14.5833 10.6417 13.8667 10.875 13H14L15.45 14.025L17.5 12.5L19.275 13.875L21.15 12L20.15 11H10.875C10.6417 10.1333 10.1708 9.41667 9.4625 8.85C8.75417 8.28333 7.93333 8 7 8C5.9 8 4.95833 8.39167 4.175 9.175C3.39167 9.95833 3 10.9 3 12C3 13.1 3.39167 14.0417 4.175 14.825C4.95833 15.6083 5.9 16 7 16Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4.875 14.125C4.29167 13.5417 4 12.8333 4 12C4 11.1667 4.29167 10.4583 4.875 9.875C5.45833 9.29167 6.16667 9 7 9C7.83333 9 8.54167 9.29167 9.125 9.875C9.70833 10.4583 10 11.1667 10 12C10 12.8333 9.70833 13.5417 9.125 14.125C8.54167 14.7083 7.83333 15 7 15C6.16667 15 5.45833 14.7083 4.875 14.125ZM7 18C8.28333 18 9.44167 17.6333 10.475 16.9C11.5083 16.1667 12.2333 15.2 12.65 14H13L14.3 15.3C14.4 15.4 14.5083 15.4708 14.625 15.5125C14.7417 15.5542 14.8667 15.575 15 15.575C15.1333 15.575 15.2583 15.5542 15.375 15.5125C15.4917 15.4708 15.6 15.4 15.7 15.3L17 14L18.75 15.375C18.85 15.4583 18.9625 15.5208 19.0875 15.5625C19.2125 15.6042 19.3417 15.6167 19.475 15.6C19.6083 15.5833 19.7292 15.5458 19.8375 15.4875C19.9458 15.4292 20.0417 15.35 20.125 15.25L22.375 12.675C22.4583 12.575 22.5208 12.4667 22.5625 12.35C22.6042 12.2333 22.625 12.1083 22.625 11.975C22.625 11.8417 22.6 11.7208 22.55 11.6125C22.5 11.5042 22.4333 11.4083 22.35 11.325L21.325 10.3C21.225 10.2 21.1125 10.125 20.9875 10.075C20.8625 10.025 20.7333 10 20.6 10H12.65C12.25 8.86667 11.5458 7.91667 10.5375 7.15C9.52917 6.38333 8.35 6 7 6C5.33333 6 3.91667 6.58333 2.75 7.75C1.58333 8.91667 1 10.3333 1 12C1 13.6667 1.58333 15.0833 2.75 16.25C3.91667 17.4167 5.33333 18 7 18Z\" fill=\"currentColor\"/>` },\r\n    'kid-boy': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.0001 8.26651C12.5536 8.26651 13.0844 8.04176 13.4758 7.6417C13.8672 7.24163 14.0871 6.69903 14.0871 6.13326C14.0871 5.56748 13.8672 5.02488 13.4758 4.62482C13.0844 4.22475 12.5536 4 12.0001 4C11.4466 4 10.9158 4.22475 10.5244 4.62482C10.133 5.02488 9.91311 5.56748 9.91311 6.13326C9.91311 6.69903 10.133 7.24163 10.5244 7.6417C10.9158 8.04176 11.4466 8.26651 12.0001 8.26651ZM17.9663 9.32461C18.0359 9.5983 17.9964 9.88907 17.8564 10.133C17.7164 10.3769 17.4874 10.554 17.2197 10.6254C16.2784 10.876 15.4222 11.068 14.6088 11.1992V14.5996L15.1228 18.8005C15.1559 19.0703 15.087 19.3428 14.9302 19.5623C14.7733 19.7819 14.5404 19.932 14.2789 19.9819C14.0175 20.0318 13.7473 19.9778 13.5235 19.8309C13.2997 19.6839 13.1393 19.4552 13.0749 19.1915L12.0314 14.9249C12.0107 14.8404 12.0002 14.7535 12.0001 14.6663C12 14.7535 11.9895 14.8404 11.9688 14.9249L10.9253 19.1915C10.8609 19.4552 10.7005 19.6839 10.4767 19.8309C10.2529 19.9778 9.9827 20.0318 9.72125 19.9819C9.45981 19.932 9.22688 19.7819 9.07005 19.5623C8.91322 19.3428 8.84432 19.0703 8.87745 18.8005L9.39137 14.5996V11.1853C8.58005 11.0531 7.72804 10.8654 6.79255 10.6286C6.52389 10.5605 6.29268 10.3862 6.14977 10.1439C6.00687 9.90161 5.96398 9.61122 6.03054 9.33661C6.09709 9.062 6.26765 8.82566 6.50468 8.67958C6.74172 8.53351 7.02581 8.48967 7.29447 8.5577C9.19258 9.03875 10.6123 9.27501 12.0043 9.28088C13.3932 9.28621 14.8087 9.06275 16.6937 8.5609C16.8264 8.52557 16.9645 8.51729 17.1003 8.53655C17.2361 8.55581 17.3668 8.60223 17.4851 8.67315C17.6033 8.74407 17.7067 8.83811 17.7893 8.94989C17.872 9.06167 17.9318 9.189 17.9663 9.32461Z\" fill=\"currentColor\"/>` },\r\n    'kid-girl': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.2652 10.527C17.519 10.4471 17.7349 10.2562 17.8664 9.99578C17.9978 9.73534 18.034 9.42628 17.9673 9.13554C17.9006 8.84479 17.7362 8.59576 17.5098 8.44239C17.2834 8.28902 17.0132 8.24365 16.7577 8.31611C14.8512 8.88697 13.4177 9.14241 12.0103 9.13555C10.5993 9.12926 9.16235 8.85955 7.24388 8.31268C6.98629 8.23917 6.71367 8.28551 6.486 8.44149C6.25833 8.59747 6.09426 8.85032 6.02988 9.14441C5.9655 9.4385 6.00608 9.74975 6.1427 10.0097C6.27932 10.2696 6.50079 10.4569 6.75838 10.5304C7.68433 10.7944 8.5277 11.0036 9.33102 11.1533C9.17286 12.3533 8.332 14.3299 7.847 15.3962C7.68483 15.754 7.88003 16.1934 8.22939 16.2443C11.2009 16.674 13.0804 16.6854 15.8147 16.2511C16.155 16.1968 16.3452 15.7722 16.1921 15.4208C15.7196 14.3402 14.8707 12.2945 14.6905 11.1676C15.4934 11.019 16.3377 10.8042 17.2652 10.527ZM9.5037 17.1511V19.1432C9.50376 19.3509 9.56992 19.5516 9.68986 19.7078C9.8098 19.8641 9.97537 19.9653 10.1558 19.9926C10.3362 20.0199 10.5191 19.9715 10.6706 19.8563C10.822 19.7412 10.9317 19.5672 10.9792 19.3666L11.4497 17.3763C10.7981 17.3385 10.1487 17.2633 9.5037 17.1511ZM13.0624 17.3723L13.5338 19.3666C13.5813 19.5672 13.691 19.7412 13.8425 19.8563C13.994 19.9715 14.1769 20.0199 14.3573 19.9926C14.5377 19.9653 14.7033 19.8641 14.8232 19.7078C14.9431 19.5516 15.0093 19.3509 15.0094 19.1432V17.1431C14.3639 17.2547 13.7142 17.3316 13.0624 17.3723Z\" fill=\"currentColor\"/><path d=\"M13.4758 7.6417C13.0844 8.04176 12.5536 8.26651 12.0001 8.26651C11.4466 8.26651 10.9157 8.04176 10.5244 7.6417C10.133 7.24163 9.91309 6.69903 9.91309 6.13326C9.91309 5.56748 10.133 5.02488 10.5244 4.62482C10.9157 4.22475 11.4466 4 12.0001 4C12.5536 4 13.0844 4.22475 13.4758 4.62482C13.8672 5.02488 14.0871 5.56748 14.0871 6.13326C14.0871 6.69903 13.8672 7.24163 13.4758 7.6417Z\" fill=\"currentColor\"/>` },\r\n    kids: { outlined: `<path d=\"M14.5 11.75C14.15 11.75 13.8542 11.6292 13.6125 11.3875C13.3708 11.1458 13.25 10.85 13.25 10.5C13.25 10.15 13.3708 9.85417 13.6125 9.6125C13.8542 9.37083 14.15 9.25 14.5 9.25C14.85 9.25 15.1458 9.37083 15.3875 9.6125C15.6292 9.85417 15.75 10.15 15.75 10.5C15.75 10.85 15.6292 11.1458 15.3875 11.3875C15.1458 11.6292 14.85 11.75 14.5 11.75ZM9.5 11.75C9.15 11.75 8.85417 11.6292 8.6125 11.3875C8.37083 11.1458 8.25 10.85 8.25 10.5C8.25 10.15 8.37083 9.85417 8.6125 9.6125C8.85417 9.37083 9.15 9.25 9.5 9.25C9.85 9.25 10.1458 9.37083 10.3875 9.6125C10.6292 9.85417 10.75 10.15 10.75 10.5C10.75 10.85 10.6292 11.1458 10.3875 11.3875C10.1458 11.6292 9.85 11.75 9.5 11.75ZM12 17C11 17 10.0958 16.725 9.2875 16.175C8.6483 15.7401 8.14198 15.1957 7.76853 14.542C7.62629 14.2929 7.81836 14 8.10514 14H15.8949C16.1816 14 16.3737 14.2929 16.2315 14.542C15.858 15.1957 15.3517 15.7401 14.7125 16.175C13.9042 16.725 13 17 12 17ZM12 21C10.75 21 9.57917 20.7625 8.4875 20.2875C7.39583 19.8125 6.44583 19.1708 5.6375 18.3625C4.82917 17.5542 4.1875 16.6042 3.7125 15.5125C3.2375 14.4208 3 13.25 3 12C3 10.75 3.2375 9.57917 3.7125 8.4875C4.1875 7.39583 4.82917 6.44583 5.6375 5.6375C6.44583 4.82917 7.39583 4.1875 8.4875 3.7125C9.57917 3.2375 10.75 3 12 3C13.25 3 14.4208 3.2375 15.5125 3.7125C16.6042 4.1875 17.5542 4.82917 18.3625 5.6375C19.1708 6.44583 19.8125 7.39583 20.2875 8.4875C20.7625 9.57917 21 10.75 21 12C21 13.25 20.7625 14.4208 20.2875 15.5125C19.8125 16.6042 19.1708 17.5542 18.3625 18.3625C17.5542 19.1708 16.6042 19.8125 15.5125 20.2875C14.4208 20.7625 13.25 21 12 21ZM12 19C13.9333 19 15.5833 18.3167 16.95 16.95C18.3167 15.5833 19 13.9333 19 12C19 10.0667 18.3167 8.41667 16.95 7.05C15.5833 5.68333 13.9333 5 12 5H11.7C11.6303 5 11.5606 5.0081 11.4908 5.02431C11.4303 5.03836 11.3759 5.07184 11.3366 5.11994C11.2712 5.2 11.2257 5.28502 11.2 5.375C11.1667 5.49167 11.15 5.61667 11.15 5.75C11.15 6.1 11.2708 6.39583 11.5125 6.6375C11.7542 6.87917 12.05 7 12.4 7C12.55 7 12.6875 6.975 12.8125 6.925C12.9375 6.875 13.0667 6.85 13.2 6.85C13.4 6.85 13.5667 6.925 13.7 7.075C13.8333 7.225 13.9 7.4 13.9 7.6C13.9 7.98333 13.7208 8.22917 13.3625 8.3375C13.0042 8.44583 12.6833 8.5 12.4 8.5C11.65 8.5 11.0042 8.22917 10.4625 7.6875C9.92083 7.14583 9.65 6.5 9.65 5.75V5.6C9.65 5.51137 9.56854 5.43881 9.48598 5.47107C8.18885 5.97805 7.12685 6.79603 6.3 7.925C5.43333 9.10833 5 10.4667 5 12C5 13.9333 5.68333 15.5833 7.05 16.95C8.41667 18.3167 10.0667 19 12 19Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M14.5 11.75C14.85 11.75 15.1458 11.6292 15.3875 11.3875C15.6292 11.1458 15.75 10.85 15.75 10.5C15.75 10.15 15.6292 9.85417 15.3875 9.6125C15.1458 9.37083 14.85 9.25 14.5 9.25C14.15 9.25 13.8542 9.37083 13.6125 9.6125C13.3708 9.85417 13.25 10.15 13.25 10.5C13.25 10.85 13.3708 11.1458 13.6125 11.3875C13.8542 11.6292 14.15 11.75 14.5 11.75ZM9.5 11.75C9.85 11.75 10.1458 11.6292 10.3875 11.3875C10.6292 11.1458 10.75 10.85 10.75 10.5C10.75 10.15 10.6292 9.85417 10.3875 9.6125C10.1458 9.37083 9.85 9.25 9.5 9.25C9.15 9.25 8.85417 9.37083 8.6125 9.6125C8.37083 9.85417 8.25 10.15 8.25 10.5C8.25 10.85 8.37083 11.1458 8.6125 11.3875C8.85417 11.6292 9.15 11.75 9.5 11.75ZM12 17C13 17 13.9042 16.725 14.7125 16.175C15.3517 15.7401 15.858 15.1957 16.2315 14.542C16.3737 14.2929 16.1816 14 15.8949 14H8.10514C7.81836 14 7.62629 14.2929 7.76853 14.542C8.14198 15.1957 8.6483 15.7401 9.2875 16.175C10.0958 16.725 11 17 12 17ZM12 21C10.75 21 9.57917 20.7625 8.4875 20.2875C7.39583 19.8125 6.44583 19.1708 5.6375 18.3625C4.82917 17.5542 4.1875 16.6042 3.7125 15.5125C3.2375 14.4208 3 13.25 3 12C3 10.75 3.2375 9.57917 3.7125 8.4875C4.1875 7.39583 4.82917 6.44583 5.6375 5.6375C6.44583 4.82917 7.39583 4.1875 8.4875 3.7125C9.57917 3.2375 10.75 3 12 3C13.25 3 14.4208 3.2375 15.5125 3.7125C16.6042 4.1875 17.5542 4.82917 18.3625 5.6375C19.1708 6.44583 19.8125 7.39583 20.2875 8.4875C20.7625 9.57917 21 10.75 21 12C21 13.25 20.7625 14.4208 20.2875 15.5125C19.8125 16.6042 19.1708 17.5542 18.3625 18.3625C17.5542 19.1708 16.6042 19.8125 15.5125 20.2875C14.4208 20.7625 13.25 21 12 21ZM12.4 8.5C12.6833 8.5 13.0042 8.44583 13.3625 8.3375C13.7208 8.22917 13.9 7.98333 13.9 7.6C13.9 7.4 13.8333 7.225 13.7 7.075C13.5667 6.925 13.4 6.85 13.2 6.85C13.0667 6.85 12.9375 6.875 12.8125 6.925C12.6875 6.975 12.55 7 12.4 7C12.05 7 11.7542 6.87917 11.5125 6.6375C11.2708 6.39583 11.15 6.1 11.15 5.75C11.15 5.56667 11.1792 5.4125 11.2375 5.2875C11.2654 5.2278 11.1879 5.06075 11.1226 5.06919C10.9371 5.09314 10.7545 5.12008 10.575 5.15C10.3337 5.19022 10.0977 5.25201 9.86719 5.33538C9.76015 5.37408 9.67662 5.46205 9.6625 5.575C9.65417 5.64167 9.65 5.7 9.65 5.75C9.65 6.5 9.92083 7.14583 10.4625 7.6875C11.0042 8.22917 11.65 8.5 12.4 8.5Z\" fill=\"currentColor\"/>` },\r\n    'kids-restriction-allergy': { outlined: `<path d=\"M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22V24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24V22C17.5228 22 22 17.5228 22 12Z\" fill=\"currentColor\"/><path d=\"M12.2143 17.5713C11.4821 17.5713 10.7946 17.4039 10.1518 17.0691C9.50891 16.7342 8.98213 16.2677 8.57141 15.6695L6 11.8928L6.25446 11.6383C6.43303 11.4508 6.65401 11.3436 6.9174 11.3169C7.1808 11.2901 7.41963 11.3526 7.63392 11.5044L9.10712 12.5222V7.39278C9.10712 7.24099 9.15846 7.11376 9.26114 7.01108C9.36382 6.90841 9.49105 6.85707 9.64284 6.85707C9.79462 6.85707 9.92185 6.90841 10.0245 7.01108C10.1272 7.11376 10.1785 7.24099 10.1785 7.39278V11.6785H11.25V6.32136C11.25 6.16957 11.3013 6.04234 11.404 5.93966C11.5067 5.83698 11.6339 5.78564 11.7857 5.78564C11.9375 5.78564 12.0647 5.83698 12.1674 5.93966C12.2701 6.04234 12.3214 6.16957 12.3214 6.32136V11.6785H13.3928V6.85707C13.3928 6.70528 13.4442 6.57805 13.5468 6.47537C13.6495 6.37269 13.7767 6.32136 13.9285 6.32136C14.0803 6.32136 14.2075 6.37269 14.3102 6.47537C14.4129 6.57805 14.4642 6.70528 14.4642 6.85707V11.6785H15.5357V7.92849C15.5357 7.7767 15.587 7.64947 15.6897 7.54679C15.7924 7.44412 15.9196 7.39278 16.0714 7.39278C16.2232 7.39278 16.3504 7.44412 16.4531 7.54679C16.5557 7.64947 16.6071 7.7767 16.6071 7.92849V13.1785C16.6071 14.4017 16.1807 15.4396 15.3281 16.2923C14.4754 17.145 13.4375 17.5713 12.2143 17.5713Z\" fill=\"currentColor\"/>` },\r\n    'kids-restriction-food': { outlined: `<path d=\"M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22V24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24V22C17.5228 22 22 17.5228 22 12Z\" fill=\"currentColor\"/><path d=\"M15.6642 14.179L12.9926 11.5075V9.30341C12.9926 9.00063 13.0572 8.69118 13.1863 8.37504C13.3155 8.05891 13.4824 7.77171 13.6873 7.51346C13.8921 7.25521 14.1192 7.04371 14.3685 6.87896C14.6179 6.71422 14.8627 6.63184 15.1032 6.63184C15.2635 6.63184 15.3971 6.69418 15.5039 6.81885C15.6108 6.94353 15.6642 7.09046 15.6642 7.25966V14.179ZM16.459 17.7856C16.3121 17.7856 16.1852 17.7322 16.0783 17.6254L15.2368 16.7972H15.6642C15.6642 16.9486 15.613 17.0755 15.5106 17.1779C15.4082 17.2803 15.2813 17.3315 15.1299 17.3315C14.9785 17.3315 14.8516 17.2803 14.7492 17.1779C14.6468 17.0755 14.5956 16.9486 14.5956 16.7972V16.156L6.26029 7.82069C6.15343 7.71383 6.1 7.5847 6.1 7.43331C6.1 7.28193 6.15343 7.1528 6.26029 7.04594C6.36716 6.93907 6.49405 6.88564 6.64099 6.88564C6.78793 6.88564 6.91483 6.93907 7.02169 7.04594L16.8397 16.8773C16.9466 16.9842 17 17.1088 17 17.2513C17 17.3938 16.9466 17.5185 16.8397 17.6254C16.7328 17.7322 16.6059 17.7856 16.459 17.7856ZM11.924 10.4388L10.8554 9.3702V7.16616C10.8554 7.01477 10.9066 6.88787 11.009 6.78546C11.1114 6.68305 11.2383 6.63184 11.3897 6.63184C11.5411 6.63184 11.668 6.68305 11.7704 6.78546C11.8728 6.88787 11.924 7.01477 11.924 7.16616V10.4388ZM10.3211 8.83589L9.25245 7.76726V7.16616C9.25245 7.01477 9.30365 6.88787 9.40606 6.78546C9.50848 6.68305 9.63538 6.63184 9.78676 6.63184C9.93815 6.63184 10.0651 6.68305 10.1675 6.78546C10.2699 6.88787 10.3211 7.01477 10.3211 7.16616V8.83589ZM8.71814 7.23295L8.11703 6.63184C8.28623 6.63184 8.42872 6.68973 8.54448 6.8055C8.66025 6.92126 8.71814 7.06375 8.71814 7.23295ZM9.40606 17.1645C9.30365 17.0621 9.25245 16.9352 9.25245 16.7838V12.4291C8.79828 12.3045 8.41758 12.0551 8.11035 11.6811C7.80312 11.3071 7.64951 10.8707 7.64951 10.372V7.68711L8.71814 8.75574V10.372H9.25245V9.29005L10.3211 10.3587V10.372H10.3344L11.5366 11.5742C11.3942 11.7791 11.2183 11.9549 11.009 12.1019C10.7997 12.2488 10.5704 12.3579 10.3211 12.4291V16.7838C10.3211 16.9352 10.2699 17.0621 10.1675 17.1645C10.0651 17.2669 9.93815 17.3181 9.78676 17.3181C9.63538 17.3181 9.50848 17.2669 9.40606 17.1645Z\" fill=\"currentColor\"/>` },\r\n    'kids-restriction-photo': { outlined: `<path d=\"M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22V24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24V22C17.5228 22 22 17.5228 22 12Z\" fill=\"currentColor\"/><path d=\"M16.716 17.9097L15.7927 17.0008H7.6129C7.29552 17.0008 7.02382 16.8878 6.79781 16.6618C6.57179 16.4357 6.45878 16.164 6.45878 15.8467V8.92194C6.45878 8.60455 6.57179 8.33285 6.79781 8.10684C7.02382 7.88082 7.29552 7.76781 7.6129 7.76781H8.20439V9.41244L6.09812 7.30616C5.98271 7.19075 5.925 7.0537 5.925 6.89501C5.925 6.73632 5.98271 6.59926 6.09812 6.48385C6.21353 6.36844 6.35058 6.31073 6.50927 6.31073C6.66797 6.31073 6.80502 6.36844 6.92043 6.48385L17.5384 17.1018C17.6538 17.2172 17.7115 17.3518 17.7115 17.5057C17.7115 17.6596 17.6538 17.7942 17.5384 17.9097C17.4229 18.0251 17.2859 18.0828 17.1272 18.0828C16.9685 18.0828 16.8315 18.0251 16.716 17.9097ZM17.322 15.0965C17.2162 15.0773 17.1152 15.0195 17.019 14.9234L14.8117 12.7161C14.8598 12.3122 14.819 11.9202 14.6891 11.5403C14.5593 11.1605 14.3501 10.8262 14.0616 10.5377C13.7826 10.2588 13.4532 10.0544 13.0733 9.92458C12.6934 9.79474 12.3015 9.75386 11.8976 9.80195L10.0221 7.94093C9.96443 7.88323 9.92355 7.82071 9.89951 7.75339C9.87546 7.68606 9.86344 7.61393 9.86344 7.53699C9.86344 7.46005 9.87546 7.39032 9.89951 7.3278C9.92355 7.26529 9.95962 7.20518 10.0077 7.14747L10.152 6.98878C10.2578 6.87337 10.3852 6.782 10.5343 6.71468C10.6833 6.64735 10.8396 6.61369 11.0031 6.61369H13.4556C13.6191 6.61369 13.7754 6.64735 13.9245 6.71468C14.0736 6.782 14.201 6.87337 14.3068 6.98878L15.0281 7.76781H16.8459C17.1633 7.76781 17.435 7.88082 17.661 8.10684C17.887 8.33285 18 8.60455 18 8.92194V14.5194C18 14.6541 17.9663 14.7647 17.899 14.8512C17.8317 14.9378 17.7451 15.0051 17.6393 15.0532C17.5335 15.1013 17.4277 15.1157 17.322 15.0965ZM12.2294 14.9811C12.4506 14.9811 12.6646 14.957 12.8714 14.9089C13.0782 14.8609 13.2777 14.7839 13.4701 14.6781L9.93557 11.1436C9.82978 11.336 9.75284 11.5355 9.70475 11.7423C9.65666 11.9491 9.63262 12.1631 9.63262 12.3843C9.63262 13.1056 9.88508 13.7188 10.39 14.2237C10.8949 14.7286 11.5081 14.9811 12.2294 14.9811ZM12.2294 13.827C11.8254 13.827 11.484 13.6875 11.2051 13.4086C10.9262 13.1297 10.7867 12.7882 10.7867 12.3843C10.7867 12.1919 10.8228 12.0068 10.8949 11.8289C10.9671 11.651 11.0705 11.4947 11.2051 11.36L13.2537 13.4086C13.119 13.5432 12.9627 13.6466 12.7848 13.7188C12.6069 13.7909 12.4217 13.827 12.2294 13.827Z\" fill=\"currentColor\"/>` },\r\n    'kids-restriction-special-needs': { outlined: `<path d=\"M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22V24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24V22C17.5228 22 22 17.5228 22 12Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.9401 9.1799C12.3608 9.1799 12.7642 9.00909 13.0616 8.70504C13.3591 8.40098 13.5262 7.9886 13.5262 7.55861C13.5262 7.12861 13.3591 6.71623 13.0616 6.41218C12.7642 6.10812 12.3608 5.93731 11.9401 5.93731C11.5194 5.93731 11.116 6.10812 10.8185 6.41218C10.5211 6.71623 10.354 7.12861 10.354 7.55861C10.354 7.9886 10.5211 8.40098 10.8185 8.70504C11.116 9.00909 11.5194 9.1799 11.9401 9.1799ZM16.4744 9.98407C16.5274 10.1921 16.4974 10.4131 16.391 10.5984C16.2845 10.7838 16.1105 10.9184 15.907 10.9727C15.1917 11.1632 14.5409 11.3091 13.9227 11.4088V13.9931L14.3133 17.1859C14.3385 17.3909 14.2861 17.598 14.167 17.7648C14.0478 17.9317 13.8707 18.0458 13.672 18.0837C13.4733 18.1216 13.268 18.0806 13.0979 17.9689C12.9278 17.8573 12.8059 17.6835 12.7569 17.483L11.9639 14.2404C11.9481 14.1761 11.9401 14.1101 11.9401 14.0438C11.94 14.1101 11.9321 14.1761 11.9163 14.2404L11.1232 17.483C11.0743 17.6835 10.9524 17.8573 10.7823 17.9689C10.6122 18.0806 10.4068 18.1216 10.2081 18.0837C10.0094 18.0458 9.83241 17.9317 9.71321 17.7648C9.59402 17.598 9.54166 17.3909 9.56683 17.1859L9.95742 13.9931V11.3982C9.34081 11.2977 8.69327 11.155 7.98229 10.9751C7.77811 10.9234 7.60238 10.7909 7.49377 10.6067C7.38517 10.4226 7.35257 10.2019 7.40315 9.99319C7.45374 9.78448 7.58336 9.60486 7.76351 9.49384C7.94366 9.38282 8.15957 9.3495 8.36375 9.40121C9.80634 9.76681 10.8853 9.94637 11.9433 9.95083C12.9988 9.95488 14.0746 9.78505 15.5073 9.40364C15.6081 9.37679 15.7131 9.3705 15.8163 9.38514C15.9195 9.39977 16.0189 9.43505 16.1087 9.48895C16.1986 9.54285 16.2771 9.61432 16.34 9.69928C16.4028 9.78423 16.4482 9.881 16.4744 9.98407Z\" fill=\"currentColor\"/>` },\r\n    leadership: { outlined: `<path d=\"M10 19L5.45 21.275C5.11667 21.4417 4.79167 21.4292 4.475 21.2375C4.15833 21.0458 4 20.7583 4 20.375V8C4 7.45 4.19583 6.97917 4.5875 6.5875C4.97917 6.19583 5.45 6 6 6H14C14.55 6 15.0208 6.19583 15.4125 6.5875C15.8042 6.97917 16 7.45 16 8V20.375C16 20.7583 15.8417 21.0458 15.525 21.2375C15.2083 21.4292 14.8833 21.4417 14.55 21.275L10 19ZM6 18.975L9.05 17.325C9.35 17.1583 9.66667 17.075 10 17.075C10.3333 17.075 10.65 17.1583 10.95 17.325L14 18.975V8H6V18.975ZM18.2875 17.7125C18.0958 17.5208 18 17.2833 18 17V4H8C7.71667 4 7.47917 3.90417 7.2875 3.7125C7.09583 3.52083 7 3.28333 7 3C7 2.71667 7.09583 2.47917 7.2875 2.2875C7.47917 2.09583 7.71667 2 8 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V17C20 17.2833 19.9042 17.5208 19.7125 17.7125C19.5208 17.9042 19.2833 18 19 18C18.7167 18 18.4792 17.9042 18.2875 17.7125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10 19L5.45 21.275C5.11667 21.4417 4.79167 21.4292 4.475 21.2375C4.15833 21.0458 4 20.7583 4 20.375V8C4 7.45 4.19583 6.97917 4.5875 6.5875C4.97917 6.19583 5.45 6 6 6H14C14.55 6 15.0208 6.19583 15.4125 6.5875C15.8042 6.97917 16 7.45 16 8V20.375C16 20.7583 15.8417 21.0458 15.525 21.2375C15.2083 21.4292 14.8833 21.4417 14.55 21.275L10 19ZM18.2875 17.7125C18.0958 17.5208 18 17.2833 18 17V4H8C7.71667 4 7.47917 3.90417 7.2875 3.7125C7.09583 3.52083 7 3.28333 7 3C7 2.71667 7.09583 2.47917 7.2875 2.2875C7.47917 2.09583 7.71667 2 8 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V17C20 17.2833 19.9042 17.5208 19.7125 17.7125C19.5208 17.9042 19.2833 18 19 18C18.7167 18 18.4792 17.9042 18.2875 17.7125Z\" fill=\"currentColor\"/>` },\r\n    'library-music': { outlined: `<path d=\"M12.5 15C13.2 15 13.7917 14.7583 14.275 14.275C14.7583 13.7917 15 13.2 15 12.5V7H17C17.2833 7 17.5208 6.90417 17.7125 6.7125C17.9042 6.52083 18 6.28333 18 6C18 5.71667 17.9042 5.47917 17.7125 5.2875C17.5208 5.09583 17.2833 5 17 5H15C14.7167 5 14.4792 5.09583 14.2875 5.2875C14.0958 5.47917 14 5.71667 14 6V10.5C13.7833 10.3333 13.55 10.2083 13.3 10.125C13.05 10.0417 12.7833 10 12.5 10C11.8 10 11.2083 10.2417 10.725 10.725C10.2417 11.2083 10 11.8 10 12.5C10 13.2 10.2417 13.7917 10.725 14.275C11.2083 14.7583 11.8 15 12.5 15ZM8 18C7.45 18 6.97917 17.8042 6.5875 17.4125C6.19583 17.0208 6 16.55 6 16V4C6 3.45 6.19583 2.97917 6.5875 2.5875C6.97917 2.19583 7.45 2 8 2H20C20.55 2 21.0208 2.19583 21.4125 2.5875C21.8042 2.97917 22 3.45 22 4V16C22 16.55 21.8042 17.0208 21.4125 17.4125C21.0208 17.8042 20.55 18 20 18H8ZM8 16H20V4H8V16ZM4 22C3.45 22 2.97917 21.8042 2.5875 21.4125C2.19583 21.0208 2 20.55 2 20V7C2 6.71667 2.09583 6.47917 2.2875 6.2875C2.47917 6.09583 2.71667 6 3 6C3.28333 6 3.52083 6.09583 3.7125 6.2875C3.90417 6.47917 4 6.71667 4 7V20H17C17.2833 20 17.5208 20.0958 17.7125 20.2875C17.9042 20.4792 18 20.7167 18 21C18 21.2833 17.9042 21.5208 17.7125 21.7125C17.5208 21.9042 17.2833 22 17 22H4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.5 15C13.2 15 13.7917 14.7583 14.275 14.275C14.7583 13.7917 15 13.2 15 12.5V7H17C17.2833 7 17.5208 6.90417 17.7125 6.7125C17.9042 6.52083 18 6.28333 18 6C18 5.71667 17.9042 5.47917 17.7125 5.2875C17.5208 5.09583 17.2833 5 17 5H15C14.7167 5 14.4792 5.09583 14.2875 5.2875C14.0958 5.47917 14 5.71667 14 6V10.5C13.7833 10.3333 13.55 10.2083 13.3 10.125C13.05 10.0417 12.7833 10 12.5 10C11.8 10 11.2083 10.2417 10.725 10.725C10.2417 11.2083 10 11.8 10 12.5C10 13.2 10.2417 13.7917 10.725 14.275C11.2083 14.7583 11.8 15 12.5 15ZM8 18C7.45 18 6.97917 17.8042 6.5875 17.4125C6.19583 17.0208 6 16.55 6 16V4C6 3.45 6.19583 2.97917 6.5875 2.5875C6.97917 2.19583 7.45 2 8 2H20C20.55 2 21.0208 2.19583 21.4125 2.5875C21.8042 2.97917 22 3.45 22 4V16C22 16.55 21.8042 17.0208 21.4125 17.4125C21.0208 17.8042 20.55 18 20 18H8ZM4 22C3.45 22 2.97917 21.8042 2.5875 21.4125C2.19583 21.0208 2 20.55 2 20V7C2 6.71667 2.09583 6.47917 2.2875 6.2875C2.47917 6.09583 2.71667 6 3 6C3.28333 6 3.52083 6.09583 3.7125 6.2875C3.90417 6.47917 4 6.71667 4 7V20H17C17.2833 20 17.5208 20.0958 17.7125 20.2875C17.9042 20.4792 18 20.7167 18 21C18 21.2833 17.9042 21.5208 17.7125 21.7125C17.5208 21.9042 17.2833 22 17 22H4Z\" fill=\"currentColor\"/>` },\r\n    'light-mode': { outlined: `<path d=\"M14.125 14.125C14.7083 13.5417 15 12.8333 15 12C15 11.1667 14.7083 10.4583 14.125 9.875C13.5417 9.29167 12.8333 9 12 9C11.1667 9 10.4583 9.29167 9.875 9.875C9.29167 10.4583 9 11.1667 9 12C9 12.8333 9.29167 13.5417 9.875 14.125C10.4583 14.7083 11.1667 15 12 15C12.8333 15 13.5417 14.7083 14.125 14.125ZM8.4625 15.5375C7.4875 14.5625 7 13.3833 7 12C7 10.6167 7.4875 9.4375 8.4625 8.4625C9.4375 7.4875 10.6167 7 12 7C13.3833 7 14.5625 7.4875 15.5375 8.4625C16.5125 9.4375 17 10.6167 17 12C17 13.3833 16.5125 14.5625 15.5375 15.5375C14.5625 16.5125 13.3833 17 12 17C10.6167 17 9.4375 16.5125 8.4625 15.5375ZM2 13C1.71667 13 1.47917 12.9042 1.2875 12.7125C1.09583 12.5208 1 12.2833 1 12C1 11.7167 1.09583 11.4792 1.2875 11.2875C1.47917 11.0958 1.71667 11 2 11H4C4.28333 11 4.52083 11.0958 4.7125 11.2875C4.90417 11.4792 5 11.7167 5 12C5 12.2833 4.90417 12.5208 4.7125 12.7125C4.52083 12.9042 4.28333 13 4 13H2ZM20 13C19.7167 13 19.4792 12.9042 19.2875 12.7125C19.0958 12.5208 19 12.2833 19 12C19 11.7167 19.0958 11.4792 19.2875 11.2875C19.4792 11.0958 19.7167 11 20 11H22C22.2833 11 22.5208 11.0958 22.7125 11.2875C22.9042 11.4792 23 11.7167 23 12C23 12.2833 22.9042 12.5208 22.7125 12.7125C22.5208 12.9042 22.2833 13 22 13H20ZM11.2875 4.7125C11.0958 4.52083 11 4.28333 11 4V2C11 1.71667 11.0958 1.47917 11.2875 1.2875C11.4792 1.09583 11.7167 1 12 1C12.2833 1 12.5208 1.09583 12.7125 1.2875C12.9042 1.47917 13 1.71667 13 2V4C13 4.28333 12.9042 4.52083 12.7125 4.7125C12.5208 4.90417 12.2833 5 12 5C11.7167 5 11.4792 4.90417 11.2875 4.7125ZM11.2875 22.7125C11.0958 22.5208 11 22.2833 11 22V20C11 19.7167 11.0958 19.4792 11.2875 19.2875C11.4792 19.0958 11.7167 19 12 19C12.2833 19 12.5208 19.0958 12.7125 19.2875C12.9042 19.4792 13 19.7167 13 20V22C13 22.2833 12.9042 22.5208 12.7125 22.7125C12.5208 22.9042 12.2833 23 12 23C11.7167 23 11.4792 22.9042 11.2875 22.7125ZM5.65 7.05L4.575 6C4.375 5.81667 4.27917 5.58333 4.2875 5.3C4.29583 5.01667 4.39167 4.775 4.575 4.575C4.775 4.375 5.01667 4.275 5.3 4.275C5.58333 4.275 5.81667 4.375 6 4.575L7.05 5.65C7.23333 5.85 7.325 6.08333 7.325 6.35C7.325 6.61667 7.23333 6.85 7.05 7.05C6.86667 7.25 6.6375 7.34583 6.3625 7.3375C6.0875 7.32917 5.85 7.23333 5.65 7.05ZM18 19.425L16.95 18.35C16.7667 18.15 16.675 17.9125 16.675 17.6375C16.675 17.3625 16.7667 17.1333 16.95 16.95C17.1333 16.75 17.3625 16.6542 17.6375 16.6625C17.9125 16.6708 18.15 16.7667 18.35 16.95L19.425 18C19.625 18.1833 19.7208 18.4167 19.7125 18.7C19.7042 18.9833 19.6083 19.225 19.425 19.425C19.225 19.625 18.9833 19.725 18.7 19.725C18.4167 19.725 18.1833 19.625 18 19.425ZM16.95 7.05C16.75 6.86667 16.6542 6.6375 16.6625 6.3625C16.6708 6.0875 16.7667 5.85 16.95 5.65L18 4.575C18.1833 4.375 18.4167 4.27917 18.7 4.2875C18.9833 4.29583 19.225 4.39167 19.425 4.575C19.625 4.775 19.725 5.01667 19.725 5.3C19.725 5.58333 19.625 5.81667 19.425 6L18.35 7.05C18.15 7.23333 17.9167 7.325 17.65 7.325C17.3833 7.325 17.15 7.23333 16.95 7.05ZM4.575 19.425C4.375 19.225 4.275 18.9833 4.275 18.7C4.275 18.4167 4.375 18.1833 4.575 18L5.65 16.95C5.85 16.7667 6.0875 16.675 6.3625 16.675C6.6375 16.675 6.86667 16.7667 7.05 16.95C7.25 17.1333 7.34583 17.3625 7.3375 17.6375C7.32917 17.9125 7.23333 18.15 7.05 18.35L6 19.425C5.81667 19.625 5.58333 19.7208 5.3 19.7125C5.01667 19.7042 4.775 19.6083 4.575 19.425Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8.4625 15.5375C7.4875 14.5625 7 13.3833 7 12C7 10.6167 7.4875 9.4375 8.4625 8.4625C9.4375 7.4875 10.6167 7 12 7C13.3833 7 14.5625 7.4875 15.5375 8.4625C16.5125 9.4375 17 10.6167 17 12C17 13.3833 16.5125 14.5625 15.5375 15.5375C14.5625 16.5125 13.3833 17 12 17C10.6167 17 9.4375 16.5125 8.4625 15.5375ZM2 13C1.71667 13 1.47917 12.9042 1.2875 12.7125C1.09583 12.5208 1 12.2833 1 12C1 11.7167 1.09583 11.4792 1.2875 11.2875C1.47917 11.0958 1.71667 11 2 11H4C4.28333 11 4.52083 11.0958 4.7125 11.2875C4.90417 11.4792 5 11.7167 5 12C5 12.2833 4.90417 12.5208 4.7125 12.7125C4.52083 12.9042 4.28333 13 4 13H2ZM20 13C19.7167 13 19.4792 12.9042 19.2875 12.7125C19.0958 12.5208 19 12.2833 19 12C19 11.7167 19.0958 11.4792 19.2875 11.2875C19.4792 11.0958 19.7167 11 20 11H22C22.2833 11 22.5208 11.0958 22.7125 11.2875C22.9042 11.4792 23 11.7167 23 12C23 12.2833 22.9042 12.5208 22.7125 12.7125C22.5208 12.9042 22.2833 13 22 13H20ZM11.2875 4.7125C11.0958 4.52083 11 4.28333 11 4V2C11 1.71667 11.0958 1.47917 11.2875 1.2875C11.4792 1.09583 11.7167 1 12 1C12.2833 1 12.5208 1.09583 12.7125 1.2875C12.9042 1.47917 13 1.71667 13 2V4C13 4.28333 12.9042 4.52083 12.7125 4.7125C12.5208 4.90417 12.2833 5 12 5C11.7167 5 11.4792 4.90417 11.2875 4.7125ZM11.2875 22.7125C11.0958 22.5208 11 22.2833 11 22V20C11 19.7167 11.0958 19.4792 11.2875 19.2875C11.4792 19.0958 11.7167 19 12 19C12.2833 19 12.5208 19.0958 12.7125 19.2875C12.9042 19.4792 13 19.7167 13 20V22C13 22.2833 12.9042 22.5208 12.7125 22.7125C12.5208 22.9042 12.2833 23 12 23C11.7167 23 11.4792 22.9042 11.2875 22.7125ZM5.65 7.05L4.575 6C4.375 5.81667 4.27917 5.58333 4.2875 5.3C4.29583 5.01667 4.39167 4.775 4.575 4.575C4.775 4.375 5.01667 4.275 5.3 4.275C5.58333 4.275 5.81667 4.375 6 4.575L7.05 5.65C7.23333 5.85 7.325 6.08333 7.325 6.35C7.325 6.61667 7.23333 6.85 7.05 7.05C6.86667 7.25 6.6375 7.34583 6.3625 7.3375C6.0875 7.32917 5.85 7.23333 5.65 7.05ZM18 19.425L16.95 18.35C16.7667 18.15 16.675 17.9125 16.675 17.6375C16.675 17.3625 16.7667 17.1333 16.95 16.95C17.1333 16.75 17.3625 16.6542 17.6375 16.6625C17.9125 16.6708 18.15 16.7667 18.35 16.95L19.425 18C19.625 18.1833 19.7208 18.4167 19.7125 18.7C19.7042 18.9833 19.6083 19.225 19.425 19.425C19.225 19.625 18.9833 19.725 18.7 19.725C18.4167 19.725 18.1833 19.625 18 19.425ZM16.95 7.05C16.75 6.86667 16.6542 6.6375 16.6625 6.3625C16.6708 6.0875 16.7667 5.85 16.95 5.65L18 4.575C18.1833 4.375 18.4167 4.27917 18.7 4.2875C18.9833 4.29583 19.225 4.39167 19.425 4.575C19.625 4.775 19.725 5.01667 19.725 5.3C19.725 5.58333 19.625 5.81667 19.425 6L18.35 7.05C18.15 7.23333 17.9167 7.325 17.65 7.325C17.3833 7.325 17.15 7.23333 16.95 7.05ZM4.575 19.425C4.375 19.225 4.275 18.9833 4.275 18.7C4.275 18.4167 4.375 18.1833 4.575 18L5.65 16.95C5.85 16.7667 6.0875 16.675 6.3625 16.675C6.6375 16.675 6.86667 16.7667 7.05 16.95C7.25 17.1333 7.34583 17.3625 7.3375 17.6375C7.32917 17.9125 7.23333 18.15 7.05 18.35L6 19.425C5.81667 19.625 5.58333 19.7208 5.3 19.7125C5.01667 19.7042 4.775 19.6083 4.575 19.425Z\" fill=\"currentColor\"/>` },\r\n    like: { outlined: `<path d=\"M20.0952 8.93814C20.6032 8.93814 21.0476 9.12371 21.4286 9.49485C21.8095 9.86598 22 10.299 22 10.7938V12.6495C22 12.7577 21.9841 12.8737 21.9524 12.9974C21.9206 13.1211 21.8889 13.2371 21.8571 13.3454L19 19.8866C18.8571 20.1959 18.619 20.4588 18.2857 20.6753C17.9524 20.8918 17.6032 21 17.2381 21H6.7619V8.93814L12.4762 3.41753C12.7143 3.18557 12.996 3.05026 13.3214 3.0116C13.6468 2.97294 13.9603 3.03093 14.2619 3.18557C14.5635 3.34021 14.7857 3.5567 14.9286 3.83505C15.0714 4.1134 15.1032 4.39948 15.0238 4.6933L13.9524 8.93814H20.0952ZM8.66667 9.7268V19.1443H17.2381L20.0952 12.6495V10.7938H11.5238L12.8095 5.69072L8.66667 9.7268ZM3.90476 21C3.38095 21 2.93254 20.8183 2.55952 20.4549C2.18651 20.0915 2 19.6546 2 19.1443V10.7938C2 10.2835 2.18651 9.84665 2.55952 9.48325C2.93254 9.11985 3.38095 8.93814 3.90476 8.93814H6.7619V10.7938H3.90476V19.1443H6.7619V21H3.90476Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M20.0952 8.9489C20.6032 8.9489 21.0476 9.1343 21.4286 9.5051C21.8095 9.8759 22 10.3085 22 10.8029V12.6569C22 12.7651 21.9881 12.881 21.9643 13.0046C21.9405 13.1282 21.9048 13.244 21.8571 13.3522L19 19.8876C18.8571 20.1966 18.619 20.4592 18.2857 20.6755C17.9524 20.8918 17.6032 21 17.2381 21H9.61905C9.09524 21 8.64683 20.8185 8.27381 20.4554C7.90079 20.0923 7.71429 19.6558 7.71429 19.146V9.71368C7.71429 9.46648 7.76587 9.23086 7.86905 9.00683C7.97222 8.78281 8.11111 8.58582 8.28571 8.41587L13.4524 3.41002C13.6905 3.19372 13.9722 3.06239 14.2976 3.01604C14.623 2.96969 14.9365 3.02377 15.2381 3.17827C15.5397 3.33277 15.7579 3.54907 15.8929 3.82718C16.0278 4.10528 16.0556 4.39111 15.9762 4.68466L14.9048 8.9489H20.0952ZM3.90476 21C3.38095 21 2.93254 20.8185 2.55952 20.4554C2.18651 20.0923 2 19.6558 2 19.146V10.8029C2 10.2931 2.18651 9.85659 2.55952 9.49351C2.93254 9.13043 3.38095 8.9489 3.90476 8.9489C4.42857 8.9489 4.87698 9.13043 5.25 9.49351C5.62302 9.85659 5.80952 10.2931 5.80952 10.8029V19.146C5.80952 19.6558 5.62302 20.0923 5.25 20.4554C4.87698 20.8185 4.42857 21 3.90476 21Z\" fill=\"currentColor\"/>` },\r\n    'list-ordered': { outlined: `<path d=\"M3.75 22C3.53333 22 3.35417 21.9292 3.2125 21.7875C3.07083 21.6458 3 21.4667 3 21.25C3 21.0333 3.07083 20.8542 3.2125 20.7125C3.35417 20.5708 3.53333 20.5 3.75 20.5H5.5V19.75H4.75C4.53333 19.75 4.35417 19.6792 4.2125 19.5375C4.07083 19.3958 4 19.2167 4 19C4 18.7833 4.07083 18.6042 4.2125 18.4625C4.35417 18.3208 4.53333 18.25 4.75 18.25H5.5V17.5H3.75C3.53333 17.5 3.35417 17.4292 3.2125 17.2875C3.07083 17.1458 3 16.9667 3 16.75C3 16.5333 3.07083 16.3542 3.2125 16.2125C3.35417 16.0708 3.53333 16 3.75 16H6C6.28333 16 6.52083 16.0958 6.7125 16.2875C6.90417 16.4792 7 16.7167 7 17V18C7 18.2833 6.90417 18.5208 6.7125 18.7125C6.52083 18.9042 6.28333 19 6 19C6.28333 19 6.52083 19.0958 6.7125 19.2875C6.90417 19.4792 7 19.7167 7 20V21C7 21.2833 6.90417 21.5208 6.7125 21.7125C6.52083 21.9042 6.28333 22 6 22H3.75ZM3.75 15C3.53333 15 3.35417 14.9292 3.2125 14.7875C3.07083 14.6458 3 14.4667 3 14.25V12.25C3 11.9667 3.09583 11.7292 3.2875 11.5375C3.47917 11.3458 3.71667 11.25 4 11.25H5.5V10.5H3.75C3.53333 10.5 3.35417 10.4292 3.2125 10.2875C3.07083 10.1458 3 9.96667 3 9.75C3 9.53333 3.07083 9.35417 3.2125 9.2125C3.35417 9.07083 3.53333 9 3.75 9H6C6.28333 9 6.52083 9.09583 6.7125 9.2875C6.90417 9.47917 7 9.71667 7 10V11.75C7 12.0333 6.90417 12.2708 6.7125 12.4625C6.52083 12.6542 6.28333 12.75 6 12.75H4.5V13.5H6.25C6.46667 13.5 6.64583 13.5708 6.7875 13.7125C6.92917 13.8542 7 14.0333 7 14.25C7 14.4667 6.92917 14.6458 6.7875 14.7875C6.64583 14.9292 6.46667 15 6.25 15H3.75ZM4.7125 7.7875C4.57083 7.64583 4.5 7.46667 4.5 7.25V3.5H3.75C3.53333 3.5 3.35417 3.42917 3.2125 3.2875C3.07083 3.14583 3 2.96667 3 2.75C3 2.53333 3.07083 2.35417 3.2125 2.2125C3.35417 2.07083 3.53333 2 3.75 2H5.25C5.46667 2 5.64583 2.07083 5.7875 2.2125C5.92917 2.35417 6 2.53333 6 2.75V7.25C6 7.46667 5.92917 7.64583 5.7875 7.7875C5.64583 7.92917 5.46667 8 5.25 8C5.03333 8 4.85417 7.92917 4.7125 7.7875ZM10 19C9.71667 19 9.47917 18.9042 9.2875 18.7125C9.09583 18.5208 9 18.2833 9 18C9 17.7167 9.09583 17.4792 9.2875 17.2875C9.47917 17.0958 9.71667 17 10 17H20C20.2833 17 20.5208 17.0958 20.7125 17.2875C20.9042 17.4792 21 17.7167 21 18C21 18.2833 20.9042 18.5208 20.7125 18.7125C20.5208 18.9042 20.2833 19 20 19H10ZM10 13C9.71667 13 9.47917 12.9042 9.2875 12.7125C9.09583 12.5208 9 12.2833 9 12C9 11.7167 9.09583 11.4792 9.2875 11.2875C9.47917 11.0958 9.71667 11 10 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H10ZM10 7C9.71667 7 9.47917 6.90417 9.2875 6.7125C9.09583 6.52083 9 6.28333 9 6C9 5.71667 9.09583 5.47917 9.2875 5.2875C9.47917 5.09583 9.71667 5 10 5H20C20.2833 5 20.5208 5.09583 20.7125 5.2875C20.9042 5.47917 21 5.71667 21 6C21 6.28333 20.9042 6.52083 20.7125 6.7125C20.5208 6.90417 20.2833 7 20 7H10Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M3.75 22C3.53333 22 3.35417 21.9292 3.2125 21.7875C3.07083 21.6458 3 21.4667 3 21.25C3 21.0333 3.07083 20.8542 3.2125 20.7125C3.35417 20.5708 3.53333 20.5 3.75 20.5H5.5V19.75H4.75C4.53333 19.75 4.35417 19.6792 4.2125 19.5375C4.07083 19.3958 4 19.2167 4 19C4 18.7833 4.07083 18.6042 4.2125 18.4625C4.35417 18.3208 4.53333 18.25 4.75 18.25H5.5V17.5H3.75C3.53333 17.5 3.35417 17.4292 3.2125 17.2875C3.07083 17.1458 3 16.9667 3 16.75C3 16.5333 3.07083 16.3542 3.2125 16.2125C3.35417 16.0708 3.53333 16 3.75 16H6C6.28333 16 6.52083 16.0958 6.7125 16.2875C6.90417 16.4792 7 16.7167 7 17V18C7 18.2833 6.90417 18.5208 6.7125 18.7125C6.52083 18.9042 6.28333 19 6 19C6.28333 19 6.52083 19.0958 6.7125 19.2875C6.90417 19.4792 7 19.7167 7 20V21C7 21.2833 6.90417 21.5208 6.7125 21.7125C6.52083 21.9042 6.28333 22 6 22H3.75ZM3.75 15C3.53333 15 3.35417 14.9292 3.2125 14.7875C3.07083 14.6458 3 14.4667 3 14.25V12.25C3 11.9667 3.09583 11.7292 3.2875 11.5375C3.47917 11.3458 3.71667 11.25 4 11.25H5.5V10.5H3.75C3.53333 10.5 3.35417 10.4292 3.2125 10.2875C3.07083 10.1458 3 9.96667 3 9.75C3 9.53333 3.07083 9.35417 3.2125 9.2125C3.35417 9.07083 3.53333 9 3.75 9H6C6.28333 9 6.52083 9.09583 6.7125 9.2875C6.90417 9.47917 7 9.71667 7 10V11.75C7 12.0333 6.90417 12.2708 6.7125 12.4625C6.52083 12.6542 6.28333 12.75 6 12.75H4.5V13.5H6.25C6.46667 13.5 6.64583 13.5708 6.7875 13.7125C6.92917 13.8542 7 14.0333 7 14.25C7 14.4667 6.92917 14.6458 6.7875 14.7875C6.64583 14.9292 6.46667 15 6.25 15H3.75ZM4.7125 7.7875C4.57083 7.64583 4.5 7.46667 4.5 7.25V3.5H3.75C3.53333 3.5 3.35417 3.42917 3.2125 3.2875C3.07083 3.14583 3 2.96667 3 2.75C3 2.53333 3.07083 2.35417 3.2125 2.2125C3.35417 2.07083 3.53333 2 3.75 2H5.25C5.46667 2 5.64583 2.07083 5.7875 2.2125C5.92917 2.35417 6 2.53333 6 2.75V7.25C6 7.46667 5.92917 7.64583 5.7875 7.7875C5.64583 7.92917 5.46667 8 5.25 8C5.03333 8 4.85417 7.92917 4.7125 7.7875ZM10 19C9.71667 19 9.47917 18.9042 9.2875 18.7125C9.09583 18.5208 9 18.2833 9 18C9 17.7167 9.09583 17.4792 9.2875 17.2875C9.47917 17.0958 9.71667 17 10 17H20C20.2833 17 20.5208 17.0958 20.7125 17.2875C20.9042 17.4792 21 17.7167 21 18C21 18.2833 20.9042 18.5208 20.7125 18.7125C20.5208 18.9042 20.2833 19 20 19H10ZM10 13C9.71667 13 9.47917 12.9042 9.2875 12.7125C9.09583 12.5208 9 12.2833 9 12C9 11.7167 9.09583 11.4792 9.2875 11.2875C9.47917 11.0958 9.71667 11 10 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H10ZM10 7C9.71667 7 9.47917 6.90417 9.2875 6.7125C9.09583 6.52083 9 6.28333 9 6C9 5.71667 9.09583 5.47917 9.2875 5.2875C9.47917 5.09583 9.71667 5 10 5H20C20.2833 5 20.5208 5.09583 20.7125 5.2875C20.9042 5.47917 21 5.71667 21 6C21 6.28333 20.9042 6.52083 20.7125 6.7125C20.5208 6.90417 20.2833 7 20 7H10Z\" fill=\"currentColor\"/>` },\r\n    'list-unordered': { outlined: `<path d=\"M10 19C9.71667 19 9.47917 18.9042 9.2875 18.7125C9.09583 18.5208 9 18.2833 9 18C9 17.7167 9.09583 17.4792 9.2875 17.2875C9.47917 17.0958 9.71667 17 10 17H20C20.2833 17 20.5208 17.0958 20.7125 17.2875C20.9042 17.4792 21 17.7167 21 18C21 18.2833 20.9042 18.5208 20.7125 18.7125C20.5208 18.9042 20.2833 19 20 19H10ZM10 13C9.71667 13 9.47917 12.9042 9.2875 12.7125C9.09583 12.5208 9 12.2833 9 12C9 11.7167 9.09583 11.4792 9.2875 11.2875C9.47917 11.0958 9.71667 11 10 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H10ZM10 7C9.71667 7 9.47917 6.90417 9.2875 6.7125C9.09583 6.52083 9 6.28333 9 6C9 5.71667 9.09583 5.47917 9.2875 5.2875C9.47917 5.09583 9.71667 5 10 5H20C20.2833 5 20.5208 5.09583 20.7125 5.2875C20.9042 5.47917 21 5.71667 21 6C21 6.28333 20.9042 6.52083 20.7125 6.7125C20.5208 6.90417 20.2833 7 20 7H10ZM5 20C4.45 20 3.97917 19.8042 3.5875 19.4125C3.19583 19.0208 3 18.55 3 18C3 17.45 3.19583 16.9792 3.5875 16.5875C3.97917 16.1958 4.45 16 5 16C5.55 16 6.02083 16.1958 6.4125 16.5875C6.80417 16.9792 7 17.45 7 18C7 18.55 6.80417 19.0208 6.4125 19.4125C6.02083 19.8042 5.55 20 5 20ZM5 14C4.45 14 3.97917 13.8042 3.5875 13.4125C3.19583 13.0208 3 12.55 3 12C3 11.45 3.19583 10.9792 3.5875 10.5875C3.97917 10.1958 4.45 10 5 10C5.55 10 6.02083 10.1958 6.4125 10.5875C6.80417 10.9792 7 11.45 7 12C7 12.55 6.80417 13.0208 6.4125 13.4125C6.02083 13.8042 5.55 14 5 14ZM3.5875 7.4125C3.19583 7.02083 3 6.55 3 6C3 5.45 3.19583 4.97917 3.5875 4.5875C3.97917 4.19583 4.45 4 5 4C5.55 4 6.02083 4.19583 6.4125 4.5875C6.80417 4.97917 7 5.45 7 6C7 6.55 6.80417 7.02083 6.4125 7.4125C6.02083 7.80417 5.55 8 5 8C4.45 8 3.97917 7.80417 3.5875 7.4125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10 19C9.71667 19 9.47917 18.9042 9.2875 18.7125C9.09583 18.5208 9 18.2833 9 18C9 17.7167 9.09583 17.4792 9.2875 17.2875C9.47917 17.0958 9.71667 17 10 17H20C20.2833 17 20.5208 17.0958 20.7125 17.2875C20.9042 17.4792 21 17.7167 21 18C21 18.2833 20.9042 18.5208 20.7125 18.7125C20.5208 18.9042 20.2833 19 20 19H10ZM10 13C9.71667 13 9.47917 12.9042 9.2875 12.7125C9.09583 12.5208 9 12.2833 9 12C9 11.7167 9.09583 11.4792 9.2875 11.2875C9.47917 11.0958 9.71667 11 10 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H10ZM10 7C9.71667 7 9.47917 6.90417 9.2875 6.7125C9.09583 6.52083 9 6.28333 9 6C9 5.71667 9.09583 5.47917 9.2875 5.2875C9.47917 5.09583 9.71667 5 10 5H20C20.2833 5 20.5208 5.09583 20.7125 5.2875C20.9042 5.47917 21 5.71667 21 6C21 6.28333 20.9042 6.52083 20.7125 6.7125C20.5208 6.90417 20.2833 7 20 7H10ZM5 20C4.45 20 3.97917 19.8042 3.5875 19.4125C3.19583 19.0208 3 18.55 3 18C3 17.45 3.19583 16.9792 3.5875 16.5875C3.97917 16.1958 4.45 16 5 16C5.55 16 6.02083 16.1958 6.4125 16.5875C6.80417 16.9792 7 17.45 7 18C7 18.55 6.80417 19.0208 6.4125 19.4125C6.02083 19.8042 5.55 20 5 20ZM5 14C4.45 14 3.97917 13.8042 3.5875 13.4125C3.19583 13.0208 3 12.55 3 12C3 11.45 3.19583 10.9792 3.5875 10.5875C3.97917 10.1958 4.45 10 5 10C5.55 10 6.02083 10.1958 6.4125 10.5875C6.80417 10.9792 7 11.45 7 12C7 12.55 6.80417 13.0208 6.4125 13.4125C6.02083 13.8042 5.55 14 5 14ZM3.5875 7.4125C3.19583 7.02083 3 6.55 3 6C3 5.45 3.19583 4.97917 3.5875 4.5875C3.97917 4.19583 4.45 4 5 4C5.55 4 6.02083 4.19583 6.4125 4.5875C6.80417 4.97917 7 5.45 7 6C7 6.55 6.80417 7.02083 6.4125 7.4125C6.02083 7.80417 5.55 8 5 8C4.45 8 3.97917 7.80417 3.5875 7.4125Z\" fill=\"currentColor\"/>` },\r\n    location: { outlined: `<path d=\"M12.5 7C13.8799 7.00186 14.9981 8.12006 15 9.5C15 10.8807 13.8807 12 12.5 12C11.1193 12 10 10.8807 10 9.5C10 8.11929 11.1193 7 12.5 7Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.5 2C16.6403 2.00455 19.9955 5.35975 20 9.5C20 16.2723 13.5552 21.5065 13.2812 21.7266C12.8242 22.0911 12.1758 22.0911 11.7188 21.7266C11.445 21.5065 5 16.2723 5 9.5C5.00455 5.35975 8.35975 2.00455 12.5 2ZM12.5 4.5C9.73858 4.5 7.5 6.73858 7.5 9.5C7.5 13.7998 10.9203 17.5634 12.5 19.0723C14.0797 17.5634 17.5 13.7998 17.5 9.5C17.5 6.73858 15.2614 4.5 12.5 4.5Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 2C15.87 2 19 5.13 19 9C19 14.25 12 22 12 22C12 22 5 14.25 5 9C5 5.13 8.13 2 12 2ZM12 6.5C10.6193 6.5 9.5 7.61929 9.5 9C9.5 10.3807 10.6193 11.5 12 11.5C13.3807 11.5 14.5 10.3807 14.5 9C14.5 7.61929 13.3807 6.5 12 6.5Z\" fill=\"currentColor\"/>` },\r\n    lock: { outlined: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V10C4 9.45 4.19583 8.97917 4.5875 8.5875C4.97917 8.19583 5.45 8 6 8H7V6C7 4.61667 7.4875 3.4375 8.4625 2.4625C9.4375 1.4875 10.6167 1 12 1C13.3833 1 14.5625 1.4875 15.5375 2.4625C16.5125 3.4375 17 4.61667 17 6V8H18C18.55 8 19.0208 8.19583 19.4125 8.5875C19.8042 8.97917 20 9.45 20 10V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM6 20H18V10H6V20ZM12 17C12.55 17 13.0208 16.8042 13.4125 16.4125C13.8042 16.0208 14 15.55 14 15C14 14.45 13.8042 13.9792 13.4125 13.5875C13.0208 13.1958 12.55 13 12 13C11.45 13 10.9792 13.1958 10.5875 13.5875C10.1958 13.9792 10 14.45 10 15C10 15.55 10.1958 16.0208 10.5875 16.4125C10.9792 16.8042 11.45 17 12 17ZM9 8H15V6C15 5.16667 14.7083 4.45833 14.125 3.875C13.5417 3.29167 12.8333 3 12 3C11.1667 3 10.4583 3.29167 9.875 3.875C9.29167 4.45833 9 5.16667 9 6V8Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V10C4 9.45 4.19583 8.97917 4.5875 8.5875C4.97917 8.19583 5.45 8 6 8H7V6C7 4.61667 7.4875 3.4375 8.4625 2.4625C9.4375 1.4875 10.6167 1 12 1C13.3833 1 14.5625 1.4875 15.5375 2.4625C16.5125 3.4375 17 4.61667 17 6V8H18C18.55 8 19.0208 8.19583 19.4125 8.5875C19.8042 8.97917 20 9.45 20 10V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM12 17C12.55 17 13.0208 16.8042 13.4125 16.4125C13.8042 16.0208 14 15.55 14 15C14 14.45 13.8042 13.9792 13.4125 13.5875C13.0208 13.1958 12.55 13 12 13C11.45 13 10.9792 13.1958 10.5875 13.5875C10.1958 13.9792 10 14.45 10 15C10 15.55 10.1958 16.0208 10.5875 16.4125C10.9792 16.8042 11.45 17 12 17ZM9 8H15V6C15 5.16667 14.7083 4.45833 14.125 3.875C13.5417 3.29167 12.8333 3 12 3C11.1667 3 10.4583 3.29167 9.875 3.875C9.29167 4.45833 9 5.16667 9 6V8Z\" fill=\"currentColor\"/>` },\r\n    logout: { outlined: `<path d=\"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V15H5V19H19V5H5V9H3V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM10.5 17L9.1 15.55L11.65 13H3V11H11.65L9.1 8.45L10.5 7L15.5 12L10.5 17Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V15H5V19H19V5H5V9H3V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM10.5 17L9.1 15.55L11.65 13H3V11H11.65L9.1 8.45L10.5 7L15.5 12L10.5 17Z\" fill=\"currentColor\"/>` },\r\n    manage: { outlined: `<path d=\"M4 19V17.2C4 16.6333 4.14583 16.1125 4.4375 15.6375C4.72917 15.1625 5.11667 14.8 5.6 14.55C6.63333 14.0333 7.68333 13.6458 8.75 13.3875C9.81667 13.1292 10.9 13 12 13C12.6167 13 13.225 13.0375 13.825 13.1125C14.425 13.1875 15.025 13.3083 15.625 13.475L13.95 15.175C13.6167 15.125 13.2917 15.0833 12.975 15.05C12.6583 15.0167 12.3333 15 12 15C11.0667 15 10.1417 15.1125 9.225 15.3375C8.30833 15.5625 7.4 15.9 6.5 16.35C6.35 16.4333 6.22917 16.55 6.1375 16.7C6.04583 16.85 6 17.0167 6 17.2V18H12V20H5C4.71667 20 4.47917 19.9042 4.2875 19.7125C4.09583 19.5208 4 19.2833 4 19ZM14 20V18.75C14 18.4833 14.0542 18.2292 14.1625 17.9875C14.2708 17.7458 14.4167 17.5333 14.6 17.35L19.525 12.425C19.675 12.275 19.8417 12.1667 20.025 12.1C20.2083 12.0333 20.3917 12 20.575 12C20.775 12 20.9667 12.0375 21.15 12.1125C21.3333 12.1875 21.5 12.3 21.65 12.45L22.575 13.375C22.7083 13.525 22.8125 13.6917 22.8875 13.875C22.9625 14.0583 23 14.2417 23 14.425C23 14.6083 22.9667 14.7958 22.9 14.9875C22.8333 15.1792 22.725 15.35 22.575 15.5L17.65 20.425C17.4667 20.6083 17.2542 20.75 17.0125 20.85C16.7708 20.95 16.5167 21 16.25 21H15C14.7167 21 14.4792 20.9042 14.2875 20.7125C14.0958 20.5208 14 20.2833 14 20ZM15.5 19.5H16.45L19.475 16.45L19.025 15.975L18.55 15.525L15.5 18.55V19.5ZM19.025 15.975L18.55 15.525L19.475 16.45L19.025 15.975ZM9.175 10.825C8.39167 10.0417 8 9.1 8 8C8 6.9 8.39167 5.95833 9.175 5.175C9.95833 4.39167 10.9 4 12 4C13.1 4 14.0417 4.39167 14.825 5.175C15.6083 5.95833 16 6.9 16 8C16 9.1 15.6083 10.0417 14.825 10.825C14.0417 11.6083 13.1 12 12 12C10.9 12 9.95833 11.6083 9.175 10.825ZM13.4125 9.4125C13.8042 9.02083 14 8.55 14 8C14 7.45 13.8042 6.97917 13.4125 6.5875C13.0208 6.19583 12.55 6 12 6C11.45 6 10.9792 6.19583 10.5875 6.5875C10.1958 6.97917 10 7.45 10 8C10 8.55 10.1958 9.02083 10.5875 9.4125C10.9792 9.80417 11.45 10 12 10C12.55 10 13.0208 9.80417 13.4125 9.4125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M14 20V18.75C14 18.4833 14.0542 18.2292 14.1625 17.9875C14.2708 17.7458 14.4167 17.5333 14.6 17.35L19.525 12.425C19.675 12.275 19.8417 12.1667 20.025 12.1C20.2083 12.0333 20.3917 12 20.575 12C20.775 12 20.9667 12.0375 21.15 12.1125C21.3333 12.1875 21.5 12.3 21.65 12.45L22.575 13.375C22.7083 13.525 22.8125 13.6917 22.8875 13.875C22.9625 14.0583 23 14.2417 23 14.425C23 14.6083 22.9667 14.7958 22.9 14.9875C22.8333 15.1792 22.725 15.35 22.575 15.5L17.65 20.425C17.4667 20.6083 17.2542 20.75 17.0125 20.85C16.7708 20.95 16.5167 21 16.25 21H15C14.7167 21 14.4792 20.9042 14.2875 20.7125C14.0958 20.5208 14 20.2833 14 20ZM4 19V17.2C4 16.6333 4.14583 16.1125 4.4375 15.6375C4.72917 15.1625 5.11667 14.8 5.6 14.55C6.63333 14.0333 7.68333 13.6458 8.75 13.3875C9.81667 13.1292 10.9 13 12 13C12.6167 13 13.225 13.0375 13.825 13.1125C14.425 13.1875 15.025 13.3083 15.625 13.475L12.875 16.225C12.5917 16.5083 12.375 16.8333 12.225 17.2C12.075 17.5667 12 17.95 12 18.35V20H5C4.71667 20 4.47917 19.9042 4.2875 19.7125C4.09583 19.5208 4 19.2833 4 19ZM20.575 15.4L21.5 14.425L20.575 13.5L19.625 14.45L20.575 15.4ZM9.175 10.825C8.39167 10.0417 8 9.1 8 8C8 6.9 8.39167 5.95833 9.175 5.175C9.95833 4.39167 10.9 4 12 4C13.1 4 14.0417 4.39167 14.825 5.175C15.6083 5.95833 16 6.9 16 8C16 9.1 15.6083 10.0417 14.825 10.825C14.0417 11.6083 13.1 12 12 12C10.9 12 9.95833 11.6083 9.175 10.825Z\" fill=\"currentColor\"/>` },\r\n    map: { outlined: `<path d=\"M15 21L9 18.9L4.35 20.7C4.01667 20.8333 3.70833 20.7958 3.425 20.5875C3.14167 20.3792 3 20.1 3 19.75V5.75C3 5.53333 3.0625 5.34167 3.1875 5.175C3.3125 5.00833 3.48333 4.88333 3.7 4.8L9 3L15 5.1L19.65 3.3C19.9833 3.16667 20.2917 3.20417 20.575 3.4125C20.8583 3.62083 21 3.9 21 4.25V18.25C21 18.4667 20.9375 18.6583 20.8125 18.825C20.6875 18.9917 20.5167 19.1167 20.3 19.2L15 21ZM14 18.55V6.85L10 5.45V17.15L14 18.55ZM16 18.55L19 17.55V5.7L16 6.85V18.55ZM5 18.3L8 17.15V5.45L5 6.45V18.3Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M15 21L9 18.9L4.35 20.7C4.01667 20.8333 3.70833 20.7958 3.425 20.5875C3.14167 20.3792 3 20.1 3 19.75V5.75C3 5.53333 3.0625 5.34167 3.1875 5.175C3.3125 5.00833 3.48333 4.88333 3.7 4.8L9 3L15 5.1L19.65 3.3C19.9833 3.16667 20.2917 3.20417 20.575 3.4125C20.8583 3.62083 21 3.9 21 4.25V18.25C21 18.4667 20.9375 18.6583 20.8125 18.825C20.6875 18.9917 20.5167 19.1167 20.3 19.2L15 21ZM14 18.55V6.85L10 5.45V17.15L14 18.55Z\" fill=\"currentColor\"/>` },\r\n    media: { outlined: `<path d=\"M11.9455 13.4023L17.9782 9.78409L11.9455 6.16591V13.4023ZM12.6494 18.3773H18.2799C18.1625 18.7692 17.9615 19.0858 17.6766 19.327C17.3917 19.5682 17.023 19.719 16.5706 19.7793L5.61123 20.9778C5.05823 21.0532 4.5597 20.9364 4.11563 20.6273C3.67155 20.3183 3.416 19.915 3.34897 19.4175L2.01676 9.53534C1.94973 9.03784 2.08379 8.5931 2.41894 8.20113C2.75408 7.80916 3.19816 7.58303 3.75115 7.52272L4.90742 7.38704V9.19613L4.00251 9.3092L5.35987 19.1914L12.6494 18.3773ZM8.9292 16.5682C8.3762 16.5682 7.90281 16.391 7.50901 16.0368C7.11521 15.6825 6.91831 15.2566 6.91831 14.7591V4.80909C6.91831 4.31159 7.11521 3.8857 7.50901 3.53142C7.90281 3.17714 8.3762 3 8.9292 3H19.9891C20.5421 3 21.0155 3.17714 21.4093 3.53142C21.8031 3.8857 22 4.31159 22 4.80909V14.7591C22 15.2566 21.8031 15.6825 21.4093 16.0368C21.0155 16.391 20.5421 16.5682 19.9891 16.5682H8.9292ZM8.9292 14.7591H19.9891V4.80909H8.9292V14.7591Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M11.9455 13.4023L17.9782 9.78409L11.9455 6.16591V13.4023ZM5.61123 20.9778C5.05823 21.0532 4.5597 20.9364 4.11563 20.6273C3.67155 20.3183 3.416 19.915 3.34897 19.4175L2.01676 9.53534C1.94973 9.03784 2.08379 8.5931 2.41894 8.20113C2.75408 7.80916 3.19816 7.58303 3.75115 7.52272L4.90742 7.38704V14.7591C4.90742 15.7541 5.30121 16.6059 6.08881 17.3144C6.87641 18.023 7.82321 18.3773 8.9292 18.3773H18.2799C18.1793 18.7391 17.9782 19.0519 17.6766 19.3157C17.3749 19.5796 17.0063 19.7341 16.5706 19.7793L5.61123 20.9778ZM8.9292 16.5682C8.3762 16.5682 7.90281 16.391 7.50901 16.0368C7.11521 15.6825 6.91831 15.2566 6.91831 14.7591V4.80909C6.91831 4.31159 7.11521 3.8857 7.50901 3.53142C7.90281 3.17714 8.3762 3 8.9292 3H19.9891C20.5421 3 21.0155 3.17714 21.4093 3.53142C21.8031 3.8857 22 4.31159 22 4.80909V14.7591C22 15.2566 21.8031 15.6825 21.4093 16.0368C21.0155 16.391 20.5421 16.5682 19.9891 16.5682H8.9292Z\" fill=\"currentColor\"/>` },\r\n    menu: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H4C3.45 16 3 16.45 3 17C3 17.55 3.45 18 4 18ZM4 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H4C3.45 11 3 11.45 3 12C3 12.55 3.45 13 4 13ZM3 7C3 7.55 3.45 8 4 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H4C3.45 6 3 6.45 3 7Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H4C3.45 16 3 16.45 3 17C3 17.55 3.45 18 4 18ZM4 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H4C3.45 11 3 11.45 3 12C3 12.55 3.45 13 4 13ZM3 7C3 7.55 3.45 8 4 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H4C3.45 6 3 6.45 3 7Z\" fill=\"currentColor\"/>` },\r\n    'messaging-alert': { outlined: `<path d=\"M12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16C13 15.7167 12.9042 15.4792 12.7125 15.2875C12.5208 15.0958 12.2833 15 12 15C11.7167 15 11.4792 15.0958 11.2875 15.2875C11.0958 15.4792 11 15.7167 11 16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125ZM12.7125 12.7125C12.9042 12.5208 13 12.2833 13 12V8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8V12C11 12.2833 11.0958 12.5208 11.2875 12.7125C11.4792 12.9042 11.7167 13 12 13C12.2833 13 12.5208 12.9042 12.7125 12.7125ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16C13 15.7167 12.9042 15.4792 12.7125 15.2875C12.5208 15.0958 12.2833 15 12 15C11.7167 15 11.4792 15.0958 11.2875 15.2875C11.0958 15.4792 11 15.7167 11 16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125ZM12.7125 12.7125C12.9042 12.5208 13 12.2833 13 12V8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8V12C11 12.2833 11.0958 12.5208 11.2875 12.7125C11.4792 12.9042 11.7167 13 12 13C12.2833 13 12.5208 12.9042 12.7125 12.7125ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    'messaging-check': { outlined: `<path d=\"M10.6 13.8L8.45 11.65C8.26667 11.4667 8.03333 11.375 7.75 11.375C7.46667 11.375 7.23333 11.4667 7.05 11.65C6.86667 11.8333 6.775 12.0667 6.775 12.35C6.775 12.6333 6.86667 12.8667 7.05 13.05L9.9 15.9C10.1 16.1 10.3333 16.2 10.6 16.2C10.8667 16.2 11.1 16.1 11.3 15.9L16.95 10.25C17.1333 10.0667 17.225 9.83333 17.225 9.55C17.225 9.26667 17.1333 9.03333 16.95 8.85C16.7667 8.66667 16.5333 8.575 16.25 8.575C15.9667 8.575 15.7333 8.66667 15.55 8.85L10.6 13.8ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10.6 13.8L8.45 11.65C8.26667 11.4667 8.03333 11.375 7.75 11.375C7.46667 11.375 7.23333 11.4667 7.05 11.65C6.86667 11.8333 6.775 12.0667 6.775 12.35C6.775 12.6333 6.86667 12.8667 7.05 13.05L9.9 15.9C10.1 16.1 10.3333 16.2 10.6 16.2C10.8667 16.2 11.1 16.1 11.3 15.9L16.95 10.25C17.1333 10.0667 17.225 9.83333 17.225 9.55C17.225 9.26667 17.1333 9.03333 16.95 8.85C16.7667 8.66667 16.5333 8.575 16.25 8.575C15.9667 8.575 15.7333 8.66667 15.55 8.85L10.6 13.8ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    'messaging-error': { outlined: `<path d=\"M12 13.4L14.9 16.3C15.0833 16.4833 15.3167 16.575 15.6 16.575C15.8833 16.575 16.1167 16.4833 16.3 16.3C16.4833 16.1167 16.575 15.8833 16.575 15.6C16.575 15.3167 16.4833 15.0833 16.3 14.9L13.4 12L16.3 9.1C16.4833 8.91667 16.575 8.68333 16.575 8.4C16.575 8.11667 16.4833 7.88333 16.3 7.7C16.1167 7.51667 15.8833 7.425 15.6 7.425C15.3167 7.425 15.0833 7.51667 14.9 7.7L12 10.6L9.1 7.7C8.91667 7.51667 8.68333 7.425 8.4 7.425C8.11667 7.425 7.88333 7.51667 7.7 7.7C7.51667 7.88333 7.425 8.11667 7.425 8.4C7.425 8.68333 7.51667 8.91667 7.7 9.1L10.6 12L7.7 14.9C7.51667 15.0833 7.425 15.3167 7.425 15.6C7.425 15.8833 7.51667 16.1167 7.7 16.3C7.88333 16.4833 8.11667 16.575 8.4 16.575C8.68333 16.575 8.91667 16.4833 9.1 16.3L12 13.4ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 13.4L14.9 16.3C15.0833 16.4833 15.3167 16.575 15.6 16.575C15.8833 16.575 16.1167 16.4833 16.3 16.3C16.4833 16.1167 16.575 15.8833 16.575 15.6C16.575 15.3167 16.4833 15.0833 16.3 14.9L13.4 12L16.3 9.1C16.4833 8.91667 16.575 8.68333 16.575 8.4C16.575 8.11667 16.4833 7.88333 16.3 7.7C16.1167 7.51667 15.8833 7.425 15.6 7.425C15.3167 7.425 15.0833 7.51667 14.9 7.7L12 10.6L9.1 7.7C8.91667 7.51667 8.68333 7.425 8.4 7.425C8.11667 7.425 7.88333 7.51667 7.7 7.7C7.51667 7.88333 7.425 8.11667 7.425 8.4C7.425 8.68333 7.51667 8.91667 7.7 9.1L10.6 12L7.7 14.9C7.51667 15.0833 7.425 15.3167 7.425 15.6C7.425 15.8833 7.51667 16.1167 7.7 16.3C7.88333 16.4833 8.11667 16.575 8.4 16.575C8.68333 16.575 8.91667 16.4833 9.1 16.3L12 13.4ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    minus: { outlined: `<path d=\"M8 13H16C16.2833 13 16.5208 12.9042 16.7125 12.7125C16.9042 12.5208 17 12.2833 17 12C17 11.7167 16.9042 11.4792 16.7125 11.2875C16.5208 11.0958 16.2833 11 16 11H8C7.71667 11 7.47917 11.0958 7.2875 11.2875C7.09583 11.4792 7 11.7167 7 12C7 12.2833 7.09583 12.5208 7.2875 12.7125C7.47917 12.9042 7.71667 13 8 13ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8 13H16C16.2833 13 16.5208 12.9042 16.7125 12.7125C16.9042 12.5208 17 12.2833 17 12C17 11.7167 16.9042 11.4792 16.7125 11.2875C16.5208 11.0958 16.2833 11 16 11H8C7.71667 11 7.47917 11.0958 7.2875 11.2875C7.09583 11.4792 7 11.7167 7 12C7 12.2833 7.09583 12.5208 7.2875 12.7125C7.47917 12.9042 7.71667 13 8 13ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    more: { outlined: `<path d=\"M12 20C11.45 20 10.9792 19.8042 10.5875 19.4125C10.1958 19.0208 10 18.55 10 18C10 17.45 10.1958 16.9792 10.5875 16.5875C10.9792 16.1958 11.45 16 12 16C12.55 16 13.0208 16.1958 13.4125 16.5875C13.8042 16.9792 14 17.45 14 18C14 18.55 13.8042 19.0208 13.4125 19.4125C13.0208 19.8042 12.55 20 12 20ZM12 14C11.45 14 10.9792 13.8042 10.5875 13.4125C10.1958 13.0208 10 12.55 10 12C10 11.45 10.1958 10.9792 10.5875 10.5875C10.9792 10.1958 11.45 10 12 10C12.55 10 13.0208 10.1958 13.4125 10.5875C13.8042 10.9792 14 11.45 14 12C14 12.55 13.8042 13.0208 13.4125 13.4125C13.0208 13.8042 12.55 14 12 14ZM12 8C11.45 8 10.9792 7.80417 10.5875 7.4125C10.1958 7.02083 10 6.55 10 6C10 5.45 10.1958 4.97917 10.5875 4.5875C10.9792 4.19583 11.45 4 12 4C12.55 4 13.0208 4.19583 13.4125 4.5875C13.8042 4.97917 14 5.45 14 6C14 6.55 13.8042 7.02083 13.4125 7.4125C13.0208 7.80417 12.55 8 12 8Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 20C11.45 20 10.9792 19.8042 10.5875 19.4125C10.1958 19.0208 10 18.55 10 18C10 17.45 10.1958 16.9792 10.5875 16.5875C10.9792 16.1958 11.45 16 12 16C12.55 16 13.0208 16.1958 13.4125 16.5875C13.8042 16.9792 14 17.45 14 18C14 18.55 13.8042 19.0208 13.4125 19.4125C13.0208 19.8042 12.55 20 12 20ZM12 14C11.45 14 10.9792 13.8042 10.5875 13.4125C10.1958 13.0208 10 12.55 10 12C10 11.45 10.1958 10.9792 10.5875 10.5875C10.9792 10.1958 11.45 10 12 10C12.55 10 13.0208 10.1958 13.4125 10.5875C13.8042 10.9792 14 11.45 14 12C14 12.55 13.8042 13.0208 13.4125 13.4125C13.0208 13.8042 12.55 14 12 14ZM12 8C11.45 8 10.9792 7.80417 10.5875 7.4125C10.1958 7.02083 10 6.55 10 6C10 5.45 10.1958 4.97917 10.5875 4.5875C10.9792 4.19583 11.45 4 12 4C12.55 4 13.0208 4.19583 13.4125 4.5875C13.8042 4.97917 14 5.45 14 6C14 6.55 13.8042 7.02083 13.4125 7.4125C13.0208 7.80417 12.55 8 12 8Z\" fill=\"currentColor\"/>` },\r\n    mykids: { outlined: `<path d=\"M12.8 23C11.4333 23 10.15 22.6875 8.95001 22.0625C7.75001 21.4375 6.76668 20.5667 6.00001 19.45L1.20001 12.4L1.67501 11.925C2.00835 11.575 2.42085 11.375 2.91251 11.325C3.40418 11.275 3.85001 11.3917 4.25001 11.675L7.00001 13.575V4C7.00001 3.71667 7.09585 3.47917 7.28751 3.2875C7.47918 3.09583 7.71668 3 8.00001 3C8.28335 3 8.52085 3.09583 8.71251 3.2875C8.90418 3.47917 9.00001 3.71667 9.00001 4V17.425L5.30001 14.85L7.67501 18.3C8.25835 19.15 9.00001 19.8125 9.90001 20.2875C10.8 20.7625 11.7667 21 12.8 21C14.5167 21 15.9792 20.3958 17.1875 19.1875C18.3958 17.9792 19 16.5167 19 14.8V5C19 4.71667 19.0958 4.47917 19.2875 4.2875C19.4792 4.09583 19.7167 4 20 4C20.2833 4 20.5208 4.09583 20.7125 4.2875C20.9042 4.47917 21 4.71667 21 5V14.8C21 17.0833 20.2042 19.0208 18.6125 20.6125C17.0208 22.2042 15.0833 23 12.8 23ZM11 12V2C11 1.71667 11.0958 1.47917 11.2875 1.2875C11.4792 1.09583 11.7167 1 12 1C12.2833 1 12.5208 1.09583 12.7125 1.2875C12.9042 1.47917 13 1.71667 13 2V12H11ZM15 12V3C15 2.71667 15.0958 2.47917 15.2875 2.2875C15.4792 2.09583 15.7167 2 16 2C16.2833 2 16.5208 2.09583 16.7125 2.2875C16.9042 2.47917 17 2.71667 17 3V12H15Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.8 23C11.4333 23 10.15 22.6875 8.95001 22.0625C7.75001 21.4375 6.76668 20.5667 6.00001 19.45L1.20001 12.4L1.67501 11.925C2.00835 11.575 2.42085 11.375 2.91251 11.325C3.40418 11.275 3.85001 11.3917 4.25001 11.675L7.00001 13.575V4C7.00001 3.71667 7.09585 3.47917 7.28751 3.2875C7.47918 3.09583 7.71668 3 8.00001 3C8.28335 3 8.52085 3.09583 8.71251 3.2875C8.90418 3.47917 9.00001 3.71667 9.00001 4V12H11V2C11 1.71667 11.0958 1.47917 11.2875 1.2875C11.4792 1.09583 11.7167 1 12 1C12.2833 1 12.5208 1.09583 12.7125 1.2875C12.9042 1.47917 13 1.71667 13 2V12H15V3C15 2.71667 15.0958 2.47917 15.2875 2.2875C15.4792 2.09583 15.7167 2 16 2C16.2833 2 16.5208 2.09583 16.7125 2.2875C16.9042 2.47917 17 2.71667 17 3V12H19V5C19 4.71667 19.0958 4.47917 19.2875 4.2875C19.4792 4.09583 19.7167 4 20 4C20.2833 4 20.5208 4.09583 20.7125 4.2875C20.9042 4.47917 21 4.71667 21 5V14.8C21 17.0833 20.2042 19.0208 18.6125 20.6125C17.0208 22.2042 15.0833 23 12.8 23Z\" fill=\"currentColor\"/>` },\r\n    networks: { outlined: `<path d=\"M0 18V16.425C0 15.7083 0.366667 15.125 1.1 14.675C1.83333 14.225 2.8 14 4 14C4.21667 14 4.425 14.0042 4.625 14.0125C4.825 14.0208 5.01667 14.0417 5.2 14.075C4.96667 14.425 4.79167 14.7917 4.675 15.175C4.55833 15.5583 4.5 15.9583 4.5 16.375V18H0ZM6 18V16.375C6 15.8417 6.14583 15.3542 6.4375 14.9125C6.72917 14.4708 7.14167 14.0833 7.675 13.75C8.20833 13.4167 8.84583 13.1667 9.5875 13C10.3292 12.8333 11.1333 12.75 12 12.75C12.8833 12.75 13.6958 12.8333 14.4375 13C15.1792 13.1667 15.8167 13.4167 16.35 13.75C16.8833 14.0833 17.2917 14.4708 17.575 14.9125C17.8583 15.3542 18 15.8417 18 16.375V18H6ZM19.5 18V16.375C19.5 15.9417 19.4458 15.5333 19.3375 15.15C19.2292 14.7667 19.0667 14.4083 18.85 14.075C19.0333 14.0417 19.2208 14.0208 19.4125 14.0125C19.6042 14.0042 19.8 14 20 14C21.2 14 22.1667 14.2208 22.9 14.6625C23.6333 15.1042 24 15.6917 24 16.425V18H19.5ZM8.125 16H15.9C15.7333 15.6667 15.2708 15.375 14.5125 15.125C13.7542 14.875 12.9167 14.75 12 14.75C11.0833 14.75 10.2458 14.875 9.4875 15.125C8.72917 15.375 8.275 15.6667 8.125 16ZM4 13C3.45 13 2.97917 12.8042 2.5875 12.4125C2.19583 12.0208 2 11.55 2 11C2 10.4333 2.19583 9.95833 2.5875 9.575C2.97917 9.19167 3.45 9 4 9C4.56667 9 5.04167 9.19167 5.425 9.575C5.80833 9.95833 6 10.4333 6 11C6 11.55 5.80833 12.0208 5.425 12.4125C5.04167 12.8042 4.56667 13 4 13ZM20 13C19.45 13 18.9792 12.8042 18.5875 12.4125C18.1958 12.0208 18 11.55 18 11C18 10.4333 18.1958 9.95833 18.5875 9.575C18.9792 9.19167 19.45 9 20 9C20.5667 9 21.0417 9.19167 21.425 9.575C21.8083 9.95833 22 10.4333 22 11C22 11.55 21.8083 12.0208 21.425 12.4125C21.0417 12.8042 20.5667 13 20 13ZM12 12C11.1667 12 10.4583 11.7083 9.875 11.125C9.29167 10.5417 9 9.83333 9 9C9 8.15 9.29167 7.4375 9.875 6.8625C10.4583 6.2875 11.1667 6 12 6C12.85 6 13.5625 6.2875 14.1375 6.8625C14.7125 7.4375 15 8.15 15 9C15 9.83333 14.7125 10.5417 14.1375 11.125C13.5625 11.7083 12.85 12 12 12ZM12 10C12.2833 10 12.5208 9.90417 12.7125 9.7125C12.9042 9.52083 13 9.28333 13 9C13 8.71667 12.9042 8.47917 12.7125 8.2875C12.5208 8.09583 12.2833 8 12 8C11.7167 8 11.4792 8.09583 11.2875 8.2875C11.0958 8.47917 11 8.71667 11 9C11 9.28333 11.0958 9.52083 11.2875 9.7125C11.4792 9.90417 11.7167 10 12 10Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M0 18V16.425C0 15.7083 0.366667 15.125 1.1 14.675C1.83333 14.225 2.8 14 4 14C4.21667 14 4.425 14.0042 4.625 14.0125C4.825 14.0208 5.01667 14.0417 5.2 14.075C4.96667 14.425 4.79167 14.7917 4.675 15.175C4.55833 15.5583 4.5 15.9583 4.5 16.375V18H0ZM6 18V16.375C6 15.8417 6.14583 15.3542 6.4375 14.9125C6.72917 14.4708 7.14167 14.0833 7.675 13.75C8.20833 13.4167 8.84583 13.1667 9.5875 13C10.3292 12.8333 11.1333 12.75 12 12.75C12.8833 12.75 13.6958 12.8333 14.4375 13C15.1792 13.1667 15.8167 13.4167 16.35 13.75C16.8833 14.0833 17.2917 14.4708 17.575 14.9125C17.8583 15.3542 18 15.8417 18 16.375V18H6ZM19.5 18V16.375C19.5 15.9417 19.4458 15.5333 19.3375 15.15C19.2292 14.7667 19.0667 14.4083 18.85 14.075C19.0333 14.0417 19.2208 14.0208 19.4125 14.0125C19.6042 14.0042 19.8 14 20 14C21.2 14 22.1667 14.2208 22.9 14.6625C23.6333 15.1042 24 15.6917 24 16.425V18H19.5ZM4 13C3.45 13 2.97917 12.8042 2.5875 12.4125C2.19583 12.0208 2 11.55 2 11C2 10.4333 2.19583 9.95833 2.5875 9.575C2.97917 9.19167 3.45 9 4 9C4.56667 9 5.04167 9.19167 5.425 9.575C5.80833 9.95833 6 10.4333 6 11C6 11.55 5.80833 12.0208 5.425 12.4125C5.04167 12.8042 4.56667 13 4 13ZM20 13C19.45 13 18.9792 12.8042 18.5875 12.4125C18.1958 12.0208 18 11.55 18 11C18 10.4333 18.1958 9.95833 18.5875 9.575C18.9792 9.19167 19.45 9 20 9C20.5667 9 21.0417 9.19167 21.425 9.575C21.8083 9.95833 22 10.4333 22 11C22 11.55 21.8083 12.0208 21.425 12.4125C21.0417 12.8042 20.5667 13 20 13ZM12 12C11.1667 12 10.4583 11.7083 9.875 11.125C9.29167 10.5417 9 9.83333 9 9C9 8.15 9.29167 7.4375 9.875 6.8625C10.4583 6.2875 11.1667 6 12 6C12.85 6 13.5625 6.2875 14.1375 6.8625C14.7125 7.4375 15 8.15 15 9C15 9.83333 14.7125 10.5417 14.1375 11.125C13.5625 11.7083 12.85 12 12 12Z\" fill=\"currentColor\"/>` },\r\n    news: { outlined: `<path d=\"M4.07163 21.2033C3.44191 21.2033 2.90531 20.9816 2.46183 20.5381C2.01836 20.0946 1.79663 19.558 1.79663 18.9283V5.07178C1.79663 4.44206 2.01838 3.90546 2.46188 3.46198C2.90535 3.01849 3.44194 2.79675 4.07166 2.79675H19.9282C20.5579 2.79675 21.0945 3.01849 21.538 3.46198C21.9814 3.90546 22.2032 4.44206 22.2032 5.07178V18.9283C22.2032 19.558 21.9814 20.0946 21.538 20.5381C21.0945 20.9816 20.5579 21.2033 19.9282 21.2033H4.07163ZM4.07163 18.9283H19.9281V5.07178H4.07163V18.9283ZM6.03576 16.9642H17.964V14.9642H6.03576V16.9642ZM6.03576 13H10.0358V7.0359H6.03576V13ZM11.9999 13H17.964V11H11.9999V13ZM11.9999 9.0359H17.964V7.0359H11.9999V9.0359Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 21C3.45 21 2.97917 20.8042 2.5875 20.4125C2.19583 20.0208 2 19.55 2 19V5C2 4.45 2.19583 3.97917 2.5875 3.5875C2.97917 3.19583 3.45 3 4 3H20C20.55 3 21.0208 3.19583 21.4125 3.5875C21.8042 3.97917 22 4.45 22 5V19C22 19.55 21.8042 20.0208 21.4125 20.4125C21.0208 20.8042 20.55 21 20 21H4ZM6 17H18V15H6V17ZM6 13H10V7H6V13ZM12 13H18V11H12V13ZM12 9H18V7H12V9Z\" fill=\"currentColor\"/>` },\r\n    notification: { outlined: `<path d=\"M5 19C4.71667 19 4.47917 18.9042 4.2875 18.7125C4.09583 18.5208 4 18.2833 4 18C4 17.7167 4.09583 17.4792 4.2875 17.2875C4.47917 17.0958 4.71667 17 5 17H6V10C6 8.61667 6.41667 7.3875 7.25 6.3125C8.08333 5.2375 9.16667 4.53333 10.5 4.2V3.5C10.5 3.08333 10.6458 2.72917 10.9375 2.4375C11.2292 2.14583 11.5833 2 12 2C12.4167 2 12.7708 2.14583 13.0625 2.4375C13.3542 2.72917 13.5 3.08333 13.5 3.5V4.2C14.8333 4.53333 15.9167 5.2375 16.75 6.3125C17.5833 7.3875 18 8.61667 18 10V17H19C19.2833 17 19.5208 17.0958 19.7125 17.2875C19.9042 17.4792 20 17.7167 20 18C20 18.2833 19.9042 18.5208 19.7125 18.7125C19.5208 18.9042 19.2833 19 19 19H5ZM12 22C11.45 22 10.9792 21.8042 10.5875 21.4125C10.1958 21.0208 10 20.55 10 20H14C14 20.55 13.8042 21.0208 13.4125 21.4125C13.0208 21.8042 12.55 22 12 22ZM8 17H16V10C16 8.9 15.6083 7.95833 14.825 7.175C14.0417 6.39167 13.1 6 12 6C10.9 6 9.95833 6.39167 9.175 7.175C8.39167 7.95833 8 8.9 8 10V17Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5 19C4.71667 19 4.47917 18.9042 4.2875 18.7125C4.09583 18.5208 4 18.2833 4 18C4 17.7167 4.09583 17.4792 4.2875 17.2875C4.47917 17.0958 4.71667 17 5 17H6V10C6 8.61667 6.41667 7.3875 7.25 6.3125C8.08333 5.2375 9.16667 4.53333 10.5 4.2V3.5C10.5 3.08333 10.6458 2.72917 10.9375 2.4375C11.2292 2.14583 11.5833 2 12 2C12.4167 2 12.7708 2.14583 13.0625 2.4375C13.3542 2.72917 13.5 3.08333 13.5 3.5V4.2C14.8333 4.53333 15.9167 5.2375 16.75 6.3125C17.5833 7.3875 18 8.61667 18 10V17H19C19.2833 17 19.5208 17.0958 19.7125 17.2875C19.9042 17.4792 20 17.7167 20 18C20 18.2833 19.9042 18.5208 19.7125 18.7125C19.5208 18.9042 19.2833 19 19 19H5ZM12 22C11.45 22 10.9792 21.8042 10.5875 21.4125C10.1958 21.0208 10 20.55 10 20H14C14 20.55 13.8042 21.0208 13.4125 21.4125C13.0208 21.8042 12.55 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    number: { outlined: `<path d=\"M19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19V21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21V19C15.866 19 19 15.866 19 12Z\" fill=\"currentColor\"/><path d=\"M13 17H11.4822V9.94753H9V8.88272C10.4229 8.85185 11.4032 8.08025 11.6403 7H13V17Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3ZM11.6406 7C11.5247 7.61111 11.2292 8.10937 10.7549 8.49414C10.2806 8.8675 9.69556 9.05997 9 9.07129V10.2422H11.4824V18H13V7H11.6406Z\" fill=\"currentColor\"/>` },\r\n    'on-off': { outlined: `<path d=\"M12 12.7472C11.7243 12.7472 11.4932 12.6587 11.3068 12.4818C11.1203 12.3049 11.027 12.0856 11.027 11.8241V4.43949C11.027 4.17795 11.1203 3.95872 11.3068 3.7818C11.4932 3.60488 11.7243 3.51641 12 3.51641C12.2757 3.51641 12.5068 3.60488 12.6932 3.7818C12.8797 3.95872 12.973 4.17795 12.973 4.43949V11.8241C12.973 12.0856 12.8797 12.3049 12.6932 12.4818C12.5068 12.6587 12.2757 12.7472 12 12.7472ZM12 21.0549C10.7838 21.0549 9.6446 20.8356 8.58243 20.3972C7.52027 19.9587 6.59595 19.3664 5.80946 18.6203C5.02297 17.8741 4.39865 16.9972 3.93649 15.9895C3.47432 14.9818 3.24324 13.901 3.24324 12.7472C3.24324 11.8087 3.40541 10.8972 3.72973 10.0126C4.05405 9.12795 4.52432 8.31641 5.14054 7.57795C5.31892 7.36257 5.54595 7.25872 5.82162 7.26641C6.0973 7.27411 6.34054 7.37795 6.55135 7.57795C6.72973 7.74718 6.81081 7.95488 6.79459 8.20103C6.77838 8.44718 6.68919 8.67795 6.52703 8.89334C6.08919 9.44718 5.75676 10.0549 5.52973 10.7164C5.3027 11.378 5.18919 12.0549 5.18919 12.7472C5.18919 14.5472 5.85 16.0741 7.17162 17.328C8.49324 18.5818 10.1027 19.2087 12 19.2087C13.8973 19.2087 15.5068 18.5818 16.8284 17.328C18.15 16.0741 18.8108 14.5472 18.8108 12.7472C18.8108 12.0395 18.7014 11.351 18.4824 10.6818C18.2635 10.0126 17.9189 9.40103 17.4486 8.84718C17.2865 8.64718 17.1973 8.42795 17.1811 8.18949C17.1649 7.95103 17.2459 7.74718 17.4243 7.57795C17.6189 7.39334 17.8541 7.29718 18.1297 7.28949C18.4054 7.2818 18.6324 7.37795 18.8108 7.57795C19.4432 8.31641 19.9257 9.12411 20.2581 10.001C20.5905 10.878 20.7568 11.7933 20.7568 12.7472C20.7568 13.901 20.5257 14.9818 20.0635 15.9895C19.6014 16.9972 18.977 17.8741 18.1905 18.6203C17.4041 19.3664 16.4797 19.9587 15.4176 20.3972C14.3554 20.8356 13.2162 21.0549 12 21.0549Z\" fill=\"currentColor\"/><path d=\"M20.2703 12.7472C20.2703 11.8453 20.1129 10.983 19.7999 10.1573C19.4875 9.33309 19.035 8.57288 18.4393 7.87579C18.3565 7.78307 18.2711 7.74694 18.1438 7.75049C17.9919 7.75477 17.8751 7.80351 17.7685 7.90463C17.6889 7.98013 17.6596 8.05404 17.6668 8.15974C17.6763 8.29918 17.7261 8.42956 17.8293 8.55908C18.3367 9.15708 18.7095 9.82004 18.9467 10.545C19.1802 11.2589 19.2973 11.9936 19.2973 12.7472C19.2973 14.6675 18.5871 16.3128 17.1727 17.6546C15.7583 18.9965 14.0241 19.6703 12 19.6703C9.97587 19.6703 8.24167 18.9965 6.82728 17.6546C5.41289 16.3128 4.7027 14.6675 4.7027 12.7472C4.7027 12.0062 4.82482 11.2812 5.06757 10.5738C5.30988 9.86774 5.66411 9.21718 6.13081 8.62489C6.24406 8.47447 6.2993 8.32592 6.30944 8.17236C6.31724 8.05397 6.28379 7.97691 6.20777 7.90463C6.07705 7.78062 5.94866 7.73198 5.80775 7.72795C5.69461 7.7248 5.61098 7.75657 5.5227 7.86317L5.52175 7.86407C4.93913 8.56227 4.49595 9.32899 4.18961 10.1646C3.88325 11.0003 3.72973 11.8603 3.72973 12.7472C3.72973 13.8409 3.9483 14.8591 4.3825 15.8058C4.82133 16.7625 5.41212 17.5903 6.15361 18.2938C6.89511 18.9972 7.76763 19.5577 8.77608 19.974C9.77395 20.386 10.8472 20.5933 12 20.5933V21.0549C10.7838 21.0549 9.6446 20.8356 8.58243 20.3972C7.65324 20.0136 6.82906 19.5123 6.11085 18.8932L5.80946 18.6203C5.12124 17.9673 4.55727 17.2143 4.1174 16.3611L3.93649 15.9895C3.47432 14.9818 3.24324 13.901 3.24324 12.7472C3.24324 11.8087 3.40541 10.8972 3.72973 10.0126C4.01348 9.23871 4.40935 8.52067 4.91649 7.85866L5.14054 7.57795C5.31892 7.36257 5.54595 7.25872 5.82162 7.26641L5.92367 7.27363C6.15773 7.30142 6.36694 7.40299 6.55135 7.57795C6.72973 7.74718 6.81081 7.95488 6.79459 8.20103L6.76837 8.3824C6.72886 8.56135 6.64871 8.73172 6.52703 8.89334L6.3674 9.10355C6.00742 9.59988 5.72835 10.1377 5.52973 10.7164C5.3027 11.378 5.18919 12.0549 5.18919 12.7472C5.18919 14.5472 5.85 16.0741 7.17162 17.328C8.49324 18.5818 10.1027 19.2087 12 19.2087C13.7787 19.2087 15.3042 18.6575 16.577 17.5555L16.8284 17.328C18.15 16.0741 18.8108 14.5472 18.8108 12.7472C18.8108 12.1279 18.7267 11.5233 18.559 10.9335L18.4824 10.6818C18.2909 10.0963 18.0033 9.55479 17.6193 9.05758L17.4486 8.84718C17.3269 8.69708 17.2464 8.53613 17.2069 8.36437L17.1811 8.18949C17.1669 7.98092 17.2271 7.79882 17.3618 7.64322L17.4243 7.57795C17.6189 7.39334 17.8541 7.29718 18.1297 7.28949L18.2312 7.29165C18.4616 7.30772 18.6548 7.40305 18.8108 7.57795C19.4432 8.31641 19.9257 9.12411 20.2581 10.001C20.5905 10.878 20.7568 11.7933 20.7568 12.7472C20.7568 13.901 20.5257 14.9818 20.0635 15.9895L19.8826 16.3611C19.4427 17.2143 18.8788 17.9673 18.1905 18.6203C17.4041 19.3664 16.4797 19.9587 15.4176 20.3972L15.0158 20.551C14.0695 20.8867 13.0643 21.0549 12 21.0549V20.5933C13.1528 20.5933 14.226 20.386 15.2239 19.974C16.2324 19.5577 17.1049 18.9972 17.8464 18.2938C18.5879 17.5903 19.1787 16.7625 19.6175 15.8058C20.0517 14.8591 20.2703 13.8409 20.2703 12.7472ZM12.4865 11.8241V4.43949C12.4865 4.29418 12.4404 4.19386 12.3497 4.10776C12.2589 4.02166 12.1532 3.97795 12 3.97795C11.8468 3.97795 11.7411 4.02166 11.6503 4.10776C11.5596 4.19386 11.5135 4.29418 11.5135 4.43949V11.8241C11.5135 11.9694 11.5596 12.0697 11.6503 12.1558C11.7411 12.2419 11.8468 12.2856 12 12.2856V12.7472C11.7588 12.7472 11.5515 12.6798 11.3786 12.5444L11.3068 12.4818C11.1203 12.3049 11.027 12.0856 11.027 11.8241V4.43949C11.027 4.17795 11.1203 3.95872 11.3068 3.7818C11.4932 3.60488 11.7243 3.51641 12 3.51641C12.2757 3.51641 12.5068 3.60488 12.6932 3.7818C12.8797 3.95872 12.973 4.17795 12.973 4.43949V11.8241C12.973 12.0856 12.8797 12.3049 12.6932 12.4818L12.6214 12.5444C12.4485 12.6798 12.2412 12.7472 12 12.7472V12.2856C12.1532 12.2856 12.2589 12.2419 12.3497 12.1558C12.4404 12.0697 12.4865 11.9694 12.4865 11.8241Z\" fill=\"currentColor\"/><path d=\"M4.45946 12.7472C4.45946 11.9817 4.5861 11.2328 4.83668 10.5026C5.08661 9.77431 5.45183 9.10229 5.93317 8.49057C6.02227 8.37215 6.05916 8.26449 6.0662 8.15794C6.06846 8.12362 6.06476 8.10828 6.06239 8.10205L6.03579 8.0678C5.94521 7.98186 5.87409 7.96083 5.80015 7.95872C5.77062 7.95794 5.76199 7.96153 5.76024 7.96233C5.75681 7.96391 5.74146 7.97205 5.71368 8.0056L5.71178 8.0065C5.14609 8.68441 4.71695 9.42915 4.41955 10.2403C4.12211 11.0516 3.97297 11.8861 3.97297 12.7472C3.97297 13.8108 4.18559 14.7976 4.60579 15.7138C5.03293 16.645 5.60655 17.4484 6.32559 18.1306C7.04464 18.8128 7.89149 19.357 8.87299 19.7622C9.83871 20.1609 10.8788 20.3626 12 20.3626C13.1212 20.3626 14.1613 20.1609 15.127 19.7622C16.1085 19.357 16.9554 18.8128 17.6744 18.1306C18.3935 17.4484 18.9671 16.645 19.3942 15.7138C19.8144 14.7976 20.027 13.8108 20.027 12.7472C20.027 11.8715 19.8742 11.0357 19.5709 10.2358C19.268 9.43663 18.8296 8.69891 18.2512 8.02182C18.2286 7.99714 18.2153 7.9901 18.2094 7.98757C18.2034 7.98504 18.1883 7.98027 18.1514 7.98126C18.0848 7.98314 18.0351 7.99699 17.988 8.02903L17.9405 8.0678C17.9194 8.08779 17.9144 8.09839 17.9129 8.10205C17.9116 8.10527 17.9072 8.11664 17.9091 8.14532C17.9153 8.23523 17.9459 8.32101 18.0184 8.41395C18.5447 9.03431 18.9322 9.72357 19.1785 10.4764C19.4194 11.2127 19.5405 11.9705 19.5405 12.7472C19.5405 14.7276 18.8055 16.4319 17.3447 17.8178C15.8839 19.2037 14.0875 19.901 12 19.901C9.9125 19.901 8.11611 19.2037 6.6553 17.8178C5.19449 16.4319 4.45946 14.7276 4.45946 12.7472ZM14.174 19.1366C14.1434 19.1456 14.1135 19.1568 14.0828 19.1655C14.1151 19.1564 14.1466 19.1452 14.1787 19.1357C14.1772 19.1362 14.1755 19.1362 14.174 19.1366ZM14.4761 19.0402C14.4291 19.0564 14.3821 19.0727 14.3346 19.0879C14.3317 19.0888 14.3289 19.0897 14.326 19.0906C14.3795 19.0735 14.4327 19.0558 14.4856 19.0374C14.4825 19.0385 14.4792 19.0391 14.4761 19.0402ZM14.65 18.9771C14.6491 18.9774 14.6481 18.9776 14.6472 18.978C14.6719 18.9686 14.6976 18.9614 14.7222 18.9518C14.6985 18.9611 14.6739 18.9681 14.65 18.9771ZM15.9546 18.3172C15.9419 18.3255 15.9303 18.3352 15.9175 18.3433L15.9565 18.3163L15.9546 18.3172ZM6.30184 16.7316C6.51026 16.995 6.74286 17.2482 6.99926 17.4915C7.34134 17.816 7.70259 18.0998 8.08245 18.3433L7.8012 18.1531C7.52337 17.9553 7.25583 17.7349 6.99926 17.4915C6.6572 17.167 6.35804 16.8242 6.10135 16.4638L6.30184 16.7316ZM16.2169 18.1387C16.1671 18.1744 16.1162 18.2082 16.0658 18.2424C16.0571 18.2483 16.0488 18.2546 16.0401 18.2604C16.1036 18.2178 16.1677 18.1756 16.2302 18.1306C16.226 18.1336 16.221 18.1357 16.2169 18.1387ZM17.0007 17.4915C16.787 17.6942 16.5641 17.8792 16.3356 18.0504C16.3273 18.0566 16.3193 18.0631 16.3109 18.0693C16.5483 17.8931 16.7792 17.7016 17.0007 17.4915ZM12.2432 4.43949C12.2432 4.35174 12.2202 4.31123 12.1777 4.27092C12.1352 4.23061 12.0925 4.20872 12 4.20872C11.9075 4.20872 11.8648 4.23061 11.8223 4.27092C11.7798 4.31123 11.7568 4.35174 11.7568 4.43949V11.8241C11.7568 11.9119 11.7798 11.9524 11.8223 11.9927C11.8648 12.033 11.9075 12.0549 12 12.0549C12.0925 12.0549 12.1352 12.033 12.1777 11.9927C12.2202 11.9524 12.2432 11.9119 12.2432 11.8241V4.43949ZM4.21052 9.48396C4.18588 9.53704 4.16271 9.59075 4.13925 9.64442C4.11997 9.68856 4.09979 9.73239 4.08129 9.77693C4.0386 9.8797 3.99813 9.98394 3.95967 10.0888C3.72324 10.7338 3.57505 11.3931 3.51594 12.0675C3.53568 11.8429 3.56583 11.62 3.60526 11.3986C3.625 11.2876 3.64708 11.1771 3.67177 11.0669C3.74572 10.7372 3.8415 10.4112 3.95967 10.0888C4.03507 9.88318 4.11895 9.68155 4.21052 9.48396ZM5.74789 9.6309C5.73434 9.65541 5.7212 9.68013 5.70798 9.70482C5.71562 9.69056 5.72398 9.67665 5.73174 9.66245C5.73252 9.66102 5.73285 9.65937 5.73364 9.65794L5.74789 9.6309ZM18.2426 9.55968C18.2589 9.58787 18.2753 9.61599 18.2911 9.64442C18.2964 9.65406 18.3019 9.6636 18.3072 9.67326C18.2817 9.62661 18.2552 9.58045 18.2284 9.53444C18.2332 9.54279 18.2378 9.55131 18.2426 9.55968ZM18.1333 9.37669C18.1384 9.38466 18.1426 9.39304 18.1476 9.40103C18.156 9.41448 18.164 9.42808 18.1723 9.44159C18.1532 9.41026 18.1341 9.37888 18.1143 9.34784L18.1333 9.37669ZM17.5585 8.58703C17.5829 8.62696 17.6096 8.66707 17.6412 8.70602L17.8122 8.91695L17.816 8.92146C17.8685 8.98949 17.918 9.05916 17.9671 9.12879C17.9822 9.15029 17.9969 9.17204 18.0117 9.1937C18.0138 9.19677 18.0163 9.19963 18.0184 9.20271C17.9021 9.03201 17.7769 8.86532 17.6402 8.70421L17.6355 8.6979C17.6065 8.66156 17.5814 8.62437 17.5585 8.58703ZM6.32844 8.7592L6.32559 8.76281L6.32939 8.7583C6.33033 8.75711 6.3313 8.75589 6.33224 8.75469C6.36127 8.71581 6.38614 8.67607 6.40921 8.63661L6.32844 8.7592ZM6.43011 8.59875C6.43107 8.59694 6.43201 8.59514 6.43296 8.59334C6.44306 8.57426 6.45173 8.55489 6.46052 8.53564C6.45086 8.55669 6.44133 8.57791 6.43011 8.59875ZM17.4464 8.3202C17.4488 8.33031 17.4531 8.33992 17.4559 8.34995C17.4526 8.33815 17.4482 8.3267 17.4454 8.31479L17.4464 8.3202ZM17.4264 8.05698C17.4217 8.09293 17.4212 8.13046 17.4236 8.16966L17.4245 8.17417C17.4213 8.12635 17.4238 8.07797 17.4331 8.02903C17.4313 8.03834 17.4277 8.04743 17.4264 8.05698ZM17.777 7.60986C17.7127 7.64378 17.653 7.6879 17.5965 7.74147L17.5309 7.81539C17.53 7.81661 17.529 7.81778 17.5281 7.819C17.5492 7.79139 17.5716 7.76514 17.5965 7.74147L17.7143 7.64772C17.7553 7.62074 17.7978 7.59765 17.8426 7.57921L17.777 7.60986ZM18.6246 7.72705C18.6236 7.72594 18.6227 7.72456 18.6217 7.72344C18.5957 7.69466 18.568 7.66916 18.54 7.64682C18.5378 7.64503 18.5356 7.64317 18.5334 7.64141L18.6246 7.72705ZM5.42388 7.62699C5.39816 7.64857 5.37395 7.67354 5.34977 7.70091C5.37296 7.67465 5.39704 7.64946 5.42388 7.62699ZM18.2398 7.52513C18.2331 7.52441 18.2265 7.52295 18.2198 7.52242C18.2185 7.52232 18.2173 7.52162 18.216 7.52152L18.1628 7.52062C18.1884 7.52069 18.214 7.52234 18.2398 7.52513ZM5.74314 7.49808C5.72569 7.49934 5.70863 7.50177 5.69183 7.50439C5.73376 7.49785 5.77486 7.4961 5.8144 7.49718L5.74314 7.49808ZM21 12.7472C21 13.9311 20.7626 15.0434 20.2864 16.0816C20.227 16.2111 20.1648 16.3385 20.1002 16.4638C20.039 16.5825 19.9742 16.6986 19.9083 16.8136C19.8986 16.8304 19.8895 16.8474 19.8798 16.8641C19.825 16.9581 19.7676 17.0502 19.7097 17.1417C19.6815 17.1862 19.6531 17.2304 19.6242 17.2742C19.5803 17.3407 19.5357 17.4065 19.4902 17.4716C19.4577 17.518 19.4247 17.5639 19.3914 17.6096C19.3506 17.6655 19.309 17.7206 19.2669 17.7754C19.2256 17.8293 19.1841 17.883 19.1415 17.9359C19.1054 17.9807 19.0692 18.0252 19.0322 18.0693C18.9894 18.1203 18.946 18.1707 18.902 18.2207C18.8475 18.2828 18.7922 18.3441 18.7357 18.4046C18.7057 18.4368 18.676 18.4693 18.6455 18.5011C18.5533 18.5969 18.4593 18.6913 18.3623 18.7832C17.5534 19.5507 16.6036 20.1591 15.5147 20.6087C15.5126 20.6095 15.5101 20.6096 15.508 20.6105L15.1071 20.7646L15.1014 20.7673C14.9708 20.8136 14.8387 20.8561 14.7061 20.8962C14.6577 20.9109 14.6085 20.923 14.5598 20.9368C14.4745 20.961 14.3893 20.9855 14.3032 21.0071C14.2437 21.0221 14.1836 21.0348 14.1236 21.0486C14.0473 21.0661 13.9707 21.0826 13.8937 21.0981C13.8327 21.1104 13.7717 21.1222 13.7103 21.1333C13.6377 21.1464 13.5649 21.1589 13.4918 21.1703C13.4198 21.1814 13.3477 21.1923 13.2751 21.2018C13.2001 21.2117 13.1247 21.2199 13.049 21.228C12.9889 21.2344 12.9289 21.2416 12.8685 21.2469C12.7667 21.2558 12.6644 21.2619 12.5616 21.2676C12.522 21.2698 12.4825 21.2731 12.4428 21.2748C12.2962 21.2812 12.1487 21.2856 12 21.2856C10.7521 21.2856 9.57963 21.0604 8.48533 20.6087C8.3583 20.5562 8.23328 20.5014 8.11001 20.4446C8.06865 20.4256 8.02837 20.4046 7.98744 20.3851C7.89917 20.343 7.81148 20.3006 7.72519 20.2562C7.69462 20.2405 7.66429 20.2244 7.63397 20.2084C7.54169 20.1597 7.4503 20.1101 7.36033 20.0588C7.32836 20.0405 7.29698 20.0215 7.26531 20.0029C7.18164 19.9538 7.09894 19.9037 7.01731 19.8524C6.98003 19.8289 6.943 19.8051 6.90614 19.7811C6.83311 19.7337 6.76086 19.6854 6.68951 19.636C6.64921 19.6081 6.6086 19.5807 6.56883 19.5522C6.4986 19.5018 6.43026 19.4493 6.3617 19.3971C6.32374 19.3682 6.28513 19.3401 6.24768 19.3106C6.14581 19.2304 6.04549 19.1481 5.94742 19.0636L5.94267 19.06L5.64147 18.7868C5.64036 18.7858 5.63878 18.7843 5.63767 18.7832C5.54056 18.6911 5.44585 18.5971 5.35357 18.5011C5.32316 18.4695 5.29414 18.4367 5.26425 18.4046C5.20769 18.344 5.15171 18.2829 5.09702 18.2207C5.05315 18.1709 5.01046 18.1201 4.9678 18.0693C4.93071 18.0251 4.89376 17.9808 4.85758 17.9359C4.81498 17.883 4.77349 17.8293 4.73216 17.7754C4.6901 17.7206 4.64843 17.6655 4.60769 17.6096C4.57438 17.5639 4.5413 17.518 4.50887 17.4716C4.46343 17.4066 4.41957 17.3406 4.37584 17.2742C4.34685 17.2302 4.31762 17.1863 4.28938 17.1417C4.23154 17.0503 4.17492 16.958 4.12025 16.8641C4.11045 16.8472 4.10049 16.8305 4.09079 16.8136C4.02475 16.6984 3.96017 16.5818 3.89886 16.4629C3.8344 16.3379 3.7728 16.2107 3.71358 16.0816C3.23743 15.0434 3 13.9311 3 12.7472C3 11.783 3.16651 10.8455 3.49979 9.93649C3.53626 9.83702 3.57468 9.73849 3.61476 9.64081L3.63186 9.59935C3.65396 9.5463 3.67807 9.49411 3.70122 9.44159C3.71966 9.39982 3.73723 9.35773 3.75633 9.31629C3.78236 9.25983 3.81078 9.20446 3.83805 9.14863C3.86429 9.09493 3.89047 9.04128 3.91786 8.98817C3.93561 8.95375 3.95379 8.91958 3.97202 8.8854C4.00556 8.82256 4.03946 8.75993 4.07464 8.6979C4.10103 8.65135 4.12809 8.60517 4.15541 8.55908C4.18393 8.51098 4.21329 8.46335 4.24282 8.41575C4.27421 8.36514 4.30531 8.31435 4.33784 8.26431C4.3755 8.20639 4.41458 8.14928 4.45376 8.09213C4.47697 8.05827 4.49937 8.02387 4.52312 7.99027C4.58678 7.90023 4.65232 7.81064 4.71981 7.72254C4.79414 7.62552 4.87076 7.52965 4.94975 7.43498L5.03621 7.34033C5.24802 7.13289 5.5163 7.02696 5.82865 7.03564C5.87597 7.03696 5.92263 7.04054 5.96833 7.04646C6.00433 7.05113 6.03984 7.05702 6.07475 7.06449C6.07797 7.06518 6.08104 7.06648 6.08425 7.06719C6.11772 7.07462 6.15062 7.08338 6.18307 7.09334C6.19613 7.09734 6.20911 7.10154 6.22202 7.10596C6.24517 7.11388 6.26783 7.12288 6.29044 7.1321C6.30827 7.13937 6.32614 7.14657 6.34364 7.15463C6.35129 7.15816 6.35887 7.16178 6.36645 7.16545L6.42061 7.1925C6.42776 7.19638 6.43442 7.20109 6.44151 7.20512C6.46113 7.21625 6.48033 7.2281 6.49947 7.24027C6.51119 7.24772 6.52308 7.25497 6.53463 7.26281C6.55797 7.27866 6.58043 7.29588 6.60304 7.31329C6.61265 7.32068 6.62302 7.32725 6.6325 7.33492C6.66351 7.36005 6.69413 7.38709 6.72371 7.41515C6.95287 7.63275 7.05767 7.90587 7.03727 8.21563C7.02914 8.33878 7.00455 8.45794 6.96601 8.5735C6.96368 8.58048 6.96083 8.58729 6.9584 8.59424C6.92543 8.68832 6.88273 8.77957 6.83013 8.86828C6.8241 8.87846 6.81836 8.88881 6.81208 8.89893C6.80503 8.91025 6.79854 8.92194 6.79117 8.93318L6.72466 9.02783L6.56503 9.23877C6.46525 9.37659 6.37255 9.51804 6.28568 9.66245C6.25013 9.72158 6.21456 9.78068 6.18117 9.84093C6.17094 9.85936 6.16173 9.87829 6.15171 9.89682C6.12388 9.94835 6.09722 10.0004 6.07095 10.0528C5.952 10.2896 5.84814 10.5341 5.76119 10.7874C5.54204 11.426 5.43243 12.0793 5.43243 12.7472C5.43243 14.487 6.06799 15.9553 7.34322 17.1652C8.61846 18.375 10.1661 18.978 12 18.978C12.1906 18.978 12.378 18.9694 12.5625 18.9563C12.5869 18.9546 12.6114 18.9538 12.6357 18.9518C12.694 18.9471 12.7518 18.9407 12.8095 18.9347C12.8675 18.9287 12.9252 18.9231 12.9825 18.9158C13.0057 18.9128 13.0287 18.909 13.0518 18.9058C13.1358 18.8942 13.2191 18.8816 13.3017 18.8671C13.3374 18.8608 13.3727 18.8531 13.4082 18.8463C13.4623 18.836 13.5162 18.8255 13.5697 18.8139C13.6313 18.8005 13.6922 18.7857 13.7531 18.7706C13.7972 18.7597 13.8414 18.7491 13.8851 18.7373C13.9263 18.7262 13.9669 18.714 14.0077 18.7021C14.0705 18.6838 14.133 18.6654 14.1949 18.6453C14.2341 18.6326 14.2729 18.6191 14.3118 18.6057C14.3582 18.5896 14.4045 18.5732 14.4505 18.5561C14.5043 18.536 14.5579 18.5154 14.6111 18.4939C14.6573 18.4752 14.7031 18.456 14.7488 18.4362C14.7914 18.4178 14.834 18.3996 14.8762 18.3803C14.9264 18.3572 14.9757 18.3326 15.0253 18.3082C15.0669 18.2877 15.1086 18.2674 15.1498 18.246C15.1952 18.2224 15.2399 18.1977 15.2847 18.173C15.3295 18.1483 15.3745 18.124 15.4187 18.0981C15.46 18.074 15.5004 18.0484 15.5413 18.0233C15.5874 17.995 15.6335 17.9664 15.6791 17.9368C15.7161 17.9127 15.7526 17.8878 15.7893 17.8629C15.836 17.8311 15.8829 17.7995 15.9289 17.7664C16.094 17.6478 16.2555 17.5211 16.4126 17.3851L16.6606 17.1606C17.933 15.9516 18.5676 14.4851 18.5676 12.7472C18.5676 12.7132 18.5662 12.6792 18.5657 12.6453C18.5649 12.5959 18.5647 12.5467 18.5628 12.4975C18.5616 12.4653 18.5588 12.4332 18.5571 12.401C18.5547 12.3556 18.5519 12.3102 18.5486 12.2649C18.5446 12.2119 18.5405 12.159 18.5353 12.1063C18.5326 12.0798 18.5297 12.0534 18.5267 12.0269C18.5229 11.9932 18.5187 11.9596 18.5144 11.926C18.5071 11.8693 18.4994 11.8128 18.4906 11.7565C18.4753 11.6581 18.4582 11.5602 18.4383 11.4626C18.4177 11.3617 18.3936 11.2616 18.368 11.1615C18.3541 11.1068 18.3407 11.0519 18.3253 10.9975L18.2483 10.746C18.1373 10.4078 17.9923 10.0845 17.8141 9.77693C17.7909 9.73698 17.7671 9.69738 17.7428 9.65794C17.6008 9.42733 17.4401 9.20489 17.2592 8.99177L17.2563 8.98817L17.1889 8.89893C17.1843 8.89239 17.18 8.88567 17.1756 8.87909C17.1644 8.86269 17.1537 8.84618 17.1433 8.82951C17.0931 8.74913 17.0519 8.6659 17.0197 8.57982C17.0161 8.56996 17.0127 8.56 17.0093 8.55007C16.9938 8.50535 16.98 8.46012 16.9694 8.41395L16.9675 8.40494L16.9637 8.38871C16.951 8.32844 16.9423 8.26654 16.938 8.20391C16.9358 8.17109 16.9354 8.13862 16.9361 8.10656V8.09213C16.9369 8.07087 16.9397 8.0499 16.9418 8.02903C16.943 8.01726 16.944 8.00553 16.9456 7.99388C16.9481 7.97594 16.9517 7.95831 16.9551 7.94069C16.9567 7.93291 16.9572 7.92498 16.9589 7.91725L16.9684 7.87759L16.9836 7.82711C16.9869 7.81731 16.9915 7.80796 16.995 7.79826C17.001 7.78218 17.0072 7.76625 17.014 7.75049C17.02 7.73681 17.0264 7.72337 17.033 7.70992C17.0405 7.69484 17.0476 7.67961 17.0558 7.66485C17.0663 7.64613 17.0782 7.62809 17.0901 7.60986C17.0973 7.59876 17.1042 7.58742 17.1119 7.57651C17.1296 7.55164 17.1486 7.52735 17.1689 7.50349C17.1947 7.47319 17.2225 7.44366 17.2525 7.41515L17.3447 7.33492C17.5654 7.16025 17.8276 7.06732 18.1229 7.05908H18.1352L18.2369 7.06088H18.2483C18.2576 7.06153 18.2667 7.06365 18.2759 7.06449C18.3064 7.0673 18.3366 7.07027 18.3661 7.07531C18.3806 7.07778 18.3946 7.08221 18.4089 7.08522C18.4323 7.09016 18.4555 7.09508 18.4783 7.10145C18.4923 7.10539 18.5062 7.10958 18.5201 7.11407C18.5422 7.12127 18.5641 7.12893 18.5856 7.13751C18.6017 7.14393 18.6174 7.15104 18.6331 7.15824C18.6522 7.16695 18.6707 7.17636 18.6892 7.18619C18.7019 7.19297 18.7147 7.1996 18.7272 7.20692C18.7502 7.22043 18.7726 7.23489 18.7947 7.25019C18.8039 7.25663 18.8131 7.26325 18.8222 7.27002C18.8391 7.28257 18.8553 7.29606 18.8716 7.30968C18.9149 7.34584 18.957 7.38487 18.9961 7.42867L18.9999 7.43228C19.6492 8.19047 20.145 9.02109 20.4869 9.92296C20.8291 10.8255 21 11.7674 21 12.7472ZM13.2162 11.8241C13.2162 12.1438 13.1 12.423 12.8656 12.6453C12.8632 12.6476 12.8604 12.6494 12.858 12.6516L12.7858 12.7147L12.7763 12.7228L12.7753 12.7219C12.7166 12.7679 12.6546 12.8067 12.5901 12.84C12.5753 12.8476 12.5604 12.8547 12.5454 12.8617C12.5271 12.8701 12.509 12.8785 12.4903 12.886C12.4759 12.8918 12.4612 12.897 12.4466 12.9022C12.423 12.9106 12.3995 12.9187 12.3753 12.9257C12.3665 12.9282 12.3576 12.9305 12.3487 12.9329C12.319 12.9407 12.289 12.9479 12.2584 12.9536C12.2511 12.955 12.2439 12.9569 12.2366 12.9581C12.1602 12.9711 12.0813 12.978 12 12.978C11.9184 12.978 11.8392 12.9712 11.7625 12.9581C11.7551 12.9569 11.7479 12.955 11.7406 12.9536C11.71 12.9479 11.68 12.9408 11.6503 12.9329C11.6414 12.9305 11.6326 12.9282 11.6237 12.9257C11.5996 12.9187 11.576 12.9107 11.5525 12.9022C11.5378 12.897 11.5232 12.8918 11.5088 12.886C11.4901 12.8785 11.4719 12.8701 11.4537 12.8617C11.4386 12.8547 11.4237 12.8477 11.409 12.84C11.3446 12.8067 11.2823 12.7678 11.2237 12.7219L11.2142 12.7147L11.142 12.6516C11.1398 12.6495 11.1366 12.6474 11.1344 12.6453C10.9 12.423 10.7838 12.1438 10.7838 11.8241V4.43949C10.7838 4.11984 10.9 3.84061 11.1344 3.61828C11.3688 3.39594 11.6631 3.28564 12 3.28564C12.3369 3.28564 12.6312 3.39594 12.8656 3.61828C13.1 3.84061 13.2162 4.11984 13.2162 4.43949V11.8241Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 12.7472C11.7243 12.7472 11.4932 12.6587 11.3068 12.4818C11.1203 12.3049 11.027 12.0856 11.027 11.8241V4.43949C11.027 4.17795 11.1203 3.95872 11.3068 3.7818C11.4932 3.60488 11.7243 3.51641 12 3.51641C12.2757 3.51641 12.5068 3.60488 12.6932 3.7818C12.8797 3.95872 12.973 4.17795 12.973 4.43949V11.8241C12.973 12.0856 12.8797 12.3049 12.6932 12.4818C12.5068 12.6587 12.2757 12.7472 12 12.7472ZM12 21.0549C10.7838 21.0549 9.6446 20.8356 8.58243 20.3972C7.52027 19.9587 6.59595 19.3664 5.80946 18.6203C5.02297 17.8741 4.39865 16.9972 3.93649 15.9895C3.47432 14.9818 3.24324 13.901 3.24324 12.7472C3.24324 11.8087 3.40541 10.8972 3.72973 10.0126C4.05405 9.12795 4.52432 8.31641 5.14054 7.57795C5.31892 7.36257 5.54595 7.25872 5.82162 7.26641C6.0973 7.27411 6.34054 7.37795 6.55135 7.57795C6.72973 7.74718 6.81081 7.95488 6.79459 8.20103C6.77838 8.44718 6.68919 8.67795 6.52703 8.89334C6.08919 9.44718 5.75676 10.0549 5.52973 10.7164C5.3027 11.378 5.18919 12.0549 5.18919 12.7472C5.18919 14.5472 5.85 16.0741 7.17162 17.328C8.49324 18.5818 10.1027 19.2087 12 19.2087C13.8973 19.2087 15.5068 18.5818 16.8284 17.328C18.15 16.0741 18.8108 14.5472 18.8108 12.7472C18.8108 12.0395 18.7014 11.351 18.4824 10.6818C18.2635 10.0126 17.9189 9.40103 17.4486 8.84718C17.2865 8.64718 17.1973 8.42795 17.1811 8.18949C17.1649 7.95103 17.2459 7.74718 17.4243 7.57795C17.6189 7.39334 17.8541 7.29718 18.1297 7.28949C18.4054 7.2818 18.6324 7.37795 18.8108 7.57795C19.4432 8.31641 19.9257 9.12411 20.2581 10.001C20.5905 10.878 20.7568 11.7933 20.7568 12.7472C20.7568 13.901 20.5257 14.9818 20.0635 15.9895C19.6014 16.9972 18.977 17.8741 18.1905 18.6203C17.4041 19.3664 16.4797 19.9587 15.4176 20.3972C14.3554 20.8356 13.2162 21.0549 12 21.0549Z\" fill=\"currentColor\"/><path d=\"M20.2703 12.7472C20.2703 11.8453 20.1129 10.983 19.7999 10.1573C19.4875 9.33309 19.035 8.57288 18.4393 7.87579C18.3565 7.78307 18.2711 7.74694 18.1438 7.75049C17.9919 7.75477 17.8751 7.80351 17.7685 7.90463C17.6889 7.98013 17.6596 8.05404 17.6668 8.15974C17.6763 8.29918 17.7261 8.42956 17.8293 8.55908C18.3367 9.15708 18.7095 9.82004 18.9467 10.545C19.1802 11.2589 19.2973 11.9936 19.2973 12.7472C19.2973 14.6675 18.5871 16.3128 17.1727 17.6546C15.7583 18.9965 14.0241 19.6703 12 19.6703C9.97587 19.6703 8.24167 18.9965 6.82728 17.6546C5.41289 16.3128 4.7027 14.6675 4.7027 12.7472C4.7027 12.0062 4.82482 11.2812 5.06757 10.5738C5.30988 9.86774 5.66411 9.21718 6.13081 8.62489C6.24406 8.47447 6.2993 8.32592 6.30944 8.17236C6.31724 8.05397 6.28379 7.97691 6.20777 7.90463C6.07705 7.78062 5.94866 7.73198 5.80775 7.72795C5.69461 7.7248 5.61098 7.75657 5.5227 7.86317L5.52175 7.86407C4.93913 8.56227 4.49595 9.32899 4.18961 10.1646C3.88325 11.0003 3.72973 11.8603 3.72973 12.7472C3.72973 13.8409 3.9483 14.8591 4.3825 15.8058C4.82133 16.7625 5.41212 17.5903 6.15361 18.2938C6.89511 18.9972 7.76763 19.5577 8.77608 19.974C9.77395 20.386 10.8472 20.5933 12 20.5933V21.0549C10.7838 21.0549 9.6446 20.8356 8.58243 20.3972C7.65324 20.0136 6.82906 19.5123 6.11085 18.8932L5.80946 18.6203C5.12124 17.9673 4.55727 17.2143 4.1174 16.3611L3.93649 15.9895C3.47432 14.9818 3.24324 13.901 3.24324 12.7472C3.24324 11.8087 3.40541 10.8972 3.72973 10.0126C4.01348 9.23871 4.40935 8.52067 4.91649 7.85866L5.14054 7.57795C5.31892 7.36257 5.54595 7.25872 5.82162 7.26641L5.92367 7.27363C6.15773 7.30142 6.36694 7.40299 6.55135 7.57795C6.72973 7.74718 6.81081 7.95488 6.79459 8.20103L6.76837 8.3824C6.72886 8.56135 6.64871 8.73172 6.52703 8.89334L6.3674 9.10355C6.00742 9.59988 5.72835 10.1377 5.52973 10.7164C5.3027 11.378 5.18919 12.0549 5.18919 12.7472C5.18919 14.5472 5.85 16.0741 7.17162 17.328C8.49324 18.5818 10.1027 19.2087 12 19.2087C13.7787 19.2087 15.3042 18.6575 16.577 17.5555L16.8284 17.328C18.15 16.0741 18.8108 14.5472 18.8108 12.7472C18.8108 12.1279 18.7267 11.5233 18.559 10.9335L18.4824 10.6818C18.2909 10.0963 18.0033 9.55479 17.6193 9.05758L17.4486 8.84718C17.3269 8.69708 17.2464 8.53613 17.2069 8.36437L17.1811 8.18949C17.1669 7.98092 17.2271 7.79882 17.3618 7.64322L17.4243 7.57795C17.6189 7.39334 17.8541 7.29718 18.1297 7.28949L18.2312 7.29165C18.4616 7.30772 18.6548 7.40305 18.8108 7.57795C19.4432 8.31641 19.9257 9.12411 20.2581 10.001C20.5905 10.878 20.7568 11.7933 20.7568 12.7472C20.7568 13.901 20.5257 14.9818 20.0635 15.9895L19.8826 16.3611C19.4427 17.2143 18.8788 17.9673 18.1905 18.6203C17.4041 19.3664 16.4797 19.9587 15.4176 20.3972L15.0158 20.551C14.0695 20.8867 13.0643 21.0549 12 21.0549V20.5933C13.1528 20.5933 14.226 20.386 15.2239 19.974C16.2324 19.5577 17.1049 18.9972 17.8464 18.2938C18.5879 17.5903 19.1787 16.7625 19.6175 15.8058C20.0517 14.8591 20.2703 13.8409 20.2703 12.7472ZM12.4865 11.8241V4.43949C12.4865 4.29418 12.4404 4.19386 12.3497 4.10776C12.2589 4.02166 12.1532 3.97795 12 3.97795C11.8468 3.97795 11.7411 4.02166 11.6503 4.10776C11.5596 4.19386 11.5135 4.29418 11.5135 4.43949V11.8241C11.5135 11.9694 11.5596 12.0697 11.6503 12.1558C11.7411 12.2419 11.8468 12.2856 12 12.2856V12.7472C11.7588 12.7472 11.5515 12.6798 11.3786 12.5444L11.3068 12.4818C11.1203 12.3049 11.027 12.0856 11.027 11.8241V4.43949C11.027 4.17795 11.1203 3.95872 11.3068 3.7818C11.4932 3.60488 11.7243 3.51641 12 3.51641C12.2757 3.51641 12.5068 3.60488 12.6932 3.7818C12.8797 3.95872 12.973 4.17795 12.973 4.43949V11.8241C12.973 12.0856 12.8797 12.3049 12.6932 12.4818L12.6214 12.5444C12.4485 12.6798 12.2412 12.7472 12 12.7472V12.2856C12.1532 12.2856 12.2589 12.2419 12.3497 12.1558C12.4404 12.0697 12.4865 11.9694 12.4865 11.8241Z\" fill=\"currentColor\"/><path d=\"M4.45946 12.7472C4.45946 11.9817 4.5861 11.2328 4.83668 10.5026C5.08661 9.77431 5.45183 9.10229 5.93317 8.49057C6.02227 8.37215 6.05916 8.26449 6.0662 8.15794C6.06846 8.12362 6.06476 8.10828 6.06239 8.10205L6.03579 8.0678C5.94521 7.98186 5.87409 7.96083 5.80015 7.95872C5.77062 7.95794 5.76199 7.96153 5.76024 7.96233C5.75681 7.96391 5.74146 7.97205 5.71368 8.0056L5.71178 8.0065C5.14609 8.68441 4.71695 9.42915 4.41955 10.2403C4.12211 11.0516 3.97297 11.8861 3.97297 12.7472C3.97297 13.8108 4.18559 14.7976 4.60579 15.7138C5.03293 16.645 5.60655 17.4484 6.32559 18.1306C7.04464 18.8128 7.89149 19.357 8.87299 19.7622C9.83871 20.1609 10.8788 20.3626 12 20.3626C13.1212 20.3626 14.1613 20.1609 15.127 19.7622C16.1085 19.357 16.9554 18.8128 17.6744 18.1306C18.3935 17.4484 18.9671 16.645 19.3942 15.7138C19.8144 14.7976 20.027 13.8108 20.027 12.7472C20.027 11.8715 19.8742 11.0357 19.5709 10.2358C19.268 9.43663 18.8296 8.69891 18.2512 8.02182C18.2286 7.99714 18.2153 7.9901 18.2094 7.98757C18.2034 7.98504 18.1883 7.98027 18.1514 7.98126C18.0848 7.98314 18.0351 7.99699 17.988 8.02903L17.9405 8.0678C17.9194 8.08779 17.9144 8.09839 17.9129 8.10205C17.9116 8.10527 17.9072 8.11664 17.9091 8.14532C17.9153 8.23523 17.9459 8.32101 18.0184 8.41395C18.5447 9.03431 18.9322 9.72357 19.1785 10.4764C19.4194 11.2127 19.5405 11.9705 19.5405 12.7472C19.5405 14.7276 18.8055 16.4319 17.3447 17.8178C15.8839 19.2037 14.0875 19.901 12 19.901C9.9125 19.901 8.11611 19.2037 6.6553 17.8178C5.19449 16.4319 4.45946 14.7276 4.45946 12.7472ZM14.174 19.1366C14.1434 19.1456 14.1135 19.1568 14.0828 19.1655C14.1151 19.1564 14.1466 19.1452 14.1787 19.1357C14.1772 19.1362 14.1755 19.1362 14.174 19.1366ZM14.4761 19.0402C14.4291 19.0564 14.3821 19.0727 14.3346 19.0879C14.3317 19.0888 14.3289 19.0897 14.326 19.0906C14.3795 19.0735 14.4327 19.0558 14.4856 19.0374C14.4825 19.0385 14.4792 19.0391 14.4761 19.0402ZM14.65 18.9771C14.6491 18.9774 14.6481 18.9776 14.6472 18.978C14.6719 18.9686 14.6976 18.9614 14.7222 18.9518C14.6985 18.9611 14.6739 18.9681 14.65 18.9771ZM15.9546 18.3172C15.9419 18.3255 15.9303 18.3352 15.9175 18.3433L15.9565 18.3163L15.9546 18.3172ZM6.30184 16.7316C6.51026 16.995 6.74286 17.2482 6.99926 17.4915C7.34134 17.816 7.70259 18.0998 8.08245 18.3433L7.8012 18.1531C7.52337 17.9553 7.25583 17.7349 6.99926 17.4915C6.6572 17.167 6.35804 16.8242 6.10135 16.4638L6.30184 16.7316ZM16.2169 18.1387C16.1671 18.1744 16.1162 18.2082 16.0658 18.2424C16.0571 18.2483 16.0488 18.2546 16.0401 18.2604C16.1036 18.2178 16.1677 18.1756 16.2302 18.1306C16.226 18.1336 16.221 18.1357 16.2169 18.1387ZM17.0007 17.4915C16.787 17.6942 16.5641 17.8792 16.3356 18.0504C16.3273 18.0566 16.3193 18.0631 16.3109 18.0693C16.5483 17.8931 16.7792 17.7016 17.0007 17.4915ZM12.2432 4.43949C12.2432 4.35174 12.2202 4.31123 12.1777 4.27092C12.1352 4.23061 12.0925 4.20872 12 4.20872C11.9075 4.20872 11.8648 4.23061 11.8223 4.27092C11.7798 4.31123 11.7568 4.35174 11.7568 4.43949V11.8241C11.7568 11.9119 11.7798 11.9524 11.8223 11.9927C11.8648 12.033 11.9075 12.0549 12 12.0549C12.0925 12.0549 12.1352 12.033 12.1777 11.9927C12.2202 11.9524 12.2432 11.9119 12.2432 11.8241V4.43949ZM4.21052 9.48396C4.18588 9.53704 4.16271 9.59075 4.13925 9.64442C4.11997 9.68856 4.09979 9.73239 4.08129 9.77693C4.0386 9.8797 3.99813 9.98394 3.95967 10.0888C3.72324 10.7338 3.57505 11.3931 3.51594 12.0675C3.53568 11.8429 3.56583 11.62 3.60526 11.3986C3.625 11.2876 3.64708 11.1771 3.67177 11.0669C3.74572 10.7372 3.8415 10.4112 3.95967 10.0888C4.03507 9.88318 4.11895 9.68155 4.21052 9.48396ZM5.74789 9.6309C5.73434 9.65541 5.7212 9.68013 5.70798 9.70482C5.71562 9.69056 5.72398 9.67665 5.73174 9.66245C5.73252 9.66102 5.73285 9.65937 5.73364 9.65794L5.74789 9.6309ZM18.2426 9.55968C18.2589 9.58787 18.2753 9.61599 18.2911 9.64442C18.2964 9.65406 18.3019 9.6636 18.3072 9.67326C18.2817 9.62661 18.2552 9.58045 18.2284 9.53444C18.2332 9.54279 18.2378 9.55131 18.2426 9.55968ZM18.1333 9.37669C18.1384 9.38466 18.1426 9.39304 18.1476 9.40103C18.156 9.41448 18.164 9.42808 18.1723 9.44159C18.1532 9.41026 18.1341 9.37888 18.1143 9.34784L18.1333 9.37669ZM17.5585 8.58703C17.5829 8.62696 17.6096 8.66707 17.6412 8.70602L17.8122 8.91695L17.816 8.92146C17.8685 8.98949 17.918 9.05916 17.9671 9.12879C17.9822 9.15029 17.9969 9.17204 18.0117 9.1937C18.0138 9.19677 18.0163 9.19963 18.0184 9.20271C17.9021 9.03201 17.7769 8.86532 17.6402 8.70421L17.6355 8.6979C17.6065 8.66156 17.5814 8.62437 17.5585 8.58703ZM6.32844 8.7592L6.32559 8.76281L6.32939 8.7583C6.33033 8.75711 6.3313 8.75589 6.33224 8.75469C6.36127 8.71581 6.38614 8.67607 6.40921 8.63661L6.32844 8.7592ZM6.43011 8.59875C6.43107 8.59694 6.43201 8.59514 6.43296 8.59334C6.44306 8.57426 6.45173 8.55489 6.46052 8.53564C6.45086 8.55669 6.44133 8.57791 6.43011 8.59875ZM17.4464 8.3202C17.4488 8.33031 17.4531 8.33992 17.4559 8.34995C17.4526 8.33815 17.4482 8.3267 17.4454 8.31479L17.4464 8.3202ZM17.4264 8.05698C17.4217 8.09293 17.4212 8.13046 17.4236 8.16966L17.4245 8.17417C17.4213 8.12635 17.4238 8.07797 17.4331 8.02903C17.4313 8.03834 17.4277 8.04743 17.4264 8.05698ZM17.777 7.60986C17.7127 7.64378 17.653 7.6879 17.5965 7.74147L17.5309 7.81539C17.53 7.81661 17.529 7.81778 17.5281 7.819C17.5492 7.79139 17.5716 7.76514 17.5965 7.74147L17.7143 7.64772C17.7553 7.62074 17.7978 7.59765 17.8426 7.57921L17.777 7.60986ZM18.6246 7.72705C18.6236 7.72594 18.6227 7.72456 18.6217 7.72344C18.5957 7.69466 18.568 7.66916 18.54 7.64682C18.5378 7.64503 18.5356 7.64317 18.5334 7.64141L18.6246 7.72705ZM5.42388 7.62699C5.39816 7.64857 5.37395 7.67354 5.34977 7.70091C5.37296 7.67465 5.39704 7.64946 5.42388 7.62699ZM18.2398 7.52513C18.2331 7.52441 18.2265 7.52295 18.2198 7.52242C18.2185 7.52232 18.2173 7.52162 18.216 7.52152L18.1628 7.52062C18.1884 7.52069 18.214 7.52234 18.2398 7.52513ZM5.74314 7.49808C5.72569 7.49934 5.70863 7.50177 5.69183 7.50439C5.73376 7.49785 5.77486 7.4961 5.8144 7.49718L5.74314 7.49808ZM21 12.7472C21 13.9311 20.7626 15.0434 20.2864 16.0816C20.227 16.2111 20.1648 16.3385 20.1002 16.4638C20.039 16.5825 19.9742 16.6986 19.9083 16.8136C19.8986 16.8304 19.8895 16.8474 19.8798 16.8641C19.825 16.9581 19.7676 17.0502 19.7097 17.1417C19.6815 17.1862 19.6531 17.2304 19.6242 17.2742C19.5803 17.3407 19.5357 17.4065 19.4902 17.4716C19.4577 17.518 19.4247 17.5639 19.3914 17.6096C19.3506 17.6655 19.309 17.7206 19.2669 17.7754C19.2256 17.8293 19.1841 17.883 19.1415 17.9359C19.1054 17.9807 19.0692 18.0252 19.0322 18.0693C18.9894 18.1203 18.946 18.1707 18.902 18.2207C18.8475 18.2828 18.7922 18.3441 18.7357 18.4046C18.7057 18.4368 18.676 18.4693 18.6455 18.5011C18.5533 18.5969 18.4593 18.6913 18.3623 18.7832C17.5534 19.5507 16.6036 20.1591 15.5147 20.6087C15.5126 20.6095 15.5101 20.6096 15.508 20.6105L15.1071 20.7646L15.1014 20.7673C14.9708 20.8136 14.8387 20.8561 14.7061 20.8962C14.6577 20.9109 14.6085 20.923 14.5598 20.9368C14.4745 20.961 14.3893 20.9855 14.3032 21.0071C14.2437 21.0221 14.1836 21.0348 14.1236 21.0486C14.0473 21.0661 13.9707 21.0826 13.8937 21.0981C13.8327 21.1104 13.7717 21.1222 13.7103 21.1333C13.6377 21.1464 13.5649 21.1589 13.4918 21.1703C13.4198 21.1814 13.3477 21.1923 13.2751 21.2018C13.2001 21.2117 13.1247 21.2199 13.049 21.228C12.9889 21.2344 12.9289 21.2416 12.8685 21.2469C12.7667 21.2558 12.6644 21.2619 12.5616 21.2676C12.522 21.2698 12.4825 21.2731 12.4428 21.2748C12.2962 21.2812 12.1487 21.2856 12 21.2856C10.7521 21.2856 9.57963 21.0604 8.48533 20.6087C8.3583 20.5562 8.23328 20.5014 8.11001 20.4446C8.06865 20.4256 8.02837 20.4046 7.98744 20.3851C7.89917 20.343 7.81148 20.3006 7.72519 20.2562C7.69462 20.2405 7.66429 20.2244 7.63397 20.2084C7.54169 20.1597 7.4503 20.1101 7.36033 20.0588C7.32836 20.0405 7.29698 20.0215 7.26531 20.0029C7.18164 19.9538 7.09894 19.9037 7.01731 19.8524C6.98003 19.8289 6.943 19.8051 6.90614 19.7811C6.83311 19.7337 6.76086 19.6854 6.68951 19.636C6.64921 19.6081 6.6086 19.5807 6.56883 19.5522C6.4986 19.5018 6.43026 19.4493 6.3617 19.3971C6.32374 19.3682 6.28513 19.3401 6.24768 19.3106C6.14581 19.2304 6.04549 19.1481 5.94742 19.0636L5.94267 19.06L5.64147 18.7868C5.64036 18.7858 5.63878 18.7843 5.63767 18.7832C5.54056 18.6911 5.44585 18.5971 5.35357 18.5011C5.32316 18.4695 5.29414 18.4367 5.26425 18.4046C5.20769 18.344 5.15171 18.2829 5.09702 18.2207C5.05315 18.1709 5.01046 18.1201 4.9678 18.0693C4.93071 18.0251 4.89376 17.9808 4.85758 17.9359C4.81498 17.883 4.77349 17.8293 4.73216 17.7754C4.6901 17.7206 4.64843 17.6655 4.60769 17.6096C4.57438 17.5639 4.5413 17.518 4.50887 17.4716C4.46343 17.4066 4.41957 17.3406 4.37584 17.2742C4.34685 17.2302 4.31762 17.1863 4.28938 17.1417C4.23154 17.0503 4.17492 16.958 4.12025 16.8641C4.11045 16.8472 4.10049 16.8305 4.09079 16.8136C4.02475 16.6984 3.96017 16.5818 3.89886 16.4629C3.8344 16.3379 3.7728 16.2107 3.71358 16.0816C3.23743 15.0434 3 13.9311 3 12.7472C3 11.783 3.16651 10.8455 3.49979 9.93649C3.53626 9.83702 3.57468 9.73849 3.61476 9.64081L3.63186 9.59935C3.65396 9.5463 3.67807 9.49411 3.70122 9.44159C3.71966 9.39982 3.73723 9.35773 3.75633 9.31629C3.78236 9.25983 3.81078 9.20446 3.83805 9.14863C3.86429 9.09493 3.89047 9.04128 3.91786 8.98817C3.93561 8.95375 3.95379 8.91958 3.97202 8.8854C4.00556 8.82256 4.03946 8.75993 4.07464 8.6979C4.10103 8.65135 4.12809 8.60517 4.15541 8.55908C4.18393 8.51098 4.21329 8.46335 4.24282 8.41575C4.27421 8.36514 4.30531 8.31435 4.33784 8.26431C4.3755 8.20639 4.41458 8.14928 4.45376 8.09213C4.47697 8.05827 4.49937 8.02387 4.52312 7.99027C4.58678 7.90023 4.65232 7.81064 4.71981 7.72254C4.79414 7.62552 4.87076 7.52965 4.94975 7.43498L5.03621 7.34033C5.24802 7.13289 5.5163 7.02696 5.82865 7.03564C5.87597 7.03696 5.92263 7.04054 5.96833 7.04646C6.00433 7.05113 6.03984 7.05702 6.07475 7.06449C6.07797 7.06518 6.08104 7.06648 6.08425 7.06719C6.11772 7.07462 6.15062 7.08338 6.18307 7.09334C6.19613 7.09734 6.20911 7.10154 6.22202 7.10596C6.24517 7.11388 6.26783 7.12288 6.29044 7.1321C6.30827 7.13937 6.32614 7.14657 6.34364 7.15463C6.35129 7.15816 6.35887 7.16178 6.36645 7.16545L6.42061 7.1925C6.42776 7.19638 6.43442 7.20109 6.44151 7.20512C6.46113 7.21625 6.48033 7.2281 6.49947 7.24027C6.51119 7.24772 6.52308 7.25497 6.53463 7.26281C6.55797 7.27866 6.58043 7.29588 6.60304 7.31329C6.61265 7.32068 6.62302 7.32725 6.6325 7.33492C6.66351 7.36005 6.69413 7.38709 6.72371 7.41515C6.95287 7.63275 7.05767 7.90587 7.03727 8.21563C7.02914 8.33878 7.00455 8.45794 6.96601 8.5735C6.96368 8.58048 6.96083 8.58729 6.9584 8.59424C6.92543 8.68832 6.88273 8.77957 6.83013 8.86828C6.8241 8.87846 6.81836 8.88881 6.81208 8.89893C6.80503 8.91025 6.79854 8.92194 6.79117 8.93318L6.72466 9.02783L6.56503 9.23877C6.46525 9.37659 6.37255 9.51804 6.28568 9.66245C6.25013 9.72158 6.21456 9.78068 6.18117 9.84093C6.17094 9.85936 6.16173 9.87829 6.15171 9.89682C6.12388 9.94835 6.09722 10.0004 6.07095 10.0528C5.952 10.2896 5.84814 10.5341 5.76119 10.7874C5.54204 11.426 5.43243 12.0793 5.43243 12.7472C5.43243 14.487 6.06799 15.9553 7.34322 17.1652C8.61846 18.375 10.1661 18.978 12 18.978C12.1906 18.978 12.378 18.9694 12.5625 18.9563C12.5869 18.9546 12.6114 18.9538 12.6357 18.9518C12.694 18.9471 12.7518 18.9407 12.8095 18.9347C12.8675 18.9287 12.9252 18.9231 12.9825 18.9158C13.0057 18.9128 13.0287 18.909 13.0518 18.9058C13.1358 18.8942 13.2191 18.8816 13.3017 18.8671C13.3374 18.8608 13.3727 18.8531 13.4082 18.8463C13.4623 18.836 13.5162 18.8255 13.5697 18.8139C13.6313 18.8005 13.6922 18.7857 13.7531 18.7706C13.7972 18.7597 13.8414 18.7491 13.8851 18.7373C13.9263 18.7262 13.9669 18.714 14.0077 18.7021C14.0705 18.6838 14.133 18.6654 14.1949 18.6453C14.2341 18.6326 14.2729 18.6191 14.3118 18.6057C14.3582 18.5896 14.4045 18.5732 14.4505 18.5561C14.5043 18.536 14.5579 18.5154 14.6111 18.4939C14.6573 18.4752 14.7031 18.456 14.7488 18.4362C14.7914 18.4178 14.834 18.3996 14.8762 18.3803C14.9264 18.3572 14.9757 18.3326 15.0253 18.3082C15.0669 18.2877 15.1086 18.2674 15.1498 18.246C15.1952 18.2224 15.2399 18.1977 15.2847 18.173C15.3295 18.1483 15.3745 18.124 15.4187 18.0981C15.46 18.074 15.5004 18.0484 15.5413 18.0233C15.5874 17.995 15.6335 17.9664 15.6791 17.9368C15.7161 17.9127 15.7526 17.8878 15.7893 17.8629C15.836 17.8311 15.8829 17.7995 15.9289 17.7664C16.094 17.6478 16.2555 17.5211 16.4126 17.3851L16.6606 17.1606C17.933 15.9516 18.5676 14.4851 18.5676 12.7472C18.5676 12.7132 18.5662 12.6792 18.5657 12.6453C18.5649 12.5959 18.5647 12.5467 18.5628 12.4975C18.5616 12.4653 18.5588 12.4332 18.5571 12.401C18.5547 12.3556 18.5519 12.3102 18.5486 12.2649C18.5446 12.2119 18.5405 12.159 18.5353 12.1063C18.5326 12.0798 18.5297 12.0534 18.5267 12.0269C18.5229 11.9932 18.5187 11.9596 18.5144 11.926C18.5071 11.8693 18.4994 11.8128 18.4906 11.7565C18.4753 11.6581 18.4582 11.5602 18.4383 11.4626C18.4177 11.3617 18.3936 11.2616 18.368 11.1615C18.3541 11.1068 18.3407 11.0519 18.3253 10.9975L18.2483 10.746C18.1373 10.4078 17.9923 10.0845 17.8141 9.77693C17.7909 9.73698 17.7671 9.69738 17.7428 9.65794C17.6008 9.42733 17.4401 9.20489 17.2592 8.99177L17.2563 8.98817L17.1889 8.89893C17.1843 8.89239 17.18 8.88567 17.1756 8.87909C17.1644 8.86269 17.1537 8.84618 17.1433 8.82951C17.0931 8.74913 17.0519 8.6659 17.0197 8.57982C17.0161 8.56996 17.0127 8.56 17.0093 8.55007C16.9938 8.50535 16.98 8.46012 16.9694 8.41395L16.9675 8.40494L16.9637 8.38871C16.951 8.32844 16.9423 8.26654 16.938 8.20391C16.9358 8.17109 16.9354 8.13862 16.9361 8.10656V8.09213C16.9369 8.07087 16.9397 8.0499 16.9418 8.02903C16.943 8.01726 16.944 8.00553 16.9456 7.99388C16.9481 7.97594 16.9517 7.95831 16.9551 7.94069C16.9567 7.93291 16.9572 7.92498 16.9589 7.91725L16.9684 7.87759L16.9836 7.82711C16.9869 7.81731 16.9915 7.80796 16.995 7.79826C17.001 7.78218 17.0072 7.76625 17.014 7.75049C17.02 7.73681 17.0264 7.72337 17.033 7.70992C17.0405 7.69484 17.0476 7.67961 17.0558 7.66485C17.0663 7.64613 17.0782 7.62809 17.0901 7.60986C17.0973 7.59876 17.1042 7.58742 17.1119 7.57651C17.1296 7.55164 17.1486 7.52735 17.1689 7.50349C17.1947 7.47319 17.2225 7.44366 17.2525 7.41515L17.3447 7.33492C17.5654 7.16025 17.8276 7.06732 18.1229 7.05908H18.1352L18.2369 7.06088H18.2483C18.2576 7.06153 18.2667 7.06365 18.2759 7.06449C18.3064 7.0673 18.3366 7.07027 18.3661 7.07531C18.3806 7.07778 18.3946 7.08221 18.4089 7.08522C18.4323 7.09016 18.4555 7.09508 18.4783 7.10145C18.4923 7.10539 18.5062 7.10958 18.5201 7.11407C18.5422 7.12127 18.5641 7.12893 18.5856 7.13751C18.6017 7.14393 18.6174 7.15104 18.6331 7.15824C18.6522 7.16695 18.6707 7.17636 18.6892 7.18619C18.7019 7.19297 18.7147 7.1996 18.7272 7.20692C18.7502 7.22043 18.7726 7.23489 18.7947 7.25019C18.8039 7.25663 18.8131 7.26325 18.8222 7.27002C18.8391 7.28257 18.8553 7.29606 18.8716 7.30968C18.9149 7.34584 18.957 7.38487 18.9961 7.42867L18.9999 7.43228C19.6492 8.19047 20.145 9.02109 20.4869 9.92296C20.8291 10.8255 21 11.7674 21 12.7472ZM13.2162 11.8241C13.2162 12.1438 13.1 12.423 12.8656 12.6453C12.8632 12.6476 12.8604 12.6494 12.858 12.6516L12.7858 12.7147L12.7763 12.7228L12.7753 12.7219C12.7166 12.7679 12.6546 12.8067 12.5901 12.84C12.5753 12.8476 12.5604 12.8547 12.5454 12.8617C12.5271 12.8701 12.509 12.8785 12.4903 12.886C12.4759 12.8918 12.4612 12.897 12.4466 12.9022C12.423 12.9106 12.3995 12.9187 12.3753 12.9257C12.3665 12.9282 12.3576 12.9305 12.3487 12.9329C12.319 12.9407 12.289 12.9479 12.2584 12.9536C12.2511 12.955 12.2439 12.9569 12.2366 12.9581C12.1602 12.9711 12.0813 12.978 12 12.978C11.9184 12.978 11.8392 12.9712 11.7625 12.9581C11.7551 12.9569 11.7479 12.955 11.7406 12.9536C11.71 12.9479 11.68 12.9408 11.6503 12.9329C11.6414 12.9305 11.6326 12.9282 11.6237 12.9257C11.5996 12.9187 11.576 12.9107 11.5525 12.9022C11.5378 12.897 11.5232 12.8918 11.5088 12.886C11.4901 12.8785 11.4719 12.8701 11.4537 12.8617C11.4386 12.8547 11.4237 12.8477 11.409 12.84C11.3446 12.8067 11.2823 12.7678 11.2237 12.7219L11.2142 12.7147L11.142 12.6516C11.1398 12.6495 11.1366 12.6474 11.1344 12.6453C10.9 12.423 10.7838 12.1438 10.7838 11.8241V4.43949C10.7838 4.11984 10.9 3.84061 11.1344 3.61828C11.3688 3.39594 11.6631 3.28564 12 3.28564C12.3369 3.28564 12.6312 3.39594 12.8656 3.61828C13.1 3.84061 13.2162 4.11984 13.2162 4.43949V11.8241Z\" fill=\"currentColor\"/>` },\r\n    partners: { outlined: `<mask id=\"path-1-outside-1_9042_7924\" maskUnits=\"userSpaceOnUse\" x=\"1\" y=\"4\" width=\"22\" height=\"16\" fill=\"black\"><rect fill=\"white\" x=\"1\" y=\"4\" width=\"22\" height=\"16\"/><path d=\"M21.8134 14.7073H18.9248C18.7041 14.7073 18.5252 14.476 18.5252 14.1905V5.51687C18.5252 5.23136 18.7041 5 18.9248 5H21.8134C21.9162 5 21.9999 5.1083 21.9999 5.24121V14.4661C22.0037 14.599 21.92 14.7073 21.8134 14.7073ZM18.9248 5.4824L18.8982 14.1856L18.9248 14.2201H21.6271V5.48252L18.9248 5.4824Z\"/><path d=\"M11.1609 18.9999H11.1533C10.8526 18.9999 10.571 18.8424 10.3579 18.5618L6.37686 13.2848H5.2922C5.18944 13.2848 5.10571 13.1765 5.10571 13.0436C5.10571 12.9107 5.18944 12.8024 5.2922 12.8024H6.45678C6.50626 12.8024 6.55573 12.827 6.58999 12.8762L10.628 18.227C10.7688 18.414 10.9553 18.5174 11.157 18.5174C11.3701 18.5076 11.5452 18.419 11.6898 18.2368C11.8306 18.0547 11.9068 17.8135 11.9068 17.5575C11.9068 17.3016 11.8306 17.0604 11.6898 16.8782L11.2141 16.2629C11.1418 16.1694 11.1418 16.0168 11.2141 15.9183C11.2864 15.8248 11.4044 15.8248 11.4805 15.9183L11.9562 16.5336C12.1694 16.8093 12.2836 17.1686 12.2836 17.5575C12.2836 17.9464 12.1656 18.3058 11.9562 18.5814C11.7393 18.8473 11.4577 18.9999 11.1609 18.9999Z\"/><path d=\"M13.0219 18.0102C12.7403 18.0102 12.4587 17.8724 12.2455 17.5967L11.6861 16.8731C11.6138 16.7796 11.6138 16.627 11.6861 16.5285C11.7584 16.435 11.8764 16.435 11.9525 16.5285L12.512 17.2521C12.786 17.6066 13.2617 17.6066 13.5357 17.2521C13.6727 17.0749 13.7489 16.8386 13.7489 16.5876C13.7489 16.3365 13.6727 16.1002 13.5357 15.923L12.767 14.9287C12.6946 14.8351 12.6946 14.6825 12.767 14.5841C12.8393 14.4905 12.9573 14.4905 13.0334 14.5841L13.8022 15.5784C14.0115 15.8492 14.1256 16.2036 14.1256 16.5826C14.1256 16.9617 14.0115 17.321 13.8022 17.5869C13.5852 17.8674 13.3036 18.0102 13.0219 18.0102Z\"/><path d=\"M14.6889 16.8287C14.4072 16.8287 14.1256 16.6909 13.9125 16.4152L13.5357 15.9279C13.4634 15.8344 13.4634 15.6818 13.5357 15.5833C13.608 15.4898 13.726 15.4898 13.8021 15.5833L14.1789 16.0706C14.4605 16.4349 14.921 16.4349 15.2027 16.0706C15.4843 15.7064 15.4843 15.1107 15.2027 14.7465L14.4186 13.7324C14.3463 13.6388 14.3463 13.4862 14.4186 13.3878C14.491 13.2942 14.6089 13.2942 14.6851 13.3878L15.4691 14.4019C15.8953 14.9581 15.8953 15.859 15.4691 16.4103C15.2522 16.6909 14.9705 16.8287 14.6889 16.8287Z\"/><path d=\"M5.07505 14.7073H2.18649C2.08373 14.7073 2 14.599 2 14.4661V5.24121C2 5.1083 2.08373 5 2.18649 5H5.07505C5.29579 5 5.47466 5.23137 5.47466 5.51687V14.1857C5.47846 14.4762 5.29578 14.7073 5.07505 14.7073ZM2.37672 14.22H5.07894C5.09417 14.22 5.10559 14.2052 5.10559 14.1855V5.51667L2.37681 5.48713L2.37672 14.22Z\"/><path d=\"M16.4052 15.7362C16.1311 15.7362 15.8571 15.6032 15.6478 15.3325L15.1987 14.7467C15.1264 14.6532 15.1264 14.5006 15.1987 14.4021C15.271 14.3086 15.389 14.3086 15.4651 14.4021L15.9142 14.9879C16.1768 15.3276 16.6335 15.3276 16.8961 14.9879C17.0255 14.8205 17.0978 14.5941 17.0978 14.3529C17.0978 14.1117 17.0255 13.8902 16.8961 13.7179L13.7562 9.6566H12.6601L10.9284 11.8964C10.4869 12.4674 9.76383 12.4674 9.32233 11.8964C8.88083 11.3254 8.88085 10.3901 9.32233 9.81904L11.9788 6.38313C12.013 6.33882 12.0625 6.31421 12.112 6.31421H18.7114C18.8142 6.31421 18.8979 6.42251 18.8979 6.55542C18.8979 6.68833 18.8142 6.79662 18.7114 6.79662H12.1882L9.58487 10.1639C9.44025 10.3509 9.36033 10.5971 9.36033 10.8629C9.36033 11.1238 9.44025 11.3748 9.58487 11.5619C9.88174 11.9459 10.3651 11.9459 10.6619 11.5619L12.4507 9.24827C12.485 9.20397 12.5344 9.17935 12.5839 9.17935H13.836C13.8855 9.17935 13.935 9.20396 13.9692 9.24827L17.1623 13.3782C17.5771 13.9148 17.5771 14.796 17.1623 15.3325C16.953 15.5983 16.6792 15.7362 16.4052 15.7362Z\"/><path d=\"M9.93158 6.69351H5.2922C5.18944 6.69351 5.10571 6.58522 5.10571 6.45231C5.10571 6.3194 5.18944 6.2111 5.2922 6.2111H9.93158C10.0343 6.2111 10.1181 6.3194 10.1181 6.45231C10.1181 6.58522 10.0343 6.69351 9.93158 6.69351Z\"/></mask><path d=\"M21.8134 14.7073H18.9248C18.7041 14.7073 18.5252 14.476 18.5252 14.1905V5.51687C18.5252 5.23136 18.7041 5 18.9248 5H21.8134C21.9162 5 21.9999 5.1083 21.9999 5.24121V14.4661C22.0037 14.599 21.92 14.7073 21.8134 14.7073ZM18.9248 5.4824L18.8982 14.1856L18.9248 14.2201H21.6271V5.48252L18.9248 5.4824Z\" fill=\"currentColor\"/><path d=\"M11.1609 18.9999H11.1533C10.8526 18.9999 10.571 18.8424 10.3579 18.5618L6.37686 13.2848H5.2922C5.18944 13.2848 5.10571 13.1765 5.10571 13.0436C5.10571 12.9107 5.18944 12.8024 5.2922 12.8024H6.45678C6.50626 12.8024 6.55573 12.827 6.58999 12.8762L10.628 18.227C10.7688 18.414 10.9553 18.5174 11.157 18.5174C11.3701 18.5076 11.5452 18.419 11.6898 18.2368C11.8306 18.0547 11.9068 17.8135 11.9068 17.5575C11.9068 17.3016 11.8306 17.0604 11.6898 16.8782L11.2141 16.2629C11.1418 16.1694 11.1418 16.0168 11.2141 15.9183C11.2864 15.8248 11.4044 15.8248 11.4805 15.9183L11.9562 16.5336C12.1694 16.8093 12.2836 17.1686 12.2836 17.5575C12.2836 17.9464 12.1656 18.3058 11.9562 18.5814C11.7393 18.8473 11.4577 18.9999 11.1609 18.9999Z\" fill=\"currentColor\"/><path d=\"M13.0219 18.0102C12.7403 18.0102 12.4587 17.8724 12.2455 17.5967L11.6861 16.8731C11.6138 16.7796 11.6138 16.627 11.6861 16.5285C11.7584 16.435 11.8764 16.435 11.9525 16.5285L12.512 17.2521C12.786 17.6066 13.2617 17.6066 13.5357 17.2521C13.6727 17.0749 13.7489 16.8386 13.7489 16.5876C13.7489 16.3365 13.6727 16.1002 13.5357 15.923L12.767 14.9287C12.6946 14.8351 12.6946 14.6825 12.767 14.5841C12.8393 14.4905 12.9573 14.4905 13.0334 14.5841L13.8022 15.5784C14.0115 15.8492 14.1256 16.2036 14.1256 16.5826C14.1256 16.9617 14.0115 17.321 13.8022 17.5869C13.5852 17.8674 13.3036 18.0102 13.0219 18.0102Z\" fill=\"currentColor\"/><path d=\"M14.6889 16.8287C14.4072 16.8287 14.1256 16.6909 13.9125 16.4152L13.5357 15.9279C13.4634 15.8344 13.4634 15.6818 13.5357 15.5833C13.608 15.4898 13.726 15.4898 13.8021 15.5833L14.1789 16.0706C14.4605 16.4349 14.921 16.4349 15.2027 16.0706C15.4843 15.7064 15.4843 15.1107 15.2027 14.7465L14.4186 13.7324C14.3463 13.6388 14.3463 13.4862 14.4186 13.3878C14.491 13.2942 14.6089 13.2942 14.6851 13.3878L15.4691 14.4019C15.8953 14.9581 15.8953 15.859 15.4691 16.4103C15.2522 16.6909 14.9705 16.8287 14.6889 16.8287Z\" fill=\"currentColor\"/><path d=\"M5.07505 14.7073H2.18649C2.08373 14.7073 2 14.599 2 14.4661V5.24121C2 5.1083 2.08373 5 2.18649 5H5.07505C5.29579 5 5.47466 5.23137 5.47466 5.51687V14.1857C5.47846 14.4762 5.29578 14.7073 5.07505 14.7073ZM2.37672 14.22H5.07894C5.09417 14.22 5.10559 14.2052 5.10559 14.1855V5.51667L2.37681 5.48713L2.37672 14.22Z\" fill=\"currentColor\"/><path d=\"M16.4052 15.7362C16.1311 15.7362 15.8571 15.6032 15.6478 15.3325L15.1987 14.7467C15.1264 14.6532 15.1264 14.5006 15.1987 14.4021C15.271 14.3086 15.389 14.3086 15.4651 14.4021L15.9142 14.9879C16.1768 15.3276 16.6335 15.3276 16.8961 14.9879C17.0255 14.8205 17.0978 14.5941 17.0978 14.3529C17.0978 14.1117 17.0255 13.8902 16.8961 13.7179L13.7562 9.6566H12.6601L10.9284 11.8964C10.4869 12.4674 9.76383 12.4674 9.32233 11.8964C8.88083 11.3254 8.88085 10.3901 9.32233 9.81904L11.9788 6.38313C12.013 6.33882 12.0625 6.31421 12.112 6.31421H18.7114C18.8142 6.31421 18.8979 6.42251 18.8979 6.55542C18.8979 6.68833 18.8142 6.79662 18.7114 6.79662H12.1882L9.58487 10.1639C9.44025 10.3509 9.36033 10.5971 9.36033 10.8629C9.36033 11.1238 9.44025 11.3748 9.58487 11.5619C9.88174 11.9459 10.3651 11.9459 10.6619 11.5619L12.4507 9.24827C12.485 9.20397 12.5344 9.17935 12.5839 9.17935H13.836C13.8855 9.17935 13.935 9.20396 13.9692 9.24827L17.1623 13.3782C17.5771 13.9148 17.5771 14.796 17.1623 15.3325C16.953 15.5983 16.6792 15.7362 16.4052 15.7362Z\" fill=\"currentColor\"/><path d=\"M9.93158 6.69351H5.2922C5.18944 6.69351 5.10571 6.58522 5.10571 6.45231C5.10571 6.3194 5.18944 6.2111 5.2922 6.2111H9.93158C10.0343 6.2111 10.1181 6.3194 10.1181 6.45231C10.1181 6.58522 10.0343 6.69351 9.93158 6.69351Z\" fill=\"currentColor\"/><path d=\"M21.8134 14.7073H18.9248C18.7041 14.7073 18.5252 14.476 18.5252 14.1905V5.51687C18.5252 5.23136 18.7041 5 18.9248 5H21.8134C21.9162 5 21.9999 5.1083 21.9999 5.24121V14.4661C22.0037 14.599 21.92 14.7073 21.8134 14.7073ZM18.9248 5.4824L18.8982 14.1856L18.9248 14.2201H21.6271V5.48252L18.9248 5.4824Z\" stroke=\"currentColor\" mask=\"url(#path-1-outside-1_9042_7924)\"/><path d=\"M11.1609 18.9999H11.1533C10.8526 18.9999 10.571 18.8424 10.3579 18.5618L6.37686 13.2848H5.2922C5.18944 13.2848 5.10571 13.1765 5.10571 13.0436C5.10571 12.9107 5.18944 12.8024 5.2922 12.8024H6.45678C6.50626 12.8024 6.55573 12.827 6.58999 12.8762L10.628 18.227C10.7688 18.414 10.9553 18.5174 11.157 18.5174C11.3701 18.5076 11.5452 18.419 11.6898 18.2368C11.8306 18.0547 11.9068 17.8135 11.9068 17.5575C11.9068 17.3016 11.8306 17.0604 11.6898 16.8782L11.2141 16.2629C11.1418 16.1694 11.1418 16.0168 11.2141 15.9183C11.2864 15.8248 11.4044 15.8248 11.4805 15.9183L11.9562 16.5336C12.1694 16.8093 12.2836 17.1686 12.2836 17.5575C12.2836 17.9464 12.1656 18.3058 11.9562 18.5814C11.7393 18.8473 11.4577 18.9999 11.1609 18.9999Z\" stroke=\"currentColor\" mask=\"url(#path-1-outside-1_9042_7924)\"/><path d=\"M13.0219 18.0102C12.7403 18.0102 12.4587 17.8724 12.2455 17.5967L11.6861 16.8731C11.6138 16.7796 11.6138 16.627 11.6861 16.5285C11.7584 16.435 11.8764 16.435 11.9525 16.5285L12.512 17.2521C12.786 17.6066 13.2617 17.6066 13.5357 17.2521C13.6727 17.0749 13.7489 16.8386 13.7489 16.5876C13.7489 16.3365 13.6727 16.1002 13.5357 15.923L12.767 14.9287C12.6946 14.8351 12.6946 14.6825 12.767 14.5841C12.8393 14.4905 12.9573 14.4905 13.0334 14.5841L13.8022 15.5784C14.0115 15.8492 14.1256 16.2036 14.1256 16.5826C14.1256 16.9617 14.0115 17.321 13.8022 17.5869C13.5852 17.8674 13.3036 18.0102 13.0219 18.0102Z\" stroke=\"currentColor\" mask=\"url(#path-1-outside-1_9042_7924)\"/><path d=\"M14.6889 16.8287C14.4072 16.8287 14.1256 16.6909 13.9125 16.4152L13.5357 15.9279C13.4634 15.8344 13.4634 15.6818 13.5357 15.5833C13.608 15.4898 13.726 15.4898 13.8021 15.5833L14.1789 16.0706C14.4605 16.4349 14.921 16.4349 15.2027 16.0706C15.4843 15.7064 15.4843 15.1107 15.2027 14.7465L14.4186 13.7324C14.3463 13.6388 14.3463 13.4862 14.4186 13.3878C14.491 13.2942 14.6089 13.2942 14.6851 13.3878L15.4691 14.4019C15.8953 14.9581 15.8953 15.859 15.4691 16.4103C15.2522 16.6909 14.9705 16.8287 14.6889 16.8287Z\" stroke=\"currentColor\" mask=\"url(#path-1-outside-1_9042_7924)\"/><path d=\"M5.07505 14.7073H2.18649C2.08373 14.7073 2 14.599 2 14.4661V5.24121C2 5.1083 2.08373 5 2.18649 5H5.07505C5.29579 5 5.47466 5.23137 5.47466 5.51687V14.1857C5.47846 14.4762 5.29578 14.7073 5.07505 14.7073ZM2.37672 14.22H5.07894C5.09417 14.22 5.10559 14.2052 5.10559 14.1855V5.51667L2.37681 5.48713L2.37672 14.22Z\" stroke=\"currentColor\" mask=\"url(#path-1-outside-1_9042_7924)\"/><path d=\"M16.4052 15.7362C16.1311 15.7362 15.8571 15.6032 15.6478 15.3325L15.1987 14.7467C15.1264 14.6532 15.1264 14.5006 15.1987 14.4021C15.271 14.3086 15.389 14.3086 15.4651 14.4021L15.9142 14.9879C16.1768 15.3276 16.6335 15.3276 16.8961 14.9879C17.0255 14.8205 17.0978 14.5941 17.0978 14.3529C17.0978 14.1117 17.0255 13.8902 16.8961 13.7179L13.7562 9.6566H12.6601L10.9284 11.8964C10.4869 12.4674 9.76383 12.4674 9.32233 11.8964C8.88083 11.3254 8.88085 10.3901 9.32233 9.81904L11.9788 6.38313C12.013 6.33882 12.0625 6.31421 12.112 6.31421H18.7114C18.8142 6.31421 18.8979 6.42251 18.8979 6.55542C18.8979 6.68833 18.8142 6.79662 18.7114 6.79662H12.1882L9.58487 10.1639C9.44025 10.3509 9.36033 10.5971 9.36033 10.8629C9.36033 11.1238 9.44025 11.3748 9.58487 11.5619C9.88174 11.9459 10.3651 11.9459 10.6619 11.5619L12.4507 9.24827C12.485 9.20397 12.5344 9.17935 12.5839 9.17935H13.836C13.8855 9.17935 13.935 9.20396 13.9692 9.24827L17.1623 13.3782C17.5771 13.9148 17.5771 14.796 17.1623 15.3325C16.953 15.5983 16.6792 15.7362 16.4052 15.7362Z\" stroke=\"currentColor\" mask=\"url(#path-1-outside-1_9042_7924)\"/><path d=\"M9.93158 6.69351H5.2922C5.18944 6.69351 5.10571 6.58522 5.10571 6.45231C5.10571 6.3194 5.18944 6.2111 5.2922 6.2111H9.93158C10.0343 6.2111 10.1181 6.3194 10.1181 6.45231C10.1181 6.58522 10.0343 6.69351 9.93158 6.69351Z\" stroke=\"currentColor\" mask=\"url(#path-1-outside-1_9042_7924)\"/>`, filled: `<mask id=\"path-1-outside-1_9042_7926\" maskUnits=\"userSpaceOnUse\" x=\"1\" y=\"4\" width=\"22\" height=\"16\" fill=\"black\"><rect fill=\"white\" x=\"1\" y=\"4\" width=\"22\" height=\"16\"/><path d=\"M21.8134 14.7073H18.9248C18.7041 14.7073 18.5252 14.476 18.5252 14.1905V5.51687C18.5252 5.23136 18.7041 5 18.9248 5H21.8134C21.9162 5 21.9999 5.1083 21.9999 5.24121V14.4661C22.0037 14.5991 21.92 14.7073 21.8134 14.7073Z\"/><path d=\"M11.1609 18.9999H11.1533C10.8526 18.9999 10.571 18.8424 10.3579 18.5618L6.37686 13.2848H5.2922C5.18944 13.2848 5.10571 13.1765 5.10571 13.0436C5.10571 12.9107 5.18944 12.8024 5.2922 12.8024H6.45678C6.50626 12.8024 6.55573 12.827 6.58999 12.8762L10.628 18.227C10.7688 18.414 10.9553 18.5174 11.157 18.5174C11.3701 18.5076 11.5452 18.419 11.6898 18.2368C11.8306 18.0547 11.9068 17.8135 11.9068 17.5575C11.9068 17.3016 11.8306 17.0604 11.6898 16.8782L11.2141 16.2629C11.1418 16.1694 11.1418 16.0168 11.2141 15.9183C11.2864 15.8248 11.4044 15.8248 11.4805 15.9183L11.9562 16.5336C12.1694 16.8093 12.2836 17.1686 12.2836 17.5575C12.2836 17.9464 12.1656 18.3058 11.9562 18.5814C11.7393 18.8473 11.4577 18.9999 11.1609 18.9999Z\"/><path d=\"M13.0219 18.0102C12.7403 18.0102 12.4587 17.8724 12.2455 17.5967L11.6861 16.8731C11.6138 16.7796 11.6138 16.627 11.6861 16.5285C11.7584 16.435 11.8764 16.435 11.9525 16.5285L12.512 17.2521C12.786 17.6066 13.2617 17.6066 13.5357 17.2521C13.6727 17.0749 13.7489 16.8386 13.7489 16.5876C13.7489 16.3365 13.6727 16.1002 13.5357 15.923L12.767 14.9287C12.6946 14.8351 12.6946 14.6825 12.767 14.5841C12.8393 14.4905 12.9573 14.4905 13.0334 14.5841L13.8022 15.5784C14.0115 15.8492 14.1256 16.2036 14.1256 16.5826C14.1256 16.9617 14.0115 17.321 13.8022 17.5869C13.5852 17.8674 13.3036 18.0102 13.0219 18.0102Z\"/><path d=\"M14.6889 16.8287C14.4072 16.8287 14.1256 16.6909 13.9125 16.4152L13.5357 15.9279C13.4634 15.8344 13.4634 15.6818 13.5357 15.5833C13.608 15.4898 13.726 15.4898 13.8021 15.5833L14.1789 16.0706C14.4605 16.4349 14.921 16.4349 15.2027 16.0706C15.4843 15.7064 15.4843 15.1107 15.2027 14.7465L14.4186 13.7324C14.3463 13.6388 14.3463 13.4862 14.4186 13.3878C14.491 13.2942 14.6089 13.2942 14.6851 13.3878L15.4691 14.4019C15.8953 14.9581 15.8953 15.859 15.4691 16.4103C15.2522 16.6909 14.9705 16.8287 14.6889 16.8287Z\"/><path d=\"M5.07505 14.7075H2.18649C2.08373 14.7075 2 14.5992 2 14.4663V5.24121C2 5.1083 2.08373 5 2.18649 5H5.07505C5.29579 5 5.47466 5.23137 5.47466 5.51688V14.1859C5.47846 14.4763 5.29578 14.7075 5.07505 14.7075Z\"/><path d=\"M16.4052 15.7362C16.1311 15.7362 15.8571 15.6032 15.6478 15.3325L15.1987 14.7467C15.1264 14.6532 15.1264 14.5006 15.1987 14.4021C15.271 14.3086 15.389 14.3086 15.4651 14.4021L15.9142 14.9879C16.1768 15.3276 16.6335 15.3276 16.8961 14.9879C17.0255 14.8205 17.0978 14.5941 17.0978 14.3529C17.0978 14.1117 17.0255 13.8902 16.8961 13.7179L13.7562 9.6566H12.6601L10.9284 11.8964C10.4869 12.4674 9.76383 12.4674 9.32233 11.8964C8.88083 11.3254 8.88085 10.3901 9.32233 9.81904L11.9788 6.38313C12.013 6.33882 12.0625 6.31421 12.112 6.31421H18.7114C18.8142 6.31421 18.8979 6.42251 18.8979 6.55542C18.8979 6.68833 18.8142 6.79662 18.7114 6.79662H12.1882L9.58487 10.1639C9.44025 10.3509 9.36033 10.5971 9.36033 10.8629C9.36033 11.1238 9.44025 11.3748 9.58487 11.5619C9.88174 11.9459 10.3651 11.9459 10.6619 11.5619L12.4507 9.24827C12.485 9.20397 12.5344 9.17935 12.5839 9.17935H13.836C13.8855 9.17935 13.935 9.20396 13.9692 9.24827L17.1623 13.3782C17.5771 13.9148 17.5771 14.796 17.1623 15.3325C16.953 15.5983 16.6792 15.7362 16.4052 15.7362Z\"/><path d=\"M9.93158 6.69351H5.2922C5.18944 6.69351 5.10571 6.58522 5.10571 6.45231C5.10571 6.3194 5.18944 6.2111 5.2922 6.2111H9.93158C10.0343 6.2111 10.1181 6.3194 10.1181 6.45231C10.1181 6.58522 10.0343 6.69351 9.93158 6.69351Z\"/></mask><path d=\"M21.8134 14.7073H18.9248C18.7041 14.7073 18.5252 14.476 18.5252 14.1905V5.51687C18.5252 5.23136 18.7041 5 18.9248 5H21.8134C21.9162 5 21.9999 5.1083 21.9999 5.24121V14.4661C22.0037 14.5991 21.92 14.7073 21.8134 14.7073Z\" fill=\"currentColor\"/><path d=\"M11.1609 18.9999H11.1533C10.8526 18.9999 10.571 18.8424 10.3579 18.5618L6.37686 13.2848H5.2922C5.18944 13.2848 5.10571 13.1765 5.10571 13.0436C5.10571 12.9107 5.18944 12.8024 5.2922 12.8024H6.45678C6.50626 12.8024 6.55573 12.827 6.58999 12.8762L10.628 18.227C10.7688 18.414 10.9553 18.5174 11.157 18.5174C11.3701 18.5076 11.5452 18.419 11.6898 18.2368C11.8306 18.0547 11.9068 17.8135 11.9068 17.5575C11.9068 17.3016 11.8306 17.0604 11.6898 16.8782L11.2141 16.2629C11.1418 16.1694 11.1418 16.0168 11.2141 15.9183C11.2864 15.8248 11.4044 15.8248 11.4805 15.9183L11.9562 16.5336C12.1694 16.8093 12.2836 17.1686 12.2836 17.5575C12.2836 17.9464 12.1656 18.3058 11.9562 18.5814C11.7393 18.8473 11.4577 18.9999 11.1609 18.9999Z\" fill=\"currentColor\"/><path d=\"M13.0219 18.0102C12.7403 18.0102 12.4587 17.8724 12.2455 17.5967L11.6861 16.8731C11.6138 16.7796 11.6138 16.627 11.6861 16.5285C11.7584 16.435 11.8764 16.435 11.9525 16.5285L12.512 17.2521C12.786 17.6066 13.2617 17.6066 13.5357 17.2521C13.6727 17.0749 13.7489 16.8386 13.7489 16.5876C13.7489 16.3365 13.6727 16.1002 13.5357 15.923L12.767 14.9287C12.6946 14.8351 12.6946 14.6825 12.767 14.5841C12.8393 14.4905 12.9573 14.4905 13.0334 14.5841L13.8022 15.5784C14.0115 15.8492 14.1256 16.2036 14.1256 16.5826C14.1256 16.9617 14.0115 17.321 13.8022 17.5869C13.5852 17.8674 13.3036 18.0102 13.0219 18.0102Z\" fill=\"currentColor\"/><path d=\"M14.6889 16.8287C14.4072 16.8287 14.1256 16.6909 13.9125 16.4152L13.5357 15.9279C13.4634 15.8344 13.4634 15.6818 13.5357 15.5833C13.608 15.4898 13.726 15.4898 13.8021 15.5833L14.1789 16.0706C14.4605 16.4349 14.921 16.4349 15.2027 16.0706C15.4843 15.7064 15.4843 15.1107 15.2027 14.7465L14.4186 13.7324C14.3463 13.6388 14.3463 13.4862 14.4186 13.3878C14.491 13.2942 14.6089 13.2942 14.6851 13.3878L15.4691 14.4019C15.8953 14.9581 15.8953 15.859 15.4691 16.4103C15.2522 16.6909 14.9705 16.8287 14.6889 16.8287Z\" fill=\"currentColor\"/><path d=\"M5.07505 14.7075H2.18649C2.08373 14.7075 2 14.5992 2 14.4663V5.24121C2 5.1083 2.08373 5 2.18649 5H5.07505C5.29579 5 5.47466 5.23137 5.47466 5.51688V14.1859C5.47846 14.4763 5.29578 14.7075 5.07505 14.7075Z\" fill=\"currentColor\"/><path d=\"M16.4052 15.7362C16.1311 15.7362 15.8571 15.6032 15.6478 15.3325L15.1987 14.7467C15.1264 14.6532 15.1264 14.5006 15.1987 14.4021C15.271 14.3086 15.389 14.3086 15.4651 14.4021L15.9142 14.9879C16.1768 15.3276 16.6335 15.3276 16.8961 14.9879C17.0255 14.8205 17.0978 14.5941 17.0978 14.3529C17.0978 14.1117 17.0255 13.8902 16.8961 13.7179L13.7562 9.6566H12.6601L10.9284 11.8964C10.4869 12.4674 9.76383 12.4674 9.32233 11.8964C8.88083 11.3254 8.88085 10.3901 9.32233 9.81904L11.9788 6.38313C12.013 6.33882 12.0625 6.31421 12.112 6.31421H18.7114C18.8142 6.31421 18.8979 6.42251 18.8979 6.55542C18.8979 6.68833 18.8142 6.79662 18.7114 6.79662H12.1882L9.58487 10.1639C9.44025 10.3509 9.36033 10.5971 9.36033 10.8629C9.36033 11.1238 9.44025 11.3748 9.58487 11.5619C9.88174 11.9459 10.3651 11.9459 10.6619 11.5619L12.4507 9.24827C12.485 9.20397 12.5344 9.17935 12.5839 9.17935H13.836C13.8855 9.17935 13.935 9.20396 13.9692 9.24827L17.1623 13.3782C17.5771 13.9148 17.5771 14.796 17.1623 15.3325C16.953 15.5983 16.6792 15.7362 16.4052 15.7362Z\" fill=\"currentColor\"/><path d=\"M9.93158 6.69351H5.2922C5.18944 6.69351 5.10571 6.58522 5.10571 6.45231C5.10571 6.3194 5.18944 6.2111 5.2922 6.2111H9.93158C10.0343 6.2111 10.1181 6.3194 10.1181 6.45231C10.1181 6.58522 10.0343 6.69351 9.93158 6.69351Z\" fill=\"currentColor\"/><path d=\"M21.8134 14.7073H18.9248C18.7041 14.7073 18.5252 14.476 18.5252 14.1905V5.51687C18.5252 5.23136 18.7041 5 18.9248 5H21.8134C21.9162 5 21.9999 5.1083 21.9999 5.24121V14.4661C22.0037 14.5991 21.92 14.7073 21.8134 14.7073Z\" stroke=\"currentColor\" stroke-width=\"0.8\" mask=\"url(#path-1-outside-1_9042_7926)\"/><path d=\"M11.1609 18.9999H11.1533C10.8526 18.9999 10.571 18.8424 10.3579 18.5618L6.37686 13.2848H5.2922C5.18944 13.2848 5.10571 13.1765 5.10571 13.0436C5.10571 12.9107 5.18944 12.8024 5.2922 12.8024H6.45678C6.50626 12.8024 6.55573 12.827 6.58999 12.8762L10.628 18.227C10.7688 18.414 10.9553 18.5174 11.157 18.5174C11.3701 18.5076 11.5452 18.419 11.6898 18.2368C11.8306 18.0547 11.9068 17.8135 11.9068 17.5575C11.9068 17.3016 11.8306 17.0604 11.6898 16.8782L11.2141 16.2629C11.1418 16.1694 11.1418 16.0168 11.2141 15.9183C11.2864 15.8248 11.4044 15.8248 11.4805 15.9183L11.9562 16.5336C12.1694 16.8093 12.2836 17.1686 12.2836 17.5575C12.2836 17.9464 12.1656 18.3058 11.9562 18.5814C11.7393 18.8473 11.4577 18.9999 11.1609 18.9999Z\" stroke=\"currentColor\" stroke-width=\"0.8\" mask=\"url(#path-1-outside-1_9042_7926)\"/><path d=\"M13.0219 18.0102C12.7403 18.0102 12.4587 17.8724 12.2455 17.5967L11.6861 16.8731C11.6138 16.7796 11.6138 16.627 11.6861 16.5285C11.7584 16.435 11.8764 16.435 11.9525 16.5285L12.512 17.2521C12.786 17.6066 13.2617 17.6066 13.5357 17.2521C13.6727 17.0749 13.7489 16.8386 13.7489 16.5876C13.7489 16.3365 13.6727 16.1002 13.5357 15.923L12.767 14.9287C12.6946 14.8351 12.6946 14.6825 12.767 14.5841C12.8393 14.4905 12.9573 14.4905 13.0334 14.5841L13.8022 15.5784C14.0115 15.8492 14.1256 16.2036 14.1256 16.5826C14.1256 16.9617 14.0115 17.321 13.8022 17.5869C13.5852 17.8674 13.3036 18.0102 13.0219 18.0102Z\" stroke=\"currentColor\" stroke-width=\"0.8\" mask=\"url(#path-1-outside-1_9042_7926)\"/><path d=\"M14.6889 16.8287C14.4072 16.8287 14.1256 16.6909 13.9125 16.4152L13.5357 15.9279C13.4634 15.8344 13.4634 15.6818 13.5357 15.5833C13.608 15.4898 13.726 15.4898 13.8021 15.5833L14.1789 16.0706C14.4605 16.4349 14.921 16.4349 15.2027 16.0706C15.4843 15.7064 15.4843 15.1107 15.2027 14.7465L14.4186 13.7324C14.3463 13.6388 14.3463 13.4862 14.4186 13.3878C14.491 13.2942 14.6089 13.2942 14.6851 13.3878L15.4691 14.4019C15.8953 14.9581 15.8953 15.859 15.4691 16.4103C15.2522 16.6909 14.9705 16.8287 14.6889 16.8287Z\" stroke=\"currentColor\" stroke-width=\"0.8\" mask=\"url(#path-1-outside-1_9042_7926)\"/><path d=\"M5.07505 14.7075H2.18649C2.08373 14.7075 2 14.5992 2 14.4663V5.24121C2 5.1083 2.08373 5 2.18649 5H5.07505C5.29579 5 5.47466 5.23137 5.47466 5.51688V14.1859C5.47846 14.4763 5.29578 14.7075 5.07505 14.7075Z\" stroke=\"currentColor\" stroke-width=\"0.8\" mask=\"url(#path-1-outside-1_9042_7926)\"/><path d=\"M16.4052 15.7362C16.1311 15.7362 15.8571 15.6032 15.6478 15.3325L15.1987 14.7467C15.1264 14.6532 15.1264 14.5006 15.1987 14.4021C15.271 14.3086 15.389 14.3086 15.4651 14.4021L15.9142 14.9879C16.1768 15.3276 16.6335 15.3276 16.8961 14.9879C17.0255 14.8205 17.0978 14.5941 17.0978 14.3529C17.0978 14.1117 17.0255 13.8902 16.8961 13.7179L13.7562 9.6566H12.6601L10.9284 11.8964C10.4869 12.4674 9.76383 12.4674 9.32233 11.8964C8.88083 11.3254 8.88085 10.3901 9.32233 9.81904L11.9788 6.38313C12.013 6.33882 12.0625 6.31421 12.112 6.31421H18.7114C18.8142 6.31421 18.8979 6.42251 18.8979 6.55542C18.8979 6.68833 18.8142 6.79662 18.7114 6.79662H12.1882L9.58487 10.1639C9.44025 10.3509 9.36033 10.5971 9.36033 10.8629C9.36033 11.1238 9.44025 11.3748 9.58487 11.5619C9.88174 11.9459 10.3651 11.9459 10.6619 11.5619L12.4507 9.24827C12.485 9.20397 12.5344 9.17935 12.5839 9.17935H13.836C13.8855 9.17935 13.935 9.20396 13.9692 9.24827L17.1623 13.3782C17.5771 13.9148 17.5771 14.796 17.1623 15.3325C16.953 15.5983 16.6792 15.7362 16.4052 15.7362Z\" stroke=\"currentColor\" stroke-width=\"0.8\" mask=\"url(#path-1-outside-1_9042_7926)\"/><path d=\"M9.93158 6.69351H5.2922C5.18944 6.69351 5.10571 6.58522 5.10571 6.45231C5.10571 6.3194 5.18944 6.2111 5.2922 6.2111H9.93158C10.0343 6.2111 10.1181 6.3194 10.1181 6.45231C10.1181 6.58522 10.0343 6.69351 9.93158 6.69351Z\" stroke=\"currentColor\" stroke-width=\"0.8\" mask=\"url(#path-1-outside-1_9042_7926)\"/>` },\r\n    password: { outlined: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V10C4 9.45 4.19583 8.97917 4.5875 8.5875C4.97917 8.19583 5.45 8 6 8H7V6C7 4.61667 7.4875 3.4375 8.4625 2.4625C9.4375 1.4875 10.6167 1 12 1C13.3833 1 14.5625 1.4875 15.5375 2.4625C16.5125 3.4375 17 4.61667 17 6V8H18C18.55 8 19.0208 8.19583 19.4125 8.5875C19.8042 8.97917 20 9.45 20 10V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM6 20H18V10H6V20ZM13.4125 16.4125C13.8042 16.0208 14 15.55 14 15C14 14.45 13.8042 13.9792 13.4125 13.5875C13.0208 13.1958 12.55 13 12 13C11.45 13 10.9792 13.1958 10.5875 13.5875C10.1958 13.9792 10 14.45 10 15C10 15.55 10.1958 16.0208 10.5875 16.4125C10.9792 16.8042 11.45 17 12 17C12.55 17 13.0208 16.8042 13.4125 16.4125ZM9 8H15V6C15 5.16667 14.7083 4.45833 14.125 3.875C13.5417 3.29167 12.8333 3 12 3C11.1667 3 10.4583 3.29167 9.875 3.875C9.29167 4.45833 9 5.16667 9 6V8Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V10C4 9.45 4.19583 8.97917 4.5875 8.5875C4.97917 8.19583 5.45 8 6 8H7V6C7 4.61667 7.4875 3.4375 8.4625 2.4625C9.4375 1.4875 10.6167 1 12 1C13.3833 1 14.5625 1.4875 15.5375 2.4625C16.5125 3.4375 17 4.61667 17 6V8H18C18.55 8 19.0208 8.19583 19.4125 8.5875C19.8042 8.97917 20 9.45 20 10V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM13.4125 16.4125C13.8042 16.0208 14 15.55 14 15C14 14.45 13.8042 13.9792 13.4125 13.5875C13.0208 13.1958 12.55 13 12 13C11.45 13 10.9792 13.1958 10.5875 13.5875C10.1958 13.9792 10 14.45 10 15C10 15.55 10.1958 16.0208 10.5875 16.4125C10.9792 16.8042 11.45 17 12 17C12.55 17 13.0208 16.8042 13.4125 16.4125ZM9 8H15V6C15 5.16667 14.7083 4.45833 14.125 3.875C13.5417 3.29167 12.8333 3 12 3C11.1667 3 10.4583 3.29167 9.875 3.875C9.29167 4.45833 9 5.16667 9 6V8Z\" fill=\"currentColor\"/>` },\r\n    pause: { outlined: `<path d=\"M8 17.175V6.82495C8 6.54162 8.1 6.30412 8.3 6.11245C8.5 5.92078 8.73333 5.82495 9 5.82495C9.08333 5.82495 9.17083 5.83745 9.2625 5.86245C9.35417 5.88745 9.44167 5.92495 9.525 5.97495L17.675 11.15C17.825 11.25 17.9375 11.375 18.0125 11.525C18.0875 11.675 18.125 11.8333 18.125 12C18.125 12.1666 18.0875 12.325 18.0125 12.475C17.9375 12.625 17.825 12.75 17.675 12.85L9.525 18.025C9.44167 18.075 9.35417 18.1125 9.2625 18.1375C9.17083 18.1625 9.08333 18.175 9 18.175C8.73333 18.175 8.5 18.0791 8.3 17.8875C8.1 17.6958 8 17.4583 8 17.175ZM10 15.35L15.25 12L10 8.64995V15.35Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8 17.175V6.82495C8 6.54162 8.1 6.30412 8.3 6.11245C8.5 5.92078 8.73333 5.82495 9 5.82495C9.08333 5.82495 9.17083 5.83745 9.2625 5.86245C9.35417 5.88745 9.44167 5.92495 9.525 5.97495L17.675 11.15C17.825 11.25 17.9375 11.375 18.0125 11.525C18.0875 11.675 18.125 11.8333 18.125 12C18.125 12.1666 18.0875 12.325 18.0125 12.475C17.9375 12.625 17.825 12.75 17.675 12.85L9.525 18.025C9.44167 18.075 9.35417 18.1125 9.2625 18.1375C9.17083 18.1625 9.08333 18.175 9 18.175C8.73333 18.175 8.5 18.0791 8.3 17.8875C8.1 17.6958 8 17.4583 8 17.175Z\" fill=\"currentColor\"/>` },\r\n    pdf: { outlined: `<path d=\"M10 10.5H11C11.2833 10.5 11.5208 10.4042 11.7125 10.2125C11.9042 10.0208 12 9.78333 12 9.5V8.5C12 8.21667 11.9042 7.97917 11.7125 7.7875C11.5208 7.59583 11.2833 7.5 11 7.5H9.5C9.36667 7.5 9.25 7.55 9.15 7.65C9.05 7.75 9 7.86667 9 8V12C9 12.1333 9.05 12.25 9.15 12.35C9.25 12.45 9.36667 12.5 9.5 12.5C9.63333 12.5 9.75 12.45 9.85 12.35C9.95 12.25 10 12.1333 10 12V10.5ZM10 9.5V8.5H11V9.5H10ZM15 12.5C15.2833 12.5 15.5208 12.4042 15.7125 12.2125C15.9042 12.0208 16 11.7833 16 11.5V8.5C16 8.21667 15.9042 7.97917 15.7125 7.7875C15.5208 7.59583 15.2833 7.5 15 7.5H13.5C13.3667 7.5 13.25 7.55 13.15 7.65C13.05 7.75 13 7.86667 13 8V12C13 12.1333 13.05 12.25 13.15 12.35C13.25 12.45 13.3667 12.5 13.5 12.5H15ZM14 11.5V8.5H15V11.5H14ZM18 10.5H18.5C18.6333 10.5 18.75 10.45 18.85 10.35C18.95 10.25 19 10.1333 19 10C19 9.86667 18.95 9.75 18.85 9.65C18.75 9.55 18.6333 9.5 18.5 9.5H18V8.5H18.5C18.6333 8.5 18.75 8.45 18.85 8.35C18.95 8.25 19 8.13333 19 8C19 7.86667 18.95 7.75 18.85 7.65C18.75 7.55 18.6333 7.5 18.5 7.5H17.5C17.3667 7.5 17.25 7.55 17.15 7.65C17.05 7.75 17 7.86667 17 8V12C17 12.1333 17.05 12.25 17.15 12.35C17.25 12.45 17.3667 12.5 17.5 12.5C17.6333 12.5 17.75 12.45 17.85 12.35C17.95 12.25 18 12.1333 18 12V10.5ZM8 18C7.45 18 6.97917 17.8042 6.5875 17.4125C6.19583 17.0208 6 16.55 6 16V4C6 3.45 6.19583 2.97917 6.5875 2.5875C6.97917 2.19583 7.45 2 8 2H20C20.55 2 21.0208 2.19583 21.4125 2.5875C21.8042 2.97917 22 3.45 22 4V16C22 16.55 21.8042 17.0208 21.4125 17.4125C21.0208 17.8042 20.55 18 20 18H8ZM8 16H20V4H8V16ZM4 22C3.45 22 2.97917 21.8042 2.5875 21.4125C2.19583 21.0208 2 20.55 2 20V7C2 6.71667 2.09583 6.47917 2.2875 6.2875C2.47917 6.09583 2.71667 6 3 6C3.28333 6 3.52083 6.09583 3.7125 6.2875C3.90417 6.47917 4 6.71667 4 7V20H17C17.2833 20 17.5208 20.0958 17.7125 20.2875C17.9042 20.4792 18 20.7167 18 21C18 21.2833 17.9042 21.5208 17.7125 21.7125C17.5208 21.9042 17.2833 22 17 22H4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10 10.5H11C11.2833 10.5 11.5208 10.4042 11.7125 10.2125C11.9042 10.0208 12 9.78333 12 9.5V8.5C12 8.21667 11.9042 7.97917 11.7125 7.7875C11.5208 7.59583 11.2833 7.5 11 7.5H9.5C9.36667 7.5 9.25 7.55 9.15 7.65C9.05 7.75 9 7.86667 9 8V12C9 12.1333 9.05 12.25 9.15 12.35C9.25 12.45 9.36667 12.5 9.5 12.5C9.63333 12.5 9.75 12.45 9.85 12.35C9.95 12.25 10 12.1333 10 12V10.5ZM10 9.5V8.5H11V9.5H10ZM15 12.5C15.2833 12.5 15.5208 12.4042 15.7125 12.2125C15.9042 12.0208 16 11.7833 16 11.5V8.5C16 8.21667 15.9042 7.97917 15.7125 7.7875C15.5208 7.59583 15.2833 7.5 15 7.5H13.5C13.3667 7.5 13.25 7.55 13.15 7.65C13.05 7.75 13 7.86667 13 8V12C13 12.1333 13.05 12.25 13.15 12.35C13.25 12.45 13.3667 12.5 13.5 12.5H15ZM14 11.5V8.5H15V11.5H14ZM18 10.5H18.5C18.6333 10.5 18.75 10.45 18.85 10.35C18.95 10.25 19 10.1333 19 10C19 9.86667 18.95 9.75 18.85 9.65C18.75 9.55 18.6333 9.5 18.5 9.5H18V8.5H18.5C18.6333 8.5 18.75 8.45 18.85 8.35C18.95 8.25 19 8.13333 19 8C19 7.86667 18.95 7.75 18.85 7.65C18.75 7.55 18.6333 7.5 18.5 7.5H17.5C17.3667 7.5 17.25 7.55 17.15 7.65C17.05 7.75 17 7.86667 17 8V12C17 12.1333 17.05 12.25 17.15 12.35C17.25 12.45 17.3667 12.5 17.5 12.5C17.6333 12.5 17.75 12.45 17.85 12.35C17.95 12.25 18 12.1333 18 12V10.5ZM8 18C7.45 18 6.97917 17.8042 6.5875 17.4125C6.19583 17.0208 6 16.55 6 16V4C6 3.45 6.19583 2.97917 6.5875 2.5875C6.97917 2.19583 7.45 2 8 2H20C20.55 2 21.0208 2.19583 21.4125 2.5875C21.8042 2.97917 22 3.45 22 4V16C22 16.55 21.8042 17.0208 21.4125 17.4125C21.0208 17.8042 20.55 18 20 18H8ZM4 22C3.45 22 2.97917 21.8042 2.5875 21.4125C2.19583 21.0208 2 20.55 2 20V7C2 6.71667 2.09583 6.47917 2.2875 6.2875C2.47917 6.09583 2.71667 6 3 6C3.28333 6 3.52083 6.09583 3.7125 6.2875C3.90417 6.47917 4 6.71667 4 7V20H17C17.2833 20 17.5208 20.0958 17.7125 20.2875C17.9042 20.4792 18 20.7167 18 21C18 21.2833 17.9042 21.5208 17.7125 21.7125C17.5208 21.9042 17.2833 22 17 22H4Z\" fill=\"currentColor\"/>` },\r\n    people: { outlined: `<path d=\"M1 20V17.2C1 16.6333 1.14583 16.1125 1.4375 15.6375C1.72917 15.1625 2.11667 14.8 2.6 14.55C3.63333 14.0333 4.68333 13.6458 5.75 13.3875C6.81667 13.1292 7.9 13 9 13C10.1 13 11.1833 13.1292 12.25 13.3875C13.3167 13.6458 14.3667 14.0333 15.4 14.55C15.8833 14.8 16.2708 15.1625 16.5625 15.6375C16.8542 16.1125 17 16.6333 17 17.2V20H1ZM19 20V17C19 16.2667 18.7958 15.5625 18.3875 14.8875C17.9792 14.2125 17.4 13.6333 16.65 13.15C17.5 13.25 18.3 13.4208 19.05 13.6625C19.8 13.9042 20.5 14.2 21.15 14.55C21.75 14.8833 22.2083 15.2542 22.525 15.6625C22.8417 16.0708 23 16.5167 23 17V20H19ZM6.175 10.825C5.39167 10.0417 5 9.1 5 8C5 6.9 5.39167 5.95833 6.175 5.175C6.95833 4.39167 7.9 4 9 4C10.1 4 11.0417 4.39167 11.825 5.175C12.6083 5.95833 13 6.9 13 8C13 9.1 12.6083 10.0417 11.825 10.825C11.0417 11.6083 10.1 12 9 12C7.9 12 6.95833 11.6083 6.175 10.825ZM17.825 10.825C17.0417 11.6083 16.1 12 15 12C14.8167 12 14.5833 11.9792 14.3 11.9375C14.0167 11.8958 13.7833 11.85 13.6 11.8C14.05 11.2667 14.3958 10.675 14.6375 10.025C14.8792 9.375 15 8.7 15 8C15 7.3 14.8792 6.625 14.6375 5.975C14.3958 5.325 14.05 4.73333 13.6 4.2C13.8333 4.11667 14.0667 4.0625 14.3 4.0375C14.5333 4.0125 14.7667 4 15 4C16.1 4 17.0417 4.39167 17.825 5.175C18.6083 5.95833 19 6.9 19 8C19 9.1 18.6083 10.0417 17.825 10.825ZM3 18H15V17.2C15 17.0167 14.9542 16.85 14.8625 16.7C14.7708 16.55 14.65 16.4333 14.5 16.35C13.6 15.9 12.6917 15.5625 11.775 15.3375C10.8583 15.1125 9.93333 15 9 15C8.06667 15 7.14167 15.1125 6.225 15.3375C5.30833 15.5625 4.4 15.9 3.5 16.35C3.35 16.4333 3.22917 16.55 3.1375 16.7C3.04583 16.85 3 17.0167 3 17.2V18ZM10.4125 9.4125C10.8042 9.02083 11 8.55 11 8C11 7.45 10.8042 6.97917 10.4125 6.5875C10.0208 6.19583 9.55 6 9 6C8.45 6 7.97917 6.19583 7.5875 6.5875C7.19583 6.97917 7 7.45 7 8C7 8.55 7.19583 9.02083 7.5875 9.4125C7.97917 9.80417 8.45 10 9 10C9.55 10 10.0208 9.80417 10.4125 9.4125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M1 20V17.2C1 16.6333 1.14583 16.1125 1.4375 15.6375C1.72917 15.1625 2.11667 14.8 2.6 14.55C3.63333 14.0333 4.68333 13.6458 5.75 13.3875C6.81667 13.1292 7.9 13 9 13C10.1 13 11.1833 13.1292 12.25 13.3875C13.3167 13.6458 14.3667 14.0333 15.4 14.55C15.8833 14.8 16.2708 15.1625 16.5625 15.6375C16.8542 16.1125 17 16.6333 17 17.2V20H1ZM19 20V17C19 16.2667 18.7958 15.5625 18.3875 14.8875C17.9792 14.2125 17.4 13.6333 16.65 13.15C17.5 13.25 18.3 13.4208 19.05 13.6625C19.8 13.9042 20.5 14.2 21.15 14.55C21.75 14.8833 22.2083 15.2542 22.525 15.6625C22.8417 16.0708 23 16.5167 23 17V20H19ZM6.175 10.825C5.39167 10.0417 5 9.1 5 8C5 6.9 5.39167 5.95833 6.175 5.175C6.95833 4.39167 7.9 4 9 4C10.1 4 11.0417 4.39167 11.825 5.175C12.6083 5.95833 13 6.9 13 8C13 9.1 12.6083 10.0417 11.825 10.825C11.0417 11.6083 10.1 12 9 12C7.9 12 6.95833 11.6083 6.175 10.825ZM17.825 10.825C17.0417 11.6083 16.1 12 15 12C14.8167 12 14.5833 11.9792 14.3 11.9375C14.0167 11.8958 13.7833 11.85 13.6 11.8C14.05 11.2667 14.3958 10.675 14.6375 10.025C14.8792 9.375 15 8.7 15 8C15 7.3 14.8792 6.625 14.6375 5.975C14.3958 5.325 14.05 4.73333 13.6 4.2C13.8333 4.11667 14.0667 4.0625 14.3 4.0375C14.5333 4.0125 14.7667 4 15 4C16.1 4 17.0417 4.39167 17.825 5.175C18.6083 5.95833 19 6.9 19 8C19 9.1 18.6083 10.0417 17.825 10.825Z\" fill=\"currentColor\"/>` },\r\n    phone: { outlined: `<path d=\"M19.95 21C17.8667 21 15.8083 20.5458 13.775 19.6375C11.7417 18.7292 9.89167 17.4417 8.225 15.775C6.55833 14.1083 5.27083 12.2583 4.3625 10.225C3.45417 8.19167 3 6.13333 3 4.05C3 3.75 3.1 3.5 3.3 3.3C3.5 3.1 3.75 3 4.05 3H8.1C8.33333 3 8.54167 3.07917 8.725 3.2375C8.90833 3.39583 9.01667 3.58333 9.05 3.8L9.7 7.3C9.73333 7.56667 9.725 7.79167 9.675 7.975C9.625 8.15833 9.53333 8.31667 9.4 8.45L6.975 10.9C7.30833 11.5167 7.70417 12.1125 8.1625 12.6875C8.62083 13.2625 9.125 13.8167 9.675 14.35C10.1917 14.8667 10.7333 15.3458 11.3 15.7875C11.8667 16.2292 12.4667 16.6333 13.1 17L15.45 14.65C15.6 14.5 15.7958 14.3875 16.0375 14.3125C16.2792 14.2375 16.5167 14.2167 16.75 14.25L20.2 14.95C20.4333 15.0167 20.625 15.1375 20.775 15.3125C20.925 15.4875 21 15.6833 21 15.9V19.95C21 20.25 20.9 20.5 20.7 20.7C20.5 20.9 20.25 21 19.95 21ZM6.025 9L7.675 7.35L7.25 5H5.025C5.10833 5.68333 5.225 6.35833 5.375 7.025C5.525 7.69167 5.74167 8.35 6.025 9ZM14.975 17.95C15.625 18.2333 16.2875 18.4583 16.9625 18.625C17.6375 18.7917 18.3167 18.9 19 18.95V16.75L16.65 16.275L14.975 17.95Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M19.95 21C17.8667 21 15.8083 20.5458 13.775 19.6375C11.7417 18.7292 9.89167 17.4417 8.225 15.775C6.55833 14.1083 5.27083 12.2583 4.3625 10.225C3.45417 8.19167 3 6.13333 3 4.05C3 3.75 3.1 3.5 3.3 3.3C3.5 3.1 3.75 3 4.05 3H8.1C8.33333 3 8.54167 3.07917 8.725 3.2375C8.90833 3.39583 9.01667 3.58333 9.05 3.8L9.7 7.3C9.73333 7.56667 9.725 7.79167 9.675 7.975C9.625 8.15833 9.53333 8.31667 9.4 8.45L6.975 10.9C7.30833 11.5167 7.70417 12.1125 8.1625 12.6875C8.62083 13.2625 9.125 13.8167 9.675 14.35C10.1917 14.8667 10.7333 15.3458 11.3 15.7875C11.8667 16.2292 12.4667 16.6333 13.1 17L15.45 14.65C15.6 14.5 15.7958 14.3875 16.0375 14.3125C16.2792 14.2375 16.5167 14.2167 16.75 14.25L20.2 14.95C20.4333 15.0167 20.625 15.1375 20.775 15.3125C20.925 15.4875 21 15.6833 21 15.9V19.95C21 20.25 20.9 20.5 20.7 20.7C20.5 20.9 20.25 21 19.95 21Z\" fill=\"currentColor\"/>` },\r\n    pix: { outlined: `<path d=\"M10.6307 11.295C11.0211 11.6855 11.021 12.3187 10.6307 12.7092L7.4252 15.9147C7.03468 16.3052 6.40151 16.3052 6.01099 15.9147L2.80553 12.7092C2.415 12.3187 2.415 11.6855 2.80553 11.295L6.01099 8.08956C6.40153 7.69922 7.03474 7.6991 7.4252 8.08956L10.6307 11.295ZM15.9126 16.5769C16.303 16.9674 16.3029 17.6006 15.9126 17.9911L12.7071 21.1966C12.3166 21.5871 11.6834 21.5871 11.2929 21.1966L8.08742 17.9911C7.69709 17.6006 7.69696 16.9674 8.08742 16.5769L11.2929 13.3715C11.6834 12.9812 12.3166 12.9812 12.7071 13.3715L15.9126 16.5769ZM3.46568 12.0491L6.71809 15.3015L9.97051 12.0491L6.71809 8.79666L3.46568 12.0491ZM8.74757 17.331L12 20.5834L15.2524 17.331L12 14.0786L8.74757 17.331ZM15.9126 6.01312C16.3031 6.40365 16.3031 7.03681 15.9126 7.42734L12.7071 10.6328C12.3166 11.0233 11.6834 11.0233 11.2929 10.6328L8.08742 7.42734C7.6969 7.03681 7.6969 6.40365 8.08742 6.01312L11.2929 2.80766C11.6834 2.41714 12.3166 2.41714 12.7071 2.80766L15.9126 6.01312ZM21.1944 11.295C21.585 11.6855 21.585 12.3187 21.1944 12.7092L17.989 15.9147C17.5985 16.3052 16.9653 16.3052 16.5748 15.9147L13.3693 12.7092C12.979 12.3187 12.9789 11.6855 13.3693 11.295L16.5748 8.08956C16.9652 7.6991 17.5984 7.69922 17.989 8.08956L21.1944 11.295ZM8.74757 6.76719L12 10.0196L15.2524 6.76719L12 3.51477L8.74757 6.76719ZM14.0295 12.0491L17.2819 15.3015L20.5343 12.0491L17.2819 8.79666L14.0295 12.0491Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10.5331 11.1924C10.9236 11.5829 10.9236 12.216 10.5331 12.6066L7.32767 15.812C6.93714 16.2026 6.30398 16.2026 5.91345 15.812L2.70799 12.6066C2.31747 12.216 2.31747 11.5829 2.70799 11.1924L5.91345 7.9869C6.30398 7.59638 6.93714 7.59638 7.32767 7.9869L10.5331 11.1924ZM15.8129 16.4722C16.2035 16.8627 16.2035 17.4959 15.8129 17.8864L12.6075 21.0919C12.217 21.4824 11.5838 21.4824 11.1933 21.0919L7.98782 17.8864C7.59729 17.4959 7.59729 16.8627 7.98782 16.4722L11.1933 13.2667C11.5838 12.8762 12.217 12.8762 12.6075 13.2667L15.8129 16.4722ZM15.8129 5.91254C16.2035 6.30306 16.2035 6.93623 15.8129 7.32675L12.6075 10.5322C12.217 10.9227 11.5838 10.9227 11.1933 10.5322L7.98782 7.32675C7.59729 6.93623 7.59729 6.30306 7.98782 5.91254L11.1933 2.70708C11.5838 2.31655 12.217 2.31655 12.6075 2.70708L15.8129 5.91254ZM21.0928 11.1924C21.4833 11.5829 21.4833 12.216 21.0928 12.6066L17.8873 15.812C17.4968 16.2026 16.8636 16.2026 16.4731 15.812L13.2676 12.6066C12.8771 12.216 12.8771 11.5829 13.2676 11.1924L16.4731 7.9869C16.8636 7.59638 17.4968 7.59638 17.8873 7.9869L21.0928 11.1924Z\" fill=\"currentColor\"/>` },\r\n    platform: { outlined: `<path d=\"M4.025 14.85C3.75833 14.65 3.62917 14.3875 3.6375 14.0625C3.64583 13.7375 3.78333 13.475 4.05 13.275C4.23333 13.1417 4.43333 13.075 4.65 13.075C4.86667 13.075 5.06667 13.1417 5.25 13.275L12 18.5L18.75 13.275C18.9333 13.1417 19.1333 13.075 19.35 13.075C19.5667 13.075 19.7667 13.1417 19.95 13.275C20.2167 13.475 20.3542 13.7375 20.3625 14.0625C20.3708 14.3875 20.2417 14.65 19.975 14.85L13.225 20.1C12.8583 20.3834 12.45 20.525 12 20.525C11.55 20.525 11.1417 20.3834 10.775 20.1L4.025 14.85ZM10.775 15.05L5.025 10.575C4.50833 10.175 4.25 9.65002 4.25 9.00002C4.25 8.35002 4.50833 7.82502 5.025 7.42502L10.775 2.95002C11.1417 2.66669 11.55 2.52502 12 2.52502C12.45 2.52502 12.8583 2.66669 13.225 2.95002L18.975 7.42502C19.4917 7.82502 19.75 8.35002 19.75 9.00002C19.75 9.65002 19.4917 10.175 18.975 10.575L13.225 15.05C12.8583 15.3334 12.45 15.475 12 15.475C11.55 15.475 11.1417 15.3334 10.775 15.05ZM12 13.45L17.75 9.00002L12 4.55002L6.25 9.00002L12 13.45Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4.025 14.85C3.75833 14.65 3.62916 14.3875 3.6375 14.0625C3.64583 13.7375 3.78333 13.475 4.05 13.275C4.23333 13.1417 4.43333 13.075 4.65 13.075C4.86666 13.075 5.06666 13.1417 5.25 13.275L12 18.5L18.75 13.275C18.9333 13.1417 19.1333 13.075 19.35 13.075C19.5667 13.075 19.7667 13.1417 19.95 13.275C20.2167 13.475 20.3542 13.7375 20.3625 14.0625C20.3708 14.3875 20.2417 14.65 19.975 14.85L13.225 20.1C12.8583 20.3834 12.45 20.525 12 20.525C11.55 20.525 11.1417 20.3834 10.775 20.1L4.025 14.85ZM10.775 15.05L5.025 10.575C4.50833 10.175 4.25 9.65002 4.25 9.00002C4.25 8.35002 4.50833 7.82502 5.025 7.42502L10.775 2.95002C11.1417 2.66669 11.55 2.52502 12 2.52502C12.45 2.52502 12.8583 2.66669 13.225 2.95002L18.975 7.42502C19.4917 7.82502 19.75 8.35002 19.75 9.00002C19.75 9.65002 19.4917 10.175 18.975 10.575L13.225 15.05C12.8583 15.3334 12.45 15.475 12 15.475C11.55 15.475 11.1417 15.3334 10.775 15.05Z\" fill=\"currentColor\"/>` },\r\n    plugin: { outlined: `<path d=\"M8.8 21H5C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V15.2C3.8 15.2 4.5 14.9458 5.1 14.4375C5.7 13.9292 6 13.2833 6 12.5C6 11.7167 5.7 11.0708 5.1 10.5625C4.5 10.0542 3.8 9.8 3 9.8V6C3 5.45 3.19583 4.97917 3.5875 4.5875C3.97917 4.19583 4.45 4 5 4H9C9 3.3 9.24167 2.70833 9.725 2.225C10.2083 1.74167 10.8 1.5 11.5 1.5C12.2 1.5 12.7917 1.74167 13.275 2.225C13.7583 2.70833 14 3.3 14 4H18C18.55 4 19.0208 4.19583 19.4125 4.5875C19.8042 4.97917 20 5.45 20 6V10C20.7 10 21.2917 10.2417 21.775 10.725C22.2583 11.2083 22.5 11.8 22.5 12.5C22.5 13.2 22.2583 13.7917 21.775 14.275C21.2917 14.7583 20.7 15 20 15V19C20 19.55 19.8042 20.0208 19.4125 20.4125C19.0208 20.8042 18.55 21 18 21H14.2C14.2 20.1667 13.9375 19.4583 13.4125 18.875C12.8875 18.2917 12.25 18 11.5 18C10.75 18 10.1125 18.2917 9.5875 18.875C9.0625 19.4583 8.8 20.1667 8.8 21ZM5 19H7.125C7.525 17.9 8.16667 17.125 9.05 16.675C9.93333 16.225 10.75 16 11.5 16C12.25 16 13.0667 16.225 13.95 16.675C14.8333 17.125 15.475 17.9 15.875 19H18V13H20C20.1333 13 20.25 12.95 20.35 12.85C20.45 12.75 20.5 12.6333 20.5 12.5C20.5 12.3667 20.45 12.25 20.35 12.15C20.25 12.05 20.1333 12 20 12H18V6H12V4C12 3.86667 11.95 3.75 11.85 3.65C11.75 3.55 11.6333 3.5 11.5 3.5C11.3667 3.5 11.25 3.55 11.15 3.65C11.05 3.75 11 3.86667 11 4V6H5V8.2C5.9 8.53333 6.625 9.09167 7.175 9.875C7.725 10.6583 8 11.5333 8 12.5C8 13.45 7.725 14.3167 7.175 15.1C6.625 15.8833 5.9 16.45 5 16.8V19Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8.8 21H5C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V15.2C3.8 15.2 4.5 14.9458 5.1 14.4375C5.7 13.9292 6 13.2833 6 12.5C6 11.7167 5.7 11.0708 5.1 10.5625C4.5 10.0542 3.8 9.8 3 9.8V6C3 5.45 3.19583 4.97917 3.5875 4.5875C3.97917 4.19583 4.45 4 5 4H9C9 3.3 9.24167 2.70833 9.725 2.225C10.2083 1.74167 10.8 1.5 11.5 1.5C12.2 1.5 12.7917 1.74167 13.275 2.225C13.7583 2.70833 14 3.3 14 4H18C18.55 4 19.0208 4.19583 19.4125 4.5875C19.8042 4.97917 20 5.45 20 6V10C20.7 10 21.2917 10.2417 21.775 10.725C22.2583 11.2083 22.5 11.8 22.5 12.5C22.5 13.2 22.2583 13.7917 21.775 14.275C21.2917 14.7583 20.7 15 20 15V19C20 19.55 19.8042 20.0208 19.4125 20.4125C19.0208 20.8042 18.55 21 18 21H14.2C14.2 20.1667 13.9375 19.4583 13.4125 18.875C12.8875 18.2917 12.25 18 11.5 18C10.75 18 10.1125 18.2917 9.5875 18.875C9.0625 19.4583 8.8 20.1667 8.8 21Z\" fill=\"currentColor\"/>` },\r\n    podcast: { outlined: `<path d=\"M9.875 13.125C9.29167 12.5417 9 11.8333 9 11V5C9 4.16667 9.29167 3.45833 9.875 2.875C10.4583 2.29167 11.1667 2 12 2C12.8333 2 13.5417 2.29167 14.125 2.875C14.7083 3.45833 15 4.16667 15 5V11C15 11.8333 14.7083 12.5417 14.125 13.125C13.5417 13.7083 12.8333 14 12 14C11.1667 14 10.4583 13.7083 9.875 13.125ZM11 20V17.925C9.46667 17.7083 8.15417 17.0583 7.0625 15.975C5.97083 14.8917 5.30833 13.575 5.075 12.025C5.04167 11.7417 5.11667 11.5 5.3 11.3C5.48333 11.1 5.71667 11 6 11C6.28333 11 6.52083 11.0958 6.7125 11.2875C6.90417 11.4792 7.03333 11.7167 7.1 12C7.33333 13.1667 7.9125 14.125 8.8375 14.875C9.7625 15.625 10.8167 16 12 16C13.2 16 14.2583 15.6208 15.175 14.8625C16.0917 14.1042 16.6667 13.15 16.9 12C16.9667 11.7167 17.0958 11.4792 17.2875 11.2875C17.4792 11.0958 17.7167 11 18 11C18.2833 11 18.5167 11.1 18.7 11.3C18.8833 11.5 18.9583 11.7417 18.925 12.025C18.6917 13.5417 18.0333 14.85 16.95 15.95C15.8667 17.05 14.55 17.7083 13 17.925V20C13 20.2833 12.9042 20.5208 12.7125 20.7125C12.5208 20.9042 12.2833 21 12 21C11.7167 21 11.4792 20.9042 11.2875 20.7125C11.0958 20.5208 11 20.2833 11 20ZM12.7125 11.7125C12.9042 11.5208 13 11.2833 13 11V5C13 4.71667 12.9042 4.47917 12.7125 4.2875C12.5208 4.09583 12.2833 4 12 4C11.7167 4 11.4792 4.09583 11.2875 4.2875C11.0958 4.47917 11 4.71667 11 5V11C11 11.2833 11.0958 11.5208 11.2875 11.7125C11.4792 11.9042 11.7167 12 12 12C12.2833 12 12.5208 11.9042 12.7125 11.7125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M9.875 13.125C9.29167 12.5417 9 11.8333 9 11V5C9 4.16667 9.29167 3.45833 9.875 2.875C10.4583 2.29167 11.1667 2 12 2C12.8333 2 13.5417 2.29167 14.125 2.875C14.7083 3.45833 15 4.16667 15 5V11C15 11.8333 14.7083 12.5417 14.125 13.125C13.5417 13.7083 12.8333 14 12 14C11.1667 14 10.4583 13.7083 9.875 13.125ZM11 20V17.925C9.46667 17.7083 8.15417 17.0583 7.0625 15.975C5.97083 14.8917 5.30833 13.575 5.075 12.025C5.04167 11.7417 5.11667 11.5 5.3 11.3C5.48333 11.1 5.71667 11 6 11C6.28333 11 6.52083 11.0958 6.7125 11.2875C6.90417 11.4792 7.03333 11.7167 7.1 12C7.33333 13.1667 7.9125 14.125 8.8375 14.875C9.7625 15.625 10.8167 16 12 16C13.2 16 14.2583 15.6208 15.175 14.8625C16.0917 14.1042 16.6667 13.15 16.9 12C16.9667 11.7167 17.0958 11.4792 17.2875 11.2875C17.4792 11.0958 17.7167 11 18 11C18.2833 11 18.5167 11.1 18.7 11.3C18.8833 11.5 18.9583 11.7417 18.925 12.025C18.6917 13.5417 18.0333 14.85 16.95 15.95C15.8667 17.05 14.55 17.7083 13 17.925V20C13 20.2833 12.9042 20.5208 12.7125 20.7125C12.5208 20.9042 12.2833 21 12 21C11.7167 21 11.4792 20.9042 11.2875 20.7125C11.0958 20.5208 11 20.2833 11 20Z\" fill=\"currentColor\"/>` },\r\n    prayer: { outlined: `<path d=\"M16.9964 12.7675V15.0133C16.9964 15.2961 16.9093 15.5331 16.7352 15.7244C16.5611 15.9157 16.3453 16.0114 16.088 16.0114C15.8306 16.0114 15.6148 15.9157 15.4407 15.7244C15.2666 15.5331 15.1795 15.2961 15.1795 15.0133V13.2915L14.1575 11.2704C14.0515 11.3535 13.9683 11.4617 13.9077 11.5948C13.8472 11.7278 13.8169 11.8692 13.8169 12.0189V17.7331L15.3385 20.5028C15.5202 20.8355 15.5202 21.1682 15.3385 21.5009C15.1568 21.8337 14.8919 22 14.5436 22C14.3771 22 14.2257 21.9584 14.0894 21.8752C13.9531 21.7921 13.8472 21.6756 13.7714 21.5259L12 18.307V12.0189C12 11.5033 12.1136 11.0292 12.3407 10.5966C12.5678 10.1641 12.8782 9.80648 13.2718 9.52368L12 7.05337C11.6972 6.42124 11.5647 5.75168 11.6026 5.04468C11.6404 4.33769 11.8864 3.73467 12.3407 3.23562L13.2037 2.31237C13.4005 2.09611 13.6276 1.99214 13.885 2.00046C14.1424 2.00878 14.3544 2.12938 14.5209 2.36228L19.7671 9.12444C19.8882 9.29079 19.9867 9.46962 20.0624 9.66092C20.1381 9.85223 20.1835 10.056 20.1986 10.2723L20.9935 20.927C21.0238 21.2098 20.9481 21.4594 20.7664 21.6756C20.5847 21.8919 20.3652 22 20.1078 22C19.8655 22 19.6611 21.9127 19.4946 21.738C19.328 21.5633 19.2296 21.3429 19.1994 21.0768L18.3818 10.422L13.7714 4.48325L13.6352 4.63297C13.4838 4.79932 13.3967 4.99062 13.374 5.20688C13.3513 5.42313 13.3854 5.63107 13.4762 5.83069L16.9964 12.7675ZM7.0036 12.7675L10.5238 5.83069C10.6146 5.63107 10.6487 5.42313 10.626 5.20688C10.6033 4.99062 10.5162 4.79932 10.3648 4.63297L10.2286 4.48325L5.61824 10.422L4.80065 21.1017C4.77037 21.3679 4.67195 21.5841 4.50541 21.7505C4.33886 21.9168 4.13446 22 3.89221 22C3.63482 22 3.41528 21.8919 3.2336 21.6756C3.05191 21.4594 2.97621 21.2098 3.00649 20.927L3.80137 10.2723C3.81651 10.056 3.86193 9.85223 3.93764 9.66092C4.01334 9.46962 4.11175 9.29079 4.23288 9.12444L9.47909 2.36228C9.64564 2.12938 9.86139 2.00878 10.1264 2.00046C10.3913 1.99214 10.6222 2.09611 10.819 2.31237L11.6593 3.23562C12.1136 3.73467 12.3596 4.33769 12.3974 5.04468C12.4353 5.75168 12.3028 6.42124 12 7.05337L10.7282 9.52368C11.1218 9.80648 11.4322 10.1641 11.6593 10.5966C11.8864 11.0292 12 11.5033 12 12.0189V18.307L10.2286 21.5259C10.1528 21.6756 10.0431 21.7921 9.89924 21.8752C9.75541 21.9584 9.60022 22 9.43367 22C9.08544 22 8.82426 21.8337 8.65014 21.5009C8.47603 21.1682 8.47981 20.8355 8.6615 20.5028L10.1831 17.7331V12.0189C10.1831 11.8692 10.1528 11.7278 10.0923 11.5948C10.0317 11.4617 9.94845 11.3535 9.84247 11.2704L8.82048 13.2915V15.0133C8.82048 15.2961 8.73342 15.5331 8.5593 15.7244C8.38518 15.9157 8.16943 16.0114 7.91204 16.0114C7.65465 16.0114 7.4389 15.9157 7.26478 15.7244C7.09066 15.5331 7.0036 15.2961 7.0036 15.0133V12.7675Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M14.492 22C14.3258 22 14.171 21.9541 14.0276 21.8622C13.8841 21.7703 13.7746 21.6492 13.6991 21.4988L12.9062 19.945C12.8307 19.7947 12.774 19.6401 12.7363 19.4814C12.6985 19.3227 12.6796 19.1514 12.6796 18.9677V11.4746C12.6796 11.1237 12.74 10.7979 12.8609 10.4972C12.9817 10.1965 13.1856 10.0461 13.4725 10.0461C13.5934 10.0461 13.7028 10.0795 13.801 10.1464C13.8992 10.2132 13.9785 10.3134 14.0389 10.4471L15.3981 13.1787V15.2336C15.3981 15.4508 15.4623 15.6304 15.5907 15.7725C15.7191 15.9145 15.8814 15.9855 16.0778 15.9855C16.2741 15.9855 16.4365 15.9145 16.5648 15.7725C16.6932 15.6304 16.7574 15.4508 16.7574 15.2336V13.304C16.7574 13.1369 16.7385 12.9698 16.7008 12.8028C16.663 12.6357 16.6064 12.477 16.5309 12.3266L13.0648 5.33473C12.8382 4.86693 12.7249 4.37407 12.7249 3.85615C12.7249 3.33823 12.8458 2.85373 13.0874 2.40264C13.2837 2.15203 13.5254 2.01838 13.8123 2.00167C14.0993 1.98496 14.3334 2.09356 14.5146 2.32746L19.7704 8.96851C19.8912 9.13558 19.9894 9.31518 20.0649 9.50731C20.1404 9.69944 20.1857 9.9041 20.2008 10.1213L20.9937 20.9224C21.024 21.2064 20.9447 21.457 20.7559 21.6742C20.5671 21.8914 20.3443 22 20.0876 22H14.492ZM3.91242 22C3.65567 22 3.43291 21.8914 3.24412 21.6742C3.05533 21.457 2.97604 21.2064 3.00625 20.9224L3.79915 10.1213C3.81425 9.9041 3.85956 9.69944 3.93508 9.50731C4.01059 9.31518 4.10876 9.13558 4.22958 8.96851L9.48537 2.35252C9.66661 2.11862 9.89693 2.00585 10.1763 2.0142C10.4557 2.02255 10.6861 2.14368 10.8673 2.37758C11.1089 2.84538 11.2373 3.33823 11.2524 3.85615C11.2675 4.37407 11.1618 4.86693 10.9352 5.33473L7.46914 12.3266C7.39363 12.477 7.33699 12.6357 7.29924 12.8028C7.26148 12.9698 7.2426 13.1369 7.2426 13.304V15.2336C7.2426 15.4508 7.30679 15.6304 7.43516 15.7725C7.56354 15.9145 7.72589 15.9855 7.92223 15.9855C8.11857 15.9855 8.28092 15.9145 8.4093 15.7725C8.53767 15.6304 8.60186 15.4508 8.60186 15.2336V13.1787L9.96111 10.4471C10.0215 10.3134 10.1046 10.2132 10.2103 10.1464C10.316 10.0795 10.4293 10.0461 10.5501 10.0461C10.822 10.0461 11.0183 10.1965 11.1391 10.4972C11.26 10.7979 11.3204 11.1237 11.3204 11.4746V18.9677C11.3204 19.1514 11.3015 19.3227 11.2637 19.4814C11.226 19.6401 11.1693 19.7947 11.0938 19.945L10.3009 21.4988C10.2254 21.6492 10.1159 21.7703 9.97244 21.8622C9.82896 21.9541 9.67416 22 9.50803 22H3.91242Z\" fill=\"currentColor\"/>` },\r\n    preferences: { outlined: `<path d=\"M20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20V22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22V20C16.4183 20 20 16.4183 20 12Z\" fill=\"currentColor\"/><path d=\"M12.5262 9.36845C12.5262 10.5312 11.5837 11.4737 10.421 11.4737C9.25827 11.4737 8.31571 10.5312 8.31571 9.36845C8.31571 8.20574 9.25827 7.26318 10.421 7.26318C11.5837 7.26318 12.5262 8.20574 12.5262 9.36845Z\" fill=\"currentColor\"/><path d=\"M6.21045 9.36845C6.21045 8.78709 6.68173 8.31581 7.26308 8.31581H16.7368C17.3181 8.31581 17.7894 8.78709 17.7894 9.36845C17.7894 9.9498 17.3181 10.4211 16.7368 10.4211H7.26308C6.68173 10.4211 6.21045 9.9498 6.21045 9.36845Z\" fill=\"currentColor\"/><path d=\"M11.4739 14.6314C11.4739 13.4687 12.4164 12.5261 13.5791 12.5261C14.7418 12.5261 15.6844 13.4687 15.6844 14.6314C15.6844 15.7941 14.7418 16.7366 13.5791 16.7366C12.4164 16.7366 11.4739 15.7941 11.4739 14.6314Z\" fill=\"currentColor\"/><path d=\"M17.7896 14.6314C17.7896 15.2127 17.3184 15.684 16.737 15.684L7.26332 15.684C6.68197 15.684 6.21069 15.2127 6.21069 14.6314C6.21069 14.05 6.68197 13.5788 7.26332 13.5788H16.737C17.3184 13.5788 17.7896 14.05 17.7896 14.6314Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2ZM13.5791 12.5264C12.8 12.5264 12.1209 12.95 11.7568 13.5791H7.26367C6.68232 13.5791 6.21094 14.0505 6.21094 14.6318C6.21118 15.213 6.68247 15.6836 7.26367 15.6836H11.7568C12.1209 16.3127 12.8 16.7363 13.5791 16.7363C14.3582 16.7363 15.0373 16.3127 15.4014 15.6836H16.7373C17.3184 15.6834 17.7898 15.2129 17.79 14.6318C17.79 14.0506 17.3185 13.5793 16.7373 13.5791H15.4014C15.0373 12.95 14.3582 12.5264 13.5791 12.5264ZM10.4209 7.26367C9.64221 7.2637 8.96379 7.68688 8.59961 8.31543H7.2627C6.68161 8.31564 6.21109 8.78707 6.21094 9.36816C6.21094 9.94939 6.68152 10.4207 7.2627 10.4209H8.59863C8.96269 11.0499 9.64186 11.4736 10.4209 11.4736C11.1999 11.4736 11.8791 11.0499 12.2432 10.4209H16.7363C17.3177 10.4209 17.7891 9.94952 17.7891 9.36816C17.7889 8.78694 17.3176 8.31543 16.7363 8.31543H12.2422C11.878 7.6869 11.1996 7.26367 10.4209 7.26367Z\" fill=\"currentColor\"/>` },\r\n    print: { outlined: `<path d=\"M6.00001 5.40005C6.00001 4.92266 6.18965 4.46482 6.52721 4.12726C6.86478 3.78969 7.32262 3.60005 7.80001 3.60005H16.2C16.6774 3.60005 17.1352 3.78969 17.4728 4.12726C17.8104 4.46482 18 4.92266 18 5.40005V5.60005C18 5.82096 18.1791 6.00005 18.4 6.00005H18.6C19.3957 6.00005 20.1587 6.31612 20.7213 6.87873C21.2839 7.44134 21.6 8.2044 21.6 9.00005V15C21.6 15.4774 21.4104 15.9353 21.0728 16.2728C20.7352 16.6104 20.2774 16.8 19.8 16.8H18.4C18.1791 16.8 18 16.9791 18 17.2V18.6C18 19.0774 17.8104 19.5353 17.4728 19.8728C17.1352 20.2104 16.6774 20.4 16.2 20.4H7.80001C7.32262 20.4 6.86478 20.2104 6.52721 19.8728C6.18965 19.5353 6.00001 19.0774 6.00001 18.6V17.2C6.00001 16.9791 5.82092 16.8 5.60001 16.8H4.20001C3.72262 16.8 3.26478 16.6104 2.92721 16.2728C2.58965 15.9353 2.40001 15.4774 2.40001 15V9.00005C2.40001 8.2044 2.71608 7.44134 3.27869 6.87873C3.8413 6.31612 4.60436 6.00005 5.40001 6.00005H5.60001C5.82092 6.00005 6.00001 5.82096 6.00001 5.60005V5.40005ZM7.20001 5.60005C7.20001 5.82096 7.37909 6.00005 7.60001 6.00005H16.4C16.6209 6.00005 16.8 5.82096 16.8 5.60005V5.40005C16.8 5.24092 16.7368 5.08831 16.6243 4.97578C16.5117 4.86326 16.3591 4.80005 16.2 4.80005H7.80001C7.64088 4.80005 7.48826 4.86326 7.37574 4.97578C7.26322 5.08831 7.20001 5.24092 7.20001 5.40005V5.60005ZM5.60001 15.6C5.82092 15.6 6.00001 15.421 6.00001 15.2V13.8C6.00001 13.3227 6.18965 12.8648 6.52721 12.5273C6.86478 12.1897 7.32262 12 7.80001 12H16.2C16.6774 12 17.1352 12.1897 17.4728 12.5273C17.8104 12.8648 18 13.3227 18 13.8V15.2C18 15.421 18.1791 15.6 18.4 15.6H19.8C19.9591 15.6 20.1117 15.5368 20.2243 15.4243C20.3368 15.3118 20.4 15.1592 20.4 15V9.00005C20.4 8.52266 20.2104 8.06482 19.8728 7.72726C19.5352 7.38969 19.0774 7.20005 18.6 7.20005H5.40001C4.92262 7.20005 4.46478 7.38969 4.12721 7.72726C3.78965 8.06482 3.60001 8.52266 3.60001 9.00005V15C3.60001 15.1592 3.66322 15.3118 3.77574 15.4243C3.88826 15.5368 4.04088 15.6 4.20001 15.6H5.60001ZM7.80001 13.2C7.64088 13.2 7.48826 13.2633 7.37574 13.3758C7.26322 13.4883 7.20001 13.6409 7.20001 13.8V18.6C7.20001 18.7592 7.26322 18.9118 7.37574 19.0243C7.48826 19.1368 7.64088 19.2 7.80001 19.2H16.2C16.3591 19.2 16.5117 19.1368 16.6243 19.0243C16.7368 18.9118 16.8 18.7592 16.8 18.6V13.8C16.8 13.6409 16.7368 13.4883 16.6243 13.3758C16.5117 13.2633 16.3591 13.2 16.2 13.2H7.80001Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.70001 5.40005C5.70001 4.84309 5.92126 4.30895 6.31508 3.91512C6.70891 3.5213 7.24305 3.30005 7.80001 3.30005H16.2C16.757 3.30005 17.2911 3.5213 17.6849 3.91512C18.0788 4.30895 18.3 4.84309 18.3 5.40005V5.70005H18.6C19.4752 5.70005 20.3146 6.04773 20.9335 6.6666C21.5523 7.28547 21.9 8.12483 21.9 9.00005V15C21.9 15.557 21.6788 16.0911 21.2849 16.485C20.8911 16.8788 20.357 17.1 19.8 17.1H18.3V18.6C18.3 19.157 18.0788 19.6911 17.6849 20.085C17.2911 20.4788 16.757 20.7 16.2 20.7H7.80001C7.24305 20.7 6.70891 20.4788 6.31508 20.085C5.92126 19.6911 5.70001 19.157 5.70001 18.6V17.1H4.20001C3.64305 17.1 3.10891 16.8788 2.71508 16.485C2.32126 16.0911 2.10001 15.557 2.10001 15V9.00005C2.10001 8.12483 2.44768 7.28547 3.06655 6.6666C3.68542 6.04773 4.52479 5.70005 5.40001 5.70005H5.70001V5.40005ZM6.00001 5.40005C6.00001 4.92266 6.18965 4.46482 6.52721 4.12726C6.86478 3.78969 7.32262 3.60005 7.80001 3.60005H16.2C16.6774 3.60005 17.1352 3.78969 17.4728 4.12726C17.8104 4.46482 18 4.92266 18 5.40005V6.00005H18.6C19.3957 6.00005 20.1587 6.31612 20.7213 6.87873C21.2839 7.44134 21.6 8.2044 21.6 9.00005V15C21.6 15.4774 21.4104 15.9353 21.0728 16.2728C20.7352 16.6104 20.2774 16.8 19.8 16.8H18V18.6C18 19.0774 17.8104 19.5353 17.4728 19.8728C17.1352 20.2104 16.6774 20.4 16.2 20.4H7.80001C7.32262 20.4 6.86478 20.2104 6.52721 19.8728C6.18965 19.5353 6.00001 19.0774 6.00001 18.6V16.8H4.20001C3.72262 16.8 3.26478 16.6104 2.92721 16.2728C2.58965 15.9353 2.40001 15.4774 2.40001 15V9.00005C2.40001 8.2044 2.71608 7.44134 3.27869 6.87873C3.8413 6.31612 4.60436 6.00005 5.40001 6.00005H6.00001V5.40005ZM16.8 5.40005C16.8 5.24092 16.7368 5.08831 16.6243 4.97578C16.5117 4.86326 16.3591 4.80005 16.2 4.80005H7.80001C7.64088 4.80005 7.48826 4.86326 7.37574 4.97578C7.26322 5.08831 7.20001 5.24092 7.20001 5.40005V6.00005H16.8V5.40005ZM16.5 5.70005V5.40005C16.5 5.32048 16.4684 5.24418 16.4121 5.18792C16.3559 5.13166 16.2796 5.10005 16.2 5.10005H7.80001C7.72044 5.10005 7.64414 5.13166 7.58787 5.18792C7.53161 5.24418 7.50001 5.32048 7.50001 5.40005V5.70005H16.5ZM5.70001 15.3V13.8C5.70001 13.2431 5.92126 12.709 6.31508 12.3151C6.70891 11.9213 7.24305 11.7 7.80001 11.7H16.2C16.757 11.7 17.2911 11.9213 17.6849 12.3151C18.0788 12.709 18.3 13.2431 18.3 13.8V15.3H19.8C19.8796 15.3 19.9559 15.2684 20.0121 15.2122C20.0684 15.1559 20.1 15.0796 20.1 15V9.00005C20.1 8.60222 19.942 8.22069 19.6607 7.93939C19.3794 7.65808 18.9978 7.50005 18.6 7.50005H5.40001C5.00218 7.50005 4.62065 7.65808 4.33935 7.93939C4.05804 8.22069 3.90001 8.60222 3.90001 9.00005V15C3.90001 15.0796 3.93161 15.1559 3.98787 15.2122C4.04413 15.2684 4.12044 15.3 4.20001 15.3H5.70001ZM6.00001 13.8C6.00001 13.3227 6.18965 12.8648 6.52721 12.5273C6.86478 12.1897 7.32262 12 7.80001 12H16.2C16.6774 12 17.1352 12.1897 17.4728 12.5273C17.8104 12.8648 18 13.3227 18 13.8V15.6H19.8C19.9591 15.6 20.1117 15.5368 20.2243 15.4243C20.3368 15.3118 20.4 15.1592 20.4 15V9.00005C20.4 8.52266 20.2104 8.06482 19.8728 7.72726C19.5352 7.38969 19.0774 7.20005 18.6 7.20005H5.40001C4.92262 7.20005 4.46478 7.38969 4.12721 7.72726C3.78965 8.06482 3.60001 8.52266 3.60001 9.00005V15C3.60001 15.1592 3.66322 15.3118 3.77574 15.4243C3.88826 15.5368 4.04088 15.6 4.20001 15.6H6.00001V13.8ZM7.80001 13.5C7.72044 13.5 7.64413 13.5317 7.58787 13.5879C7.53161 13.6442 7.50001 13.7205 7.50001 13.8V18.6C7.50001 18.6796 7.53161 18.7559 7.58787 18.8122C7.64413 18.8684 7.72044 18.9 7.80001 18.9H16.2C16.2796 18.9 16.3559 18.8684 16.4121 18.8122C16.4684 18.7559 16.5 18.6796 16.5 18.6V13.8C16.5 13.7205 16.4684 13.6442 16.4121 13.5879C16.3559 13.5317 16.2796 13.5 16.2 13.5H7.80001ZM7.37574 13.3758C7.48826 13.2633 7.64088 13.2 7.80001 13.2H16.2C16.3591 13.2 16.5117 13.2633 16.6243 13.3758C16.7368 13.4883 16.8 13.6409 16.8 13.8V18.6C16.8 18.7592 16.7368 18.9118 16.6243 19.0243C16.5117 19.1368 16.3591 19.2 16.2 19.2H7.80001C7.64088 19.2 7.48826 19.1368 7.37574 19.0243C7.26322 18.9118 7.20001 18.7592 7.20001 18.6V13.8C7.20001 13.6409 7.26322 13.4883 7.37574 13.3758Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5.99999 5.39998C5.99999 4.92259 6.18964 4.46475 6.5272 4.12718C6.86477 3.78962 7.3226 3.59998 7.79999 3.59998H16.2C16.6774 3.59998 17.1352 3.78962 17.4728 4.12718C17.8104 4.46475 18 4.92259 18 5.39998V5.59998C18 5.82089 18.1791 5.99998 18.4 5.99998H18.6C19.3956 5.99998 20.1587 6.31605 20.7213 6.87865C21.2839 7.44126 21.6 8.20433 21.6 8.99998V15C21.6 15.4774 21.4104 15.9352 21.0728 16.2728C20.7352 16.6103 20.2774 16.8 19.8 16.8H18.4C18.1791 16.8 18 16.9791 18 17.2V18.6C18 19.0774 17.8104 19.5352 17.4728 19.8728C17.1352 20.2103 16.6774 20.4 16.2 20.4H7.79999C7.3226 20.4 6.86477 20.2103 6.5272 19.8728C6.18964 19.5352 5.99999 19.0774 5.99999 18.6V17.2C5.99999 16.9791 5.82091 16.8 5.59999 16.8H4.19999C3.7226 16.8 3.26477 16.6103 2.9272 16.2728C2.58964 15.9352 2.39999 15.4774 2.39999 15V8.99998C2.39999 8.20433 2.71606 7.44126 3.27867 6.87865C3.84128 6.31605 4.60434 5.99998 5.39999 5.99998H5.59999C5.82091 5.99998 5.99999 5.82089 5.99999 5.59998V5.39998ZM16.8 5.39998C16.8 5.24085 16.7368 5.08823 16.6243 4.97571C16.5117 4.86319 16.3591 4.79998 16.2 4.79998H7.79999C7.64086 4.79998 7.48825 4.86319 7.37573 4.97571C7.26321 5.08823 7.19999 5.24085 7.19999 5.39998V5.59998C7.19999 5.82089 7.37908 5.99998 7.59999 5.99998H16.4C16.6209 5.99998 16.8 5.82089 16.8 5.59998V5.39998ZM7.19999 13.8V18.6C7.19999 18.7591 7.26321 18.9117 7.37573 19.0242C7.48825 19.1368 7.64086 19.2 7.79999 19.2H16.2C16.3591 19.2 16.5117 19.1368 16.6243 19.0242C16.7368 18.9117 16.8 18.7591 16.8 18.6V13.8C16.8 13.6408 16.7368 13.4882 16.6243 13.3757C16.5117 13.2632 16.3591 13.2 16.2 13.2H7.79999C7.64086 13.2 7.48825 13.2632 7.37573 13.3757C7.26321 13.4882 7.19999 13.6408 7.19999 13.8Z\" fill=\"currentColor\"/>` },\r\n    privacy: { outlined: `<path d=\"M11 17H13V11H11V17ZM12.7125 8.7125C12.9042 8.52083 13 8.28333 13 8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8C11 8.28333 11.0958 8.52083 11.2875 8.7125C11.4792 8.90417 11.7167 9 12 9C12.2833 9 12.5208 8.90417 12.7125 8.7125ZM12 22C9.68333 21.4167 7.77083 20.0875 6.2625 18.0125C4.75417 15.9375 4 13.6333 4 11.1V5L12 2L20 5V11.1C20 13.6333 19.2458 15.9375 17.7375 18.0125C16.2292 20.0875 14.3167 21.4167 12 22ZM12 19.9C13.7333 19.35 15.1667 18.25 16.3 16.6C17.4333 14.95 18 13.1167 18 11.1V6.375L12 4.125L6 6.375V11.1C6 13.1167 6.56667 14.95 7.7 16.6C8.83333 18.25 10.2667 19.35 12 19.9Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M11 17H13V11H11V17ZM12.7125 8.7125C12.9042 8.52083 13 8.28333 13 8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8C11 8.28333 11.0958 8.52083 11.2875 8.7125C11.4792 8.90417 11.7167 9 12 9C12.2833 9 12.5208 8.90417 12.7125 8.7125ZM12 22C9.68333 21.4167 7.77083 20.0875 6.2625 18.0125C4.75417 15.9375 4 13.6333 4 11.1V5L12 2L20 5V11.1C20 13.6333 19.2458 15.9375 17.7375 18.0125C16.2292 20.0875 14.3167 21.4167 12 22Z\" fill=\"currentColor\"/>` },\r\n    profile: { outlined: `<path d=\"M5.85 17.1C6.7 16.45 7.65 15.9375 8.7 15.5625C9.75 15.1875 10.85 15 12 15C13.15 15 14.25 15.1875 15.3 15.5625C16.35 15.9375 17.3 16.45 18.15 17.1C18.7333 16.4167 19.1875 15.6417 19.5125 14.775C19.8375 13.9083 20 12.9833 20 12C20 9.78333 19.2208 7.89583 17.6625 6.3375C16.1042 4.77917 14.2167 4 12 4C9.78333 4 7.89583 4.77917 6.3375 6.3375C4.77917 7.89583 4 9.78333 4 12C4 12.9833 4.1625 13.9083 4.4875 14.775C4.8125 15.6417 5.26667 16.4167 5.85 17.1ZM9.5125 11.9875C8.8375 11.3125 8.5 10.4833 8.5 9.5C8.5 8.51667 8.8375 7.6875 9.5125 7.0125C10.1875 6.3375 11.0167 6 12 6C12.9833 6 13.8125 6.3375 14.4875 7.0125C15.1625 7.6875 15.5 8.51667 15.5 9.5C15.5 10.4833 15.1625 11.3125 14.4875 11.9875C13.8125 12.6625 12.9833 13 12 13C11.0167 13 10.1875 12.6625 9.5125 11.9875ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM14.5 19.6125C15.2833 19.3542 16 18.9833 16.65 18.5C16 18.0167 15.2833 17.6458 14.5 17.3875C13.7167 17.1292 12.8833 17 12 17C11.1167 17 10.2833 17.1292 9.5 17.3875C8.71667 17.6458 8 18.0167 7.35 18.5C8 18.9833 8.71667 19.3542 9.5 19.6125C10.2833 19.8708 11.1167 20 12 20C12.8833 20 13.7167 19.8708 14.5 19.6125ZM13.075 10.575C13.3583 10.2917 13.5 9.93333 13.5 9.5C13.5 9.06667 13.3583 8.70833 13.075 8.425C12.7917 8.14167 12.4333 8 12 8C11.5667 8 11.2083 8.14167 10.925 8.425C10.6417 8.70833 10.5 9.06667 10.5 9.5C10.5 9.93333 10.6417 10.2917 10.925 10.575C11.2083 10.8583 11.5667 11 12 11C12.4333 11 12.7917 10.8583 13.075 10.575Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5.85 17.1C6.7 16.45 7.65 15.9375 8.7 15.5625C9.75 15.1875 10.85 15 12 15C13.15 15 14.25 15.1875 15.3 15.5625C16.35 15.9375 17.3 16.45 18.15 17.1C18.7333 16.4167 19.1875 15.6417 19.5125 14.775C19.8375 13.9083 20 12.9833 20 12C20 9.78333 19.2208 7.89583 17.6625 6.3375C16.1042 4.77917 14.2167 4 12 4C9.78333 4 7.89583 4.77917 6.3375 6.3375C4.77917 7.89583 4 9.78333 4 12C4 12.9833 4.1625 13.9083 4.4875 14.775C4.8125 15.6417 5.26667 16.4167 5.85 17.1ZM9.5125 11.9875C8.8375 11.3125 8.5 10.4833 8.5 9.5C8.5 8.51667 8.8375 7.6875 9.5125 7.0125C10.1875 6.3375 11.0167 6 12 6C12.9833 6 13.8125 6.3375 14.4875 7.0125C15.1625 7.6875 15.5 8.51667 15.5 9.5C15.5 10.4833 15.1625 11.3125 14.4875 11.9875C13.8125 12.6625 12.9833 13 12 13C11.0167 13 10.1875 12.6625 9.5125 11.9875ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    'publish-event': { outlined: `<path d=\"M18 20V17H15V15H18V12H20V15H23V17H20V20H18ZM3 21C2.45 21 1.97917 20.8042 1.5875 20.4125C1.19583 20.0208 1 19.55 1 19V5C1 4.45 1.19583 3.97917 1.5875 3.5875C1.97917 3.19583 2.45 3 3 3H17C17.55 3 18.0208 3.19583 18.4125 3.5875C18.8042 3.97917 19 4.45 19 5V10H17V8H3V19H16V21H3ZM3 6H17V5H3V6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M18 20V17H15V15H18V12H20V15H23V17H20V20H18ZM3 21C2.45 21 1.97917 20.8042 1.5875 20.4125C1.19583 20.0208 1 19.55 1 19V5C1 4.45 1.19583 3.97917 1.5875 3.5875C1.97917 3.19583 2.45 3 3 3H17C17.55 3 18.0208 3.19583 18.4125 3.5875C18.8042 3.97917 19 4.45 19 5V10H17V8H3V19H16V21H3Z\" fill=\"currentColor\"/>` },\r\n    'qr-code': { outlined: `<path d=\"M3 11V3H11V11H3ZM5 9H9V5H5V9ZM3 21V13H11V21H3ZM5 19H9V15H5V19ZM13 11V3H21V11H13ZM15 9H19V5H15V9ZM19 21V19H21V21H19ZM13 15V13H15V15H13ZM15 17V15H17V17H15ZM13 19V17H15V19H13ZM15 21V19H17V21H15ZM17 19V17H19V19H17ZM17 15V13H19V15H17ZM19 17V15H21V17H19Z\" fill=\"currentColor\"/>` },\r\n    radio: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.3 6H20C21.11 6 22 6.89 22 8V20C22 21.1 21.11 22 20 22H4C2.89 22 2 21.1 2 20V8C2 7.17 2.51 6.43 3.24 6.15L15.88 1L16.56 2.66L8.3 6ZM20 11V8H4V11H16V9H18V11H20ZM4 20V13H20V20H4ZM8 18.98C9.38071 18.98 10.5 17.8607 10.5 16.48C10.5 15.0993 9.38071 13.98 8 13.98C6.61929 13.98 5.5 15.0993 5.5 16.48C5.5 17.8607 6.61929 18.98 8 18.98Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.23918 6.65C2.50918 6.93 1.99918 7.67 1.99918 8.5V20.5C1.99918 21.6 2.88918 22.5 3.99918 22.5H19.9992C21.1092 22.5 21.9992 21.6 21.9992 20.5V8.5C21.9992 7.39 21.1092 6.5 19.9992 6.5H8.29918L16.5592 3.16L15.8792 1.5L3.23918 6.65ZM6.99835 20.5C5.33835 20.5 3.99835 19.16 3.99835 17.5C3.99835 15.84 5.33835 14.5 6.99835 14.5C8.65835 14.5 9.99835 15.84 9.99835 17.5C9.99835 19.16 8.65835 20.5 6.99835 20.5ZM19.9984 12.5H17.9984V10.5H15.9984V12.5H3.99835V8.5H19.9984V12.5Z\" fill=\"currentColor\"/>` },\r\n    'radio-button-off': { outlined: `<path d=\"M19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19V21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21V19C15.866 19 19 15.866 19 12Z\" fill=\"currentColor\"/>` },\r\n    'radio-button-on': { outlined: `<path d=\"M19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19V21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21V19C15.866 19 19 15.866 19 12Z\" fill=\"currentColor\"/><path d=\"M16 12C16 14.2091 14.2091 16 12 16C9.79086 16 8 14.2091 8 12C8 9.79086 9.79086 8 12 8C14.2091 8 16 9.79086 16 12Z\" fill=\"currentColor\"/>` },\r\n    rating: { outlined: `<path d=\"M8.85002 16.825L12 14.925L15.15 16.85L14.325 13.25L17.1 10.85L13.45 10.525L12 7.12495L10.55 10.5L6.90001 10.825L9.67501 13.25L8.85002 16.825ZM12 17.275L7.85002 19.775C7.66668 19.8916 7.47502 19.9416 7.27501 19.9249C7.07501 19.9083 6.90001 19.8416 6.75002 19.725C6.60001 19.6083 6.48335 19.4625 6.40002 19.2874C6.31668 19.1125 6.30002 18.9166 6.35002 18.7L7.45002 13.975L3.77502 10.8C3.60835 10.65 3.50418 10.4791 3.46252 10.2875C3.42085 10.0958 3.43335 9.90828 3.50002 9.72495C3.56668 9.54162 3.66668 9.39162 3.80002 9.27495C3.93335 9.15828 4.11668 9.08328 4.35002 9.04995L9.20002 8.62495L11.075 4.17495C11.1583 3.97495 11.2875 3.82495 11.4625 3.72495C11.6375 3.62495 11.8167 3.57495 12 3.57495C12.1833 3.57495 12.3625 3.62495 12.5375 3.72495C12.7125 3.82495 12.8417 3.97495 12.925 4.17495L14.8 8.62495L19.65 9.04995C19.8833 9.08328 20.0667 9.15828 20.2 9.27495C20.3333 9.39162 20.4333 9.54162 20.5 9.72495C20.5667 9.90828 20.5792 10.0958 20.5375 10.2875C20.4958 10.4791 20.3917 10.65 20.225 10.8L16.55 13.975L17.65 18.7C17.7 18.9166 17.6833 19.1125 17.6 19.2874C17.5167 19.4625 17.4 19.6083 17.25 19.725C17.1 19.8416 16.925 19.9083 16.725 19.9249C16.525 19.9416 16.3333 19.8916 16.15 19.775L12 17.275Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 17.275L7.85002 19.775C7.66668 19.8916 7.47502 19.9416 7.27501 19.9249C7.07501 19.9083 6.90001 19.8416 6.75002 19.725C6.60001 19.6083 6.48335 19.4625 6.40002 19.2874C6.31668 19.1125 6.30002 18.9166 6.35002 18.7L7.45002 13.975L3.77502 10.8C3.60835 10.65 3.50418 10.4791 3.46252 10.2875C3.42085 10.0958 3.43335 9.90828 3.50002 9.72495C3.56668 9.54162 3.66668 9.39162 3.80002 9.27495C3.93335 9.15828 4.11668 9.08328 4.35002 9.04995L9.20002 8.62495L11.075 4.17495C11.1583 3.97495 11.2875 3.82495 11.4625 3.72495C11.6375 3.62495 11.8167 3.57495 12 3.57495C12.1833 3.57495 12.3625 3.62495 12.5375 3.72495C12.7125 3.82495 12.8417 3.97495 12.925 4.17495L14.8 8.62495L19.65 9.04995C19.8833 9.08328 20.0667 9.15828 20.2 9.27495C20.3333 9.39162 20.4333 9.54162 20.5 9.72495C20.5667 9.90828 20.5792 10.0958 20.5375 10.2875C20.4958 10.4791 20.3917 10.65 20.225 10.8L16.55 13.975L17.65 18.7C17.7 18.9166 17.6833 19.1125 17.6 19.2874C17.5167 19.4625 17.4 19.6083 17.25 19.725C17.1 19.8416 16.925 19.9083 16.725 19.9249C16.525 19.9416 16.3333 19.8916 16.15 19.775L12 17.275Z\" fill=\"currentColor\"/>` },\r\n    'reading-plan': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.1818 4H3.81818C2.81818 4 2 4.84706 2 5.88235V18.1176C2 19.1529 2.81818 20 3.81818 20H20.1818C21.1818 20 22 19.1529 22 18.1176V5.88235C22 4.84706 21.1818 4 20.1818 4ZM4 17.8667V6.13333H11V17.8667H4ZM20 17.8667H13V6.13333H20V17.8667ZM14 9.33333H19V10.4H14V9.33333ZM14 11.4667H19V12.5333H14V11.4667ZM14 13.6H19V14.6667H14V13.6Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.9997 11.5H19.9997V13H12.9997V11.5ZM12.9997 9H19.9997V10.5H12.9997V9ZM12.9997 14H19.9997V15.5H12.9997V14ZM20.9997 3.5H2.99971C1.89971 3.5 0.999707 4.4 0.999707 5.5V18.5C0.999707 19.6 1.89971 20.5 2.99971 20.5H20.9997C22.0997 20.5 22.9997 19.6 22.9997 18.5V5.5C22.9997 4.4 22.0997 3.5 20.9997 3.5ZM21 18.5H12V5.5H21V18.5Z\" fill=\"currentColor\"/>` },\r\n    receipt: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.27956 2.09074L6.35 2.15L7.14 2.95C7.31778 3.12778 7.58247 3.14753 7.77956 3.00926L7.85 2.95L8.64 2.15C8.81778 1.97222 9.08247 1.95247 9.27956 2.09074L9.35 2.15L10.15 2.95C10.3278 3.12778 10.5925 3.14753 10.7896 3.00926L10.86 2.95L11.65 2.16C11.8278 1.98222 12.0925 1.96247 12.2896 2.10074L12.36 2.16L13.15 2.95C13.3278 3.12778 13.5925 3.14753 13.7896 3.00926L13.86 2.95L14.65 2.16C14.8278 1.98222 15.0925 1.96247 15.2896 2.10074L15.36 2.16L16.15 2.95C16.3278 3.12778 16.5925 3.14753 16.7896 3.00926L16.86 2.95L17.65 2.16C17.8278 1.98222 18.0925 1.96247 18.2896 2.10074L18.36 2.16L19.15 2.95C19.3278 3.12778 19.5925 3.14753 19.7896 3.00926L19.86 2.95L20.65 2.16C20.74 2.06 20.87 2.01 21 2.01L20.989 2.011L20.99 21.6C20.9 21.6 20.8044 21.5719 20.72 21.5156L20.64 21.45L19.85 20.66C19.6722 20.4822 19.4075 20.4625 19.2104 20.6007L19.14 20.66L18.35 21.45C18.1722 21.6278 17.9075 21.6475 17.7104 21.5093L17.64 21.45L16.85 20.66C16.6722 20.4822 16.4075 20.4625 16.2104 20.6007L16.14 20.66L15.35 21.45C15.1722 21.6278 14.9075 21.6475 14.7104 21.5093L14.64 21.45L13.85 20.66C13.6722 20.4822 13.4075 20.4625 13.2104 20.6007L13.14 20.66L12.35 21.45C12.1722 21.6278 11.9075 21.6475 11.7104 21.5093L11.64 21.45L10.85 20.66C10.6722 20.4822 10.4075 20.4625 10.2104 20.6007L10.14 20.66L9.35 21.45C9.17222 21.6278 8.90753 21.6475 8.71044 21.5093L8.64 21.45L7.85 20.66C7.67222 20.4822 7.40753 20.4625 7.21044 20.6007L7.14 20.66L6.35 21.45C6.17222 21.6278 5.90753 21.6475 5.71044 21.5093L5.64 21.45L4.85 20.66C4.67222 20.4822 4.40753 20.4625 4.21044 20.6007L4.14 20.66L3.35 21.45C3.278 21.53 3.1804 21.578 3.07768 21.594L3 21.6V2.01C3.104 2.01 3.208 2.042 3.29152 2.10088L3.35 2.15L4.14 2.95C4.31778 3.12778 4.58247 3.14753 4.77956 3.00926L4.85 2.95L5.64 2.15C5.81778 1.97222 6.08247 1.95247 6.27956 2.09074ZM18 4.8H6C5.48716 4.8 5.06449 5.18604 5.00673 5.68338L5 5.8V17.8C5 18.3128 5.38604 18.7355 5.88338 18.7933L6 18.8H18C18.5128 18.8 18.9355 18.414 18.9933 17.9166L19 17.8V5.8C19 5.24772 18.5523 4.8 18 4.8ZM16.1667 15C16.625 15 17 15.45 17 16C17 16.55 16.625 17 16.1667 17H7.83333C7.375 17 7 16.55 7 16C7 15.45 7.375 15 7.83333 15H16.1667ZM16.1667 11C16.625 11 17 11.45 17 12C17 12.55 16.625 13 16.1667 13H7.83333C7.375 13 7 12.55 7 12C7 11.45 7.375 11 7.83333 11H16.1667ZM16.1667 7C16.625 7 17 7.45 17 8C17 8.55 16.625 9 16.1667 9H7.83333C7.375 9 7 8.55 7 8C7 7.45 7.375 7 7.83333 7H16.1667Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.27956 2.09074L6.35 2.15L7.14 2.95C7.31778 3.12778 7.58247 3.14753 7.77956 3.00926L7.85 2.95L8.64 2.15C8.81778 1.97222 9.08247 1.95247 9.27956 2.09074L9.35 2.15L10.15 2.95C10.3278 3.12778 10.5925 3.14753 10.7896 3.00926L10.86 2.95L11.65 2.16C11.8278 1.98222 12.0925 1.96247 12.2896 2.10074L12.36 2.16L13.15 2.95C13.3278 3.12778 13.5925 3.14753 13.7896 3.00926L13.86 2.95L14.65 2.16C14.8278 1.98222 15.0925 1.96247 15.2896 2.10074L15.36 2.16L16.15 2.95C16.3278 3.12778 16.5925 3.14753 16.7896 3.00926L16.86 2.95L17.65 2.16C17.8278 1.98222 18.0925 1.96247 18.2896 2.10074L18.36 2.16L19.15 2.95C19.3278 3.12778 19.5925 3.14753 19.7896 3.00926L19.86 2.95L20.65 2.16C20.74 2.06 20.87 2.01 21 2.01L20.989 2.011L20.99 21.6C20.9 21.6 20.8044 21.5719 20.72 21.5156L20.64 21.45L19.85 20.66C19.6722 20.4822 19.4075 20.4625 19.2104 20.6007L19.14 20.66L18.35 21.45C18.1722 21.6278 17.9075 21.6475 17.7104 21.5093L17.64 21.45L16.85 20.66C16.6722 20.4822 16.4075 20.4625 16.2104 20.6007L16.14 20.66L15.35 21.45C15.1722 21.6278 14.9075 21.6475 14.7104 21.5093L14.64 21.45L13.85 20.66C13.6722 20.4822 13.4075 20.4625 13.2104 20.6007L13.14 20.66L12.35 21.45C12.1722 21.6278 11.9075 21.6475 11.7104 21.5093L11.64 21.45L10.85 20.66C10.6722 20.4822 10.4075 20.4625 10.2104 20.6007L10.14 20.66L9.35 21.45C9.17222 21.6278 8.90753 21.6475 8.71044 21.5093L8.64 21.45L7.85 20.66C7.67222 20.4822 7.40753 20.4625 7.21044 20.6007L7.14 20.66L6.35 21.45C6.17222 21.6278 5.90753 21.6475 5.71044 21.5093L5.64 21.45L4.85 20.66C4.67222 20.4822 4.40753 20.4625 4.21044 20.6007L4.14 20.66L3.35 21.45C3.278 21.53 3.1804 21.578 3.07768 21.594L3 21.6V2.01C3.104 2.01 3.208 2.042 3.29152 2.10088L3.35 2.15L4.14 2.95C4.31778 3.12778 4.58247 3.14753 4.77956 3.00926L4.85 2.95L5.64 2.15C5.81778 1.97222 6.08247 1.95247 6.27956 2.09074ZM18 4.8H6C5.48716 4.8 5.06449 5.18604 5.00673 5.68338L5 5.8V17.8C5 18.3128 5.38604 18.7355 5.88338 18.7933L6 18.8H18C18.5128 18.8 18.9355 18.414 18.9933 17.9166L19 17.8V5.8C19 5.24772 18.5523 4.8 18 4.8ZM16.1667 15C16.625 15 17 15.45 17 16C17 16.55 16.625 17 16.1667 17H7.83333C7.375 17 7 16.55 7 16C7 15.45 7.375 15 7.83333 15H16.1667ZM16.1667 11C16.625 11 17 11.45 17 12C17 12.55 16.625 13 16.1667 13H7.83333C7.375 13 7 12.55 7 12C7 11.45 7.375 11 7.83333 11H16.1667ZM16.1667 7C16.625 7 17 7.45 17 8C17 8.55 16.625 9 16.1667 9H7.83333C7.375 9 7 8.55 7 8C7 7.45 7.375 7 7.83333 7H16.1667Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21 2.20995C20.87 2.20995 20.74 2.25995 20.65 2.35995L19.86 3.14995C19.66 3.34995 19.35 3.34995 19.15 3.14995L18.36 2.35995C18.16 2.15995 17.85 2.15995 17.65 2.35995L16.86 3.14995C16.66 3.34995 16.35 3.34995 16.15 3.14995L15.36 2.35995C15.16 2.15995 14.85 2.15995 14.65 2.35995L13.86 3.14995C13.66 3.34995 13.35 3.34995 13.15 3.14995L12.36 2.35995C12.16 2.15995 11.85 2.15995 11.65 2.35995L10.86 3.14995C10.66 3.34995 10.35 3.34995 10.15 3.14995L9.35 2.34995C9.15 2.14995 8.84 2.14995 8.64 2.34995L7.85 3.14995C7.65 3.34995 7.34 3.34995 7.14 3.14995L6.35 2.34995C6.15 2.14995 5.84 2.14995 5.64 2.34995L4.85 3.14995C4.65 3.34995 4.34 3.34995 4.14 3.14995L3.35 2.34995C3.26 2.25995 3.13 2.20995 3 2.20995V21.8C3.13 21.8 3.26 21.75 3.35 21.65L4.14 20.86C4.34 20.66 4.65 20.66 4.85 20.86L5.64 21.65C5.84 21.85 6.15 21.85 6.35 21.65L7.14 20.86C7.34 20.66 7.65 20.66 7.85 20.86L8.64 21.65C8.84 21.85 9.15 21.85 9.35 21.65L10.14 20.86C10.34 20.66 10.65 20.66 10.85 20.86L11.64 21.65C11.84 21.85 12.15 21.85 12.35 21.65L13.14 20.86C13.34 20.66 13.65 20.66 13.85 20.86L14.64 21.65C14.84 21.85 15.15 21.85 15.35 21.65L16.14 20.86C16.34 20.66 16.65 20.66 16.85 20.86L17.64 21.65C17.84 21.85 18.15 21.85 18.35 21.65L19.14 20.86C19.34 20.66 19.65 20.66 19.85 20.86L20.64 21.65C20.74 21.75 20.87 21.8 20.99 21.8V2.20995H21ZM17 17H7C6.45 17 6 16.55 6 16C6 15.45 6.45 15 7 15H17C17.55 15 18 15.45 18 16C18 16.55 17.55 17 17 17ZM17 13H7C6.45 13 6 12.55 6 12C6 11.45 6.45 11 7 11H17C17.55 11 18 11.45 18 12C18 12.55 17.55 13 17 13ZM17 8.99995H7C6.45 8.99995 6 8.54995 6 7.99995C6 7.44995 6.45 6.99995 7 6.99995H17C17.55 6.99995 18 7.44995 18 7.99995C18 8.54995 17.55 8.99995 17 8.99995Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21 2.20995C20.87 2.20995 20.74 2.25995 20.65 2.35995L19.86 3.14995C19.66 3.34995 19.35 3.34995 19.15 3.14995L18.36 2.35995C18.16 2.15995 17.85 2.15995 17.65 2.35995L16.86 3.14995C16.66 3.34995 16.35 3.34995 16.15 3.14995L15.36 2.35995C15.16 2.15995 14.85 2.15995 14.65 2.35995L13.86 3.14995C13.66 3.34995 13.35 3.34995 13.15 3.14995L12.36 2.35995C12.16 2.15995 11.85 2.15995 11.65 2.35995L10.86 3.14995C10.66 3.34995 10.35 3.34995 10.15 3.14995L9.35 2.34995C9.15 2.14995 8.84 2.14995 8.64 2.34995L7.85 3.14995C7.65 3.34995 7.34 3.34995 7.14 3.14995L6.35 2.34995C6.15 2.14995 5.84 2.14995 5.64 2.34995L4.85 3.14995C4.65 3.34995 4.34 3.34995 4.14 3.14995L3.35 2.34995C3.26 2.25995 3.13 2.20995 3 2.20995V21.8C3.13 21.8 3.26 21.75 3.35 21.65L4.14 20.86C4.34 20.66 4.65 20.66 4.85 20.86L5.64 21.65C5.84 21.85 6.15 21.85 6.35 21.65L7.14 20.86C7.34 20.66 7.65 20.66 7.85 20.86L8.64 21.65C8.84 21.85 9.15 21.85 9.35 21.65L10.14 20.86C10.34 20.66 10.65 20.66 10.85 20.86L11.64 21.65C11.84 21.85 12.15 21.85 12.35 21.65L13.14 20.86C13.34 20.66 13.65 20.66 13.85 20.86L14.64 21.65C14.84 21.85 15.15 21.85 15.35 21.65L16.14 20.86C16.34 20.66 16.65 20.66 16.85 20.86L17.64 21.65C17.84 21.85 18.15 21.85 18.35 21.65L19.14 20.86C19.34 20.66 19.65 20.66 19.85 20.86L20.64 21.65C20.74 21.75 20.87 21.8 20.99 21.8V2.20995H21ZM17 17H7C6.45 17 6 16.55 6 16C6 15.45 6.45 15 7 15H17C17.55 15 18 15.45 18 16C18 16.55 17.55 17 17 17ZM17 13H7C6.45 13 6 12.55 6 12C6 11.45 6.45 11 7 11H17C17.55 11 18 11.45 18 12C18 12.55 17.55 13 17 13ZM17 8.99995H7C6.45 8.99995 6 8.54995 6 7.99995C6 7.44995 6.45 6.99995 7 6.99995H17C17.55 6.99995 18 7.44995 18 7.99995C18 8.54995 17.55 8.99995 17 8.99995Z\" fill=\"currentColor\"/>` },\r\n    redo: { outlined: `<path d=\"M16.2 9.99999H9.9C8.85 9.99999 7.9375 10.3333 7.1625 11C6.3875 11.6667 6 12.5 6 13.5C6 14.5 6.3875 15.3333 7.1625 16C7.9375 16.6667 8.85 17 9.9 17H16C16.2833 17 16.5208 17.0958 16.7125 17.2875C16.9042 17.4792 17 17.7167 17 18C17 18.2833 16.9042 18.5208 16.7125 18.7125C16.5208 18.9042 16.2833 19 16 19H9.9C8.28333 19 6.89583 18.475 5.7375 17.425C4.57917 16.375 4 15.0667 4 13.5C4 11.9333 4.57917 10.625 5.7375 9.57499C6.89583 8.52499 8.28333 7.99999 9.9 7.99999H16.2L14.3 6.09999C14.1167 5.91665 14.025 5.68332 14.025 5.39999C14.025 5.11665 14.1167 4.88332 14.3 4.69999C14.4833 4.51665 14.7167 4.42499 15 4.42499C15.2833 4.42499 15.5167 4.51665 15.7 4.69999L19.3 8.29999C19.4 8.39999 19.4708 8.50832 19.5125 8.62499C19.5542 8.74165 19.575 8.86665 19.575 8.99999C19.575 9.13332 19.5542 9.25832 19.5125 9.37499C19.4708 9.49165 19.4 9.59999 19.3 9.69999L15.7 13.3C15.5167 13.4833 15.2833 13.575 15 13.575C14.7167 13.575 14.4833 13.4833 14.3 13.3C14.1167 13.1167 14.025 12.8833 14.025 12.6C14.025 12.3167 14.1167 12.0833 14.3 11.9L16.2 9.99999Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M16.2 9.99999H9.9C8.85 9.99999 7.9375 10.3333 7.1625 11C6.3875 11.6667 6 12.5 6 13.5C6 14.5 6.3875 15.3333 7.1625 16C7.9375 16.6667 8.85 17 9.9 17H16C16.2833 17 16.5208 17.0958 16.7125 17.2875C16.9042 17.4792 17 17.7167 17 18C17 18.2833 16.9042 18.5208 16.7125 18.7125C16.5208 18.9042 16.2833 19 16 19H9.9C8.28333 19 6.89583 18.475 5.7375 17.425C4.57917 16.375 4 15.0667 4 13.5C4 11.9333 4.57917 10.625 5.7375 9.57499C6.89583 8.52499 8.28333 7.99999 9.9 7.99999H16.2L14.3 6.09999C14.1167 5.91665 14.025 5.68332 14.025 5.39999C14.025 5.11665 14.1167 4.88332 14.3 4.69999C14.4833 4.51665 14.7167 4.42499 15 4.42499C15.2833 4.42499 15.5167 4.51665 15.7 4.69999L19.3 8.29999C19.4 8.39999 19.4708 8.50832 19.5125 8.62499C19.5542 8.74165 19.575 8.86665 19.575 8.99999C19.575 9.13332 19.5542 9.25832 19.5125 9.37499C19.4708 9.49165 19.4 9.59999 19.3 9.69999L15.7 13.3C15.5167 13.4833 15.2833 13.575 15 13.575C14.7167 13.575 14.4833 13.4833 14.3 13.3C14.1167 13.1167 14.025 12.8833 14.025 12.6C14.025 12.3167 14.1167 12.0833 14.3 11.9L16.2 9.99999Z\" fill=\"currentColor\"/>` },\r\n    reload: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.99994V7.78994C12 8.23994 12.54 8.45994 12.85 8.13994L15.64 5.34994C15.84 5.14994 15.84 4.83994 15.64 4.63994L12.85 1.84994C12.54 1.53994 12 1.75994 12 2.20994V3.99994C7.58 3.99994 4 7.57994 4 11.9999C4 13.0399 4.2 14.0399 4.57 14.9499C4.84 15.6199 5.7 15.7999 6.21 15.2899C6.48 15.0199 6.59 14.6099 6.44 14.2499C6.15 13.5599 6 12.7899 6 11.9999C6 8.68994 8.69 5.99994 12 5.99994ZM17.79 8.70994C17.52 8.97994 17.41 9.39994 17.56 9.74994C17.84 10.4499 18 11.2099 18 11.9999C18 15.3099 15.31 17.9999 12 17.9999V16.2099C12 15.7599 11.46 15.5399 11.15 15.8599L8.36 18.6499C8.16 18.8499 8.16 19.1599 8.36 19.3599L11.15 22.1499C11.46 22.4599 12 22.2399 12 21.7999V19.9999C16.42 19.9999 20 16.4199 20 11.9999C20 10.9599 19.8 9.95994 19.43 9.04994C19.16 8.37994 18.3 8.19994 17.79 8.70994Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.99994V7.78994C12 8.23994 12.54 8.45994 12.85 8.13994L15.64 5.34994C15.84 5.14994 15.84 4.83994 15.64 4.63994L12.85 1.84994C12.54 1.53994 12 1.75994 12 2.20994V3.99994C7.58 3.99994 4 7.57994 4 11.9999C4 13.0399 4.2 14.0399 4.57 14.9499C4.84 15.6199 5.7 15.7999 6.21 15.2899C6.48 15.0199 6.59 14.6099 6.44 14.2499C6.15 13.5599 6 12.7899 6 11.9999C6 8.68994 8.69 5.99994 12 5.99994ZM17.79 8.70994C17.52 8.97994 17.41 9.39994 17.56 9.74994C17.84 10.4499 18 11.2099 18 11.9999C18 15.3099 15.31 17.9999 12 17.9999V16.2099C12 15.7599 11.46 15.5399 11.15 15.8599L8.36 18.6499C8.16 18.8499 8.16 19.1599 8.36 19.3599L11.15 22.1499C11.46 22.4599 12 22.2399 12 21.7999V19.9999C16.42 19.9999 20 16.4199 20 11.9999C20 10.9599 19.8 9.95994 19.43 9.04994C19.16 8.37994 18.3 8.19994 17.79 8.70994Z\" fill=\"currentColor\"/>` },\r\n    reports: { outlined: `<path d=\"M7 17H9V10H7V17ZM11 17H13V7H11V17ZM15 17H17V13H15V17ZM5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM5 19H19V5H5V12V19Z\" fill=\"currentColor\"/>` },\r\n    room: { outlined: `<path d=\"M6.05 17.775C5.71666 17.5917 5.45833 17.3459 5.275 17.0375C5.09166 16.7292 5 16.3834 5 16V11.2L2.6 9.87502C2.41666 9.77502 2.28333 9.65002 2.2 9.50002C2.11666 9.35002 2.075 9.18336 2.075 9.00002C2.075 8.81669 2.11666 8.65002 2.2 8.50002C2.28333 8.35002 2.41666 8.22502 2.6 8.12502L11.05 3.52502C11.2 3.44169 11.3542 3.37919 11.5125 3.33752C11.6708 3.29586 11.8333 3.27502 12 3.27502C12.1667 3.27502 12.3292 3.29586 12.4875 3.33752C12.6458 3.37919 12.8 3.44169 12.95 3.52502L22.475 8.72502C22.6417 8.80836 22.7708 8.92919 22.8625 9.08752C22.9542 9.24586 23 9.41669 23 9.60002V16C23 16.2834 22.9042 16.5209 22.7125 16.7125C22.5208 16.9042 22.2833 17 22 17C21.7167 17 21.4792 16.9042 21.2875 16.7125C21.0958 16.5209 21 16.2834 21 16V10.1L19 11.2V16C19 16.3834 18.9083 16.7292 18.725 17.0375C18.5417 17.3459 18.2833 17.5917 17.95 17.775L12.95 20.475C12.8 20.5584 12.6458 20.6209 12.4875 20.6625C12.3292 20.7042 12.1667 20.725 12 20.725C11.8333 20.725 11.6708 20.7042 11.5125 20.6625C11.3542 20.6209 11.2 20.5584 11.05 20.475L6.05 17.775ZM12 12.7L18.85 9.00002L12 5.30002L5.15 9.00002L12 12.7ZM12 18.725L17 16.025V12.25L12.975 14.475C12.825 14.5584 12.6667 14.6209 12.5 14.6625C12.3333 14.7042 12.1667 14.725 12 14.725C11.8333 14.725 11.6667 14.7042 11.5 14.6625C11.3333 14.6209 11.175 14.5584 11.025 14.475L7 12.25V16.025L12 18.725Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M21 16V10.1L12.95 14.475C12.65 14.6417 12.3333 14.725 12 14.725C11.6667 14.725 11.35 14.6417 11.05 14.475L2.6 9.87502C2.41667 9.77502 2.2875 9.65002 2.2125 9.50002C2.1375 9.35002 2.1 9.18336 2.1 9.00002C2.1 8.81669 2.1375 8.65002 2.2125 8.50002C2.2875 8.35002 2.41667 8.22502 2.6 8.12502L11.05 3.52502C11.2 3.44169 11.3542 3.37919 11.5125 3.33752C11.6708 3.29586 11.8333 3.27502 12 3.27502C12.1667 3.27502 12.3292 3.29586 12.4875 3.33752C12.6458 3.37919 12.8 3.44169 12.95 3.52502L22.475 8.72502C22.6417 8.80836 22.7708 8.92919 22.8625 9.08752C22.9542 9.24586 23 9.41669 23 9.60002V16C23 16.2834 22.9042 16.5209 22.7125 16.7125C22.5208 16.9042 22.2833 17 22 17C21.7167 17 21.4792 16.9042 21.2875 16.7125C21.0958 16.5209 21 16.2834 21 16ZM11.05 20.475L6.05 17.775C5.71667 17.5917 5.45833 17.3417 5.275 17.025C5.09167 16.7084 5 16.3667 5 16V12.2L11.05 15.475C11.35 15.6417 11.6667 15.725 12 15.725C12.3333 15.725 12.65 15.6417 12.95 15.475L19 12.2V16C19 16.3667 18.9083 16.7084 18.725 17.025C18.5417 17.3417 18.2833 17.5917 17.95 17.775L12.95 20.475C12.8 20.5584 12.6458 20.6209 12.4875 20.6625C12.3292 20.7042 12.1667 20.725 12 20.725C11.8333 20.725 11.6708 20.7042 11.5125 20.6625C11.3542 20.6209 11.2 20.5584 11.05 20.475Z\" fill=\"currentColor\"/>` },\r\n    save: { outlined: `<path d=\"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H16.175C16.4417 3 16.6958 3.05 16.9375 3.15C17.1792 3.25 17.3917 3.39167 17.575 3.575L20.425 6.425C20.6083 6.60833 20.75 6.82083 20.85 7.0625C20.95 7.30417 21 7.55833 21 7.825V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM19 7.85L16.15 5H5V19H19V7.85ZM12 18C12.8333 18 13.5417 17.7083 14.125 17.125C14.7083 16.5417 15 15.8333 15 15C15 14.1667 14.7083 13.4583 14.125 12.875C13.5417 12.2917 12.8333 12 12 12C11.1667 12 10.4583 12.2917 9.875 12.875C9.29167 13.4583 9 14.1667 9 15C9 15.8333 9.29167 16.5417 9.875 17.125C10.4583 17.7083 11.1667 18 12 18ZM7 10H14C14.2833 10 14.5208 9.90417 14.7125 9.7125C14.9042 9.52083 15 9.28333 15 9V7C15 6.71667 14.9042 6.47917 14.7125 6.2875C14.5208 6.09583 14.2833 6 14 6H7C6.71667 6 6.47917 6.09583 6.2875 6.2875C6.09583 6.47917 6 6.71667 6 7V9C6 9.28333 6.09583 9.52083 6.2875 9.7125C6.47917 9.90417 6.71667 10 7 10Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H16.175C16.4417 3 16.6958 3.05 16.9375 3.15C17.1792 3.25 17.3917 3.39167 17.575 3.575L20.425 6.425C20.6083 6.60833 20.75 6.82083 20.85 7.0625C20.95 7.30417 21 7.55833 21 7.825V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM12 18C12.8333 18 13.5417 17.7083 14.125 17.125C14.7083 16.5417 15 15.8333 15 15C15 14.1667 14.7083 13.4583 14.125 12.875C13.5417 12.2917 12.8333 12 12 12C11.1667 12 10.4583 12.2917 9.875 12.875C9.29167 13.4583 9 14.1667 9 15C9 15.8333 9.29167 16.5417 9.875 17.125C10.4583 17.7083 11.1667 18 12 18ZM7 10H14C14.2833 10 14.5208 9.90417 14.7125 9.7125C14.9042 9.52083 15 9.28333 15 9V7C15 6.71667 14.9042 6.47917 14.7125 6.2875C14.5208 6.09583 14.2833 6 14 6H7C6.71667 6 6.47917 6.09583 6.2875 6.2875C6.09583 6.47917 6 6.71667 6 7V9C6 9.28333 6.09583 9.52083 6.2875 9.7125C6.47917 9.90417 6.71667 10 7 10Z\" fill=\"currentColor\"/>` },\r\n    schedule: { outlined: `<path d=\"M14.5 18C13.8 18 13.2083 17.7583 12.725 17.275C12.2417 16.7917 12 16.2 12 15.5C12 14.8 12.2417 14.2083 12.725 13.725C13.2083 13.2417 13.8 13 14.5 13C15.2 13 15.7917 13.2417 16.275 13.725C16.7583 14.2083 17 14.8 17 15.5C17 16.2 16.7583 16.7917 16.275 17.275C15.7917 17.7583 15.2 18 14.5 18ZM5 22C4.45 22 3.97917 21.8042 3.5875 21.4125C3.19583 21.0208 3 20.55 3 20V6C3 5.45 3.19583 4.97917 3.5875 4.5875C3.97917 4.19583 4.45 4 5 4H6V3C6 2.71667 6.09583 2.47917 6.2875 2.2875C6.47917 2.09583 6.71667 2 7 2C7.28333 2 7.52083 2.09583 7.7125 2.2875C7.90417 2.47917 8 2.71667 8 3V4H16V3C16 2.71667 16.0958 2.47917 16.2875 2.2875C16.4792 2.09583 16.7167 2 17 2C17.2833 2 17.5208 2.09583 17.7125 2.2875C17.9042 2.47917 18 2.71667 18 3V4H19C19.55 4 20.0208 4.19583 20.4125 4.5875C20.8042 4.97917 21 5.45 21 6V20C21 20.55 20.8042 21.0208 20.4125 21.4125C20.0208 21.8042 19.55 22 19 22H5ZM5 20H19V10H5V20ZM5 8H19V6H5V8Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M14.5 18C13.8 18 13.2083 17.7583 12.725 17.275C12.2417 16.7917 12 16.2 12 15.5C12 14.8 12.2417 14.2083 12.725 13.725C13.2083 13.2417 13.8 13 14.5 13C15.2 13 15.7917 13.2417 16.275 13.725C16.7583 14.2083 17 14.8 17 15.5C17 16.2 16.7583 16.7917 16.275 17.275C15.7917 17.7583 15.2 18 14.5 18ZM5 22C4.45 22 3.97917 21.8042 3.5875 21.4125C3.19583 21.0208 3 20.55 3 20V6C3 5.45 3.19583 4.97917 3.5875 4.5875C3.97917 4.19583 4.45 4 5 4H6V3C6 2.71667 6.09583 2.47917 6.2875 2.2875C6.47917 2.09583 6.71667 2 7 2C7.28333 2 7.52083 2.09583 7.7125 2.2875C7.90417 2.47917 8 2.71667 8 3V4H16V3C16 2.71667 16.0958 2.47917 16.2875 2.2875C16.4792 2.09583 16.7167 2 17 2C17.2833 2 17.5208 2.09583 17.7125 2.2875C17.9042 2.47917 18 2.71667 18 3V4H19C19.55 4 20.0208 4.19583 20.4125 4.5875C20.8042 4.97917 21 5.45 21 6V20C21 20.55 20.8042 21.0208 20.4125 21.4125C20.0208 21.8042 19.55 22 19 22H5ZM5 20H19V10H5V20Z\" fill=\"currentColor\"/>` },\r\n    search: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.6651 14.8978H15.7383L15.4098 14.5812C16.8176 12.9398 17.545 10.7004 17.1461 8.3203C16.5947 5.06086 13.873 2.45799 10.5882 2.05936C5.62577 1.44968 1.44935 5.62364 2.05939 10.5832C2.45826 13.866 5.06265 16.5862 8.32401 17.1372C10.7055 17.5359 12.9462 16.8089 14.5886 15.402L14.9054 15.7303V16.6565L19.8913 21.6395C20.3723 22.1202 21.1583 22.1202 21.6393 21.6395C22.1202 21.1588 22.1202 20.3732 21.6393 19.8925L16.6651 14.8978ZM9.62621 14.8978C6.70506 14.8978 4.34703 12.5412 4.34703 9.62173C4.34703 6.7023 6.70506 4.34566 9.62621 4.34566C12.5473 4.34566 14.9054 6.7023 14.9054 9.62173C14.9054 12.5412 12.5473 14.8978 9.62621 14.8978Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.6651 14.8978H15.7383L15.4098 14.5812C16.8176 12.9398 17.545 10.7004 17.1461 8.3203C16.5947 5.06086 13.873 2.45799 10.5882 2.05936C5.62577 1.44968 1.44935 5.62364 2.05939 10.5832C2.45826 13.866 5.06265 16.5862 8.32401 17.1372C10.7055 17.5359 12.9462 16.8089 14.5886 15.402L14.9054 15.7303V16.6565L19.8913 21.6395C20.3723 22.1202 21.1583 22.1202 21.6393 21.6395C22.1202 21.1588 22.1202 20.3732 21.6393 19.8925L16.6651 14.8978ZM9.62621 14.8978C6.70506 14.8978 4.34703 12.5412 4.34703 9.62173C4.34703 6.7023 6.70506 4.34566 9.62621 4.34566C12.5473 4.34566 14.9054 6.7023 14.9054 9.62173C14.9054 12.5412 12.5473 14.8978 9.62621 14.8978Z\" fill=\"currentColor\"/>` },\r\n    send: { outlined: `<path d=\"M19.8 12.925L4.4 19.425C4.06667 19.5583 3.75 19.5291 3.45 19.3375C3.15 19.1458 3 18.8666 3 18.5V5.49997C3 5.1333 3.15 4.85414 3.45 4.66247C3.75 4.4708 4.06667 4.44164 4.4 4.57497L19.8 11.075C20.2167 11.2583 20.425 11.5666 20.425 12C20.425 12.4333 20.2167 12.7416 19.8 12.925ZM5 17L16.85 12L5 6.99997V10.5L11 12L5 13.5V17Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4.4 19.425C4.06667 19.5583 3.75 19.5291 3.45 19.3375C3.15 19.1458 3 18.8666 3 18.5V14L11 12L3 9.99997V5.49997C3 5.1333 3.15 4.85414 3.45 4.66247C3.75 4.4708 4.06667 4.44164 4.4 4.57497L19.8 11.075C20.2167 11.2583 20.425 11.5666 20.425 12C20.425 12.4333 20.2167 12.7416 19.8 12.925L4.4 19.425Z\" fill=\"currentColor\"/>` },\r\n    settings: { outlined: `<path d=\"M10.825 22C10.375 22 9.9875 21.85 9.6625 21.55C9.3375 21.25 9.14167 20.8833 9.075 20.45L8.85 18.8C8.63334 18.7167 8.42917 18.6167 8.2375 18.5C8.04584 18.3833 7.85834 18.2583 7.675 18.125L6.125 18.775C5.70834 18.9583 5.29167 18.975 4.875 18.825C4.45834 18.675 4.13334 18.4083 3.9 18.025L2.725 15.975C2.49167 15.5917 2.425 15.1833 2.525 14.75C2.625 14.3167 2.85 13.9583 3.2 13.675L4.525 12.675C4.50834 12.5583 4.5 12.4458 4.5 12.3375V11.6625C4.5 11.5542 4.50834 11.4417 4.525 11.325L3.2 10.325C2.85 10.0417 2.625 9.68333 2.525 9.25C2.425 8.81667 2.49167 8.40833 2.725 8.025L3.9 5.975C4.13334 5.59167 4.45834 5.325 4.875 5.175C5.29167 5.025 5.70834 5.04167 6.125 5.225L7.675 5.875C7.85834 5.74167 8.05 5.61667 8.25 5.5C8.45 5.38333 8.65 5.28333 8.85 5.2L9.075 3.55C9.14167 3.11667 9.3375 2.75 9.6625 2.45C9.9875 2.15 10.375 2 10.825 2H13.175C13.625 2 14.0125 2.15 14.3375 2.45C14.6625 2.75 14.8583 3.11667 14.925 3.55L15.15 5.2C15.3667 5.28333 15.5708 5.38333 15.7625 5.5C15.9542 5.61667 16.1417 5.74167 16.325 5.875L17.875 5.225C18.2917 5.04167 18.7083 5.025 19.125 5.175C19.5417 5.325 19.8667 5.59167 20.1 5.975L21.275 8.025C21.5083 8.40833 21.575 8.81667 21.475 9.25C21.375 9.68333 21.15 10.0417 20.8 10.325L19.475 11.325C19.4917 11.4417 19.5 11.5542 19.5 11.6625V12.3375C19.5 12.4458 19.4833 12.5583 19.45 12.675L20.775 13.675C21.125 13.9583 21.35 14.3167 21.45 14.75C21.55 15.1833 21.4833 15.5917 21.25 15.975L20.05 18.025C19.8167 18.4083 19.4917 18.675 19.075 18.825C18.6583 18.975 18.2417 18.9583 17.825 18.775L16.325 18.125C16.1417 18.2583 15.95 18.3833 15.75 18.5C15.55 18.6167 15.35 18.7167 15.15 18.8L14.925 20.45C14.8583 20.8833 14.6625 21.25 14.3375 21.55C14.0125 21.85 13.625 22 13.175 22H10.825ZM11 20H12.975L13.325 17.35C13.8417 17.2167 14.3208 17.0208 14.7625 16.7625C15.2042 16.5042 15.6083 16.1917 15.975 15.825L18.45 16.85L19.425 15.15L17.275 13.525C17.3583 13.2917 17.4167 13.0458 17.45 12.7875C17.4833 12.5292 17.5 12.2667 17.5 12C17.5 11.7333 17.4833 11.4708 17.45 11.2125C17.4167 10.9542 17.3583 10.7083 17.275 10.475L19.425 8.85L18.45 7.15L15.975 8.2C15.6083 7.81667 15.2042 7.49583 14.7625 7.2375C14.3208 6.97917 13.8417 6.78333 13.325 6.65L13 4H11.025L10.675 6.65C10.1583 6.78333 9.67917 6.97917 9.2375 7.2375C8.79584 7.49583 8.39167 7.80833 8.025 8.175L5.55 7.15L4.575 8.85L6.725 10.45C6.64167 10.7 6.58334 10.95 6.55 11.2C6.51667 11.45 6.5 11.7167 6.5 12C6.5 12.2667 6.51667 12.525 6.55 12.775C6.58334 13.025 6.64167 13.275 6.725 13.525L4.575 15.15L5.55 16.85L8.025 15.8C8.39167 16.1833 8.79584 16.5042 9.2375 16.7625C9.67917 17.0208 10.1583 17.2167 10.675 17.35L11 20ZM12.05 15.5C13.0167 15.5 13.8417 15.1583 14.525 14.475C15.2083 13.7917 15.55 12.9667 15.55 12C15.55 11.0333 15.2083 10.2083 14.525 9.525C13.8417 8.84167 13.0167 8.5 12.05 8.5C11.0667 8.5 10.2375 8.84167 9.5625 9.525C8.8875 10.2083 8.55 11.0333 8.55 12C8.55 12.9667 8.8875 13.7917 9.5625 14.475C10.2375 15.1583 11.0667 15.5 12.05 15.5Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10.825 22C10.375 22 9.9875 21.85 9.6625 21.55C9.3375 21.25 9.14167 20.8833 9.075 20.45L8.85 18.8C8.63334 18.7167 8.42917 18.6167 8.2375 18.5C8.04584 18.3833 7.85834 18.2583 7.675 18.125L6.125 18.775C5.70834 18.9583 5.29167 18.975 4.875 18.825C4.45834 18.675 4.13334 18.4083 3.9 18.025L2.725 15.975C2.49167 15.5917 2.425 15.1833 2.525 14.75C2.625 14.3167 2.85 13.9583 3.2 13.675L4.525 12.675C4.50834 12.5583 4.5 12.4458 4.5 12.3375V11.6625C4.5 11.5542 4.50834 11.4417 4.525 11.325L3.2 10.325C2.85 10.0417 2.625 9.68333 2.525 9.25C2.425 8.81667 2.49167 8.40833 2.725 8.025L3.9 5.975C4.13334 5.59167 4.45834 5.325 4.875 5.175C5.29167 5.025 5.70834 5.04167 6.125 5.225L7.675 5.875C7.85834 5.74167 8.05 5.61667 8.25 5.5C8.45 5.38333 8.65 5.28333 8.85 5.2L9.075 3.55C9.14167 3.11667 9.3375 2.75 9.6625 2.45C9.9875 2.15 10.375 2 10.825 2H13.175C13.625 2 14.0125 2.15 14.3375 2.45C14.6625 2.75 14.8583 3.11667 14.925 3.55L15.15 5.2C15.3667 5.28333 15.5708 5.38333 15.7625 5.5C15.9542 5.61667 16.1417 5.74167 16.325 5.875L17.875 5.225C18.2917 5.04167 18.7083 5.025 19.125 5.175C19.5417 5.325 19.8667 5.59167 20.1 5.975L21.275 8.025C21.5083 8.40833 21.575 8.81667 21.475 9.25C21.375 9.68333 21.15 10.0417 20.8 10.325L19.475 11.325C19.4917 11.4417 19.5 11.5542 19.5 11.6625V12.3375C19.5 12.4458 19.4833 12.5583 19.45 12.675L20.775 13.675C21.125 13.9583 21.35 14.3167 21.45 14.75C21.55 15.1833 21.4833 15.5917 21.25 15.975L20.05 18.025C19.8167 18.4083 19.4917 18.675 19.075 18.825C18.6583 18.975 18.2417 18.9583 17.825 18.775L16.325 18.125C16.1417 18.2583 15.95 18.3833 15.75 18.5C15.55 18.6167 15.35 18.7167 15.15 18.8L14.925 20.45C14.8583 20.8833 14.6625 21.25 14.3375 21.55C14.0125 21.85 13.625 22 13.175 22H10.825ZM12.05 15.5C13.0167 15.5 13.8417 15.1583 14.525 14.475C15.2083 13.7917 15.55 12.9667 15.55 12C15.55 11.0333 15.2083 10.2083 14.525 9.525C13.8417 8.84167 13.0167 8.5 12.05 8.5C11.0667 8.5 10.2375 8.84167 9.5625 9.525C8.8875 10.2083 8.55 11.0333 8.55 12C8.55 12.9667 8.8875 13.7917 9.5625 14.475C10.2375 15.1583 11.0667 15.5 12.05 15.5Z\" fill=\"currentColor\"/>` },\r\n    share: { outlined: `<path d=\"M17 22C16.1667 22 15.4583 21.7083 14.875 21.125C14.2917 20.5417 14 19.8333 14 19C14 18.9 14.025 18.6667 14.075 18.3L7.05 14.2C6.78333 14.45 6.475 14.6458 6.125 14.7875C5.775 14.9292 5.4 15 5 15C4.16667 15 3.45833 14.7083 2.875 14.125C2.29167 13.5417 2 12.8333 2 12C2 11.1667 2.29167 10.4583 2.875 9.875C3.45833 9.29167 4.16667 9 5 9C5.4 9 5.775 9.07083 6.125 9.2125C6.475 9.35417 6.78333 9.55 7.05 9.8L14.075 5.7C14.0417 5.58333 14.0208 5.47083 14.0125 5.3625C14.0042 5.25417 14 5.13333 14 5C14 4.16667 14.2917 3.45833 14.875 2.875C15.4583 2.29167 16.1667 2 17 2C17.8333 2 18.5417 2.29167 19.125 2.875C19.7083 3.45833 20 4.16667 20 5C20 5.83333 19.7083 6.54167 19.125 7.125C18.5417 7.70833 17.8333 8 17 8C16.6 8 16.225 7.92917 15.875 7.7875C15.525 7.64583 15.2167 7.45 14.95 7.2L7.925 11.3C7.95833 11.4167 7.97917 11.5292 7.9875 11.6375C7.99583 11.7458 8 11.8667 8 12C8 12.1333 7.99583 12.2542 7.9875 12.3625C7.97917 12.4708 7.95833 12.5833 7.925 12.7L14.95 16.8C15.2167 16.55 15.525 16.3542 15.875 16.2125C16.225 16.0708 16.6 16 17 16C17.8333 16 18.5417 16.2917 19.125 16.875C19.7083 17.4583 20 18.1667 20 19C20 19.8333 19.7083 20.5417 19.125 21.125C18.5417 21.7083 17.8333 22 17 22ZM17 20C17.2833 20 17.5208 19.9042 17.7125 19.7125C17.9042 19.5208 18 19.2833 18 19C18 18.7167 17.9042 18.4792 17.7125 18.2875C17.5208 18.0958 17.2833 18 17 18C16.7167 18 16.4792 18.0958 16.2875 18.2875C16.0958 18.4792 16 18.7167 16 19C16 19.2833 16.0958 19.5208 16.2875 19.7125C16.4792 19.9042 16.7167 20 17 20ZM5 13C5.28333 13 5.52083 12.9042 5.7125 12.7125C5.90417 12.5208 6 12.2833 6 12C6 11.7167 5.90417 11.4792 5.7125 11.2875C5.52083 11.0958 5.28333 11 5 11C4.71667 11 4.47917 11.0958 4.2875 11.2875C4.09583 11.4792 4 11.7167 4 12C4 12.2833 4.09583 12.5208 4.2875 12.7125C4.47917 12.9042 4.71667 13 5 13ZM17.7125 5.7125C17.9042 5.52083 18 5.28333 18 5C18 4.71667 17.9042 4.47917 17.7125 4.2875C17.5208 4.09583 17.2833 4 17 4C16.7167 4 16.4792 4.09583 16.2875 4.2875C16.0958 4.47917 16 4.71667 16 5C16 5.28333 16.0958 5.52083 16.2875 5.7125C16.4792 5.90417 16.7167 6 17 6C17.2833 6 17.5208 5.90417 17.7125 5.7125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M17 22C16.1667 22 15.4583 21.7083 14.875 21.125C14.2917 20.5417 14 19.8333 14 19C14 18.9 14.025 18.6667 14.075 18.3L7.05 14.2C6.78333 14.45 6.475 14.6458 6.125 14.7875C5.775 14.9292 5.4 15 5 15C4.16667 15 3.45833 14.7083 2.875 14.125C2.29167 13.5417 2 12.8333 2 12C2 11.1667 2.29167 10.4583 2.875 9.875C3.45833 9.29167 4.16667 9 5 9C5.4 9 5.775 9.07083 6.125 9.2125C6.475 9.35417 6.78333 9.55 7.05 9.8L14.075 5.7C14.0417 5.58333 14.0208 5.47083 14.0125 5.3625C14.0042 5.25417 14 5.13333 14 5C14 4.16667 14.2917 3.45833 14.875 2.875C15.4583 2.29167 16.1667 2 17 2C17.8333 2 18.5417 2.29167 19.125 2.875C19.7083 3.45833 20 4.16667 20 5C20 5.83333 19.7083 6.54167 19.125 7.125C18.5417 7.70833 17.8333 8 17 8C16.6 8 16.225 7.92917 15.875 7.7875C15.525 7.64583 15.2167 7.45 14.95 7.2L7.925 11.3C7.95833 11.4167 7.97917 11.5292 7.9875 11.6375C7.99583 11.7458 8 11.8667 8 12C8 12.1333 7.99583 12.2542 7.9875 12.3625C7.97917 12.4708 7.95833 12.5833 7.925 12.7L14.95 16.8C15.2167 16.55 15.525 16.3542 15.875 16.2125C16.225 16.0708 16.6 16 17 16C17.8333 16 18.5417 16.2917 19.125 16.875C19.7083 17.4583 20 18.1667 20 19C20 19.8333 19.7083 20.5417 19.125 21.125C18.5417 21.7083 17.8333 22 17 22Z\" fill=\"currentColor\"/>` },\r\n    shortcuts: { outlined: `<path d=\"M16 5V12L17.7 13.7C17.8 13.8 17.875 13.9125 17.925 14.0375C17.975 14.1625 18 14.2917 18 14.425V15C18 15.2833 17.9042 15.5208 17.7125 15.7125C17.5208 15.9042 17.2833 16 17 16H13V21.85C13 22.1333 12.9042 22.3708 12.7125 22.5625C12.5208 22.7542 12.2833 22.85 12 22.85C11.7167 22.85 11.4792 22.7542 11.2875 22.5625C11.0958 22.3708 11 22.1333 11 21.85V16H7C6.71667 16 6.47917 15.9042 6.2875 15.7125C6.09583 15.5208 6 15.2833 6 15V14.425C6 14.2917 6.025 14.1625 6.075 14.0375C6.125 13.9125 6.2 13.8 6.3 13.7L8 12V5C7.71667 5 7.47917 4.90417 7.2875 4.7125C7.09583 4.52083 7 4.28333 7 4C7 3.71667 7.09583 3.47917 7.2875 3.2875C7.47917 3.09583 7.71667 3 8 3H16C16.2833 3 16.5208 3.09583 16.7125 3.2875C16.9042 3.47917 17 3.71667 17 4C17 4.28333 16.9042 4.52083 16.7125 4.7125C16.5208 4.90417 16.2833 5 16 5ZM8.85 14H15.15L14 12.85V5H10V12.85L8.85 14Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M16 5V12L17.7 13.7C17.8 13.8 17.875 13.9125 17.925 14.0375C17.975 14.1625 18 14.2917 18 14.425V15C18 15.2833 17.9042 15.5208 17.7125 15.7125C17.5208 15.9042 17.2833 16 17 16H13V21.85C13 22.1333 12.9042 22.3708 12.7125 22.5625C12.5208 22.7542 12.2833 22.85 12 22.85C11.7167 22.85 11.4792 22.7542 11.2875 22.5625C11.0958 22.3708 11 22.1333 11 21.85V16H7C6.71667 16 6.47917 15.9042 6.2875 15.7125C6.09583 15.5208 6 15.2833 6 15V14.425C6 14.2917 6.025 14.1625 6.075 14.0375C6.125 13.9125 6.2 13.8 6.3 13.7L8 12V5C7.71667 5 7.47917 4.90417 7.2875 4.7125C7.09583 4.52083 7 4.28333 7 4C7 3.71667 7.09583 3.47917 7.2875 3.2875C7.47917 3.09583 7.71667 3 8 3H16C16.2833 3 16.5208 3.09583 16.7125 3.2875C16.9042 3.47917 17 3.71667 17 4C17 4.28333 16.9042 4.52083 16.7125 4.7125C16.5208 4.90417 16.2833 5 16 5Z\" fill=\"currentColor\"/>` },\r\n    signature: { outlined: `<path d=\"M14.075 11.725C15.2917 10.825 16.2417 9.8375 16.925 8.7625C17.6083 7.6875 17.95 6.61667 17.95 5.55C17.95 5.01667 17.8625 4.625 17.6875 4.375C17.5125 4.125 17.275 4 16.975 4C16.1917 4 15.5 4.6625 14.9 5.9875C14.3 7.3125 14 8.80833 14 10.475C14 10.7083 14.0042 10.9292 14.0125 11.1375C14.0208 11.3458 14.0417 11.5417 14.075 11.725ZM3 21V19H5V21H3ZM7 21V19H9V21H7ZM11 21V19H13V21H11ZM15 21V19H17V21H15ZM19 21V19H21V21H19ZM3.4 17L2 15.6L3.6 14L2 12.4L3.4 11L5 12.6L6.6 11L8 12.4L6.4 14L8 15.6L6.6 17L5 15.4L3.4 17ZM15.45 16C14.95 16 14.4917 15.9042 14.075 15.7125C13.6583 15.5208 13.3 15.2083 13 14.775C12.5833 15.0083 12.1542 15.2167 11.7125 15.4C11.2708 15.5833 10.8167 15.7667 10.35 15.95L9.65 14.075C10.1167 13.9083 10.5625 13.7292 10.9875 13.5375C11.4125 13.3458 11.825 13.1417 12.225 12.925C12.1417 12.5583 12.0792 12.1583 12.0375 11.725C11.9958 11.2917 11.975 10.825 11.975 10.325C11.975 7.925 12.45 5.9375 13.4 4.3625C14.35 2.7875 15.5417 2 16.975 2C17.8417 2 18.55 2.32083 19.1 2.9625C19.65 3.60417 19.925 4.5 19.925 5.65C19.925 7.08333 19.4708 8.5 18.5625 9.9C17.6542 11.3 16.3917 12.5583 14.775 13.675C14.8917 13.7917 15.0125 13.8792 15.1375 13.9375C15.2625 13.9958 15.3917 14.025 15.525 14.025C15.9583 14.025 16.4625 13.75 17.0375 13.2C17.6125 12.65 18.1333 11.925 18.6 11.025L20.425 11.875C20.3083 12.1583 20.2167 12.5 20.15 12.9C20.0833 13.3 20.0917 13.65 20.175 13.95C20.3417 13.8667 20.5375 13.725 20.7625 13.525C20.9875 13.325 21.2167 13.075 21.45 12.775L23.025 14C22.5917 14.6 22.0917 15.0833 21.525 15.45C20.9583 15.8167 20.4333 16 19.95 16C19.6 16 19.2875 15.8958 19.0125 15.6875C18.7375 15.4792 18.5083 15.1583 18.325 14.725C17.8583 15.1417 17.3833 15.4583 16.9 15.675C16.4167 15.8917 15.9333 16 15.45 16Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M14.075 11.725C15.2917 10.825 16.2417 9.8375 16.925 8.7625C17.6083 7.6875 17.95 6.61667 17.95 5.55C17.95 5.01667 17.8625 4.625 17.6875 4.375C17.5125 4.125 17.275 4 16.975 4C16.1917 4 15.5 4.6625 14.9 5.9875C14.3 7.3125 14 8.80833 14 10.475C14 10.7083 14.0042 10.9292 14.0125 11.1375C14.0208 11.3458 14.0417 11.5417 14.075 11.725ZM3 21V19H5V21H3ZM7 21V19H9V21H7ZM11 21V19H13V21H11ZM15 21V19H17V21H15ZM19 21V19H21V21H19ZM3.4 17L2 15.6L3.6 14L2 12.4L3.4 11L5 12.6L6.6 11L8 12.4L6.4 14L8 15.6L6.6 17L5 15.4L3.4 17ZM15.45 16C14.95 16 14.4917 15.9042 14.075 15.7125C13.6583 15.5208 13.3 15.2083 13 14.775C12.5833 15.0083 12.1542 15.2167 11.7125 15.4C11.2708 15.5833 10.8167 15.7667 10.35 15.95L9.65 14.075C10.1167 13.9083 10.5625 13.7292 10.9875 13.5375C11.4125 13.3458 11.825 13.1417 12.225 12.925C12.1417 12.5583 12.0792 12.1583 12.0375 11.725C11.9958 11.2917 11.975 10.825 11.975 10.325C11.975 7.925 12.45 5.9375 13.4 4.3625C14.35 2.7875 15.5417 2 16.975 2C17.8417 2 18.55 2.32083 19.1 2.9625C19.65 3.60417 19.925 4.5 19.925 5.65C19.925 7.08333 19.4708 8.5 18.5625 9.9C17.6542 11.3 16.3917 12.5583 14.775 13.675C14.8917 13.7917 15.0125 13.8792 15.1375 13.9375C15.2625 13.9958 15.3917 14.025 15.525 14.025C15.9583 14.025 16.4625 13.75 17.0375 13.2C17.6125 12.65 18.1333 11.925 18.6 11.025L20.425 11.875C20.3083 12.1583 20.2167 12.5 20.15 12.9C20.0833 13.3 20.0917 13.65 20.175 13.95C20.3417 13.8667 20.5375 13.725 20.7625 13.525C20.9875 13.325 21.2167 13.075 21.45 12.775L23.025 14C22.5917 14.6 22.0917 15.0833 21.525 15.45C20.9583 15.8167 20.4333 16 19.95 16C19.6 16 19.2875 15.8958 19.0125 15.6875C18.7375 15.4792 18.5083 15.1583 18.325 14.725C17.8583 15.1417 17.3833 15.4583 16.9 15.675C16.4167 15.8917 15.9333 16 15.45 16Z\" fill=\"currentColor\"/>` },\r\n    'skip-next': { outlined: `<path d=\"M16.5 17V7C16.5 6.71667 16.5958 6.47917 16.7875 6.2875C16.9792 6.09583 17.2167 6 17.5 6C17.7833 6 18.0208 6.09583 18.2125 6.2875C18.4042 6.47917 18.5 6.71667 18.5 7V17C18.5 17.2833 18.4042 17.5208 18.2125 17.7125C18.0208 17.9042 17.7833 18 17.5 18C17.2167 18 16.9792 17.9042 16.7875 17.7125C16.5958 17.5208 16.5 17.2833 16.5 17ZM5.5 16.125V7.875C5.5 7.575 5.6 7.33333 5.8 7.15C6 6.96667 6.23333 6.875 6.5 6.875C6.58333 6.875 6.675 6.88333 6.775 6.9C6.875 6.91667 6.96667 6.95833 7.05 7.025L13.25 11.175C13.4 11.275 13.5125 11.3958 13.5875 11.5375C13.6625 11.6792 13.7 11.8333 13.7 12C13.7 12.1667 13.6625 12.3208 13.5875 12.4625C13.5125 12.6042 13.4 12.725 13.25 12.825L7.05 16.975C6.96667 17.0417 6.875 17.0833 6.775 17.1C6.675 17.1167 6.58333 17.125 6.5 17.125C6.23333 17.125 6 17.0333 5.8 16.85C5.6 16.6667 5.5 16.425 5.5 16.125ZM7.5 14.25L10.9 12L7.5 9.75V14.25Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M16.5 17V7C16.5 6.71667 16.5958 6.47917 16.7875 6.2875C16.9792 6.09583 17.2167 6 17.5 6C17.7833 6 18.0208 6.09583 18.2125 6.2875C18.4042 6.47917 18.5 6.71667 18.5 7V17C18.5 17.2833 18.4042 17.5208 18.2125 17.7125C18.0208 17.9042 17.7833 18 17.5 18C17.2167 18 16.9792 17.9042 16.7875 17.7125C16.5958 17.5208 16.5 17.2833 16.5 17ZM5.5 16.125V7.875C5.5 7.575 5.6 7.33333 5.8 7.15C6 6.96667 6.23333 6.875 6.5 6.875C6.58333 6.875 6.675 6.88333 6.775 6.9C6.875 6.91667 6.96667 6.95833 7.05 7.025L13.25 11.175C13.4 11.275 13.5125 11.3958 13.5875 11.5375C13.6625 11.6792 13.7 11.8333 13.7 12C13.7 12.1667 13.6625 12.3208 13.5875 12.4625C13.5125 12.6042 13.4 12.725 13.25 12.825L7.05 16.975C6.96667 17.0417 6.875 17.0833 6.775 17.1C6.675 17.1167 6.58333 17.125 6.5 17.125C6.23333 17.125 6 17.0333 5.8 16.85C5.6 16.6667 5.5 16.425 5.5 16.125Z\" fill=\"currentColor\"/>` },\r\n    'skip-previous': { outlined: `<path d=\"M5.5 17V7C5.5 6.71667 5.59583 6.47917 5.7875 6.2875C5.97917 6.09583 6.21667 6 6.5 6C6.78333 6 7.02083 6.09583 7.2125 6.2875C7.40417 6.47917 7.5 6.71667 7.5 7V17C7.5 17.2833 7.40417 17.5208 7.2125 17.7125C7.02083 17.9042 6.78333 18 6.5 18C6.21667 18 5.97917 17.9042 5.7875 17.7125C5.59583 17.5208 5.5 17.2833 5.5 17ZM16.95 16.975L10.75 12.825C10.6 12.725 10.4875 12.6042 10.4125 12.4625C10.3375 12.3208 10.3 12.1667 10.3 12C10.3 11.8333 10.3375 11.6792 10.4125 11.5375C10.4875 11.3958 10.6 11.275 10.75 11.175L16.95 7.025C17.0333 6.95833 17.125 6.91667 17.225 6.9C17.325 6.88333 17.4167 6.875 17.5 6.875C17.7667 6.875 18 6.96667 18.2 7.15C18.4 7.33333 18.5 7.575 18.5 7.875V16.125C18.5 16.425 18.4 16.6667 18.2 16.85C18 17.0333 17.7667 17.125 17.5 17.125C17.4167 17.125 17.325 17.1167 17.225 17.1C17.125 17.0833 17.0333 17.0417 16.95 16.975ZM16.5 14.25V9.75L13.1 12L16.5 14.25Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5.5 17V7C5.5 6.71667 5.59583 6.47917 5.7875 6.2875C5.97917 6.09583 6.21667 6 6.5 6C6.78333 6 7.02083 6.09583 7.2125 6.2875C7.40417 6.47917 7.5 6.71667 7.5 7V17C7.5 17.2833 7.40417 17.5208 7.2125 17.7125C7.02083 17.9042 6.78333 18 6.5 18C6.21667 18 5.97917 17.9042 5.7875 17.7125C5.59583 17.5208 5.5 17.2833 5.5 17ZM16.95 16.975L10.75 12.825C10.6 12.725 10.4875 12.6042 10.4125 12.4625C10.3375 12.3208 10.3 12.1667 10.3 12C10.3 11.8333 10.3375 11.6792 10.4125 11.5375C10.4875 11.3958 10.6 11.275 10.75 11.175L16.95 7.025C17.0333 6.95833 17.125 6.91667 17.225 6.9C17.325 6.88333 17.4167 6.875 17.5 6.875C17.7667 6.875 18 6.96667 18.2 7.15C18.4 7.33333 18.5 7.575 18.5 7.875V16.125C18.5 16.425 18.4 16.6667 18.2 16.85C18 17.0333 17.7667 17.125 17.5 17.125C17.4167 17.125 17.325 17.1167 17.225 17.1C17.125 17.0833 17.0333 17.0417 16.95 16.975Z\" fill=\"currentColor\"/>` },\r\n    store: { outlined: `<path d=\"M5.175 4H19.175C19.4583 4 19.6958 4.09583 19.8875 4.2875C20.0792 4.47917 20.175 4.71667 20.175 5C20.175 5.28333 20.0792 5.52083 19.8875 5.7125C19.6958 5.90417 19.4583 6 19.175 6H5.175C4.89167 6 4.65417 5.90417 4.4625 5.7125C4.27083 5.52083 4.175 5.28333 4.175 5C4.175 4.71667 4.27083 4.47917 4.4625 4.2875C4.65417 4.09583 4.89167 4 5.175 4ZM5.175 20C4.89167 20 4.65417 19.9042 4.4625 19.7125C4.27083 19.5208 4.175 19.2833 4.175 19V14.175C4.175 14.0784 4.09665 14 4 14C3.68333 14 3.425 13.8792 3.225 13.6375C3.025 13.3958 2.95833 13.1167 3.025 12.8L4.025 7.8C4.075 7.56667 4.19167 7.375 4.375 7.225C4.55833 7.075 4.76667 7 5 7H19.35C19.5833 7 19.7917 7.075 19.975 7.225C20.1583 7.375 20.275 7.56667 20.325 7.8L21.325 12.8C21.3917 13.1167 21.325 13.3958 21.125 13.6375C20.925 13.8792 20.6667 14 20.35 14C20.2534 14 20.175 14.0784 20.175 14.175V19C20.175 19.2833 20.0792 19.5208 19.8875 19.7125C19.6958 19.9042 19.4583 20 19.175 20C18.8917 20 18.6542 19.9042 18.4625 19.7125C18.2708 19.5208 18.175 19.2833 18.175 19V14.4C18.175 14.1791 17.9959 14 17.775 14H14.575C14.3541 14 14.175 14.1791 14.175 14.4V19C14.175 19.2833 14.0792 19.5208 13.8875 19.7125C13.6958 19.9042 13.4583 20 13.175 20H5.175ZM6.175 17.6C6.175 17.8209 6.35409 18 6.575 18H11.775C11.9959 18 12.175 17.8209 12.175 17.6V14.4C12.175 14.1791 11.9959 14 11.775 14H6.575C6.35409 14 6.175 14.1791 6.175 14.4V17.6ZM5.32069 11.5216C5.27119 11.7691 5.4605 12 5.71292 12H18.6371C18.8895 12 19.0788 11.7691 19.0293 11.5216L18.5893 9.32155C18.5519 9.13458 18.3878 9 18.1971 9H6.15292C5.96225 9 5.79808 9.13458 5.76069 9.32155L5.32069 11.5216Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M5.175 4H19.175C19.4583 4 19.6958 4.09583 19.8875 4.2875C20.0792 4.47917 20.175 4.71667 20.175 5C20.175 5.28333 20.0792 5.52083 19.8875 5.7125C19.6958 5.90417 19.4583 6 19.175 6H5.175C4.89167 6 4.65417 5.90417 4.4625 5.7125C4.27083 5.52083 4.175 5.28333 4.175 5C4.175 4.71667 4.27083 4.47917 4.4625 4.2875C4.65417 4.09583 4.89167 4 5.175 4ZM5.175 20C4.89167 20 4.65417 19.9042 4.4625 19.7125C4.27083 19.5208 4.175 19.2833 4.175 19V14.175C4.175 14.0784 4.09665 14 4 14C3.68333 14 3.425 13.8792 3.225 13.6375C3.025 13.3958 2.95833 13.1167 3.025 12.8L4.025 7.8C4.075 7.56667 4.19167 7.375 4.375 7.225C4.55833 7.075 4.76667 7 5 7H19.35C19.5833 7 19.7917 7.075 19.975 7.225C20.1583 7.375 20.275 7.56667 20.325 7.8L21.325 12.8C21.3917 13.1167 21.325 13.3958 21.125 13.6375C20.925 13.8792 20.6667 14 20.35 14C20.2534 14 20.175 14.0784 20.175 14.175V19C20.175 19.2833 20.0792 19.5208 19.8875 19.7125C19.6958 19.9042 19.4583 20 19.175 20C18.8917 20 18.6542 19.9042 18.4625 19.7125C18.2708 19.5208 18.175 19.2833 18.175 19V14.4C18.175 14.1791 17.9959 14 17.775 14H14.575C14.3541 14 14.175 14.1791 14.175 14.4V19C14.175 19.2833 14.0792 19.5208 13.8875 19.7125C13.6958 19.9042 13.4583 20 13.175 20H5.175ZM6.175 17.6C6.175 17.8209 6.35409 18 6.575 18H11.775C11.9959 18 12.175 17.8209 12.175 17.6V14.4C12.175 14.1791 11.9959 14 11.775 14H6.575C6.35409 14 6.175 14.1791 6.175 14.4V17.6Z\" fill=\"currentColor\"/>` },\r\n    strikethrough: { outlined: `<path d=\"M12.15 20C11.1 20 10.1292 19.7208 9.2375 19.1625C8.34583 18.6041 7.64167 17.8583 7.125 16.925C6.975 16.6583 6.95417 16.3791 7.0625 16.0875C7.17083 15.7958 7.36667 15.575 7.65 15.425C7.95 15.2583 8.2625 15.2291 8.5875 15.3375C8.9125 15.4458 9.16667 15.65 9.35 15.95C9.65 16.45 10.0542 16.85 10.5625 17.15C11.0708 17.45 11.6167 17.6 12.2 17.6C12.9333 17.6 13.5708 17.375 14.1125 16.925C14.6542 16.475 14.925 15.9 14.925 15.2C14.925 14.8666 15.0417 14.5833 15.275 14.35C15.5083 14.1166 15.7917 14 16.125 14C16.4583 14 16.7458 14.1166 16.9875 14.35C17.2292 14.5833 17.35 14.8666 17.35 15.2V15.5C17.35 16.8166 16.8292 17.8958 15.7875 18.7375C14.7458 19.5791 13.5333 20 12.15 20ZM3 12C2.71667 12 2.47917 11.9041 2.2875 11.7125C2.09583 11.5208 2 11.2833 2 11C2 10.7166 2.09583 10.4791 2.2875 10.2875C2.47917 10.0958 2.71667 9.99998 3 9.99998H21C21.2833 9.99998 21.5208 10.0958 21.7125 10.2875C21.9042 10.4791 22 10.7166 22 11C22 11.2833 21.9042 11.5208 21.7125 11.7125C21.5208 11.9041 21.2833 12 21 12H3ZM8.2 7.87498C7.91667 7.70831 7.725 7.46248 7.625 7.13748C7.525 6.81248 7.55833 6.50831 7.725 6.22498C8.14167 5.44164 8.74167 4.84998 9.525 4.44998C10.3083 4.04998 11.15 3.84998 12.05 3.84998C12.85 3.84998 13.6042 4.01664 14.3125 4.34998C15.0208 4.68331 15.6167 5.16664 16.1 5.79998C16.2833 6.03331 16.3417 6.29998 16.275 6.59998C16.2083 6.89998 16.05 7.14164 15.8 7.32498C15.5167 7.52498 15.2125 7.59998 14.8875 7.54998C14.5625 7.49998 14.2833 7.34164 14.05 7.07498C13.8 6.79164 13.5083 6.58331 13.175 6.44998C12.8417 6.31664 12.4833 6.24998 12.1 6.24998C11.65 6.24998 11.2167 6.34164 10.8 6.52498C10.3833 6.70831 10.0667 6.99164 9.85 7.37498C9.68333 7.67498 9.4375 7.87498 9.1125 7.97498C8.7875 8.07498 8.48333 8.04164 8.2 7.87498Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.15 20C11.1 20 10.1292 19.7208 9.2375 19.1625C8.34583 18.6041 7.64167 17.8583 7.125 16.925C6.975 16.6583 6.95417 16.3791 7.0625 16.0875C7.17083 15.7958 7.36667 15.575 7.65 15.425C7.95 15.2583 8.2625 15.2291 8.5875 15.3375C8.9125 15.4458 9.16667 15.65 9.35 15.95C9.65 16.45 10.0542 16.85 10.5625 17.15C11.0708 17.45 11.6167 17.6 12.2 17.6C12.9333 17.6 13.5708 17.375 14.1125 16.925C14.6542 16.475 14.925 15.9 14.925 15.2C14.925 14.8666 15.0417 14.5833 15.275 14.35C15.5083 14.1166 15.7917 14 16.125 14C16.4583 14 16.7458 14.1166 16.9875 14.35C17.2292 14.5833 17.35 14.8666 17.35 15.2V15.5C17.35 16.8166 16.8292 17.8958 15.7875 18.7375C14.7458 19.5791 13.5333 20 12.15 20ZM3 12C2.71667 12 2.47917 11.9041 2.2875 11.7125C2.09583 11.5208 2 11.2833 2 11C2 10.7166 2.09583 10.4791 2.2875 10.2875C2.47917 10.0958 2.71667 9.99998 3 9.99998H21C21.2833 9.99998 21.5208 10.0958 21.7125 10.2875C21.9042 10.4791 22 10.7166 22 11C22 11.2833 21.9042 11.5208 21.7125 11.7125C21.5208 11.9041 21.2833 12 21 12H3ZM8.2 7.87498C7.91667 7.70831 7.725 7.46248 7.625 7.13748C7.525 6.81248 7.55833 6.50831 7.725 6.22498C8.14167 5.44164 8.74167 4.84998 9.525 4.44998C10.3083 4.04998 11.15 3.84998 12.05 3.84998C12.85 3.84998 13.6042 4.01664 14.3125 4.34998C15.0208 4.68331 15.6167 5.16664 16.1 5.79998C16.2833 6.03331 16.3417 6.29998 16.275 6.59998C16.2083 6.89998 16.05 7.14164 15.8 7.32498C15.5167 7.52498 15.2125 7.59998 14.8875 7.54998C14.5625 7.49998 14.2833 7.34164 14.05 7.07498C13.8 6.79164 13.5083 6.58331 13.175 6.44998C12.8417 6.31664 12.4833 6.24998 12.1 6.24998C11.65 6.24998 11.2167 6.34164 10.8 6.52498C10.3833 6.70831 10.0667 6.99164 9.85 7.37498C9.68333 7.67498 9.4375 7.87498 9.1125 7.97498C8.7875 8.07498 8.48333 8.04164 8.2 7.87498Z\" fill=\"currentColor\"/>` },\r\n    subscriptions: { outlined: `<path d=\"M6 22C5.16667 22 4.45833 21.7083 3.875 21.125C3.29167 20.5417 3 19.8333 3 19V16H6V2H21V19C21 19.8333 20.7083 20.5417 20.125 21.125C19.5417 21.7083 18.8333 22 18 22H6ZM18 20C18.2833 20 18.5208 19.9042 18.7125 19.7125C18.9042 19.5208 19 19.2833 19 19V4H8V16H17V19C17 19.2833 17.0958 19.5208 17.2875 19.7125C17.4792 19.9042 17.7167 20 18 20ZM9 9V7H18V9H9ZM9 12V10H18V12H9ZM6 20H15V18H5V19C5 19.2833 5.09583 19.5208 5.2875 19.7125C5.47917 19.9042 5.71667 20 6 20ZM6 20H5H15H6Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 22C5.16667 22 4.45833 21.7083 3.875 21.125C3.29167 20.5417 3 19.8333 3 19V16H6V2H21V19C21 19.8333 20.7083 20.5417 20.125 21.125C19.5417 21.7083 18.8333 22 18 22H6ZM18 20C18.2833 20 18.5208 19.9042 18.7125 19.7125C18.9042 19.5208 19 19.2833 19 19V4H8V16H17V19C17 19.2833 17.0958 19.5208 17.2875 19.7125C17.4792 19.9042 17.7167 20 18 20ZM9 9V7H18V9H9ZM9 12V10H18V12H9Z\" fill=\"currentColor\"/>` },\r\n    summary: { outlined: `<path d=\"M4 21C3.45 21 2.97917 20.8042 2.5875 20.4125C2.19583 20.0208 2 19.55 2 19V8C2 7.45 2.19583 6.97917 2.5875 6.5875C2.97917 6.19583 3.45 6 4 6H8V4C8 3.45 8.19583 2.97917 8.5875 2.5875C8.97917 2.19583 9.45 2 10 2H14C14.55 2 15.0208 2.19583 15.4125 2.5875C15.8042 2.97917 16 3.45 16 4V6H20C20.55 6 21.0208 6.19583 21.4125 6.5875C21.8042 6.97917 22 7.45 22 8V19C22 19.55 21.8042 20.0208 21.4125 20.4125C21.0208 20.8042 20.55 21 20 21H4ZM10 6H14V4H10V6ZM20 15H15V17H9V15H4V19H20V15ZM11 15H13V13H11V15ZM4 13H9V11H15V13H20V8H4V13Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 21C3.45 21 2.97917 20.8042 2.5875 20.4125C2.19583 20.0208 2 19.55 2 19V15H9V17H15V15H22V19C22 19.55 21.8042 20.0208 21.4125 20.4125C21.0208 20.8042 20.55 21 20 21H4ZM11 15V13H13V15H11ZM2 13V8C2 7.45 2.19583 6.97917 2.5875 6.5875C2.97917 6.19583 3.45 6 4 6H8V4C8 3.45 8.19583 2.97917 8.5875 2.5875C8.97917 2.19583 9.45 2 10 2H14C14.55 2 15.0208 2.19583 15.4125 2.5875C15.8042 2.97917 16 3.45 16 4V6H20C20.55 6 21.0208 6.19583 21.4125 6.5875C21.8042 6.97917 22 7.45 22 8V13H15V11H9V13H2ZM10 6H14V4H10V6Z\" fill=\"currentColor\"/>` },\r\n    team: { outlined: `<path d=\"M11.875 20C11.9417 20 12.0083 19.9833 12.075 19.95C12.1417 19.9167 12.1917 19.8833 12.225 19.85L20.425 11.65C20.625 11.45 20.7708 11.225 20.8625 10.975C20.9542 10.725 21 10.475 21 10.225C21 9.95833 20.9542 9.70417 20.8625 9.4625C20.7708 9.22083 20.625 9.00833 20.425 8.825L16.175 4.575C15.9917 4.375 15.7792 4.22917 15.5375 4.1375C15.2958 4.04583 15.0417 4 14.775 4C14.525 4 14.275 4.04583 14.025 4.1375C13.775 4.22917 13.55 4.375 13.35 4.575L13.075 4.85L14.925 6.725C15.175 6.95833 15.3583 7.225 15.475 7.525C15.5917 7.825 15.65 8.14167 15.65 8.475C15.65 9.175 15.4125 9.7625 14.9375 10.2375C14.4625 10.7125 13.875 10.95 13.175 10.95C12.8417 10.95 12.5208 10.8917 12.2125 10.775C11.9042 10.6583 11.6333 10.4833 11.4 10.25L9.52499 8.4L5.14999 12.775C5.09999 12.825 5.06249 12.8792 5.03749 12.9375C5.01249 12.9958 4.99999 13.0583 4.99999 13.125C4.99999 13.2583 5.04999 13.3792 5.14999 13.4875C5.24999 13.5958 5.36666 13.65 5.49999 13.65C5.56666 13.65 5.63332 13.6333 5.69999 13.6C5.76666 13.5667 5.81666 13.5333 5.84999 13.5L9.24999 10.1L10.65 11.5L7.27499 14.9C7.22499 14.95 7.18749 15.0042 7.16249 15.0625C7.13749 15.1208 7.12499 15.1833 7.12499 15.25C7.12499 15.3833 7.17499 15.5 7.27499 15.6C7.37499 15.7 7.49166 15.75 7.62499 15.75C7.69166 15.75 7.75832 15.7333 7.82499 15.7C7.89166 15.6667 7.94166 15.6333 7.97499 15.6L11.375 12.225L12.775 13.625L9.39999 17.025C9.34999 17.0583 9.31249 17.1083 9.28749 17.175C9.26249 17.2417 9.24999 17.3083 9.24999 17.375C9.24999 17.5083 9.29999 17.625 9.39999 17.725C9.49999 17.825 9.61666 17.875 9.74999 17.875C9.81666 17.875 9.87916 17.8625 9.93749 17.8375C9.99582 17.8125 10.05 17.775 10.1 17.725L13.5 14.35L14.9 15.75L11.5 19.15C11.45 19.2 11.4125 19.2542 11.3875 19.3125C11.3625 19.3708 11.35 19.4333 11.35 19.5C11.35 19.6333 11.4042 19.75 11.5125 19.85C11.6208 19.95 11.7417 20 11.875 20ZM11.85 22C11.2333 22 10.6875 21.7958 10.2125 21.3875C9.73749 20.9792 9.45832 20.4667 9.37499 19.85C8.80832 19.7667 8.33332 19.5333 7.94999 19.15C7.56666 18.7667 7.33332 18.2917 7.24999 17.725C6.68332 17.6417 6.21249 17.4042 5.83749 17.0125C5.46249 16.6208 5.23332 16.15 5.14999 15.6C4.51666 15.5167 3.99999 15.2417 3.59999 14.775C3.19999 14.3083 2.99999 13.7583 2.99999 13.125C2.99999 12.7917 3.06249 12.4708 3.18749 12.1625C3.31249 11.8542 3.49166 11.5833 3.72499 11.35L9.52499 5.575L12.8 8.85C12.8333 8.9 12.8833 8.9375 12.95 8.9625C13.0167 8.9875 13.0833 9 13.15 9C13.3 9 13.425 8.95417 13.525 8.8625C13.625 8.77083 13.675 8.65 13.675 8.5C13.675 8.43333 13.6625 8.36667 13.6375 8.3C13.6125 8.23333 13.575 8.18333 13.525 8.15L9.94999 4.575C9.76666 4.375 9.55416 4.22917 9.31249 4.1375C9.07082 4.04583 8.81666 4 8.54999 4C8.29999 4 8.04999 4.04583 7.79999 4.1375C7.54999 4.22917 7.32499 4.375 7.12499 4.575L3.59999 8.125C3.44999 8.275 3.32499 8.45 3.22499 8.65C3.12499 8.85 3.05832 9.05 3.02499 9.25C2.99166 9.45 2.99166 9.65417 3.02499 9.8625C3.05832 10.0708 3.12499 10.2667 3.22499 10.45L1.77499 11.9C1.49166 11.5167 1.28332 11.0958 1.14999 10.6375C1.01666 10.1792 0.966657 9.71667 0.99999 9.25C1.03332 8.78333 1.14999 8.32917 1.34999 7.8875C1.54999 7.44583 1.82499 7.05 2.17499 6.7L5.69999 3.175C6.09999 2.79167 6.54582 2.5 7.03749 2.3C7.52916 2.1 8.03332 2 8.54999 2C9.06666 2 9.57082 2.1 10.0625 2.3C10.5542 2.5 10.9917 2.79167 11.375 3.175L11.65 3.45L11.925 3.175C12.325 2.79167 12.7708 2.5 13.2625 2.3C13.7542 2.1 14.2583 2 14.775 2C15.2917 2 15.7958 2.1 16.2875 2.3C16.7792 2.5 17.2167 2.79167 17.6 3.175L21.825 7.4C22.2083 7.78333 22.5 8.225 22.7 8.725C22.9 9.225 23 9.73333 23 10.25C23 10.7667 22.9 11.2708 22.7 11.7625C22.5 12.2542 22.2083 12.6917 21.825 13.075L13.625 21.25C13.3917 21.4833 13.1208 21.6667 12.8125 21.8C12.5042 21.9333 12.1833 22 11.85 22Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.1 21C11.8167 21 11.5792 20.9042 11.3875 20.7125C11.1958 20.5208 11.1 20.2833 11.1 20C11.1 19.8833 11.125 19.7625 11.175 19.6375C11.225 19.5125 11.3 19.4 11.4 19.3L16.025 14.675L15.3 13.95L10.7 18.575C10.6 18.675 10.4917 18.75 10.375 18.8C10.2583 18.85 10.1333 18.875 10 18.875C9.71667 18.875 9.47917 18.7792 9.2875 18.5875C9.09583 18.3958 9 18.1583 9 17.875C9 17.7083 9.025 17.5708 9.075 17.4625C9.125 17.3542 9.19167 17.2583 9.275 17.175L13.9 12.55L13.2 11.85L8.575 16.45C8.475 16.55 8.36667 16.625 8.25 16.675C8.13333 16.725 8 16.75 7.85 16.75C7.58333 16.75 7.35 16.65 7.15 16.45C6.95 16.25 6.85 16.0167 6.85 15.75C6.85 15.6167 6.875 15.4917 6.925 15.375C6.975 15.2583 7.05 15.15 7.15 15.05L11.775 10.425L11.05 9.725L6.45 14.35C6.36667 14.4333 6.26667 14.5 6.15 14.55C6.03333 14.6 5.89167 14.625 5.725 14.625C5.44167 14.625 5.20417 14.5292 5.0125 14.3375C4.82083 14.1458 4.725 13.9083 4.725 13.625C4.725 13.4917 4.75 13.3667 4.8 13.25C4.85 13.1333 4.925 13.025 5.025 12.925L10.6 7.35L14.35 11.125C14.5333 11.3083 14.75 11.4542 15 11.5625C15.25 11.6708 15.5 11.725 15.75 11.725C16.2833 11.725 16.75 11.5375 17.15 11.1625C17.55 10.7875 17.75 10.3083 17.75 9.725C17.75 9.49167 17.7083 9.25 17.625 9C17.5417 8.75 17.3917 8.51667 17.175 8.3L12.7 3.825C12.9833 3.55833 13.3 3.35417 13.65 3.2125C14 3.07083 14.35 3 14.7 3C15.1333 3 15.5333 3.07083 15.9 3.2125C16.2667 3.35417 16.6 3.575 16.9 3.875L21.125 8.125C21.425 8.425 21.6458 8.75833 21.7875 9.125C21.9292 9.49167 22 9.91667 22 10.4C22 10.7333 21.925 11.0708 21.775 11.4125C21.625 11.7542 21.4083 12.0667 21.125 12.35L12.8 20.7C12.6667 20.8333 12.55 20.9167 12.45 20.95C12.35 20.9833 12.2333 21 12.1 21ZM3.525 13L2.875 12.35C2.59167 12.0833 2.375 11.7667 2.225 11.4C2.075 11.0333 2 10.65 2 10.25C2 9.81667 2.08333 9.41667 2.25 9.05C2.41667 8.68333 2.625 8.375 2.875 8.125L7.1 3.875C7.36667 3.60833 7.68333 3.39583 8.05 3.2375C8.41667 3.07917 8.775 3 9.125 3C9.575 3 9.975 3.0625 10.325 3.1875C10.675 3.3125 11.0167 3.54167 11.35 3.875L16.475 9C16.575 9.1 16.65 9.20833 16.7 9.325C16.75 9.44167 16.775 9.56667 16.775 9.7C16.775 9.96667 16.675 10.2 16.475 10.4C16.275 10.6 16.0417 10.7 15.775 10.7C15.625 10.7 15.5 10.6792 15.4 10.6375C15.3 10.5958 15.1917 10.5167 15.075 10.4L10.575 5.95L3.525 13Z\" fill=\"currentColor\"/>` },\r\n    testimonial: { outlined: `<path d=\"M12 21C11.7167 21 11.4792 20.9042 11.2875 20.7125C11.0958 20.5208 11 20.2833 11 20V13.025C9.93333 13.025 8.90833 12.8208 7.925 12.4125C6.94167 12.0042 6.075 11.425 5.325 10.675C4.575 9.925 4 9.05833 3.6 8.075C3.2 7.09167 3 6.06667 3 5V4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H5C6.05 3 7.06667 3.20417 8.05 3.6125C9.03333 4.02083 9.9 4.6 10.65 5.35C11.1667 5.86667 11.5958 6.43333 11.9375 7.05C12.2792 7.66667 12.5417 8.325 12.725 9.025C12.8083 8.90833 12.9 8.79583 13 8.6875C13.1 8.57917 13.2083 8.46667 13.325 8.35C14.075 7.6 14.9417 7.02083 15.925 6.6125C16.9083 6.20417 17.9333 6 19 6H20C20.2833 6 20.5208 6.09583 20.7125 6.2875C20.9042 6.47917 21 6.71667 21 7V8C21 9.06667 20.7958 10.0917 20.3875 11.075C19.9792 12.0583 19.4 12.925 18.65 13.675C17.9 14.425 17.0375 15 16.0625 15.4C15.0875 15.8 14.0667 16 13 16V20C13 20.2833 12.9042 20.5208 12.7125 20.7125C12.5208 20.9042 12.2833 21 12 21Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12 21C11.7167 21 11.4792 20.9042 11.2875 20.7125C11.0958 20.5208 11 20.2833 11 20V13.025C9.93333 13.025 8.90833 12.8208 7.925 12.4125C6.94167 12.0042 6.075 11.425 5.325 10.675C4.575 9.925 4 9.05833 3.6 8.075C3.2 7.09167 3 6.06667 3 5V4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H5C6.05 3 7.06667 3.20417 8.05 3.6125C9.03333 4.02083 9.9 4.6 10.65 5.35C11.1667 5.86667 11.5958 6.43333 11.9375 7.05C12.2792 7.66667 12.5417 8.325 12.725 9.025C12.8083 8.90833 12.9 8.79583 13 8.6875C13.1 8.57917 13.2083 8.46667 13.325 8.35C14.075 7.6 14.9417 7.02083 15.925 6.6125C16.9083 6.20417 17.9333 6 19 6H20C20.2833 6 20.5208 6.09583 20.7125 6.2875C20.9042 6.47917 21 6.71667 21 7V8C21 9.06667 20.7958 10.0917 20.3875 11.075C19.9792 12.0583 19.4 12.925 18.65 13.675C17.9 14.425 17.0375 15 16.0625 15.4C15.0875 15.8 14.0667 16 13 16V20C13 20.2833 12.9042 20.5208 12.7125 20.7125C12.5208 20.9042 12.2833 21 12 21ZM11 11C11 10.2 10.8458 9.4375 10.5375 8.7125C10.2292 7.9875 9.79167 7.34167 9.225 6.775C8.65833 6.20833 8.0125 5.77083 7.2875 5.4625C6.5625 5.15417 5.8 5 5 5C5 5.8 5.15 6.56667 5.45 7.3C5.75 8.03333 6.18333 8.68333 6.75 9.25C7.31667 9.81667 7.96667 10.25 8.7 10.55C9.43333 10.85 10.2 11 11 11ZM13 14C13.8 14 14.5625 13.85 15.2875 13.55C16.0125 13.25 16.6583 12.8167 17.225 12.25C17.7917 11.6833 18.2292 11.0333 18.5375 10.3C18.8458 9.56667 19 8.8 19 8C18.2 8 17.4333 8.15417 16.7 8.4625C15.9667 8.77083 15.3167 9.20833 14.75 9.775C14.1833 10.3417 13.75 10.9875 13.45 11.7125C13.15 12.4375 13 13.2 13 14Z\" fill=\"currentColor\"/>` },\r\n    text: { outlined: `<path d=\"M10.5 7H6.5C6.08333 7 5.72917 6.85417 5.4375 6.5625C5.14583 6.27083 5 5.91667 5 5.5C5 5.08333 5.14583 4.72917 5.4375 4.4375C5.72917 4.14583 6.08333 4 6.5 4H17.5C17.9167 4 18.2708 4.14583 18.5625 4.4375C18.8542 4.72917 19 5.08333 19 5.5C19 5.91667 18.8542 6.27083 18.5625 6.5625C18.2708 6.85417 17.9167 7 17.5 7H13.5V18.5C13.5 18.9167 13.3542 19.2708 13.0625 19.5625C12.7708 19.8542 12.4167 20 12 20C11.5833 20 11.2292 19.8542 10.9375 19.5625C10.6458 19.2708 10.5 18.9167 10.5 18.5V7Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M10.5 7H6.5C6.08333 7 5.72917 6.85417 5.4375 6.5625C5.14583 6.27083 5 5.91667 5 5.5C5 5.08333 5.14583 4.72917 5.4375 4.4375C5.72917 4.14583 6.08333 4 6.5 4H17.5C17.9167 4 18.2708 4.14583 18.5625 4.4375C18.8542 4.72917 19 5.08333 19 5.5C19 5.91667 18.8542 6.27083 18.5625 6.5625C18.2708 6.85417 17.9167 7 17.5 7H13.5V18.5C13.5 18.9167 13.3542 19.2708 13.0625 19.5625C12.7708 19.8542 12.4167 20 12 20C11.5833 20 11.2292 19.8542 10.9375 19.5625C10.6458 19.2708 10.5 18.9167 10.5 18.5V7Z\" fill=\"currentColor\"/>` },\r\n    'text-align-center': { outlined: `<path d=\"M4 21C3.71667 21 3.47917 20.9042 3.2875 20.7125C3.09583 20.5208 3 20.2833 3 20C3 19.7167 3.09583 19.4792 3.2875 19.2875C3.47917 19.0958 3.71667 19 4 19H20C20.2833 19 20.5208 19.0958 20.7125 19.2875C20.9042 19.4792 21 19.7167 21 20C21 20.2833 20.9042 20.5208 20.7125 20.7125C20.5208 20.9042 20.2833 21 20 21H4ZM8 17C7.71667 17 7.47917 16.9042 7.2875 16.7125C7.09583 16.5208 7 16.2833 7 16C7 15.7167 7.09583 15.4792 7.2875 15.2875C7.47917 15.0958 7.71667 15 8 15H16C16.2833 15 16.5208 15.0958 16.7125 15.2875C16.9042 15.4792 17 15.7167 17 16C17 16.2833 16.9042 16.5208 16.7125 16.7125C16.5208 16.9042 16.2833 17 16 17H8ZM4 13C3.71667 13 3.47917 12.9042 3.2875 12.7125C3.09583 12.5208 3 12.2833 3 12C3 11.7167 3.09583 11.4792 3.2875 11.2875C3.47917 11.0958 3.71667 11 4 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H4ZM8 9C7.71667 9 7.47917 8.90417 7.2875 8.7125C7.09583 8.52083 7 8.28333 7 8C7 7.71667 7.09583 7.47917 7.2875 7.2875C7.47917 7.09583 7.71667 7 8 7H16C16.2833 7 16.5208 7.09583 16.7125 7.2875C16.9042 7.47917 17 7.71667 17 8C17 8.28333 16.9042 8.52083 16.7125 8.7125C16.5208 8.90417 16.2833 9 16 9H8ZM4 5C3.71667 5 3.47917 4.90417 3.2875 4.7125C3.09583 4.52083 3 4.28333 3 4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H20C20.2833 3 20.5208 3.09583 20.7125 3.2875C20.9042 3.47917 21 3.71667 21 4C21 4.28333 20.9042 4.52083 20.7125 4.7125C20.5208 4.90417 20.2833 5 20 5H4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 21C3.71667 21 3.47917 20.9042 3.2875 20.7125C3.09583 20.5208 3 20.2833 3 20C3 19.7167 3.09583 19.4792 3.2875 19.2875C3.47917 19.0958 3.71667 19 4 19H20C20.2833 19 20.5208 19.0958 20.7125 19.2875C20.9042 19.4792 21 19.7167 21 20C21 20.2833 20.9042 20.5208 20.7125 20.7125C20.5208 20.9042 20.2833 21 20 21H4ZM8 17C7.71667 17 7.47917 16.9042 7.2875 16.7125C7.09583 16.5208 7 16.2833 7 16C7 15.7167 7.09583 15.4792 7.2875 15.2875C7.47917 15.0958 7.71667 15 8 15H16C16.2833 15 16.5208 15.0958 16.7125 15.2875C16.9042 15.4792 17 15.7167 17 16C17 16.2833 16.9042 16.5208 16.7125 16.7125C16.5208 16.9042 16.2833 17 16 17H8ZM4 13C3.71667 13 3.47917 12.9042 3.2875 12.7125C3.09583 12.5208 3 12.2833 3 12C3 11.7167 3.09583 11.4792 3.2875 11.2875C3.47917 11.0958 3.71667 11 4 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H4ZM8 9C7.71667 9 7.47917 8.90417 7.2875 8.7125C7.09583 8.52083 7 8.28333 7 8C7 7.71667 7.09583 7.47917 7.2875 7.2875C7.47917 7.09583 7.71667 7 8 7H16C16.2833 7 16.5208 7.09583 16.7125 7.2875C16.9042 7.47917 17 7.71667 17 8C17 8.28333 16.9042 8.52083 16.7125 8.7125C16.5208 8.90417 16.2833 9 16 9H8ZM4 5C3.71667 5 3.47917 4.90417 3.2875 4.7125C3.09583 4.52083 3 4.28333 3 4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H20C20.2833 3 20.5208 3.09583 20.7125 3.2875C20.9042 3.47917 21 3.71667 21 4C21 4.28333 20.9042 4.52083 20.7125 4.7125C20.5208 4.90417 20.2833 5 20 5H4Z\" fill=\"currentColor\"/>` },\r\n    'text-align-left': { outlined: `<path d=\"M4 21C3.71667 21 3.47917 20.9042 3.2875 20.7125C3.09583 20.5208 3 20.2833 3 20C3 19.7167 3.09583 19.4792 3.2875 19.2875C3.47917 19.0958 3.71667 19 4 19H20C20.2833 19 20.5208 19.0958 20.7125 19.2875C20.9042 19.4792 21 19.7167 21 20C21 20.2833 20.9042 20.5208 20.7125 20.7125C20.5208 20.9042 20.2833 21 20 21H4ZM4 17C3.71667 17 3.47917 16.9042 3.2875 16.7125C3.09583 16.5208 3 16.2833 3 16C3 15.7167 3.09583 15.4792 3.2875 15.2875C3.47917 15.0958 3.71667 15 4 15H14C14.2833 15 14.5208 15.0958 14.7125 15.2875C14.9042 15.4792 15 15.7167 15 16C15 16.2833 14.9042 16.5208 14.7125 16.7125C14.5208 16.9042 14.2833 17 14 17H4ZM4 13C3.71667 13 3.47917 12.9042 3.2875 12.7125C3.09583 12.5208 3 12.2833 3 12C3 11.7167 3.09583 11.4792 3.2875 11.2875C3.47917 11.0958 3.71667 11 4 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H4ZM4 9C3.71667 9 3.47917 8.90417 3.2875 8.7125C3.09583 8.52083 3 8.28333 3 8C3 7.71667 3.09583 7.47917 3.2875 7.2875C3.47917 7.09583 3.71667 7 4 7H14C14.2833 7 14.5208 7.09583 14.7125 7.2875C14.9042 7.47917 15 7.71667 15 8C15 8.28333 14.9042 8.52083 14.7125 8.7125C14.5208 8.90417 14.2833 9 14 9H4ZM4 5C3.71667 5 3.47917 4.90417 3.2875 4.7125C3.09583 4.52083 3 4.28333 3 4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H20C20.2833 3 20.5208 3.09583 20.7125 3.2875C20.9042 3.47917 21 3.71667 21 4C21 4.28333 20.9042 4.52083 20.7125 4.7125C20.5208 4.90417 20.2833 5 20 5H4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 21C3.71667 21 3.47917 20.9042 3.2875 20.7125C3.09583 20.5208 3 20.2833 3 20C3 19.7167 3.09583 19.4792 3.2875 19.2875C3.47917 19.0958 3.71667 19 4 19H20C20.2833 19 20.5208 19.0958 20.7125 19.2875C20.9042 19.4792 21 19.7167 21 20C21 20.2833 20.9042 20.5208 20.7125 20.7125C20.5208 20.9042 20.2833 21 20 21H4ZM4 17C3.71667 17 3.47917 16.9042 3.2875 16.7125C3.09583 16.5208 3 16.2833 3 16C3 15.7167 3.09583 15.4792 3.2875 15.2875C3.47917 15.0958 3.71667 15 4 15H14C14.2833 15 14.5208 15.0958 14.7125 15.2875C14.9042 15.4792 15 15.7167 15 16C15 16.2833 14.9042 16.5208 14.7125 16.7125C14.5208 16.9042 14.2833 17 14 17H4ZM4 13C3.71667 13 3.47917 12.9042 3.2875 12.7125C3.09583 12.5208 3 12.2833 3 12C3 11.7167 3.09583 11.4792 3.2875 11.2875C3.47917 11.0958 3.71667 11 4 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H4ZM4 9C3.71667 9 3.47917 8.90417 3.2875 8.7125C3.09583 8.52083 3 8.28333 3 8C3 7.71667 3.09583 7.47917 3.2875 7.2875C3.47917 7.09583 3.71667 7 4 7H14C14.2833 7 14.5208 7.09583 14.7125 7.2875C14.9042 7.47917 15 7.71667 15 8C15 8.28333 14.9042 8.52083 14.7125 8.7125C14.5208 8.90417 14.2833 9 14 9H4ZM4 5C3.71667 5 3.47917 4.90417 3.2875 4.7125C3.09583 4.52083 3 4.28333 3 4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H20C20.2833 3 20.5208 3.09583 20.7125 3.2875C20.9042 3.47917 21 3.71667 21 4C21 4.28333 20.9042 4.52083 20.7125 4.7125C20.5208 4.90417 20.2833 5 20 5H4Z\" fill=\"currentColor\"/>` },\r\n    'text-align-right': { outlined: `<path d=\"M4 5C3.71667 5 3.47917 4.90417 3.2875 4.7125C3.09583 4.52083 3 4.28333 3 4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H20C20.2833 3 20.5208 3.09583 20.7125 3.2875C20.9042 3.47917 21 3.71667 21 4C21 4.28333 20.9042 4.52083 20.7125 4.7125C20.5208 4.90417 20.2833 5 20 5H4ZM10 9C9.71667 9 9.47917 8.90417 9.2875 8.7125C9.09583 8.52083 9 8.28333 9 8C9 7.71667 9.09583 7.47917 9.2875 7.2875C9.47917 7.09583 9.71667 7 10 7H20C20.2833 7 20.5208 7.09583 20.7125 7.2875C20.9042 7.47917 21 7.71667 21 8C21 8.28333 20.9042 8.52083 20.7125 8.7125C20.5208 8.90417 20.2833 9 20 9H10ZM4 13C3.71667 13 3.47917 12.9042 3.2875 12.7125C3.09583 12.5208 3 12.2833 3 12C3 11.7167 3.09583 11.4792 3.2875 11.2875C3.47917 11.0958 3.71667 11 4 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H4ZM10 17C9.71667 17 9.47917 16.9042 9.2875 16.7125C9.09583 16.5208 9 16.2833 9 16C9 15.7167 9.09583 15.4792 9.2875 15.2875C9.47917 15.0958 9.71667 15 10 15H20C20.2833 15 20.5208 15.0958 20.7125 15.2875C20.9042 15.4792 21 15.7167 21 16C21 16.2833 20.9042 16.5208 20.7125 16.7125C20.5208 16.9042 20.2833 17 20 17H10ZM4 21C3.71667 21 3.47917 20.9042 3.2875 20.7125C3.09583 20.5208 3 20.2833 3 20C3 19.7167 3.09583 19.4792 3.2875 19.2875C3.47917 19.0958 3.71667 19 4 19H20C20.2833 19 20.5208 19.0958 20.7125 19.2875C20.9042 19.4792 21 19.7167 21 20C21 20.2833 20.9042 20.5208 20.7125 20.7125C20.5208 20.9042 20.2833 21 20 21H4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M4 5C3.71667 5 3.47917 4.90417 3.2875 4.7125C3.09583 4.52083 3 4.28333 3 4C3 3.71667 3.09583 3.47917 3.2875 3.2875C3.47917 3.09583 3.71667 3 4 3H20C20.2833 3 20.5208 3.09583 20.7125 3.2875C20.9042 3.47917 21 3.71667 21 4C21 4.28333 20.9042 4.52083 20.7125 4.7125C20.5208 4.90417 20.2833 5 20 5H4ZM10 9C9.71667 9 9.47917 8.90417 9.2875 8.7125C9.09583 8.52083 9 8.28333 9 8C9 7.71667 9.09583 7.47917 9.2875 7.2875C9.47917 7.09583 9.71667 7 10 7H20C20.2833 7 20.5208 7.09583 20.7125 7.2875C20.9042 7.47917 21 7.71667 21 8C21 8.28333 20.9042 8.52083 20.7125 8.7125C20.5208 8.90417 20.2833 9 20 9H10ZM4 13C3.71667 13 3.47917 12.9042 3.2875 12.7125C3.09583 12.5208 3 12.2833 3 12C3 11.7167 3.09583 11.4792 3.2875 11.2875C3.47917 11.0958 3.71667 11 4 11H20C20.2833 11 20.5208 11.0958 20.7125 11.2875C20.9042 11.4792 21 11.7167 21 12C21 12.2833 20.9042 12.5208 20.7125 12.7125C20.5208 12.9042 20.2833 13 20 13H4ZM10 17C9.71667 17 9.47917 16.9042 9.2875 16.7125C9.09583 16.5208 9 16.2833 9 16C9 15.7167 9.09583 15.4792 9.2875 15.2875C9.47917 15.0958 9.71667 15 10 15H20C20.2833 15 20.5208 15.0958 20.7125 15.2875C20.9042 15.4792 21 15.7167 21 16C21 16.2833 20.9042 16.5208 20.7125 16.7125C20.5208 16.9042 20.2833 17 20 17H10ZM4 21C3.71667 21 3.47917 20.9042 3.2875 20.7125C3.09583 20.5208 3 20.2833 3 20C3 19.7167 3.09583 19.4792 3.2875 19.2875C3.47917 19.0958 3.71667 19 4 19H20C20.2833 19 20.5208 19.0958 20.7125 19.2875C20.9042 19.4792 21 19.7167 21 20C21 20.2833 20.9042 20.5208 20.7125 20.7125C20.5208 20.9042 20.2833 21 20 21H4Z\" fill=\"currentColor\"/>` },\r\n    'text-color': { outlined: `<path d=\"M3 24C2.71667 24 2.47917 23.9042 2.2875 23.7125C2.09583 23.5208 2 23.2833 2 23V21C2 20.7167 2.09583 20.4792 2.2875 20.2875C2.47917 20.0958 2.71667 20 3 20H21C21.2833 20 21.5208 20.0958 21.7125 20.2875C21.9042 20.4792 22 20.7167 22 21V23C22 23.2833 21.9042 23.5208 21.7125 23.7125C21.5208 23.9042 21.2833 24 21 24H3ZM7.125 17C6.74167 17 6.4375 16.8375 6.2125 16.5125C5.9875 16.1875 5.94167 15.8417 6.075 15.475L10.475 3.75C10.5583 3.51667 10.7 3.33333 10.9 3.2C11.1 3.06667 11.3167 3 11.55 3H12.45C12.7 3 12.9208 3.06667 13.1125 3.2C13.3042 3.33333 13.4417 3.51667 13.525 3.75L17.95 15.5C18.0833 15.8667 18.0375 16.2083 17.8125 16.525C17.5875 16.8417 17.2833 17 16.9 17C16.6667 17 16.45 16.9333 16.25 16.8C16.05 16.6667 15.9083 16.4833 15.825 16.25L14.85 13.4H9.2L8.175 16.275C8.09167 16.5083 7.95417 16.6875 7.7625 16.8125C7.57083 16.9375 7.35833 17 7.125 17ZM9.9 11.4H14.1L12.05 5.6H11.95L9.9 11.4Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M3 24C2.71667 24 2.47917 23.9042 2.2875 23.7125C2.09583 23.5208 2 23.2833 2 23V21C2 20.7167 2.09583 20.4792 2.2875 20.2875C2.47917 20.0958 2.71667 20 3 20H21C21.2833 20 21.5208 20.0958 21.7125 20.2875C21.9042 20.4792 22 20.7167 22 21V23C22 23.2833 21.9042 23.5208 21.7125 23.7125C21.5208 23.9042 21.2833 24 21 24H3ZM7.125 17C6.74167 17 6.4375 16.8375 6.2125 16.5125C5.9875 16.1875 5.94167 15.8417 6.075 15.475L10.475 3.75C10.5583 3.51667 10.7 3.33333 10.9 3.2C11.1 3.06667 11.3167 3 11.55 3H12.45C12.7 3 12.9208 3.06667 13.1125 3.2C13.3042 3.33333 13.4417 3.51667 13.525 3.75L17.95 15.5C18.0833 15.8667 18.0375 16.2083 17.8125 16.525C17.5875 16.8417 17.2833 17 16.9 17C16.6667 17 16.45 16.9333 16.25 16.8C16.05 16.6667 15.9083 16.4833 15.825 16.25L14.85 13.4H9.2L8.175 16.275C8.09167 16.5083 7.95417 16.6875 7.7625 16.8125C7.57083 16.9375 7.35833 17 7.125 17ZM9.9 11.4H14.1L12.05 5.6H11.95L9.9 11.4Z\" fill=\"currentColor\"/>` },\r\n    transfer: { outlined: `<path d=\"M7.63635 19.3523C7.28582 19.7091 6.71162 19.7116 6.35795 19.3579L2.42426 15.4243C2.18995 15.1899 2.18995 14.8101 2.42426 14.5757L6.35795 10.6421C6.71162 10.2884 7.28582 10.2909 7.63635 10.6477L7.77482 10.7887C8.12099 11.141 8.11849 11.7065 7.76921 12.0558L6.50784 13.3172C6.25586 13.5691 6.43432 14 6.79069 14H12.1C12.5971 14 13 14.4029 13 14.9V15.1C13 15.5971 12.5971 16 12.1 16H6.79069C6.43432 16 6.25586 16.4309 6.50784 16.6828L7.76921 17.9442C8.11849 18.2935 8.12099 18.859 7.77482 19.2113L7.63635 19.3523ZM17.6421 13.3579C17.2884 13.7116 16.7142 13.7091 16.3637 13.3523L16.2252 13.2113C15.879 12.859 15.8815 12.2935 16.2308 11.9442L17.4922 10.6828C17.7441 10.4309 17.5657 10 17.2093 10H11.9C11.4029 10 11 9.59706 11 9.1V8.9C11 8.40294 11.4029 8 11.9 8H17.2093C17.5657 8 17.7441 7.56914 17.4922 7.31716L16.2308 6.05579C15.8815 5.70651 15.879 5.14101 16.2252 4.78865L16.3637 4.64771C16.7142 4.29092 17.2884 4.28838 17.6421 4.64205L21.5757 8.57574C21.8101 8.81005 21.8101 9.18995 21.5757 9.42426L17.6421 13.3579Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M7.63635 19.3523C7.28582 19.7091 6.71162 19.7116 6.35795 19.3579L2.42426 15.4243C2.18995 15.1899 2.18995 14.8101 2.42426 14.5757L6.35795 10.6421C6.71162 10.2884 7.28582 10.2909 7.63635 10.6477L7.77482 10.7887C8.12099 11.141 8.11849 11.7065 7.76921 12.0558L6.50784 13.3172C6.25586 13.5691 6.43432 14 6.79069 14H12.1C12.5971 14 13 14.4029 13 14.9V15.1C13 15.5971 12.5971 16 12.1 16H6.79069C6.43432 16 6.25586 16.4309 6.50784 16.6828L7.76921 17.9442C8.11849 18.2935 8.12099 18.859 7.77482 19.2113L7.63635 19.3523ZM17.6421 13.3579C17.2884 13.7116 16.7142 13.7091 16.3637 13.3523L16.2252 13.2113C15.879 12.859 15.8815 12.2935 16.2308 11.9442L17.4922 10.6828C17.7441 10.4309 17.5657 10 17.2093 10H11.9C11.4029 10 11 9.59706 11 9.1V8.9C11 8.40294 11.4029 8 11.9 8H17.2093C17.5657 8 17.7441 7.56914 17.4922 7.31716L16.2308 6.05579C15.8815 5.70651 15.879 5.14101 16.2252 4.78865L16.3637 4.64771C16.7142 4.29092 17.2884 4.28838 17.6421 4.64205L21.5757 8.57574C21.8101 8.81005 21.8101 9.18995 21.5757 9.42426L17.6421 13.3579Z\" fill=\"currentColor\"/>` },\r\n    trending: { outlined: `<path d=\"M2.7 17.625C2.5 17.425 2.40417 17.1875 2.4125 16.9125C2.42084 16.6375 2.51667 16.4083 2.7 16.225L7.975 10.875C8.35834 10.4916 8.83334 10.3 9.4 10.3C9.96667 10.3 10.4417 10.4916 10.825 10.875L13.4 13.475L18.6 8.32495H17C16.7167 8.32495 16.4792 8.22912 16.2875 8.03745C16.0958 7.84578 16 7.60828 16 7.32495C16 7.04162 16.0958 6.80412 16.2875 6.61245C16.4792 6.42078 16.7167 6.32495 17 6.32495H21C21.2833 6.32495 21.5208 6.42078 21.7125 6.61245C21.9042 6.80412 22 7.04162 22 7.32495V11.325C22 11.6083 21.9042 11.8458 21.7125 12.0375C21.5208 12.2291 21.2833 12.325 21 12.325C20.7167 12.325 20.4792 12.2291 20.2875 12.0375C20.0958 11.8458 20 11.6083 20 11.325V9.72495L14.825 14.9C14.4417 15.2833 13.9667 15.475 13.4 15.475C12.8333 15.475 12.3583 15.2833 11.975 14.9L9.4 12.325L4.1 17.625C3.91667 17.8083 3.68334 17.9 3.4 17.9C3.11667 17.9 2.88334 17.8083 2.7 17.625Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M2.7 17.625C2.5 17.425 2.40417 17.1875 2.4125 16.9125C2.42084 16.6375 2.51667 16.4083 2.7 16.225L7.975 10.875C8.35834 10.4916 8.83334 10.3 9.4 10.3C9.96667 10.3 10.4417 10.4916 10.825 10.875L13.4 13.475L18.6 8.32495H17C16.7167 8.32495 16.4792 8.22912 16.2875 8.03745C16.0958 7.84578 16 7.60828 16 7.32495C16 7.04162 16.0958 6.80412 16.2875 6.61245C16.4792 6.42078 16.7167 6.32495 17 6.32495H21C21.2833 6.32495 21.5208 6.42078 21.7125 6.61245C21.9042 6.80412 22 7.04162 22 7.32495V11.325C22 11.6083 21.9042 11.8458 21.7125 12.0375C21.5208 12.2291 21.2833 12.325 21 12.325C20.7167 12.325 20.4792 12.2291 20.2875 12.0375C20.0958 11.8458 20 11.6083 20 11.325V9.72495L14.825 14.9C14.4417 15.2833 13.9667 15.475 13.4 15.475C12.8333 15.475 12.3583 15.2833 11.975 14.9L9.4 12.325L4.1 17.625C3.91667 17.8083 3.68334 17.9 3.4 17.9C3.11667 17.9 2.88334 17.8083 2.7 17.625Z\" fill=\"currentColor\"/>` },\r\n    trophy: { outlined: `<path d=\"M11 19V15.9C10.1833 15.7167 9.45417 15.3708 8.8125 14.8625C8.17083 14.3542 7.7 13.7167 7.4 12.95C6.15 12.8 5.10417 12.2542 4.2625 11.3125C3.42083 10.3708 3 9.26667 3 8V7C3 6.45 3.19583 5.97917 3.5875 5.5875C3.97917 5.19583 4.45 5 5 5H7C7 4.45 7.19583 3.97917 7.5875 3.5875C7.97917 3.19583 8.45 3 9 3H15C15.55 3 16.0208 3.19583 16.4125 3.5875C16.8042 3.97917 17 4.45 17 5H19C19.55 5 20.0208 5.19583 20.4125 5.5875C20.8042 5.97917 21 6.45 21 7V8C21 9.26667 20.5792 10.3708 19.7375 11.3125C18.8958 12.2542 17.85 12.8 16.6 12.95C16.3 13.7167 15.8292 14.3542 15.1875 14.8625C14.5458 15.3708 13.8167 15.7167 13 15.9V19H16C16.2833 19 16.5208 19.0958 16.7125 19.2875C16.9042 19.4792 17 19.7167 17 20C17 20.2833 16.9042 20.5208 16.7125 20.7125C16.5208 20.9042 16.2833 21 16 21H8C7.71667 21 7.47917 20.9042 7.2875 20.7125C7.09583 20.5208 7 20.2833 7 20C7 19.7167 7.09583 19.4792 7.2875 19.2875C7.47917 19.0958 7.71667 19 8 19H11ZM7 10.8V7H5V8C5 8.63333 5.18333 9.20417 5.55 9.7125C5.91667 10.2208 6.4 10.5833 7 10.8ZM14.125 13.125C14.7083 12.5417 15 11.8333 15 11V5H9V11C9 11.8333 9.29167 12.5417 9.875 13.125C10.4583 13.7083 11.1667 14 12 14C12.8333 14 13.5417 13.7083 14.125 13.125ZM17 10.8C17.6 10.5833 18.0833 10.2208 18.45 9.7125C18.8167 9.20417 19 8.63333 19 8V7H17V10.8Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M7 10.8V7H5V8C5 8.63333 5.18333 9.20417 5.55 9.7125C5.91667 10.2208 6.4 10.5833 7 10.8ZM17 10.8C17.6 10.5833 18.0833 10.2208 18.45 9.7125C18.8167 9.20417 19 8.63333 19 8V7H17V10.8ZM11 19V15.9C10.1833 15.7167 9.45417 15.3708 8.8125 14.8625C8.17083 14.3542 7.7 13.7167 7.4 12.95C6.15 12.8 5.10417 12.2542 4.2625 11.3125C3.42083 10.3708 3 9.26667 3 8V7C3 6.45 3.19583 5.97917 3.5875 5.5875C3.97917 5.19583 4.45 5 5 5H7C7 4.45 7.19583 3.97917 7.5875 3.5875C7.97917 3.19583 8.45 3 9 3H15C15.55 3 16.0208 3.19583 16.4125 3.5875C16.8042 3.97917 17 4.45 17 5H19C19.55 5 20.0208 5.19583 20.4125 5.5875C20.8042 5.97917 21 6.45 21 7V8C21 9.26667 20.5792 10.3708 19.7375 11.3125C18.8958 12.2542 17.85 12.8 16.6 12.95C16.3 13.7167 15.8292 14.3542 15.1875 14.8625C14.5458 15.3708 13.8167 15.7167 13 15.9V19H16C16.2833 19 16.5208 19.0958 16.7125 19.2875C16.9042 19.4792 17 19.7167 17 20C17 20.2833 16.9042 20.5208 16.7125 20.7125C16.5208 20.9042 16.2833 21 16 21H8C7.71667 21 7.47917 20.9042 7.2875 20.7125C7.09583 20.5208 7 20.2833 7 20C7 19.7167 7.09583 19.4792 7.2875 19.2875C7.47917 19.0958 7.71667 19 8 19H11Z\" fill=\"currentColor\"/>` },\r\n    'type-code': { outlined: `<path d=\"M6 18L3.7 20.3C3.38333 20.6167 3.02083 20.6875 2.6125 20.5125C2.20417 20.3375 2 20.025 2 19.575V4C2 3.45 2.19583 2.97917 2.5875 2.5875C2.97917 2.19583 3.45 2 4 2H20C20.55 2 21.0208 2.19583 21.4125 2.5875C21.8042 2.97917 22 3.45 22 4V16C22 16.55 21.8042 17.0208 21.4125 17.4125C21.0208 17.8042 20.55 18 20 18H6ZM5.15 16H20V4H4V17.125L5.15 16ZM8.7125 10.7125C8.90417 10.5208 9 10.2833 9 10C9 9.71667 8.90417 9.47917 8.7125 9.2875C8.52083 9.09583 8.28333 9 8 9C7.71667 9 7.47917 9.09583 7.2875 9.2875C7.09583 9.47917 7 9.71667 7 10C7 10.2833 7.09583 10.5208 7.2875 10.7125C7.47917 10.9042 7.71667 11 8 11C8.28333 11 8.52083 10.9042 8.7125 10.7125ZM12.7125 10.7125C12.9042 10.5208 13 10.2833 13 10C13 9.71667 12.9042 9.47917 12.7125 9.2875C12.5208 9.09583 12.2833 9 12 9C11.7167 9 11.4792 9.09583 11.2875 9.2875C11.0958 9.47917 11 9.71667 11 10C11 10.2833 11.0958 10.5208 11.2875 10.7125C11.4792 10.9042 11.7167 11 12 11C12.2833 11 12.5208 10.9042 12.7125 10.7125ZM16.7125 10.7125C16.9042 10.5208 17 10.2833 17 10C17 9.71667 16.9042 9.47917 16.7125 9.2875C16.5208 9.09583 16.2833 9 16 9C15.7167 9 15.4792 9.09583 15.2875 9.2875C15.0958 9.47917 15 9.71667 15 10C15 10.2833 15.0958 10.5208 15.2875 10.7125C15.4792 10.9042 15.7167 11 16 11C16.2833 11 16.5208 10.9042 16.7125 10.7125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 18L3.7 20.3C3.38333 20.6167 3.02083 20.6875 2.6125 20.5125C2.20417 20.3375 2 20.025 2 19.575V4C2 3.45 2.19583 2.97917 2.5875 2.5875C2.97917 2.19583 3.45 2 4 2H20C20.55 2 21.0208 2.19583 21.4125 2.5875C21.8042 2.97917 22 3.45 22 4V16C22 16.55 21.8042 17.0208 21.4125 17.4125C21.0208 17.8042 20.55 18 20 18H6ZM8.7125 10.7125C8.90417 10.5208 9 10.2833 9 10C9 9.71667 8.90417 9.47917 8.7125 9.2875C8.52083 9.09583 8.28333 9 8 9C7.71667 9 7.47917 9.09583 7.2875 9.2875C7.09583 9.47917 7 9.71667 7 10C7 10.2833 7.09583 10.5208 7.2875 10.7125C7.47917 10.9042 7.71667 11 8 11C8.28333 11 8.52083 10.9042 8.7125 10.7125ZM12.7125 10.7125C12.9042 10.5208 13 10.2833 13 10C13 9.71667 12.9042 9.47917 12.7125 9.2875C12.5208 9.09583 12.2833 9 12 9C11.7167 9 11.4792 9.09583 11.2875 9.2875C11.0958 9.47917 11 9.71667 11 10C11 10.2833 11.0958 10.5208 11.2875 10.7125C11.4792 10.9042 11.7167 11 12 11C12.2833 11 12.5208 10.9042 12.7125 10.7125ZM16.7125 10.7125C16.9042 10.5208 17 10.2833 17 10C17 9.71667 16.9042 9.47917 16.7125 9.2875C16.5208 9.09583 16.2833 9 16 9C15.7167 9 15.4792 9.09583 15.2875 9.2875C15.0958 9.47917 15 9.71667 15 10C15 10.2833 15.0958 10.5208 15.2875 10.7125C15.4792 10.9042 15.7167 11 16 11C16.2833 11 16.5208 10.9042 16.7125 10.7125Z\" fill=\"currentColor\"/>` },\r\n    underline: { outlined: `<path d=\"M6 21C5.71667 21 5.47917 20.9042 5.2875 20.7125C5.09583 20.5208 5 20.2833 5 20C5 19.7167 5.09583 19.4792 5.2875 19.2875C5.47917 19.0958 5.71667 19 6 19H18C18.2833 19 18.5208 19.0958 18.7125 19.2875C18.9042 19.4792 19 19.7167 19 20C19 20.2833 18.9042 20.5208 18.7125 20.7125C18.5208 20.9042 18.2833 21 18 21H6ZM8.075 15.425C7.14167 14.375 6.675 12.9833 6.675 11.25V4.275C6.675 3.925 6.80417 3.625 7.0625 3.375C7.32083 3.125 7.625 3 7.975 3C8.325 3 8.625 3.125 8.875 3.375C9.125 3.625 9.25 3.925 9.25 4.275V11.4C9.25 12.3333 9.48333 13.0917 9.95 13.675C10.4167 14.2583 11.1 14.55 12 14.55C12.9 14.55 13.5833 14.2583 14.05 13.675C14.5167 13.0917 14.75 12.3333 14.75 11.4V4.275C14.75 3.925 14.8792 3.625 15.1375 3.375C15.3958 3.125 15.7 3 16.05 3C16.4 3 16.7 3.125 16.95 3.375C17.2 3.625 17.325 3.925 17.325 4.275V11.25C17.325 12.9833 16.8583 14.375 15.925 15.425C14.9917 16.475 13.6833 17 12 17C10.3167 17 9.00833 16.475 8.075 15.425Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6 21C5.71667 21 5.47917 20.9042 5.2875 20.7125C5.09583 20.5208 5 20.2833 5 20C5 19.7167 5.09583 19.4792 5.2875 19.2875C5.47917 19.0958 5.71667 19 6 19H18C18.2833 19 18.5208 19.0958 18.7125 19.2875C18.9042 19.4792 19 19.7167 19 20C19 20.2833 18.9042 20.5208 18.7125 20.7125C18.5208 20.9042 18.2833 21 18 21H6ZM8.075 15.425C7.14167 14.375 6.675 12.9833 6.675 11.25V4.275C6.675 3.925 6.80417 3.625 7.0625 3.375C7.32083 3.125 7.625 3 7.975 3C8.325 3 8.625 3.125 8.875 3.375C9.125 3.625 9.25 3.925 9.25 4.275V11.4C9.25 12.3333 9.48333 13.0917 9.95 13.675C10.4167 14.2583 11.1 14.55 12 14.55C12.9 14.55 13.5833 14.2583 14.05 13.675C14.5167 13.0917 14.75 12.3333 14.75 11.4V4.275C14.75 3.925 14.8792 3.625 15.1375 3.375C15.3958 3.125 15.7 3 16.05 3C16.4 3 16.7 3.125 16.95 3.375C17.2 3.625 17.325 3.925 17.325 4.275V11.25C17.325 12.9833 16.8583 14.375 15.925 15.425C14.9917 16.475 13.6833 17 12 17C10.3167 17 9.00833 16.475 8.075 15.425Z\" fill=\"currentColor\"/>` },\r\n    undo: { outlined: `<path d=\"M8 19C7.71667 19 7.47917 18.9042 7.2875 18.7125C7.09584 18.5208 7 18.2833 7 18C7 17.7167 7.09584 17.4792 7.2875 17.2875C7.47917 17.0958 7.71667 17 8 17H14.1C15.15 17 16.0625 16.6667 16.8375 16C17.6125 15.3333 18 14.5 18 13.5C18 12.5 17.6125 11.6667 16.8375 11C16.0625 10.3333 15.15 9.99999 14.1 9.99999H7.8L9.7 11.9C9.88334 12.0833 9.975 12.3167 9.975 12.6C9.975 12.8833 9.88334 13.1167 9.7 13.3C9.51667 13.4833 9.28334 13.575 9 13.575C8.71667 13.575 8.48334 13.4833 8.3 13.3L4.7 9.69999C4.6 9.59999 4.52917 9.49165 4.4875 9.37499C4.44584 9.25832 4.425 9.13332 4.425 8.99999C4.425 8.86665 4.44584 8.74165 4.4875 8.62499C4.52917 8.50832 4.6 8.39999 4.7 8.29999L8.3 4.69999C8.48334 4.51665 8.71667 4.42499 9 4.42499C9.28334 4.42499 9.51667 4.51665 9.7 4.69999C9.88334 4.88332 9.975 5.11665 9.975 5.39999C9.975 5.68332 9.88334 5.91665 9.7 6.09999L7.8 7.99999H14.1C15.7167 7.99999 17.1042 8.52499 18.2625 9.57499C19.4208 10.625 20 11.9333 20 13.5C20 15.0667 19.4208 16.375 18.2625 17.425C17.1042 18.475 15.7167 19 14.1 19H8Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M8 19C7.71667 19 7.47917 18.9042 7.2875 18.7125C7.09584 18.5208 7 18.2833 7 18C7 17.7167 7.09584 17.4792 7.2875 17.2875C7.47917 17.0958 7.71667 17 8 17H14.1C15.15 17 16.0625 16.6667 16.8375 16C17.6125 15.3333 18 14.5 18 13.5C18 12.5 17.6125 11.6667 16.8375 11C16.0625 10.3333 15.15 9.99999 14.1 9.99999H7.8L9.7 11.9C9.88334 12.0833 9.975 12.3167 9.975 12.6C9.975 12.8833 9.88334 13.1167 9.7 13.3C9.51667 13.4833 9.28334 13.575 9 13.575C8.71667 13.575 8.48334 13.4833 8.3 13.3L4.7 9.69999C4.6 9.59999 4.52917 9.49165 4.4875 9.37499C4.44584 9.25832 4.425 9.13332 4.425 8.99999C4.425 8.86665 4.44584 8.74165 4.4875 8.62499C4.52917 8.50832 4.6 8.39999 4.7 8.29999L8.3 4.69999C8.48334 4.51665 8.71667 4.42499 9 4.42499C9.28334 4.42499 9.51667 4.51665 9.7 4.69999C9.88334 4.88332 9.975 5.11665 9.975 5.39999C9.975 5.68332 9.88334 5.91665 9.7 6.09999L7.8 7.99999H14.1C15.7167 7.99999 17.1042 8.52499 18.2625 9.57499C19.4208 10.625 20 11.9333 20 13.5C20 15.0667 19.4208 16.375 18.2625 17.425C17.1042 18.475 15.7167 19 14.1 19H8Z\" fill=\"currentColor\"/>` },\r\n    'unfold-less': { outlined: `<path d=\"M8.575 20L7.5 18.925L12 14.425L16.5 18.925L15.425 20L12 16.575L8.575 20ZM12 9.575L7.5 5.075L8.575 4L12 7.425L15.425 4L16.5 5.075L12 9.575Z\" fill=\"currentColor\"/>` },\r\n    'unfold-more': { outlined: `<path d=\"M12 21L7.5 16.5L8.6 15.4L12 18.8L15.4 15.4L16.5 16.5L12 21ZM8.6 8.69998L7.5 7.59998L12 3.09998L16.5 7.59998L15.4 8.69998L12 5.29998L8.6 8.69998Z\" fill=\"currentColor\"/>` },\r\n    upload: { outlined: `<path d=\"M11 12.85L10.1 13.725C9.91667 13.9083 9.6875 14 9.4125 14C9.1375 14 8.9 13.9 8.7 13.7C8.51667 13.5167 8.425 13.2833 8.425 13C8.425 12.7167 8.51667 12.4833 8.7 12.3L11.3 9.7C11.5 9.5 11.7333 9.4 12 9.4C12.2667 9.4 12.5 9.5 12.7 9.7L15.3 12.3C15.4833 12.4833 15.5792 12.7125 15.5875 12.9875C15.5958 13.2625 15.5 13.5 15.3 13.7C15.1167 13.8833 14.8875 13.9792 14.6125 13.9875C14.3375 13.9958 14.1 13.9083 13.9 13.725L13 12.85V18H18.5C19.2 18 19.7917 17.7583 20.275 17.275C20.7583 16.7917 21 16.2 21 15.5C21 14.8 20.7583 14.2083 20.275 13.725C19.7917 13.2417 19.2 13 18.5 13H17V11C17 9.61667 16.5125 8.4375 15.5375 7.4625C14.5625 6.4875 13.3833 6 12 6C10.6167 6 9.4375 6.4875 8.4625 7.4625C7.4875 8.4375 7 9.61667 7 11H6.5C5.53333 11 4.70833 11.3417 4.025 12.025C3.34167 12.7083 3 13.5333 3 14.5C3 15.4667 3.34167 16.2917 4.025 16.975C4.70833 17.6583 5.53333 18 6.5 18H8C8.28333 18 8.52083 18.0958 8.7125 18.2875C8.90417 18.4792 9 18.7167 9 19C9 19.2833 8.90417 19.5208 8.7125 19.7125C8.52083 19.9042 8.28333 20 8 20H6.5C4.98333 20 3.6875 19.475 2.6125 18.425C1.5375 17.375 1 16.0917 1 14.575C1 13.275 1.39167 12.1167 2.175 11.1C2.95833 10.0833 3.98333 9.43333 5.25 9.15C5.66667 7.61667 6.5 6.375 7.75 5.425C9 4.475 10.4167 4 12 4C13.95 4 15.6042 4.67917 16.9625 6.0375C18.3208 7.39583 19 9.05 19 11C20.15 11.1333 21.1042 11.6292 21.8625 12.4875C22.6208 13.3458 23 14.35 23 15.5C23 16.75 22.5625 17.8125 21.6875 18.6875C20.8125 19.5625 19.75 20 18.5 20H13C12.45 20 11.9792 19.8042 11.5875 19.4125C11.1958 19.0208 11 18.55 11 18V12.85Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M6.5 20C4.98333 20 3.6875 19.475 2.6125 18.425C1.5375 17.375 1 16.0917 1 14.575C1 13.275 1.39167 12.1167 2.175 11.1C2.95833 10.0833 3.98333 9.43333 5.25 9.15C5.66667 7.61667 6.5 6.375 7.75 5.425C9 4.475 10.4167 4 12 4C13.95 4 15.6042 4.67917 16.9625 6.0375C18.3208 7.39583 19 9.05 19 11C20.15 11.1333 21.1042 11.6292 21.8625 12.4875C22.6208 13.3458 23 14.35 23 15.5C23 16.75 22.5625 17.8125 21.6875 18.6875C20.8125 19.5625 19.75 20 18.5 20H13V12.85L13.9 13.725C14.0833 13.9083 14.3125 14 14.5875 14C14.8625 14 15.1 13.9 15.3 13.7C15.4833 13.5167 15.575 13.2833 15.575 13C15.575 12.7167 15.4833 12.4833 15.3 12.3L12.7 9.7C12.5 9.5 12.2667 9.4 12 9.4C11.7333 9.4 11.5 9.5 11.3 9.7L8.7 12.3C8.51667 12.4833 8.42083 12.7125 8.4125 12.9875C8.40417 13.2625 8.5 13.5 8.7 13.7C8.88333 13.8833 9.1125 13.9792 9.3875 13.9875C9.6625 13.9958 9.9 13.9083 10.1 13.725L11 12.85V20H6.5Z\" fill=\"currentColor\"/>` },\r\n    'upload-file': { outlined: `<path d=\"M11 19H13V14.825L14.6 16.425L16 15L12 11L8 15L9.425 16.4L11 14.825V19ZM6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H14L20 8V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM13 9V4H6V20H18V9H13Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M11 19H13V14.825L14.6 16.425L16 15L12 11L8 15L9.425 16.4L11 14.825V19ZM6 22C5.45 22 4.97917 21.8042 4.5875 21.4125C4.19583 21.0208 4 20.55 4 20V4C4 3.45 4.19583 2.97917 4.5875 2.5875C4.97917 2.19583 5.45 2 6 2H14L20 8V20C20 20.55 19.8042 21.0208 19.4125 21.4125C19.0208 21.8042 18.55 22 18 22H6ZM13 9H18L13 4V9Z\" fill=\"currentColor\"/>` },\r\n    'view-list': { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 13H5V11H3V13ZM3 17H5V15H3V17ZM3 9H5V7H3V9ZM7 13H21V11H7V13ZM7 17H21V15H7V17ZM7 7V9H21V7H7Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 13H5V11H3V13ZM3 17H5V15H3V17ZM3 9H5V7H3V9ZM7 13H21V11H7V13ZM7 17H21V15H7V17ZM7 7V9H21V7H7Z\" fill=\"currentColor\"/>` },\r\n    'visibility-off': { outlined: `<path d=\"M14.6311 8.30607C15.0348 8.71416 15.3306 9.17854 15.5186 9.69921C15.7065 10.2199 15.7726 10.7546 15.7169 11.3034C15.7169 11.5145 15.6404 11.6939 15.4872 11.8417C15.3341 11.9894 15.1531 12.0633 14.9443 12.0633C14.7355 12.0633 14.558 11.9894 14.4118 11.8417C14.2657 11.6939 14.1926 11.5145 14.1926 11.3034C14.2622 10.9376 14.2413 10.5858 14.1299 10.248C14.0186 9.91029 13.8445 9.62181 13.6079 9.38259C13.3712 9.14336 13.0858 8.96042 12.7517 8.83377C12.4176 8.70712 12.0626 8.67898 11.6868 8.74934C11.478 8.74934 11.3005 8.67194 11.1543 8.51715C11.0081 8.36236 10.935 8.17942 10.935 7.96834C10.935 7.75726 11.0081 7.57784 11.1543 7.43008C11.3005 7.28232 11.478 7.20844 11.6868 7.20844C12.2158 7.15215 12.7378 7.219 13.2529 7.40897C13.768 7.59894 14.2274 7.89798 14.6311 8.30607ZM11.9791 6.34301C11.7146 6.34301 11.4571 6.35356 11.2065 6.37467C10.9559 6.39578 10.7053 6.43448 10.4548 6.49077C10.2181 6.53298 10.0058 6.4978 9.81787 6.38522C9.62993 6.27265 9.50116 6.10378 9.43155 5.87863C9.36195 5.65347 9.38631 5.43536 9.50464 5.22427C9.62297 5.01319 9.7935 4.88654 10.0162 4.84433C10.3364 4.77397 10.6601 4.72471 10.9872 4.69657C11.3144 4.66843 11.645 4.65435 11.9791 4.65435C13.8863 4.65435 15.6299 5.16095 17.21 6.17414C18.79 7.18734 19.9977 8.55233 20.8329 10.2691C20.8886 10.3817 20.9304 10.4978 20.9582 10.6174C20.9861 10.737 21 10.8602 21 10.9868C21 11.1135 20.9896 11.2366 20.9687 11.3562C20.9478 11.4758 20.9095 11.5919 20.8538 11.7045C20.6032 12.2674 20.2935 12.7951 19.9246 13.2876C19.5557 13.7801 19.1485 14.2304 18.703 14.6385C18.536 14.7933 18.3411 14.8566 18.1183 14.8285C17.8956 14.8004 17.7146 14.6878 17.5754 14.4908C17.4362 14.2938 17.377 14.0792 17.3979 13.847C17.4188 13.6148 17.5128 13.4213 17.6798 13.2665C18.0139 12.9428 18.3202 12.591 18.5986 12.2111C18.877 11.8311 19.1206 11.423 19.3295 10.9868C18.6334 9.56552 17.6276 8.43624 16.3121 7.59894C14.9965 6.76165 13.5522 6.34301 11.9791 6.34301ZM11.9791 17.3193C10.1137 17.3193 8.40835 16.8091 6.86311 15.7889C5.31787 14.7687 4.09977 13.4283 3.20882 11.7678C3.13921 11.6552 3.08701 11.5321 3.0522 11.3984C3.0174 11.2647 3 11.1275 3 10.9868C3 10.8461 3.01392 10.7124 3.04176 10.5858C3.06961 10.4591 3.11833 10.3325 3.18794 10.2058C3.46636 9.64292 3.79002 9.10466 4.15893 8.59103C4.52784 8.0774 4.94896 7.6095 5.42227 7.18734L3.6891 5.41425C3.53596 5.24538 3.46288 5.04485 3.46984 4.81266C3.4768 4.58047 3.55684 4.38698 3.70998 4.23219C3.86311 4.0774 4.058 4 4.29466 4C4.53132 4 4.72622 4.0774 4.87935 4.23219L19.0789 18.5858C19.232 18.7405 19.3121 18.934 19.319 19.1662C19.326 19.3984 19.2459 19.5989 19.0789 19.7678C18.9258 19.9226 18.7309 20 18.4942 20C18.2575 20 18.0626 19.9226 17.9095 19.7678L14.9861 16.8549C14.4988 17.0097 14.0046 17.1258 13.5035 17.2032C13.0023 17.2806 12.4942 17.3193 11.9791 17.3193ZM6.59165 8.36939C6.18793 8.73527 5.81903 9.13632 5.48492 9.57256C5.15081 10.0088 4.86543 10.4802 4.62877 10.9868C5.32483 12.4081 6.33063 13.5374 7.64617 14.3747C8.96172 15.212 10.406 15.6306 11.9791 15.6306C12.2575 15.6306 12.529 15.613 12.7935 15.5778C13.058 15.5427 13.3295 15.504 13.6079 15.4617L12.8561 14.6596C12.703 14.7018 12.5568 14.7335 12.4176 14.7546C12.2784 14.7757 12.1323 14.7863 11.9791 14.7863C10.935 14.7863 10.0476 14.4169 9.31671 13.6781C8.58585 12.9393 8.22042 12.0422 8.22042 10.9868C8.22042 10.832 8.23086 10.6843 8.25174 10.5435C8.27262 10.4028 8.30394 10.2551 8.34571 10.1003L6.59165 8.36939Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M17.9406 19.7678L15.007 16.8549C14.518 17.0097 14.0221 17.1258 13.5192 17.2032C13.0163 17.2806 12.5064 17.3193 11.9895 17.3193C10.1176 17.3193 8.40629 16.8127 6.85565 15.7995C5.30501 14.7863 4.08964 13.4494 3.20955 11.7889C3.1397 11.6623 3.08731 11.5321 3.05239 11.3984C3.01746 11.2647 3 11.1275 3 10.9868C3 10.8461 3.01746 10.7089 3.05239 10.5752C3.08731 10.4415 3.1397 10.3113 3.20955 10.1847C3.51688 9.63588 3.84517 9.10114 4.19441 8.58047C4.54366 8.05981 4.94878 7.59543 5.40978 7.18734L3.67055 5.41425C3.51688 5.25945 3.44005 5.06596 3.44005 4.83377C3.44005 4.60158 3.52386 4.40106 3.6915 4.23219C3.84517 4.0774 4.04075 4 4.27823 4C4.51572 4 4.71129 4.0774 4.86496 4.23219L19.1141 18.5858C19.2678 18.7405 19.3481 18.934 19.3551 19.1662C19.362 19.3984 19.2817 19.5989 19.1141 19.7678C18.9604 19.9226 18.7648 20 18.5274 20C18.2899 20 18.0943 19.9226 17.9406 19.7678ZM11.9895 14.7863C12.1432 14.7863 12.2899 14.7792 12.4296 14.7652C12.5693 14.7511 12.709 14.723 12.8487 14.6807L8.32247 10.1214C8.28056 10.2621 8.25262 10.4028 8.23865 10.5435C8.22468 10.6843 8.21769 10.832 8.21769 10.9868C8.21769 12.0422 8.5844 12.9393 9.31781 13.6781C10.0512 14.4169 10.9418 14.7863 11.9895 14.7863ZM11.9895 4.65435C13.8615 4.65435 15.5763 5.16447 17.1339 6.1847C18.6915 7.20493 19.9104 8.54529 20.7905 10.2058C20.8603 10.3184 20.9127 10.4415 20.9476 10.5752C20.9825 10.7089 21 10.8461 21 10.9868C21 11.1275 20.986 11.2647 20.9581 11.3984C20.9302 11.5321 20.8813 11.6552 20.8114 11.7678C20.546 12.2885 20.2491 12.781 19.9208 13.2454C19.5925 13.7098 19.2258 14.146 18.8207 14.5541C18.6251 14.7511 18.3946 14.8426 18.1292 14.8285C17.8638 14.8144 17.6333 14.7089 17.4377 14.5119L15.7614 12.8232C15.6636 12.7247 15.6007 12.6086 15.5728 12.4749C15.5448 12.3412 15.5518 12.204 15.5937 12.0633C15.6496 11.8804 15.6915 11.7045 15.7194 11.5356C15.7474 11.3668 15.7614 11.1838 15.7614 10.9868C15.7614 9.9314 15.3946 9.0343 14.6612 8.29551C13.9278 7.55673 13.0373 7.18734 11.9895 7.18734C11.7939 7.18734 11.6123 7.20141 11.4447 7.22955C11.2771 7.2577 11.1024 7.29991 10.9208 7.3562C10.7811 7.39842 10.6414 7.40545 10.5017 7.37731C10.362 7.34916 10.2433 7.28584 10.1455 7.18734L9.45402 6.49077C9.18859 6.22339 9.10128 5.91381 9.19208 5.56201C9.28289 5.2102 9.50291 4.98505 9.85215 4.88654C10.2014 4.81618 10.5541 4.75989 10.9104 4.71768C11.2666 4.67546 11.6263 4.65435 11.9895 4.65435ZM13.6449 9.4248C13.7986 9.60774 13.9278 9.80827 14.0326 10.0264C14.1374 10.2445 14.2037 10.4732 14.2317 10.7124C14.2456 10.825 14.2037 10.9024 14.1059 10.9446C14.0081 10.9868 13.9173 10.9657 13.8335 10.8813L12.1153 9.1504C12.0314 9.06596 12.014 8.97449 12.0629 8.87599C12.1118 8.77748 12.1921 8.72823 12.3038 8.72823C12.5693 8.75638 12.8137 8.83026 13.0373 8.94987C13.2608 9.06948 13.4633 9.22779 13.6449 9.4248Z\" fill=\"currentColor\"/>` },\r\n    'visibility-on': { outlined: `<path d=\"M12 16.2C13.1655 16.2 14.1562 15.7917 14.972 14.975C15.7879 14.1583 16.1958 13.1667 16.1958 12C16.1958 10.8333 15.7879 9.84167 14.972 9.025C14.1562 8.20833 13.1655 7.8 12 7.8C10.8345 7.8 9.84382 8.20833 9.02797 9.025C8.21212 9.84167 7.8042 10.8333 7.8042 12C7.8042 13.1667 8.21212 14.1583 9.02797 14.975C9.84382 15.7917 10.8345 16.2 12 16.2ZM12 14.52C11.3007 14.52 10.7063 14.275 10.2168 13.785C9.72727 13.295 9.48252 12.7 9.48252 12C9.48252 11.3 9.72727 10.705 10.2168 10.215C10.7063 9.725 11.3007 9.48 12 9.48C12.6993 9.48 13.2937 9.725 13.7832 10.215C14.2727 10.705 14.5175 11.3 14.5175 12C14.5175 12.7 14.2727 13.295 13.7832 13.785C13.2937 14.275 12.6993 14.52 12 14.52ZM12 19C9.91764 19 8.01787 18.44 6.3007 17.32C4.58353 16.2 3.22766 14.7222 2.2331 12.8867C2.1554 12.7467 2.09713 12.6028 2.05828 12.455C2.01943 12.3072 2 12.1556 2 12C2 11.8444 2.01943 11.6928 2.05828 11.545C2.09713 11.3972 2.1554 11.2533 2.2331 11.1133C3.22766 9.27778 4.58353 7.8 6.3007 6.68C8.01787 5.56 9.91764 5 12 5C14.0824 5 15.9821 5.56 17.6993 6.68C19.4165 7.8 20.7723 9.27778 21.7669 11.1133C21.8446 11.2533 21.9029 11.3972 21.9417 11.545C21.9806 11.6928 22 11.8444 22 12C22 12.1556 21.9806 12.3072 21.9417 12.455C21.9029 12.6028 21.8446 12.7467 21.7669 12.8867C20.7723 14.7222 19.4165 16.2 17.6993 17.32C15.9821 18.44 14.0824 19 12 19ZM12 17.1333C13.756 17.1333 15.3683 16.6706 16.8368 15.745C18.3054 14.8194 19.4281 13.5711 20.2051 12C19.4281 10.4289 18.3054 9.18056 16.8368 8.255C15.3683 7.32944 13.756 6.86667 12 6.86667C10.244 6.86667 8.6317 7.32944 7.16317 8.255C5.69464 9.18056 4.57187 10.4289 3.79487 12C4.57187 13.5711 5.69464 14.8194 7.16317 15.745C8.6317 16.6706 10.244 17.1333 12 17.1333Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.01 16.2C13.1767 16.2 14.1683 15.7917 14.985 14.975C15.8017 14.1583 16.21 13.1667 16.21 12C16.21 10.8333 15.8017 9.84167 14.985 9.025C14.1683 8.20833 13.1767 7.8 12.01 7.8C10.8433 7.8 9.85167 8.20833 9.035 9.025C8.21833 9.84167 7.81 10.8333 7.81 12C7.81 13.1667 8.21833 14.1583 9.035 14.975C9.85167 15.7917 10.8433 16.2 12.01 16.2ZM12.01 14.52C11.31 14.52 10.715 14.275 10.225 13.785C9.735 13.295 9.49 12.7 9.49 12C9.49 11.3 9.735 10.705 10.225 10.215C10.715 9.725 11.31 9.48 12.01 9.48C12.71 9.48 13.305 9.725 13.795 10.215C14.285 10.705 14.53 11.3 14.53 12C14.53 12.7 14.285 13.295 13.795 13.785C13.305 14.275 12.71 14.52 12.01 14.52ZM12.01 19C9.92556 19 8.02389 18.44 6.305 17.32C4.58611 16.2 3.22889 14.7222 2.23333 12.8867C2.15556 12.7467 2.09722 12.6028 2.05833 12.455C2.01944 12.3072 2 12.1556 2 12C2 11.8444 2.01944 11.6928 2.05833 11.545C2.09722 11.3972 2.15556 11.2533 2.23333 11.1133C3.22889 9.27778 4.58611 7.8 6.305 6.68C8.02389 5.56 9.92556 5 12.01 5C14.0944 5 15.9961 5.56 17.715 6.68C19.4339 7.8 20.7911 9.27778 21.7867 11.1133C21.8644 11.2533 21.9228 11.3972 21.9617 11.545C22.0006 11.6928 22 11.8444 22 12C22 12.1556 22.0006 12.3072 21.9617 12.455C21.9228 12.6028 21.8644 12.7467 21.7867 12.8867C20.7911 14.7222 19.4339 16.2 17.715 17.32C15.9961 18.44 14.0944 19 12.01 19Z\" fill=\"currentColor\"/>` },\r\n    visitor: { outlined: `<path d=\"M9.175 10.825C8.39167 10.0417 8 9.1 8 8C8 6.9 8.39167 5.95833 9.175 5.175C9.95833 4.39167 10.9 4 12 4C13.1 4 14.0417 4.39167 14.825 5.175C15.6083 5.95833 16 6.9 16 8C16 9.1 15.6083 10.0417 14.825 10.825C14.0417 11.6083 13.1 12 12 12C10.9 12 9.95833 11.6083 9.175 10.825ZM4 18V17.2C4 16.6333 4.14583 16.1125 4.4375 15.6375C4.72917 15.1625 5.11667 14.8 5.6 14.55C6.63333 14.0333 7.68333 13.6458 8.75 13.3875C9.81667 13.1292 10.9 13 12 13C13.1 13 14.1833 13.1292 15.25 13.3875C16.3167 13.6458 17.3667 14.0333 18.4 14.55C18.8833 14.8 19.2708 15.1625 19.5625 15.6375C19.8542 16.1125 20 16.6333 20 17.2V18C20 18.55 19.8042 19.0208 19.4125 19.4125C19.0208 19.8042 18.55 20 18 20H6C5.45 20 4.97917 19.8042 4.5875 19.4125C4.19583 19.0208 4 18.55 4 18ZM6 18H18V17.2C18 17.0167 17.9542 16.85 17.8625 16.7C17.7708 16.55 17.65 16.4333 17.5 16.35C16.6 15.9 15.6917 15.5625 14.775 15.3375C13.8583 15.1125 12.9333 15 12 15C11.0667 15 10.1417 15.1125 9.225 15.3375C8.30833 15.5625 7.4 15.9 6.5 16.35C6.35 16.4333 6.22917 16.55 6.1375 16.7C6.04583 16.85 6 17.0167 6 17.2V18ZM13.4125 9.4125C13.8042 9.02083 14 8.55 14 8C14 7.45 13.8042 6.97917 13.4125 6.5875C13.0208 6.19583 12.55 6 12 6C11.45 6 10.9792 6.19583 10.5875 6.5875C10.1958 6.97917 10 7.45 10 8C10 8.55 10.1958 9.02083 10.5875 9.4125C10.9792 9.80417 11.45 10 12 10C12.55 10 13.0208 9.80417 13.4125 9.4125Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M9.175 10.825C8.39167 10.0417 8 9.1 8 8C8 6.9 8.39167 5.95833 9.175 5.175C9.95833 4.39167 10.9 4 12 4C13.1 4 14.0417 4.39167 14.825 5.175C15.6083 5.95833 16 6.9 16 8C16 9.1 15.6083 10.0417 14.825 10.825C14.0417 11.6083 13.1 12 12 12C10.9 12 9.95833 11.6083 9.175 10.825ZM4 18V17.2C4 16.6333 4.14583 16.1125 4.4375 15.6375C4.72917 15.1625 5.11667 14.8 5.6 14.55C6.63333 14.0333 7.68333 13.6458 8.75 13.3875C9.81667 13.1292 10.9 13 12 13C13.1 13 14.1833 13.1292 15.25 13.3875C16.3167 13.6458 17.3667 14.0333 18.4 14.55C18.8833 14.8 19.2708 15.1625 19.5625 15.6375C19.8542 16.1125 20 16.6333 20 17.2V18C20 18.55 19.8042 19.0208 19.4125 19.4125C19.0208 19.8042 18.55 20 18 20H6C5.45 20 4.97917 19.8042 4.5875 19.4125C4.19583 19.0208 4 18.55 4 18Z\" fill=\"currentColor\"/>` },\r\n    wallet: { outlined: `<path d=\"M15.9633 13.7778C16.4007 13.7778 16.79 13.5972 17.1312 13.2361C17.4724 12.875 17.643 12.4583 17.643 11.9861C17.643 11.5139 17.4724 11.1019 17.1312 10.75C16.79 10.3981 16.4007 10.2222 15.9633 10.2222C15.5258 10.2222 15.1365 10.3981 14.7953 10.75C14.4541 11.1019 14.2835 11.5139 14.2835 11.9861C14.2835 12.4583 14.4541 12.875 14.7953 13.2361C15.1365 13.5972 15.5258 13.7778 15.9633 13.7778ZM3.5748 18.8611V20.3333V3.66667V18.8611ZM3.5748 22C3.17235 22 2.80927 21.8333 2.48556 21.5C2.16185 21.1667 2 20.7778 2 20.3333V3.66667C2 3.24074 2.16185 2.85648 2.48556 2.51389C2.80927 2.1713 3.17235 2 3.5748 2H19.3228C19.7428 2 20.1102 2.1713 20.4252 2.51389C20.7402 2.85648 20.8976 3.24074 20.8976 3.66667V7.38889H19.3228V3.66667H3.5748V20.3333H19.3228V16.6389H20.8976V20.3333C20.8976 20.7778 20.7402 21.1667 20.4252 21.5C20.1102 21.8333 19.7428 22 19.3228 22H3.5748ZM12.9711 17.1944C12.3762 17.1944 11.9038 17.0093 11.5538 16.6389C11.2038 16.2685 11.0289 15.7778 11.0289 15.1667V8.86111C11.0289 8.23148 11.2038 7.73611 11.5538 7.375C11.9038 7.01389 12.3762 6.83333 12.9711 6.83333H20.0577C20.6527 6.83333 21.1251 7.01389 21.4751 7.375C21.825 7.73611 22 8.23148 22 8.86111V15.1667C22 15.7778 21.825 16.2685 21.4751 16.6389C21.1251 17.0093 20.6527 17.1944 20.0577 17.1944H12.9711ZM20.4252 15.5278V8.5H12.6037V15.5278H20.4252Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M15.9633 13.7778C16.4007 13.7778 16.79 13.5972 17.1312 13.2361C17.4724 12.875 17.643 12.4583 17.643 11.9861C17.643 11.5139 17.4724 11.1019 17.1312 10.75C16.79 10.3981 16.4007 10.2222 15.9633 10.2222C15.5258 10.2222 15.1365 10.3981 14.7953 10.75C14.4541 11.1019 14.2835 11.5139 14.2835 11.9861C14.2835 12.4583 14.4541 12.875 14.7953 13.2361C15.1365 13.5972 15.5258 13.7778 15.9633 13.7778ZM3.5748 18.8611V20.3333V3.66667V18.8611ZM3.5748 22C3.17235 22 2.80927 21.8333 2.48556 21.5C2.16185 21.1667 2 20.7778 2 20.3333V3.66667C2 3.24074 2.16185 2.85648 2.48556 2.51389C2.80927 2.1713 3.17235 2 3.5748 2H19.3228C19.7428 2 20.1102 2.1713 20.4252 2.51389C20.7402 2.85648 20.8976 3.24074 20.8976 3.66667V7.38889H19.3228V3.66667H3.5748V20.3333H19.3228V16.6389H20.8976V20.3333C20.8976 20.7778 20.7402 21.1667 20.4252 21.5C20.1102 21.8333 19.7428 22 19.3228 22H3.5748ZM12.9711 17.1944C12.3762 17.1944 11.9038 17.0093 11.5538 16.6389C11.2038 16.2685 11.0289 15.7778 11.0289 15.1667V8.86111C11.0289 8.23148 11.2038 7.73611 11.5538 7.375C11.9038 7.01389 12.3762 6.83333 12.9711 6.83333H20.0577C20.6527 6.83333 21.1251 7.01389 21.4751 7.375C21.825 7.73611 22 8.23148 22 8.86111V15.1667C22 15.7778 21.825 16.2685 21.4751 16.6389C21.1251 17.0093 20.6527 17.1944 20.0577 17.1944H12.9711Z\" fill=\"currentColor\"/>` },\r\n    warning: { outlined: `<path d=\"M12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16C13 15.7167 12.9042 15.4792 12.7125 15.2875C12.5208 15.0958 12.2833 15 12 15C11.7167 15 11.4792 15.0958 11.2875 15.2875C11.0958 15.4792 11 15.7167 11 16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125ZM12.7125 12.7125C12.9042 12.5208 13 12.2833 13 12V8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8V12C11 12.2833 11.0958 12.5208 11.2875 12.7125C11.4792 12.9042 11.7167 13 12 13C12.2833 13 12.5208 12.9042 12.7125 12.7125ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16C13 15.7167 12.9042 15.4792 12.7125 15.2875C12.5208 15.0958 12.2833 15 12 15C11.7167 15 11.4792 15.0958 11.2875 15.2875C11.0958 15.4792 11 15.7167 11 16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125ZM12.7125 12.7125C12.9042 12.5208 13 12.2833 13 12V8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8V12C11 12.2833 11.0958 12.5208 11.2875 12.7125C11.4792 12.9042 11.7167 13 12 13C12.2833 13 12.5208 12.9042 12.7125 12.7125ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22Z\" fill=\"currentColor\"/>` },\r\n    webhook: { outlined: `<path d=\"M7 21C5.61667 21 4.4375 20.5125 3.4625 19.5375C2.4875 18.5625 2 17.3833 2 16C2 14.7833 2.37917 13.7208 3.1375 12.8125C3.89583 11.9042 4.85 11.3333 6 11.1V13.175C5.41667 13.375 4.9375 13.7333 4.5625 14.25C4.1875 14.7667 4 15.35 4 16C4 16.8333 4.29167 17.5417 4.875 18.125C5.45833 18.7083 6.16667 19 7 19C7.83333 19 8.54167 18.7083 9.125 18.125C9.70833 17.5417 10 16.8333 10 16V15H15.875C16.0083 14.85 16.1708 14.7292 16.3625 14.6375C16.5542 14.5458 16.7667 14.5 17 14.5C17.4167 14.5 17.7708 14.6458 18.0625 14.9375C18.3542 15.2292 18.5 15.5833 18.5 16C18.5 16.4167 18.3542 16.7708 18.0625 17.0625C17.7708 17.3542 17.4167 17.5 17 17.5C16.7667 17.5 16.5542 17.4542 16.3625 17.3625C16.1708 17.2708 16.0083 17.15 15.875 17H11.9C11.6667 18.15 11.0958 19.1042 10.1875 19.8625C9.27917 20.6208 8.21667 21 7 21ZM17 21C16.0667 21 15.2208 20.7708 14.4625 20.3125C13.7042 19.8542 13.1083 19.25 12.675 18.5H15.35C15.5833 18.6667 15.8417 18.7917 16.125 18.875C16.4083 18.9583 16.7 19 17 19C17.8333 19 18.5417 18.7083 19.125 18.125C19.7083 17.5417 20 16.8333 20 16C20 15.1667 19.7083 14.4583 19.125 13.875C18.5417 13.2917 17.8333 13 17 13C16.6667 13 16.3583 13.0458 16.075 13.1375C15.7917 13.2292 15.525 13.3667 15.275 13.55L12.225 8.475C11.875 8.40833 11.5833 8.24167 11.35 7.975C11.1167 7.70833 11 7.38333 11 7C11 6.58333 11.1458 6.22917 11.4375 5.9375C11.7292 5.64583 12.0833 5.5 12.5 5.5C12.9167 5.5 13.2708 5.64583 13.5625 5.9375C13.8542 6.22917 14 6.58333 14 7V7.2125C14 7.27083 13.9833 7.34167 13.95 7.425L16.125 11.075C16.2583 11.0417 16.4 11.0208 16.55 11.0125C16.7 11.0042 16.85 11 17 11C18.3833 11 19.5625 11.4875 20.5375 12.4625C21.5125 13.4375 22 14.6167 22 16C22 17.3833 21.5125 18.5625 20.5375 19.5375C19.5625 20.5125 18.3833 21 17 21ZM7 17.5C6.58333 17.5 6.22917 17.3542 5.9375 17.0625C5.64583 16.7708 5.5 16.4167 5.5 16C5.5 15.6333 5.61667 15.3167 5.85 15.05C6.08333 14.7833 6.36667 14.6083 6.7 14.525L9.05 10.625C8.56667 10.175 8.1875 9.6375 7.9125 9.0125C7.6375 8.3875 7.5 7.71667 7.5 7C7.5 5.61667 7.9875 4.4375 8.9625 3.4625C9.9375 2.4875 11.1167 2 12.5 2C13.8833 2 15.0625 2.4875 16.0375 3.4625C17.0125 4.4375 17.5 5.61667 17.5 7H15.5C15.5 6.16667 15.2083 5.45833 14.625 4.875C14.0417 4.29167 13.3333 4 12.5 4C11.6667 4 10.9583 4.29167 10.375 4.875C9.79167 5.45833 9.5 6.16667 9.5 7C9.5 7.71667 9.71667 8.34583 10.15 8.8875C10.5833 9.42917 11.1333 9.775 11.8 9.925L8.425 15.55C8.45833 15.6333 8.47917 15.7083 8.4875 15.775C8.49583 15.8417 8.5 15.9167 8.5 16C8.5 16.4167 8.35417 16.7708 8.0625 17.0625C7.77083 17.3542 7.41667 17.5 7 17.5Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M7 21C5.61667 21 4.4375 20.5125 3.4625 19.5375C2.4875 18.5625 2 17.3833 2 16C2 14.7833 2.37917 13.7208 3.1375 12.8125C3.89583 11.9042 4.85 11.3333 6 11.1V13.175C5.41667 13.375 4.9375 13.7333 4.5625 14.25C4.1875 14.7667 4 15.35 4 16C4 16.8333 4.29167 17.5417 4.875 18.125C5.45833 18.7083 6.16667 19 7 19C7.83333 19 8.54167 18.7083 9.125 18.125C9.70833 17.5417 10 16.8333 10 16V15H15.875C16.0083 14.85 16.1708 14.7292 16.3625 14.6375C16.5542 14.5458 16.7667 14.5 17 14.5C17.4167 14.5 17.7708 14.6458 18.0625 14.9375C18.3542 15.2292 18.5 15.5833 18.5 16C18.5 16.4167 18.3542 16.7708 18.0625 17.0625C17.7708 17.3542 17.4167 17.5 17 17.5C16.7667 17.5 16.5542 17.4542 16.3625 17.3625C16.1708 17.2708 16.0083 17.15 15.875 17H11.9C11.6667 18.15 11.0958 19.1042 10.1875 19.8625C9.27917 20.6208 8.21667 21 7 21ZM17 21C16.0667 21 15.2208 20.7708 14.4625 20.3125C13.7042 19.8542 13.1083 19.25 12.675 18.5H15.35C15.5833 18.6667 15.8417 18.7917 16.125 18.875C16.4083 18.9583 16.7 19 17 19C17.8333 19 18.5417 18.7083 19.125 18.125C19.7083 17.5417 20 16.8333 20 16C20 15.1667 19.7083 14.4583 19.125 13.875C18.5417 13.2917 17.8333 13 17 13C16.6667 13 16.3583 13.0458 16.075 13.1375C15.7917 13.2292 15.525 13.3667 15.275 13.55L12.225 8.475C11.875 8.40833 11.5833 8.24167 11.35 7.975C11.1167 7.70833 11 7.38333 11 7C11 6.58333 11.1458 6.22917 11.4375 5.9375C11.7292 5.64583 12.0833 5.5 12.5 5.5C12.9167 5.5 13.2708 5.64583 13.5625 5.9375C13.8542 6.22917 14 6.58333 14 7V7.2125C14 7.27083 13.9833 7.34167 13.95 7.425L16.125 11.075C16.2583 11.0417 16.4 11.0208 16.55 11.0125C16.7 11.0042 16.85 11 17 11C18.3833 11 19.5625 11.4875 20.5375 12.4625C21.5125 13.4375 22 14.6167 22 16C22 17.3833 21.5125 18.5625 20.5375 19.5375C19.5625 20.5125 18.3833 21 17 21ZM7 17.5C6.58333 17.5 6.22917 17.3542 5.9375 17.0625C5.64583 16.7708 5.5 16.4167 5.5 16C5.5 15.6333 5.61667 15.3167 5.85 15.05C6.08333 14.7833 6.36667 14.6083 6.7 14.525L9.05 10.625C8.56667 10.175 8.1875 9.6375 7.9125 9.0125C7.6375 8.3875 7.5 7.71667 7.5 7C7.5 5.61667 7.9875 4.4375 8.9625 3.4625C9.9375 2.4875 11.1167 2 12.5 2C13.8833 2 15.0625 2.4875 16.0375 3.4625C17.0125 4.4375 17.5 5.61667 17.5 7H15.5C15.5 6.16667 15.2083 5.45833 14.625 4.875C14.0417 4.29167 13.3333 4 12.5 4C11.6667 4 10.9583 4.29167 10.375 4.875C9.79167 5.45833 9.5 6.16667 9.5 7C9.5 7.71667 9.71667 8.34583 10.15 8.8875C10.5833 9.42917 11.1333 9.775 11.8 9.925L8.425 15.55C8.45833 15.6333 8.47917 15.7083 8.4875 15.775C8.49583 15.8417 8.5 15.9167 8.5 16C8.5 16.4167 8.35417 16.7708 8.0625 17.0625C7.77083 17.3542 7.41667 17.5 7 17.5Z\" fill=\"currentColor\"/>` },\r\n    whatsapp: { outlined: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.0861 4.90628C18.1616 3.98131 17.0633 3.24834 15.8543 2.74956C14.6454 2.25079 13.3497 1.99605 12.0419 2.00003C6.55356 2.00003 2.08571 6.44556 2.08348 11.9107C2.08105 13.651 2.53977 15.3608 3.41294 16.8661L2 22L7.27901 20.6219C8.74026 21.4135 10.376 21.8278 12.0379 21.8272H12.0419C17.5299 21.8272 21.9973 17.3813 22 11.9165C22.0033 10.6132 21.7474 9.32225 21.2472 8.11874C20.7469 6.91524 20.0123 5.82324 19.0861 4.90628ZM12.0419 20.1545H12.0384C10.5569 20.1549 9.10227 19.7584 7.82588 19.0063L7.52365 18.8277L4.39107 19.6455L5.22723 16.6058L5.03035 16.2933C4.20195 14.9818 3.76305 13.462 3.76473 11.9107C3.76473 7.36922 7.47946 3.67414 12.0451 3.67414C14.2352 3.67023 16.3373 4.53643 17.8889 6.08222C19.4404 7.62802 20.3145 9.72681 20.3187 11.917C20.3169 16.4589 16.604 20.1545 12.0419 20.1545ZM16.5817 13.9853C16.333 13.8612 15.1085 13.2621 14.8817 13.1795C14.6549 13.0969 14.4875 13.0554 14.3219 13.3036C14.1562 13.5518 13.679 14.1072 13.5339 14.2746C13.3888 14.442 13.2437 14.4603 12.9951 14.3362C12.7464 14.2121 11.9442 13.9509 10.9937 13.1072C10.254 12.4505 9.7549 11.6397 9.60981 11.392C9.46472 11.1442 9.59418 11.0098 9.71874 10.8866C9.83079 10.7755 9.9674 10.5973 10.092 10.4527C10.2165 10.3081 10.258 10.2045 10.3406 10.0393C10.4232 9.87413 10.3821 9.72948 10.3201 9.60582C10.258 9.48216 9.76025 8.26297 9.55311 7.76699C9.35088 7.28395 9.14597 7.34958 8.99329 7.34199C8.8482 7.33485 8.68079 7.33306 8.51606 7.33306C8.39013 7.33634 8.26622 7.36554 8.15208 7.41885C8.03794 7.47216 7.93602 7.54842 7.85267 7.64288C7.62454 7.89109 6.98169 8.49109 6.98169 9.70895C6.98169 10.9268 7.87454 12.1054 7.99776 12.2706C8.12097 12.4357 9.75222 14.9371 12.2482 16.0098C12.7117 16.2083 13.1852 16.3824 13.6669 16.5313C14.2629 16.7197 14.8053 16.6933 15.2339 16.6295C15.712 16.5585 16.7071 16.0304 16.9138 15.4518C17.1205 14.8732 17.121 14.3777 17.0589 14.2746C16.9969 14.1714 16.8308 14.1089 16.5817 13.9853Z\" fill=\"currentColor\"/><path d=\"M12.041 1.75096C13.3816 1.74689 14.7099 2.00729 15.9492 2.51854C17.1881 3.02969 18.3141 3.78075 19.2617 4.7285C20.2113 5.66867 20.9646 6.78852 21.4775 8.02245C21.9905 9.2565 22.2534 10.5806 22.25 11.917L22.2363 12.4385C21.96 17.8006 17.4913 22.0771 12.042 22.0771H12.0381C10.368 22.0777 8.7243 21.6683 7.24902 20.8877L1.64355 22.3515L3.14453 16.8984C2.28368 15.3775 1.83057 13.659 1.83301 11.9101C1.83556 6.30642 6.41624 1.75147 12.041 1.75096ZM12.042 2.24999C6.69059 2.24999 2.33518 6.58503 2.33301 11.9111C2.33065 13.607 2.77807 15.2732 3.62891 16.7402L3.68164 16.831L3.6543 16.9326L2.35547 21.6474L7.21582 20.3799L7.31152 20.3555L7.39844 20.4023C8.82301 21.174 10.4179 21.5777 12.0381 21.5771H12.042C17.3929 21.5771 21.7474 17.2417 21.75 11.916L21.7393 11.4404C21.687 10.3327 21.4431 9.24108 21.0166 8.21483C20.5291 7.04194 19.8128 5.97761 18.9102 5.08397L18.9092 5.08299C18.008 4.18138 16.9372 3.46664 15.7588 2.98045C14.5805 2.49435 13.3166 2.24614 12.042 2.24999ZM12.4668 3.43358C14.5698 3.53419 16.5669 4.41227 18.0654 5.90526C19.6639 7.49783 20.564 9.66057 20.5684 11.917L20.5576 12.3535C20.327 16.8324 16.5941 20.4043 12.042 20.4043H12.0381C10.5121 20.4047 9.01393 19.9964 7.69922 19.2217L7.48535 19.0957L4.03516 19.9971L4.95605 16.6455L4.81836 16.4267C3.9651 15.0754 3.51292 13.5083 3.51465 11.9101C3.51497 7.22963 7.34275 3.4239 12.0449 3.42381L12.4668 3.43358ZM12.0449 3.92381C7.61619 3.9239 4.01465 7.50898 4.01465 11.9111C4.01315 13.321 4.38726 14.7039 5.0957 15.9189L5.24219 16.1601L5.43848 16.4726L5.49707 16.5654L5.46875 16.6719L4.74609 19.2939L7.46094 18.5859L7.56152 18.5596L7.65039 18.6123L7.95312 18.791L8.18652 18.9238C9.36676 19.5672 10.691 19.9046 12.0381 19.9043H12.042C16.4667 19.9043 20.066 16.3204 20.0684 11.918L20.0586 11.5205C19.9566 9.54155 19.1232 7.66505 17.7129 6.25975C16.2084 4.76084 14.1687 3.92012 12.0449 3.92381ZM8.51562 7.08299L9.00586 7.09276L9.13086 7.09374C9.19841 7.09895 9.28381 7.11395 9.36133 7.15038C9.53695 7.2331 9.6721 7.40319 9.78418 7.67088C9.88796 7.91939 10.0641 8.34942 10.2217 8.73045C10.383 9.12048 10.5183 9.44303 10.5439 9.49413C10.6218 9.64947 10.6978 9.88457 10.5645 10.1514C10.4875 10.3053 10.4308 10.4426 10.2812 10.6162C10.1731 10.7418 10.015 10.945 9.89453 11.0644C9.86296 11.0957 9.84078 11.118 9.82324 11.1396C9.80664 11.1601 9.80033 11.1732 9.79785 11.1797C9.79634 11.1837 9.795 11.1873 9.7959 11.1943C9.7971 11.2034 9.80222 11.2263 9.8252 11.2656C9.96611 11.5063 10.4501 12.2896 11.1602 12.9199C12.0779 13.7346 12.8326 13.9757 13.1064 14.1123C13.2152 14.1666 13.2609 14.1676 13.2744 14.166C13.2773 14.1657 13.2976 14.1656 13.3447 14.1113C13.4948 13.9382 13.9596 13.3969 14.1143 13.165C14.2244 13 14.3656 12.8902 14.5508 12.8691C14.7084 12.8513 14.8605 12.9056 14.9668 12.9443C15.095 12.991 15.4734 13.1695 15.832 13.3418C16.1983 13.5177 16.5677 13.699 16.6934 13.7617C16.8041 13.8167 16.9255 13.8714 17.0107 13.918C17.096 13.9646 17.2056 14.0328 17.2734 14.1455C17.3216 14.2256 17.3351 14.3285 17.3408 14.4014C17.3476 14.4881 17.3459 14.5923 17.3359 14.707C17.3159 14.9371 17.26 15.2266 17.1494 15.5361C17.017 15.9067 16.656 16.221 16.3105 16.4414C15.9587 16.6658 15.5562 16.8345 15.2705 16.8769C14.8214 16.9438 14.2377 16.9732 13.5928 16.7695C13.1029 16.6181 12.6208 16.4411 12.1494 16.2392C9.58034 15.135 7.90979 12.5702 7.79785 12.4199C7.73433 12.3348 7.46927 11.9851 7.2207 11.498C6.974 11.0146 6.73145 10.3744 6.73145 9.70897C6.73145 8.38644 7.43985 7.72289 7.66895 7.47362C7.77428 7.35534 7.90238 7.25945 8.0459 7.19237C8.19117 7.12452 8.34948 7.08717 8.50977 7.08299H8.51562ZM7.23145 9.70897C7.23145 10.2611 7.43559 10.8189 7.66602 11.2705C7.89468 11.7185 8.13855 12.0411 8.19824 12.1211C8.334 12.3031 9.92506 14.7394 12.3467 15.7803L12.6904 15.9219C12.9205 16.0133 13.1531 16.0984 13.3877 16.1777L13.7412 16.292L13.7422 16.293C14.2887 16.4657 14.7895 16.4426 15.1973 16.3818C15.3896 16.3532 15.7243 16.2224 16.041 16.0205C16.364 15.8145 16.6044 15.5759 16.6787 15.3681C16.7748 15.0993 16.8215 14.8512 16.8379 14.6631C16.8461 14.569 16.8459 14.4936 16.8418 14.4404C16.8403 14.421 16.8374 14.4073 16.8359 14.3984C16.8256 14.3905 16.806 14.3768 16.7705 14.3574C16.6949 14.3161 16.6091 14.2776 16.4707 14.209C16.3475 14.1475 15.9797 13.9671 15.6152 13.792C15.2428 13.6131 14.8945 13.4499 14.7959 13.414C14.7405 13.3939 14.6993 13.381 14.665 13.373C14.6322 13.3654 14.6153 13.3654 14.6074 13.3662C14.6028 13.3667 14.5987 13.3675 14.5908 13.373C14.5805 13.3802 14.5595 13.3986 14.5303 13.4424C14.3537 13.707 13.8628 14.2768 13.7227 14.4385C13.6258 14.5502 13.5006 14.6434 13.332 14.6631C13.1747 14.6814 13.0235 14.6293 12.8838 14.5596C12.66 14.4479 11.8109 14.1663 10.8281 13.2939C10.059 12.6112 9.54407 11.7739 9.39453 11.5185C9.29197 11.3434 9.26805 11.1687 9.3291 11.0049C9.38129 10.8652 9.48723 10.7641 9.54297 10.709L9.70898 10.5224C9.76828 10.451 9.832 10.3717 9.90234 10.29C10.0019 10.1744 10.029 10.1041 10.1172 9.92772C10.1362 9.88966 10.1385 9.86034 10.1357 9.83397C10.1325 9.80326 10.1208 9.76588 10.0967 9.71776C10.0602 9.64492 9.91452 9.29605 9.75977 8.92186C9.60126 8.5386 9.42563 8.11077 9.32227 7.86327C9.23256 7.64912 9.16404 7.6099 9.14844 7.60253C9.13894 7.59806 9.12658 7.59509 9.10254 7.59374C9.08938 7.593 9.07527 7.59264 9.05469 7.59276C9.03649 7.59287 9.00804 7.59315 8.98047 7.59178C8.84336 7.58505 8.68314 7.58303 8.52148 7.58299C8.43027 7.58552 8.34049 7.60688 8.25781 7.64549C8.17485 7.68426 8.10063 7.73991 8.04004 7.80858L8.03711 7.81249C7.80992 8.05967 7.23145 8.59587 7.23145 9.70897Z\" fill=\"currentColor\"/>`, filled: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.0861 4.90628C18.1616 3.98131 17.0633 3.24834 15.8543 2.74956C14.6454 2.25079 13.3497 1.99605 12.0419 2.00003C6.55356 2.00003 2.08571 6.44556 2.08348 11.9107C2.08105 13.651 2.53977 15.3608 3.41294 16.8661L2 22L7.27901 20.6219C8.74026 21.4135 10.376 21.8278 12.0379 21.8272H12.0419C17.5299 21.8272 21.9973 17.3813 22 11.9165C22.0033 10.6132 21.7474 9.32225 21.2472 8.11874C20.7469 6.91524 20.0123 5.82324 19.0861 4.90628ZM12.0419 20.1545H12.0384C10.5569 20.1549 9.10227 19.7584 7.82588 19.0063L7.52365 18.8277L4.39107 19.6455L5.22723 16.6058L5.03035 16.2933C4.20195 14.9818 3.76305 13.462 3.76473 11.9107C3.76473 7.36922 7.47946 3.67414 12.0451 3.67414C14.2352 3.67023 16.3373 4.53643 17.8889 6.08222C19.4404 7.62802 20.3145 9.72681 20.3187 11.917C20.3169 16.4589 16.604 20.1545 12.0419 20.1545ZM16.5817 13.9853C16.333 13.8612 15.1085 13.2621 14.8817 13.1795C14.6549 13.0969 14.4875 13.0554 14.3219 13.3036C14.1562 13.5518 13.679 14.1072 13.5339 14.2746C13.3888 14.442 13.2437 14.4603 12.9951 14.3362C12.7464 14.2121 11.9442 13.9509 10.9937 13.1072C10.254 12.4505 9.7549 11.6397 9.60981 11.392C9.46472 11.1442 9.59418 11.0098 9.71874 10.8866C9.83079 10.7755 9.9674 10.5973 10.092 10.4527C10.2165 10.3081 10.258 10.2045 10.3406 10.0393C10.4232 9.87413 10.3821 9.72948 10.3201 9.60582C10.258 9.48216 9.76025 8.26297 9.55311 7.76699C9.35088 7.28395 9.14597 7.34958 8.99329 7.34199C8.8482 7.33485 8.68079 7.33306 8.51606 7.33306C8.39013 7.33634 8.26622 7.36554 8.15208 7.41885C8.03794 7.47216 7.93602 7.54842 7.85267 7.64288C7.62454 7.89109 6.98169 8.49109 6.98169 9.70895C6.98169 10.9268 7.87454 12.1054 7.99776 12.2706C8.12097 12.4357 9.75222 14.9371 12.2482 16.0098C12.7117 16.2083 13.1852 16.3824 13.6669 16.5313C14.2629 16.7197 14.8053 16.6933 15.2339 16.6295C15.712 16.5585 16.7071 16.0304 16.9138 15.4518C17.1205 14.8732 17.121 14.3777 17.0589 14.2746C16.9969 14.1714 16.8308 14.1089 16.5817 13.9853Z\" fill=\"currentColor\"/><path d=\"M12.041 1.75096C13.3816 1.74689 14.7099 2.00729 15.9492 2.51854C17.1881 3.02969 18.3141 3.78075 19.2617 4.7285C20.2113 5.66867 20.9646 6.78852 21.4775 8.02245C21.9905 9.2565 22.2534 10.5806 22.25 11.917L22.2363 12.4385C21.96 17.8006 17.4913 22.0771 12.042 22.0771H12.0381C10.368 22.0777 8.7243 21.6683 7.24902 20.8877L1.64355 22.3515L3.14453 16.8984C2.28368 15.3775 1.83057 13.659 1.83301 11.9101C1.83556 6.30642 6.41624 1.75147 12.041 1.75096ZM12.042 2.24999C6.69059 2.24999 2.33518 6.58503 2.33301 11.9111C2.33065 13.607 2.77807 15.2732 3.62891 16.7402L3.68164 16.831L3.6543 16.9326L2.35547 21.6474L7.21582 20.3799L7.31152 20.3555L7.39844 20.4023C8.82301 21.174 10.4179 21.5777 12.0381 21.5771H12.042C17.3929 21.5771 21.7474 17.2417 21.75 11.916L21.7393 11.4404C21.687 10.3327 21.4431 9.24108 21.0166 8.21483C20.5291 7.04194 19.8128 5.97761 18.9102 5.08397L18.9092 5.08299C18.008 4.18138 16.9372 3.46664 15.7588 2.98045C14.5805 2.49435 13.3166 2.24614 12.042 2.24999ZM12.4668 3.43358C14.5698 3.53419 16.5669 4.41227 18.0654 5.90526C19.6639 7.49783 20.564 9.66057 20.5684 11.917L20.5576 12.3535C20.327 16.8324 16.5941 20.4043 12.042 20.4043H12.0381C10.5121 20.4047 9.01393 19.9964 7.69922 19.2217L7.48535 19.0957L4.03516 19.9971L4.95605 16.6455L4.81836 16.4267C3.9651 15.0754 3.51292 13.5083 3.51465 11.9101C3.51497 7.22963 7.34275 3.4239 12.0449 3.42381L12.4668 3.43358ZM12.0449 3.92381C7.61619 3.9239 4.01465 7.50898 4.01465 11.9111C4.01315 13.321 4.38726 14.7039 5.0957 15.9189L5.24219 16.1601L5.43848 16.4726L5.49707 16.5654L5.46875 16.6719L4.74609 19.2939L7.46094 18.5859L7.56152 18.5596L7.65039 18.6123L7.95312 18.791L8.18652 18.9238C9.36676 19.5672 10.691 19.9046 12.0381 19.9043H12.042C16.4667 19.9043 20.066 16.3204 20.0684 11.918L20.0586 11.5205C19.9566 9.54155 19.1232 7.66505 17.7129 6.25975C16.2084 4.76084 14.1687 3.92012 12.0449 3.92381ZM8.51562 7.08299L9.00586 7.09276L9.13086 7.09374C9.19841 7.09895 9.28381 7.11395 9.36133 7.15038C9.53695 7.2331 9.6721 7.40319 9.78418 7.67088C9.88796 7.91939 10.0641 8.34942 10.2217 8.73045C10.383 9.12048 10.5183 9.44303 10.5439 9.49413C10.6218 9.64947 10.6978 9.88457 10.5645 10.1514C10.4875 10.3053 10.4308 10.4426 10.2812 10.6162C10.1731 10.7418 10.015 10.945 9.89453 11.0644C9.86296 11.0957 9.84078 11.118 9.82324 11.1396C9.80664 11.1601 9.80033 11.1732 9.79785 11.1797C9.79634 11.1837 9.795 11.1873 9.7959 11.1943C9.7971 11.2034 9.80222 11.2263 9.8252 11.2656C9.96611 11.5063 10.4501 12.2896 11.1602 12.9199C12.0779 13.7346 12.8326 13.9757 13.1064 14.1123C13.2152 14.1666 13.2609 14.1676 13.2744 14.166C13.2773 14.1657 13.2976 14.1656 13.3447 14.1113C13.4948 13.9382 13.9596 13.3969 14.1143 13.165C14.2244 13 14.3656 12.8902 14.5508 12.8691C14.7084 12.8513 14.8605 12.9056 14.9668 12.9443C15.095 12.991 15.4734 13.1695 15.832 13.3418C16.1983 13.5177 16.5677 13.699 16.6934 13.7617C16.8041 13.8167 16.9255 13.8714 17.0107 13.918C17.096 13.9646 17.2056 14.0328 17.2734 14.1455C17.3216 14.2256 17.3351 14.3285 17.3408 14.4014C17.3476 14.4881 17.3459 14.5923 17.3359 14.707C17.3159 14.9371 17.26 15.2266 17.1494 15.5361C17.017 15.9067 16.656 16.221 16.3105 16.4414C15.9587 16.6658 15.5562 16.8345 15.2705 16.8769C14.8214 16.9438 14.2377 16.9732 13.5928 16.7695C13.1029 16.6181 12.6208 16.4411 12.1494 16.2392C9.58034 15.135 7.90979 12.5702 7.79785 12.4199C7.73433 12.3348 7.46927 11.9851 7.2207 11.498C6.974 11.0146 6.73145 10.3744 6.73145 9.70897C6.73145 8.38644 7.43985 7.72289 7.66895 7.47362C7.77428 7.35534 7.90238 7.25945 8.0459 7.19237C8.19117 7.12452 8.34948 7.08717 8.50977 7.08299H8.51562ZM7.23145 9.70897C7.23145 10.2611 7.43559 10.8189 7.66602 11.2705C7.89468 11.7185 8.13855 12.0411 8.19824 12.1211C8.334 12.3031 9.92506 14.7394 12.3467 15.7803L12.6904 15.9219C12.9205 16.0133 13.1531 16.0984 13.3877 16.1777L13.7412 16.292L13.7422 16.293C14.2887 16.4657 14.7895 16.4426 15.1973 16.3818C15.3896 16.3532 15.7243 16.2224 16.041 16.0205C16.364 15.8145 16.6044 15.5759 16.6787 15.3681C16.7748 15.0993 16.8215 14.8512 16.8379 14.6631C16.8461 14.569 16.8459 14.4936 16.8418 14.4404C16.8403 14.421 16.8374 14.4073 16.8359 14.3984C16.8256 14.3905 16.806 14.3768 16.7705 14.3574C16.6949 14.3161 16.6091 14.2776 16.4707 14.209C16.3475 14.1475 15.9797 13.9671 15.6152 13.792C15.2428 13.6131 14.8945 13.4499 14.7959 13.414C14.7405 13.3939 14.6993 13.381 14.665 13.373C14.6322 13.3654 14.6153 13.3654 14.6074 13.3662C14.6028 13.3667 14.5987 13.3675 14.5908 13.373C14.5805 13.3802 14.5595 13.3986 14.5303 13.4424C14.3537 13.707 13.8628 14.2768 13.7227 14.4385C13.6258 14.5502 13.5006 14.6434 13.332 14.6631C13.1747 14.6814 13.0235 14.6293 12.8838 14.5596C12.66 14.4479 11.8109 14.1663 10.8281 13.2939C10.059 12.6112 9.54407 11.7739 9.39453 11.5185C9.29197 11.3434 9.26805 11.1687 9.3291 11.0049C9.38129 10.8652 9.48723 10.7641 9.54297 10.709L9.70898 10.5224C9.76828 10.451 9.832 10.3717 9.90234 10.29C10.0019 10.1744 10.029 10.1041 10.1172 9.92772C10.1362 9.88966 10.1385 9.86034 10.1357 9.83397C10.1325 9.80326 10.1208 9.76588 10.0967 9.71776C10.0602 9.64492 9.91452 9.29605 9.75977 8.92186C9.60126 8.5386 9.42563 8.11077 9.32227 7.86327C9.23256 7.64912 9.16404 7.6099 9.14844 7.60253C9.13894 7.59806 9.12658 7.59509 9.10254 7.59374C9.08938 7.593 9.07527 7.59264 9.05469 7.59276C9.03649 7.59287 9.00804 7.59315 8.98047 7.59178C8.84336 7.58505 8.68314 7.58303 8.52148 7.58299C8.43027 7.58552 8.34049 7.60688 8.25781 7.64549C8.17485 7.68426 8.10063 7.73991 8.04004 7.80858L8.03711 7.81249C7.80992 8.05967 7.23145 8.59587 7.23145 9.70897Z\" fill=\"currentColor\"/>` },\r\n    workflow: { outlined: `<path d=\"M11.5461 9.72634C10.8604 9.5493 10.2629 9.1283 9.86547 8.54222C9.46805 7.95615 9.29801 7.24524 9.38724 6.54277C9.47646 5.84029 9.81882 5.19447 10.3502 4.72637C10.8815 4.25826 11.5653 4 12.2734 4C12.9815 4 13.6653 4.25826 14.1967 4.72637C14.728 5.19447 15.0704 5.84029 15.1596 6.54277C15.2488 7.24524 15.0788 7.95615 14.6813 8.54222C14.2839 9.1283 13.6864 9.5493 13.0007 9.72634V11.2727H15.9101C16.2959 11.2727 16.6659 11.4259 16.9387 11.6987C17.2115 11.9715 17.3648 12.3415 17.3648 12.7273V14.2737C18.0504 14.4507 18.648 14.8717 19.0454 15.4578C19.4428 16.0439 19.6128 16.7548 19.5236 17.4572C19.4344 18.1597 19.092 18.8055 18.5607 19.2736C18.0294 19.7417 17.3456 20 16.6374 20C15.9293 20 15.2455 19.7417 14.7142 19.2736C14.1829 18.8055 13.8405 18.1597 13.7513 17.4572C13.662 16.7548 13.8321 16.0439 14.2295 15.4578C14.6269 14.8717 15.2245 14.4507 15.9101 14.2737V12.7273H8.63671V14.2737C9.32234 14.4507 9.91987 14.8717 10.3173 15.4578C10.7147 16.0439 10.8848 16.7548 10.7955 17.4572C10.7063 18.1597 10.3639 18.8055 9.83262 19.2736C9.3013 19.7417 8.61749 20 7.90937 20C7.20125 20 6.51744 19.7417 5.98611 19.2736C5.45478 18.8055 5.11242 18.1597 5.0232 17.4572C4.93397 16.7548 5.10401 16.0439 5.50143 15.4578C5.89886 14.8717 6.49639 14.4507 7.18203 14.2737V12.7273C7.18203 12.3415 7.33529 11.9715 7.60809 11.6987C7.8809 11.4259 8.2509 11.2727 8.63671 11.2727H11.5461V9.72634ZM12.2734 8.3633C12.6592 8.3633 13.0292 8.21004 13.302 7.93723C13.5748 7.66443 13.7281 7.29443 13.7281 6.90862C13.7281 6.52282 13.5748 6.15281 13.302 5.88001C13.0292 5.6072 12.6592 5.45394 12.2734 5.45394C11.8876 5.45394 11.5176 5.6072 11.2448 5.88001C10.972 6.15281 10.8187 6.52282 10.8187 6.90862C10.8187 7.29443 10.972 7.66443 11.2448 7.93723C11.5176 8.21004 11.8876 8.3633 12.2734 8.3633ZM7.90937 18.5461C8.29517 18.5461 8.66518 18.3928 8.93798 18.12C9.21079 17.8472 9.36405 17.4772 9.36405 17.0914C9.36405 16.7056 9.21079 16.3356 8.93798 16.0628C8.66518 15.79 8.29517 15.6367 7.90937 15.6367C7.52356 15.6367 7.15356 15.79 6.88075 16.0628C6.60795 16.3356 6.45469 16.7056 6.45469 17.0914C6.45469 17.4772 6.60795 17.8472 6.88075 18.12C7.15356 18.3928 7.52356 18.5461 7.90937 18.5461ZM15.1828 17.0914C15.1828 17.4772 15.336 17.8472 15.6088 18.12C15.8816 18.3928 16.2516 18.5461 16.6374 18.5461C17.0233 18.5461 17.3933 18.3928 17.6661 18.12C17.9389 17.8472 18.0921 17.4772 18.0921 17.0914C18.0921 16.7056 17.9389 16.3356 17.6661 16.0628C17.3933 15.79 17.0233 15.6367 16.6374 15.6367C16.2516 15.6367 15.8816 15.79 15.6088 16.0628C15.336 16.3356 15.1828 16.7056 15.1828 17.0914Z\" fill=\"currentColor\"/>`, filled: `<path d=\"M11.5461 9.72634C10.8604 9.5493 10.2629 9.1283 9.86547 8.54222C9.46805 7.95615 9.29801 7.24524 9.38724 6.54277C9.47646 5.84029 9.81882 5.19447 10.3502 4.72637C10.8815 4.25826 11.5653 4 12.2734 4C12.9815 4 13.6653 4.25826 14.1967 4.72637C14.728 5.19447 15.0704 5.84029 15.1596 6.54277C15.2488 7.24524 15.0788 7.95615 14.6813 8.54222C14.2839 9.1283 13.6864 9.5493 13.0007 9.72634V11.2727H15.9101C16.2959 11.2727 16.6659 11.4259 16.9387 11.6987C17.2115 11.9715 17.3648 12.3415 17.3648 12.7273V14.2737C18.0504 14.4507 18.648 14.8717 19.0454 15.4578C19.4428 16.0439 19.6128 16.7548 19.5236 17.4572C19.4344 18.1597 19.092 18.8055 18.5607 19.2736C18.0294 19.7417 17.3456 20 16.6374 20C15.9293 20 15.2455 19.7417 14.7142 19.2736C14.1829 18.8055 13.8405 18.1597 13.7513 17.4572C13.662 16.7548 13.8321 16.0439 14.2295 15.4578C14.6269 14.8717 15.2245 14.4507 15.9101 14.2737V12.7273H8.63671V14.2737C9.32234 14.4507 9.91987 14.8717 10.3173 15.4578C10.7147 16.0439 10.8848 16.7548 10.7955 17.4572C10.7063 18.1597 10.3639 18.8055 9.83262 19.2736C9.3013 19.7417 8.61749 20 7.90937 20C7.20125 20 6.51744 19.7417 5.98611 19.2736C5.45478 18.8055 5.11242 18.1597 5.0232 17.4572C4.93397 16.7548 5.10401 16.0439 5.50143 15.4578C5.89886 14.8717 6.49639 14.4507 7.18203 14.2737V12.7273C7.18203 12.3415 7.33529 11.9715 7.60809 11.6987C7.8809 11.4259 8.2509 11.2727 8.63671 11.2727H11.5461V9.72634Z\" fill=\"currentColor\"/>` },\r\n};\r\n\r\n// ── Helpers ───────────────────────────────────────────────────────────\r\n\r\nexport function isFigmaIcon(name: string | null | undefined): boolean {\r\n    return !!name && name in FIGMA_ICONS;\r\n}\r\n\r\nexport function getFigmaIconSvg(\r\n    name: string | null | undefined,\r\n    filled: boolean,\r\n): string | null {\r\n    if (!name) return null;\r\n    const styles = FIGMA_ICONS[name];\r\n    if (!styles) return null;\r\n    const body = filled ? (styles.filled ?? styles.outlined) : (styles.outlined ?? styles.filled);\r\n    if (!body) return null;\r\n    return `<svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">${body}</svg>`;\r\n}\r\n\r\nexport function getFigmaIconStyles(\r\n    name: string | null | undefined,\r\n): { outlined: boolean; filled: boolean } {\r\n    const styles = name ? FIGMA_ICONS[name] : undefined;\r\n    if (!styles) return { outlined: true, filled: true };\r\n    return { outlined: !!styles.outlined, filled: !!styles.filled };\r\n}\r\n\r\nexport const FIGMA_ICON_NAMES: readonly string[] = Object.freeze(Object.keys(FIGMA_ICONS).sort());\r\n","// =============================================================================\r\n// legacy-icon-map.ts — Backward-compat: nomes antigos → canônicos do Figma\r\n// =============================================================================\r\n// Antes da migração Figma-only, o componente aceitava nomes do Material Symbols\r\n// (snake_case ligatures) e do legado IcoMoon (`action_*`, `*-out`, etc).\r\n// Agora a SoT é o `figma-icons.ts` (kebab-case dos component sets do Figma).\r\n//\r\n// Esse mapa traduz os nomes legacy pros canônicos pra que componentes internos\r\n// e código do app continuem funcionando sem migração imediata.\r\n//\r\n// USO (via icon.component.ts):\r\n//   <matcha-icon name=\"action_close\" />     → renderiza `close` do Figma\r\n//   <matcha-icon name=\"more_horiz\" />       → renderiza `more` do Figma\r\n//   <matcha-icon name=\"action_arrow_down\"/> → renderiza `arrow-down`\r\n//\r\n// O alvo é sempre um nome ÚNICO — desde o achatamento do `variant`, a variante\r\n// semântica faz parte do nome (`chevron-down`, não `chevron` + variant=down).\r\n//\r\n// Quando um nome legacy não tem equivalente no Figma, ele NÃO entra aqui: o\r\n// componente warna em dev mode e o ícone renderiza vazio, sinalizando que o\r\n// desenho precisa ser adicionado. Apontar pro \"mais parecido\" mascara a perda\r\n// — foi o que aconteceu com `check-out` (ver nota no fim do arquivo).\r\n// =============================================================================\r\n\r\nexport const LEGACY_ICON_NAME_MAP: Record<string, string> = {\r\n    // ── Action prefix (legacy IcoMoon do antigo matcha-icons) ──────────────\r\n    'action_arrow_up':            'arrow-up',\r\n    'action_arrow_down':          'arrow-down',\r\n    'action_arrow_left':          'arrow-left',\r\n    'action_arrow_right':         'arrow-right',\r\n    'action_check':               'check-circle',\r\n    'action_close':               'close',\r\n    'action_copy':                'copy-text',\r\n    'action_done':                'check-circle',\r\n    'action_file':                'content',\r\n    'action_gallery':             'gallery',\r\n    'action_options':             'more',\r\n    'action_plus':                'add',\r\n    // Aqui o `-out` É outline (de `action_sign_check`) — não confundir com o\r\n    // `check-out` do par check-in/check-out. Ver nota no fim do arquivo.\r\n    'action_sign_check-out':      'check-circle',\r\n    // `warning` no Figma DSV3 está com desenho errado (charity hand+heart).\r\n    // Aponta direto pro canônico messaging+variant pra não depender de chain\r\n    // (resolveLegacyName faz só 1 hop) e bypassar o glyph quebrado.\r\n    'action_sign_error':          'messaging-error',\r\n    'action_sign_info-out':       'info',\r\n    'action_sign_success':        'check-circle',\r\n    'action_sign_warning':        'messaging-alert',\r\n    'action_sign_warning-out':    'messaging-alert',\r\n    'action_upload':              'upload',\r\n\r\n    // ── *-out suffix (legacy IcoMoon) ──────────────────────────────────────\r\n    'bell-out':                   'notification',\r\n    'bell':                       'notification',\r\n    'circle-info':                'info',\r\n    'copy-out':                   'copy-text',\r\n    'delete-out':                 'delete',\r\n    'edit-out':                   'edit',\r\n    'flow-out':                   'hierarchy',\r\n    'heart-out':                  'heart',\r\n    'home-out':                   'home',\r\n    'info-out':                   'info',\r\n    'lightbulb-out':              'idea',\r\n    'message-out':                'messaging-check',\r\n    'visibility-on-out':          'visibility-on',\r\n    'circle-code':                'code',\r\n    'profile-out':                'profile',\r\n    'id-card-out':                'id',\r\n    'id-card':                    'id',\r\n\r\n    // ── Material Symbols ligatures (snake_case) ────────────────────────────\r\n    'arrow_back':                 'arrow-left',\r\n    'arrow_downward':             'arrow-down',\r\n    'arrow_forward':              'arrow-right',\r\n    'arrow_upward':               'arrow-up',\r\n    'arrow_drop_down':            'drop-down',\r\n    'arrow_drop_up':              'drop-up',\r\n    'arrow_left':                 'drop-left',\r\n    'arrow_right':                'drop-right',\r\n    'check_circle':               'check-circle',\r\n    'chevron_left':               'chevron-left',\r\n    'chevron_right':              'chevron-right',\r\n    'content_copy':               'copy-text',\r\n    'expand_less':                'unfold-less',\r\n    'expand_more':                'unfold-more',\r\n    'keyboard_arrow_down':        'chevron-down',\r\n    'keyboard_arrow_up':          'chevron-up',\r\n    'more_horiz':                 'more',\r\n    'open_in_new':                'link',\r\n    'unfold_less':                'unfold-less',\r\n    'unfold_more':                'unfold-more',\r\n\r\n    // ── Nomes em pt-BR que vazaram pra API pública (renomeados no Figma) ───\r\n    'local-celula':               'cell-location',\r\n    'local':                      'location',\r\n    'ia':                         'ai',\r\n    'resumes':                    'summary',\r\n    'xmission':                   'broadcast',\r\n\r\n    // ── Outros aliases legacy ──────────────────────────────────────────────\r\n    'plus':                       'add',\r\n    'user':                       'profile',\r\n    'list':                       'view-list',\r\n    'tune':                       'preferences',\r\n    'lightbulb':                  'idea',\r\n    'download':                   'downloads',\r\n    'edit-image':                 'gallery',\r\n    'resize':                     'fullscreen',\r\n    'shield-lock':                'lock',\r\n    // ── Common Material Symbols + IcoMoon names que agentes assumem ─────\r\n    // Documentado em painel-dsv3-migration-playbook §4: sem esses aliases,\r\n    // o ícone renderiza em branco silenciosamente (agora warna em dev mode).\r\n    'refresh':                    'reload',\r\n    'external-link':              'link',\r\n    'event':                      'events',\r\n    'historic':                   'history',\r\n    'account_balance_wallet':     'wallet',\r\n    // `warning` no Figma DSV3 está com desenho errado (charity hand+heart). O\r\n    // canônico de aviso é messaging variant=alerta. Redireciona pra evitar que\r\n    // consumidores rendam o desenho errado, mantendo backward-compat com nome `warning`.\r\n    'warning':                    'messaging-alert',\r\n    'error':                      'messaging-error',\r\n    'brightness_6':                'dark-mode',\r\n    'contrast':                    'dark-mode',\r\n\r\n    // ── Aproximações pra slider demos / sem equivalente exato no Figma ─────\r\n    'action_crop':                'crop',                 // ✓ adicionado ao Figma (matcha/icon/crop)\r\n    'attach_money':               'finance',              // slider demo\r\n    'group-demo':                 'group',                // radio page demo\r\n    'inventory':                  'archive',              // slider demo\r\n    'straighten':                 'preferences',          // slider demo\r\n    'volume_off':                 'notification',         // slider demo\r\n\r\n    // ── Auditoria canon-icon (control-panel-v2, 2026-07) ───────────────────\r\n    // Nomes legacy que o painel usa mas faltavam aqui → renderizavam vazio\r\n    // silenciosamente (incl. títulos/ações de toolbar). Cada alvo é um símbolo\r\n    // REAL do figma-icons.ts (validado). Cobre 197 usos do painel.\r\n    'action_get_down':            'downloads',\r\n    'action_get_up':              'upload',\r\n    'action_reload':              'reload',\r\n    'filter-out':                 'filter',\r\n    'settings-out':               'settings',\r\n    'church-out':                 'church',\r\n    'receipt-out':                'receipt',\r\n    'prayer-out':                 'prayer',\r\n    'events-out':                 'events',\r\n    'reading-plan-out':           'reading-plan',\r\n    'radio-out':                  'radio',\r\n    'notification-out':           'notification',\r\n    'clock-out':                  'clock',\r\n    'reports-out':                'reports',\r\n    'news-out':                   'news',\r\n    'trophy-out':                 'trophy',\r\n    'print-out':                  'print',\r\n    'mykids-out':                 'mykids',\r\n    'leadership-out':             'leadership',\r\n    'warning-out':                'messaging-alert',\r\n    'groups':                     'group',\r\n    // ── Auditoria canon-icon — rodada 2 (control-panel-v2, 2026-07): títulos + cards ──\r\n    // 25 nomes legacy restantes (títulos de toolbar e ícones de exibição em card)\r\n    // que ainda renderizavam vazio. Alvos validados no figma-icons.ts.\r\n    'about-out':                  'info',\r\n    'add_circle_outline':         'add',\r\n    'remove_circle_outline':      'minus',\r\n    'agenda':                     'schedule',\r\n    'cell':                       'cells',\r\n    'cell-out':                   'cells',\r\n    'cookie':                     'cookies',\r\n    'export':                     'file-export',\r\n    'favorite-out':               'heart',\r\n    'folder-opened':              'folder',\r\n    'location-cell-out':          'cell-location',\r\n    'new-note-out1':              'create-note',\r\n    'notes-out':                  'create-note',\r\n    'payment-card':               'credit-card',\r\n    'payment-bank-slip':          'boleto',\r\n    'payment-pix':                'pix',\r\n    'star':                       'rating',\r\n    'success':                    'check-circle',\r\n    'web-out':                    'globe',\r\n    'cash-out':                   'finance',\r\n    'live-out':                   'broadcast',\r\n    'tv-out':                     'cast',\r\n    'push-out':                   'notification',\r\n    'video-out':                  'media',\r\n    'page-out':                   'content',\r\n    // ── Auditoria canon-icon — rodada 3 (control-panel-v2, 2026-07): bindings dinâmicos + tabs ──\r\n    // Nomes legacy em [name]/[icon] dinâmicos (ex.: toggle lista/grid) e em <matcha-tab icon>\r\n    // que renderizavam vazio. grid-out cobre 34 telas (toggle de visualização). Alvos validados.\r\n    'grid-out':                   'cards',\r\n    'contact-out':                'contact',\r\n    'note-out':                   'create-note',\r\n    'graph':                      'reports',\r\n    'calendar-out':               'schedule',\r\n    'star-out':                   'rating',\r\n    'management':                 'manage',\r\n    'upload-out':                 'upload',\r\n    'menu-out':                   'menu',\r\n    'opened-lock':                'lock',\r\n\r\n    // ── Auditoria canon-icon — rodada 4 (control-panel-v2, 2026-07): cards de perfil ──\r\n    // Nomes legacy em cards de dado do membro (Idade/Estado civil/Batizado/Pastor) que\r\n    // renderizavam vazio — cobre member-profile e commemorative-dates. `hand-heart`\r\n    // não tem desenho no Figma; redireciona pro `heart` (equivalente disponível mais\r\n    // próximo) até existir um símbolo dedicado de estado civil.\r\n    'celebrate-out':              'celebrate',\r\n    'bible-out':                  'bible',\r\n    'counseling-out':             'counseling',\r\n    'hand-heart-out':             'heart',\r\n};\r\n\r\n// ── Nota: `check-out` NÃO tem alias, de propósito ────────────────────────────\r\n// Havia `'check-out': { name: 'check' }`, escrito numa auditoria que tratou\r\n// `-out` como sufixo de outline em bloco. É falso positivo: no IcoMoon\r\n// `check-out` (3 paths) é o par pictográfico do `check-in` (3 paths, e sem\r\n// `check-in-out`), não o outline do `check` (1 path). O alias só mascarava a\r\n// perda de um desenho que faltava no Figma DSV3 — e desde `ac351989` o desenho\r\n// existe e é extraído normalmente, então `check-out` resolve sozinho. O alias\r\n// continua proibido: apontar pro `check` traria o pictograma errado de volta.\r\n\r\n/**\r\n * Resolve um nome possivelmente legacy pro canônico do Figma.\r\n * Se o nome não está no mapa, retorna null (deixa o componente tentar como-é).\r\n */\r\nexport function resolveLegacyName(name: string | null | undefined): string | null {\r\n    if (!name) return null;\r\n    return LEGACY_ICON_NAME_MAP[name.trim()] ?? null;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, inject, isDevMode } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { isFigmaIcon, getFigmaIconSvg } from './figma-icons';\r\nimport { resolveLegacyName } from './legacy-icon-map';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n// Dedup warning cache — evita spam em CD loops. Reseta entre reloads.\r\nconst WARNED_ICON_NAMES = new Set<string>();\r\n\r\n/**\r\n * Compoe o nome achatado a partir de um par name+variant legado.\r\n * Espelha `flattenName` de scripts/matcha-icons/extract-figma-icons.js — some\r\n * junto com o @Input `variant` no proximo release.\r\n */\r\nfunction flattenIconName(name: string, variant: string): string {\r\n    const firstToken = name.split('-')[0];\r\n    const slug = variant.startsWith(firstToken + '-')\r\n        ? variant.slice(firstToken.length + 1)\r\n        : variant;\r\n    return `${name}-${slug}`;\r\n}\r\n\r\nexport type MatchaIconLibrary = 'matcha' | 'symbols';\r\n/**\r\n * Canonico: `tiny | small | medium | large | huge` (regra DS-wide — abreviacoes\r\n * sao reservadas EXCLUSIVAMENTE pra breakpoint). `xs|sm|md|lg|xl` como VALOR de\r\n * size sao alias `@deprecated` — nao usar em codigo novo.\r\n */\r\nexport type MatchaIconSize = 'tiny' | 'small' | 'medium' | 'large' | 'huge' | (string & {}) | '' | null | undefined;\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-icon',\r\n    templateUrl: './icon.component.html',\r\n    styleUrls: ['./icon.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[attr.library]': 'library',\r\n        '[attr.size]': 'size || null',\r\n        '[attr.color]': 'color || null',\r\n        '[attr.filled]': 'filled ? \"\" : null',\r\n        '[attr.loading]': 'loading === true || loading === \"true\" ? \"\" : null',\r\n    }\r\n})\r\nexport class MatchaIconComponent {\r\n    /**\r\n     * Icon family.\r\n     * - `symbols` (default) — renderiza SVG inline do `figma-icons.ts` (gerado pelo\r\n     *   script `npm run extract-icons` a partir do Figma DSV3).\r\n     * - `matcha` — legacy matcha-icons font (459 glyphs, IcoMoon) — mantido pra\r\n     *   backward-compat enquanto componentes internos não migram.\r\n     */\r\n    @Input() library: MatchaIconLibrary = 'symbols';\r\n\r\n    @Input() name: string | undefined | null = '';\r\n    @Input() size: MatchaIconSize = '';\r\n    @Input() color: string | undefined | null = '';\r\n\r\n    /**\r\n     * @deprecated A variante agora faz parte do nome — use `name=\"chevron-down\"`\r\n     * em vez de `name=\"chevron\" variant=\"down\"`. Enquanto este input existir ele\r\n     * compoe o nome achatado e avisa em dev mode. Removido no proximo release.\r\n     */\r\n    @Input() variant: string | null | undefined = null;\r\n\r\n    /** Filled glyph. Mapeia pra variante `filled` do component set Figma. */\r\n    @Input() filled: boolean = false;\r\n\r\n    @Input() loading: boolean | string = false;\r\n\r\n    /** @deprecated — use host binding / host styles. Kept for legacy template consumers. */\r\n    @Input('class') extraClass: string | undefined | null = '';\r\n\r\n    /** Legacy class builder — only emits when library === 'matcha'. Symbols render via SVG inline. */\r\n    public get classes(): string {\r\n        if (this.library !== 'matcha') return this.extraClass ?? '';\r\n        const icon = this.name ? `i-matcha-${this.name}` : '';\r\n        const size = this.size ? `i-size-${this.size}` : '';\r\n        const color = this.color ? `color-${this.color}` : '';\r\n        const loading = this.loading === true || this.loading === 'true' ? 'loading' : '';\r\n        return `${icon} ${color} ${size} ${loading} ${this.extraClass ?? ''}`.trim();\r\n    }\r\n\r\n    private readonly sanitizer = inject(DomSanitizer);\r\n\r\n    /**\r\n     * SVG inline do Figma — primary render pro `library=\"symbols\"`.\r\n     * Resolve nomes legacy (snake_case do Material Symbols, *-out IcoMoon, etc)\r\n     * pros canônicos kebab-case do Figma antes de buscar.\r\n     *\r\n     * Em dev mode, emite `console.warn` (uma vez por nome) quando o lookup\r\n     * falha — evita o silent miss que faz o ícone sumir sem feedback.\r\n     */\r\n    get figmaSvg(): SafeHtml | null {\r\n        if (this.library !== 'symbols') return null;\r\n\r\n        // Nome vazio/null é legítimo (consumer ainda não populou) — não warna.\r\n        const original = this.name;\r\n        if (!original) return null;\r\n\r\n        // Resolve nome legacy → canônico\r\n        let name = resolveLegacyName(original) ?? original;\r\n\r\n        // `variant` esta deprecado: a variante virou parte do nome. Enquanto o\r\n        // input existe, compoe o nome achatado e diz qual usar no lugar.\r\n        if (this.variant) {\r\n            name = flattenIconName(name, this.variant);\r\n            this.warnDeprecatedVariant(original, this.variant, name);\r\n        }\r\n\r\n        const svg = isFigmaIcon(name) ? getFigmaIconSvg(name, this.filled) : null;\r\n        if (!svg) {\r\n            this.warnUnknownIcon(original, name);\r\n            return null;\r\n        }\r\n        return this.sanitizer.bypassSecurityTrustHtml(svg);\r\n    }\r\n\r\n    private warnUnknownIcon(name: string, resolvedName: string): void {\r\n        if (!this.shouldWarn(`unknown:${name}`)) return;\r\n        const resolvedNote = resolvedName !== name ? ` (resolved to \"${resolvedName}\")` : '';\r\n        console.warn(\r\n            `[matcha-icon] name=\"${name}\"${resolvedNote} not found in figma-icons. ` +\r\n            `Check available keys in matcha-icon/figma-icons.ts or add an alias to legacy-icon-map.ts.`\r\n        );\r\n    }\r\n\r\n    private warnDeprecatedVariant(name: string, variant: string, flattened: string): void {\r\n        if (!this.shouldWarn(`variant:${name}#${variant}`)) return;\r\n        console.warn(\r\n            `[matcha-icon] variant=\"${variant}\" is deprecated and will be removed. ` +\r\n            `Use name=\"${flattened}\" instead of name=\"${name}\" variant=\"${variant}\".`\r\n        );\r\n    }\r\n\r\n    /** Dedup por chave — um warn por nome, nao um por ciclo de CD. */\r\n    private shouldWarn(key: string): boolean {\r\n        if (!isDevMode() || WARNED_ICON_NAMES.has(key)) return false;\r\n        WARNED_ICON_NAMES.add(key);\r\n        return true;\r\n    }\r\n}\r\n","@if (library === 'symbols') {\r\n    <span class=\"matcha-icon-svg\" [innerHTML]=\"figmaSvg\"></span>\r\n} @else {\r\n    <span [class]=\"classes\">\r\n        <ng-content></ng-content>\r\n    </span>\r\n}\r\n","import { Directive, computed, forwardRef, inject } from '@angular/core';\r\nimport { MatchaChipComponent } from './chip/chip.component';\r\n\r\n/**\r\n * Directive pra botão × dentro do chip. Permite slot custom:\r\n *\r\n * ```html\r\n * <matcha-chip [removable]=\"true\">\r\n *   Tag custom\r\n *   <button matchaChipRemove><my-icon /></button>\r\n * </matcha-chip>\r\n * ```\r\n *\r\n * Default: matcha-chip já renderiza um botão padrão se removable=true e\r\n * nenhum custom slot for projetado.\r\n */\r\n@Directive({\r\n  selector: '[matchaChipRemove]',\r\n  standalone: true,\r\n  host: {\r\n    'aria-label': 'Remove',\r\n    '[attr.tabindex]': 'tabindex()',\r\n    '(click)': 'onClick($event)',\r\n    '(keydown.enter)': 'onKey($event)',\r\n    '(keydown.space)': 'onKey($event)',\r\n  },\r\n})\r\nexport class MatchaChipRemoveDirective {\r\n  // forwardRef quebra circular import (chip importa esta directive no template)\r\n  private chip = inject<MatchaChipComponent>(forwardRef(() => MatchaChipComponent));\r\n\r\n  /**\r\n   * Tab no botão × só quando o chip NÃO é interactive — caso contrário,\r\n   * foco vai pro chip todo (Backspace/Delete removem). Pattern WAI-ARIA M3.\r\n   */\r\n  tabindex = computed(() => {\r\n    if (this.chip.disabled()) return -1;\r\n    return this.chip.interactive() ? -1 : 0;\r\n  });\r\n\r\n  onClick(event: Event): void {\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n    if (!this.chip.disabled()) {\r\n      this.chip.remove();\r\n    }\r\n  }\r\n\r\n  onKey(event: KeyboardEvent): void {\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n    if (!this.chip.disabled()) {\r\n      this.chip.remove();\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  ChangeDetectionStrategy,\r\n  ElementRef,\r\n  HostListener,\r\n  InjectionToken,\r\n  booleanAttribute,\r\n  computed,\r\n  contentChildren,\r\n  inject,\r\n  input,\r\n  model,\r\n  output,\r\n} from '@angular/core';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaChipRemoveDirective } from '../chip-remove.directive';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaChipColor =\r\n  | 'basic'\r\n  | 'primary'\r\n  | 'accent'\r\n  | 'success'\r\n  | 'warn'\r\n  | 'danger'\r\n  | 'info';\r\n\r\nexport type MatchaChipVariant =\r\n  /** Bg sólido cor primária — canon padrão. */\r\n  | 'filled'\r\n  /** Border + texto cor; bg transparente. */\r\n  | 'outline'\r\n  /** Bg cor com alpha 10% + texto cor sólida — canon status pill (Publicado/Rascunho/Arquivado). */\r\n  | 'filled-alpha';\r\n\r\n/**\r\n * Contrato do chip-list disponibilizado via DI pros chips filhos.\r\n * Permite herdar interactive/disabled sem precisar mutar inputs externos\r\n * (signal inputs são read-only).\r\n */\r\nexport interface MatchaChipListContext {\r\n  interactive: () => boolean;\r\n  effectiveDisabled: () => boolean;\r\n}\r\n\r\nexport const MATCHA_CHIP_LIST = new InjectionToken<MatchaChipListContext>('MATCHA_CHIP_LIST');\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-chip',\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, MatchaChipRemoveDirective],\r\n  templateUrl: './chip.component.html',\r\n  styleUrls: ['./chip.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    '[attr.color]':         'color()',\r\n    '[attr.variant]':       'variant()',\r\n    '[attr.selected]':      'selected() ? \"\" : null',\r\n    '[attr.disabled]':      'effectiveDisabled() ? \"\" : null',\r\n    '[attr.interactive]':   'effectiveInteractive() ? \"\" : null',\r\n    '[attr.role]':          'effectiveInteractive() ? \"button\" : null',\r\n    '[attr.aria-pressed]':  'effectiveInteractive() ? (selected() ? \"true\" : \"false\") : null',\r\n    '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null',\r\n    '[attr.tabindex]':      'hostTabIndex()',\r\n  },\r\n})\r\nexport class MatchaChipComponent {\r\n  private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  private parentList = inject(MATCHA_CHIP_LIST, { optional: true });\r\n\r\n  /** Cor semântica. Default 'accent' (canônico Figma DSV3). */\r\n  // Default 'basic' e nao 'accent': o Off do accent na spec do Figma E o outline neutro,\r\n  // entao o default `accent` prometia uma cor e entregava o neutro — e deixava a cor accent\r\n  // INALCANCAVEL, porque pedir accent era pedir o default. Com 'basic' nomeando o neutro (o\r\n  // que ja era renderizado, logo zero mudanca visual), `color=\"accent\"` passa a valer de\r\n  // verdade: outline accent, e preenchido com variant=\"filled\". O fill do estado [selected]\r\n  // continua accent na regra base, como o Figma especifica.\r\n  color = input<MatchaChipColor>('basic');\r\n\r\n  /**\r\n   * Variante visual. Default 'filled' (canônico).\r\n   *  - filled: bg sólido cor\r\n   *  - outline: border + texto cor; bg transparente\r\n   *  - filled-alpha: bg cor alpha 10% + texto cor sólida — canon status pill\r\n   *    (Publicado/Rascunho/Arquivado) sem hack SCSS no consumer.\r\n   */\r\n  // Default 'outline' e nao 'filled': o filled da cor default (accent) nao existia no tema,\r\n  // entao o componente PROMETIA preenchido e entregava outline — a variante default era uma\r\n  // mentira de API. O tema ganhou o bloco de accent junto com esta mudanca, entao 'filled'\r\n  // passou a funcionar quando pedido, e o default continua renderizando o que sempre\r\n  // renderizou (zero mudanca visual em consumidor nenhum).\r\n  variant = input<MatchaChipVariant>('outline');\r\n\r\n  /** Ícone leading (matcha-icon name). Empty = sem ícone padrão. */\r\n  leadingIcon = input<string>('');\r\n\r\n  /**\r\n   * Torna o chip clicável: cursor pointer, role=button, aria-pressed,\r\n   * Space/Enter alternam selected. Default false = badge decorativo.\r\n   */\r\n  interactive = input(false, { transform: booleanAttribute });\r\n\r\n  /** Mostra divisor + botão × no final. */\r\n  removable = input(false, { transform: booleanAttribute });\r\n\r\n  /** Valor associado — usado por matcha-chip-list pra montar o array. */\r\n  value = input<unknown>(null);\r\n\r\n  /** Two-way [(selected)]. */\r\n  selected = model<boolean>(false);\r\n\r\n  /** Two-way [(disabled)]. */\r\n  disabled = model<boolean>(false);\r\n\r\n  /** Emit do novo valor de selected ao toggle interativo. Atalho ergonômico. */\r\n  toggle = output<boolean>();\r\n\r\n  /** Emit quando user clica × ou aperta Delete/Backspace. */\r\n  removed = output<MatchaChipComponent>();\r\n\r\n  // ── Custom slots detectados via contentChildren signal ─────────────────\r\n  customRemoves = contentChildren(MatchaChipRemoveDirective, { descendants: true });\r\n\r\n  // ── Estado efetivo (combina input próprio + parent chip-list via DI) ──\r\n  effectiveInteractive = computed(() =>\r\n    this.interactive() || (this.parentList?.interactive() ?? false)\r\n  );\r\n\r\n  effectiveDisabled = computed(() =>\r\n    this.disabled() || (this.parentList?.effectiveDisabled() ?? false)\r\n  );\r\n\r\n  /**\r\n   * Tab no host:\r\n   * - chip interactive: 0 (chip recebe foco, Backspace remove se removable)\r\n   * - chip só removable (não-interactive): null (foco vai pro botão × via directive)\r\n   * - chip decorativo: null\r\n   */\r\n  hostTabIndex = computed<string | null>(() => {\r\n    if (this.effectiveDisabled()) return null;\r\n    return this.effectiveInteractive() ? '0' : null;\r\n  });\r\n\r\n  /** Mostra o botão × default só se removable e nenhum slot custom foi projetado. */\r\n  showDefaultRemove = computed(() =>\r\n    this.removable() && this.customRemoves().length === 0\r\n  );\r\n\r\n  // ── Click & keyboard no host ───────────────────────────────────────────\r\n  @HostListener('click', ['$event'])\r\n  onHostClick(event: Event): void {\r\n    if (this.effectiveDisabled()) {\r\n      event.preventDefault();\r\n      return;\r\n    }\r\n    // Se a directive matchaChipRemove tratou o click, ela já fez stopPropagation.\r\n    // O event.defaultPrevented impede toggle indesejado.\r\n    if (this.effectiveInteractive() && !event.defaultPrevented) {\r\n      this.toggleSelected();\r\n    }\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onHostKeydown(event: KeyboardEvent): void {\r\n    if (this.effectiveDisabled()) return;\r\n\r\n    switch (event.key) {\r\n      case 'Delete':\r\n      case 'Backspace':\r\n        if (this.removable()) {\r\n          this.remove();\r\n          event.preventDefault();\r\n        }\r\n        break;\r\n      case ' ':\r\n      case 'Enter':\r\n        if (this.effectiveInteractive()) {\r\n          this.toggleSelected();\r\n          event.preventDefault();\r\n        }\r\n        break;\r\n    }\r\n  }\r\n\r\n  toggleSelected(): void {\r\n    if (!this.effectiveInteractive() || this.effectiveDisabled()) return;\r\n    const next = !this.selected();\r\n    this.selected.set(next);\r\n    this.toggle.emit(next);\r\n  }\r\n\r\n  remove(): void {\r\n    if (this.removable() && !this.effectiveDisabled()) {\r\n      this.removed.emit(this);\r\n    }\r\n  }\r\n\r\n  /** Foca o chip programaticamente (chip-list usa pra navegação por teclado). */\r\n  focus(): void {\r\n    this.elementRef.nativeElement.focus();\r\n  }\r\n}\r\n","<!--\r\n    Slot leading custom — projete um <ng-content matchaChipLeading> pra\r\n    avatar/imagem/ícone non-matcha. Combina ou substitui o leadingIcon prop.\r\n-->\r\n<ng-content select=\"[matchaChipLeading]\"></ng-content>\r\n\r\n@if (leadingIcon()) {\r\n    <matcha-icon class=\"matcha-chip-leading\"\r\n                 [name]=\"leadingIcon()\"\r\n                 size=\"sm\"\r\n                 aria-hidden=\"true\">\r\n    </matcha-icon>\r\n}\r\n\r\n<span class=\"matcha-chip-content\">\r\n    <ng-content></ng-content>\r\n</span>\r\n\r\n@if (removable()) {\r\n    <span class=\"matcha-chip-divider\" aria-hidden=\"true\"></span>\r\n\r\n    <!-- Slot pra botão remove custom -->\r\n    <ng-content select=\"[matchaChipRemove]\"></ng-content>\r\n\r\n    @if (showDefaultRemove()) {\r\n        <button type=\"button\"\r\n                class=\"matcha-chip-remove\"\r\n                matchaChipRemove>\r\n            <matcha-icon name=\"close\" size=\"sm\"></matcha-icon>\r\n        </button>\r\n    }\r\n}\r\n","import {\r\n    Component, ContentChildren, QueryList, ElementRef,\r\n    AfterContentInit, AfterViewInit, OnDestroy, ViewEncapsulation, ChangeDetectorRef,\r\n    Input, Output, EventEmitter, ViewChild, forwardRef, HostBinding,\r\n    ChangeDetectionStrategy, inject, DestroyRef, HostListener, isDevMode,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\r\nimport { MatchaChipComponent } from '../matcha-chip/chip/chip.component';\r\nimport { MatchaOptionParent, MATCHA_OPTION_PARENT } from '../matcha-option/matcha-option-parent.interface';\r\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\nimport { matchaNormalize } from '../matcha-validators/matcha-text-normalize';\r\n\r\n/**\r\n * Textos do select, em pt-BR. Ficam num lugar SO porque o matcha-field tambem os repassa —\r\n * duplicar a lista nos dois componentes seria garantir que um dia divergem.\r\n */\r\nexport const MATCHA_SELECT_TEXTS = {\r\n    countSuffix: 'selecionado',\r\n    countSuffixPlural: 'selecionados',\r\n    selectAllLabel: 'Selecionar todos',\r\n    deselectAllLabel: 'Desmarcar todos',\r\n    clearLabel: 'Limpar',\r\n    clearSelectionLabel: 'Limpar seleção',\r\n    clearSearchLabel: 'Limpar busca',\r\n    noResultsText: 'Nenhuma opção corresponde a \"{term}\"',\r\n    bulkActionsLabel: 'Ações em lote',\r\n} as const;\r\n\r\n/** Forma dos textos do select, para o consumidor sobrescrever o que precisar. */\r\nexport type MatchaSelectTexts = Partial<Record<keyof typeof MATCHA_SELECT_TEXTS, string>>;\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-select',\r\n    templateUrl: './matcha-select.component.html',\r\n    styleUrls: ['./matcha-select.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaPanelComponent, MatchaChipComponent],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [\r\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MatchaSelectComponent), multi: true },\r\n        { provide: MATCHA_OPTION_PARENT, useExisting: forwardRef(() => MatchaSelectComponent) },\r\n    ],\r\n})\r\nexport class MatchaSelectComponent implements AfterContentInit, AfterViewInit, OnDestroy, MatchaOptionParent, ControlValueAccessor {\r\n    /**\r\n     * Options via content projection direta (sem wrapper componente).\r\n     * `@ContentChildren` NÃO atravessa `<ng-content>` de wrapper, então pra\r\n     * casos via matcha-field as options se auto-registram via CustomEvent bubble\r\n     * em ngOnInit/ngOnDestroy. `options` combina ambos os caminhos.\r\n     */\r\n    @ContentChildren(MatchaOptionComponent, { descendants: true }) contentOptions!: QueryList<MatchaOptionComponent>;\r\n    @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\r\n\r\n    /** Options auto-registradas via DOM event (ordem de registro preservada). */\r\n    private registeredOptions: MatchaOptionComponent[] = [];\r\n\r\n    /** Notifica mudanças na lista unificada de options (registered ∪ contentOptions). */\r\n    private optionsChange$ = new Subject<void>();\r\n\r\n    /** Merge dedup: registered (prioridade) ∪ contentOptions. */\r\n    get options(): MatchaOptionComponent[] {\r\n        const seen = new Set<MatchaOptionComponent>();\r\n        const out: MatchaOptionComponent[] = [];\r\n        this.registeredOptions.forEach(o => { if (!seen.has(o)) { seen.add(o); out.push(o); } });\r\n        this.contentOptions?.forEach(o => { if (!seen.has(o)) { seen.add(o); out.push(o); } });\r\n        return out;\r\n    }\r\n\r\n    /**\r\n     * Registro DIRETO (sem DOM event) — chamado pelo matcha-field via forward de\r\n     * MATCHA_OPTION_PARENT. Necessário pq quando o panel está portalToBody, as\r\n     * options nascem dentro do panel no `<body>` e o CustomEvent bubble não chega\r\n     * mais no element do select.\r\n     */\r\n    registerOption(opt: MatchaOptionComponent): void {\r\n        if (this.isDestroyed || !opt || opt.isDestroyed || this.registeredOptions.includes(opt)) return;\r\n        this.registeredOptions.push(opt);\r\n        this.onOptionsListChanged();\r\n    }\r\n\r\n    unregisterOption(opt: MatchaOptionComponent): void {\r\n        if (this.isDestroyed) return;\r\n        const i = this.registeredOptions.indexOf(opt);\r\n        if (i < 0) return;\r\n        this.registeredOptions.splice(i, 1);\r\n        this.onOptionsListChanged();\r\n    }\r\n\r\n    /** Auto-register listeners — attached via addEventListener em vez de\r\n     *  @HostListener pra garantir que estão ativos ANTES do ngOnInit das options\r\n     *  projetadas (timing). */\r\n    private attachOptionRegisterListeners(): void {\r\n        const el = this.elRef.nativeElement as HTMLElement;\r\n        el.addEventListener('matcha-option-register', (evt: Event) => {\r\n            const ce = evt as CustomEvent;\r\n            const opt = ce.detail?.option as MatchaOptionComponent | undefined;\r\n            if (!opt || this.registeredOptions.includes(opt)) return;\r\n            this.registeredOptions.push(opt);\r\n            this.onOptionsListChanged();\r\n            evt.stopPropagation();\r\n        });\r\n        el.addEventListener('matcha-option-unregister', (evt: Event) => {\r\n            const ce = evt as CustomEvent;\r\n            const opt = ce.detail?.option as MatchaOptionComponent | undefined;\r\n            if (!opt) return;\r\n            const i = this.registeredOptions.indexOf(opt);\r\n            if (i >= 0) {\r\n                this.registeredOptions.splice(i, 1);\r\n                this.onOptionsListChanged();\r\n            }\r\n            evt.stopPropagation();\r\n        });\r\n    }\r\n\r\n    private onOptionsListChanged(): void {\r\n        this.subscribeToOptionOutputs();\r\n        this.syncOptionsSelectedState();\r\n        // Re-aplica filtro pra options que registraram TARDE (ex: *ngFor async,\r\n        // *ngIf de tipo como na play page). Sem isso, elas escapam do reset\r\n        // feito em openPanel() e ficam ocultas por inline display:none\r\n        // legado OU (pior) aparecem filtradas fora do filtro atual.\r\n        if (this.isSearchable) this.applySearchFilter();\r\n        // Options que registram tarde (lazyload, *ngFor async) precisam entrar na ordem\r\n        // fixada — o applySearchFilter acima já cobre o caminho searchable.\r\n        else if (this.isPinActive) this.applyPinnedOrder();\r\n        if (this.open) {\r\n            this.resetActive();\r\n            this.cdr.detectChanges();\r\n        }\r\n        // Antes havia aqui um tryAutoSelectOnMatch() em microtask, pra pegar o caso\r\n        // backend/lazyload em que as options do termo chegam DEPOIS da digitação.\r\n        // Saiu junto com o do onSearchInput: era exatamente o caminho que fazia a\r\n        // seleção acontecer no meio da digitação (o fetch retorna 1 resultado e o\r\n        // campo se resolvia sozinho). O match agora é avaliado uma única vez, no\r\n        // fim da interação — ver closePanel/tryAutoSelectOnMatch.\r\n        this.optionsChange$.next();\r\n    }\r\n\r\n    // ── Estado de seleção ─────────────────────────────────────────────────\r\n    /** Modo single: valor único (undefined quando vazio). */\r\n    selectedValue: any = undefined;\r\n    /** Modo single: label do valor atual. */\r\n    selectedLabel: string = '';\r\n    /** Modo multi: array de valores selecionados. */\r\n    selectedValues: any[] = [];\r\n    /** Modo multi: chips renderizados no trigger (mantido em sincronia com selectedValues). */\r\n    selectedChips: Array<{ value: any; label: string }> = [];\r\n\r\n    // ── Inputs ────────────────────────────────────────────────────────────\r\n    @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\r\n    @Input() maxHeight = 280;\r\n    @Input() minWidth = 160;\r\n    @Input() placeholder = 'Selecione uma opção';\r\n    @Input() disabled = false;\r\n\r\n    /**\r\n     * Somente leitura: a opção escolhida continua LEGÍVEL e o combobox focável, mas o painel não\r\n     * abre e nada muda.\r\n     *\r\n     * Não é sinônimo de `disabled`, e a diferença decide se uma tela de leitura funciona:\r\n     * `disabled` apaga o contraste, tira o controle da ordem de tabulação e o esconde do leitor\r\n     * de tela. `disabled` para AÇÃO INDISPONÍVEL, `readonly` para CONTEÚDO QUE SE LÊ.\r\n     *\r\n     * `<select>` não tem `readonly` nativo — e este componente nem é um `<select>`, é um\r\n     * `div role=\"combobox\"`. Então a inércia é comportamento: as portas de abertura do painel\r\n     * checam este flag, e o botão de limpar desaparece.\r\n     *\r\n     * Deliberadamente FORA de `isCurrentlyDisabled`: aquele getter alimenta a classe\r\n     * `matcha-select-disabled` e o `attr.disabled` do host, que é exatamente o cinza que\r\n     * `readonly` existe para evitar.\r\n     */\r\n    @Input() readonly = false;\r\n\r\n    /** Nome acessível do combobox (a11y). Sem label visível associado ao trigger\r\n     *  (que é um div role=\"combobox\", não um <input> ligado a <label for>), leitores\r\n     *  de tela ficam sem nome. matcha-field passa o próprio label aqui. */\r\n    @Input() ariaLabel: string = '';\r\n\r\n    /** Comportamento da largura do painel: 'fixed' (igual ao trigger) ou 'max-content' (expande com o conteúdo). */\r\n    @Input() panelWidthMode: 'fixed' | 'max-content' = 'fixed';\r\n\r\n    /** Exibe botão × pra limpar TODA a seleção quando há valor. Default true. */\r\n    @Input() clearable: boolean | string = true;\r\n    get isClearable(): boolean {\r\n        return this.clearable === true || this.clearable === '' || (typeof this.clearable === 'string' && this.clearable !== 'false');\r\n    }\r\n\r\n    /** Seleção múltipla — trigger vira lista de chips, selectOption faz toggle. */\r\n    @Input() multiple: boolean | string = false;\r\n    get isMultiple(): boolean {\r\n        return this.multiple === true || this.multiple === '' || (typeof this.multiple === 'string' && this.multiple !== 'false');\r\n    }\r\n\r\n    /** Em multi-mode, oculta os chips dentro do trigger (trigger mantém só placeholder).\r\n     *  matcha-field usa isso pra renderizar chips externamente, fora do matcha-form-field.\r\n     *  Uso standalone: default false mantém chips inline. */\r\n    /**\r\n     * Renderiza a seleção múltipla como lista de chips ABAIXO do campo. A caixa fechada\r\n     * mostra sempre \"N selecionados\".\r\n     *\r\n     * Desligue quando o consumer desenha os próprios chips — é o que o `matcha-field` faz,\r\n     * porque ele tem a lógica de overflow (\"+N mais\"). Com os dois ligados aparecem DUAS\r\n     * listas de chips.\r\n     */\r\n    // ── Textos ──\r\n    // Eram cravados em pt-BR dentro do template, o que nenhum consumidor conseguia\r\n    // traduzir: painel em 4 idiomas exibia portugues no meio de um select em espanhol.\r\n    // Default pt-BR mantem o comportamento atual de quem nao passa nada — mesmo padrao\r\n    // do matcha-file-uploader (cancelLabel/cropLabel).\r\n\r\n    // `selectedLabel` (sem @Input) ja existe como estado interno do modo single — dai o nome\r\n    // `countSuffix*` para os sufixos da contagem do modo multiple.\r\n    /** Sufixo da contagem, singular. Ex.: \"1 selecionado\". */\r\n    @Input() countSuffix: string = MATCHA_SELECT_TEXTS.countSuffix;\r\n    /** Sufixo da contagem, plural. Ex.: \"3 selecionados\". */\r\n    @Input() countSuffixPlural: string = MATCHA_SELECT_TEXTS.countSuffixPlural;\r\n    @Input() selectAllLabel: string = MATCHA_SELECT_TEXTS.selectAllLabel;\r\n    @Input() deselectAllLabel: string = MATCHA_SELECT_TEXTS.deselectAllLabel;\r\n    @Input() clearLabel: string = MATCHA_SELECT_TEXTS.clearLabel;\r\n    @Input() clearSelectionLabel: string = MATCHA_SELECT_TEXTS.clearSelectionLabel;\r\n    @Input() clearSearchLabel: string = MATCHA_SELECT_TEXTS.clearSearchLabel;\r\n    /** Vazio da busca. `{term}` e trocado pelo termo digitado. */\r\n    @Input() noResultsText: string = MATCHA_SELECT_TEXTS.noResultsText;\r\n    @Input() bulkActionsLabel: string = MATCHA_SELECT_TEXTS.bulkActionsLabel;\r\n\r\n    @Input() showChips: boolean | string = true;\r\n\r\n    /**\r\n     * @deprecated Os chips não ficam mais DENTRO da caixa — o atômico tem 36px e obrigaria a\r\n     * caixa a crescer. Use `showChips`, que decide se a lista externa é renderizada. Aceito\r\n     * como alias para não quebrar quem passava `false`.\r\n     */\r\n    @Input() inlineChips: boolean | string = true;\r\n\r\n    /** \"N selecionado(s)\" com os rotulos do consumidor. */\r\n    get selectedCountText(): string {\r\n        const sufixo = this.selectedCount === 1 ? this.countSuffix : this.countSuffixPlural;\r\n\r\n        return `${this.selectedCount} ${sufixo}`;\r\n    }\r\n\r\n    /** Vazio da busca com o termo interpolado. */\r\n    get noResultsMessage(): string {\r\n        return this.noResultsText.replace('{term}', this.searchQuery);\r\n    }\r\n\r\n    get showsChips(): boolean {\r\n        return this.showChips !== false && this.showChips !== 'false'\r\n            && this.inlineChips !== false && this.inlineChips !== 'false';\r\n    }\r\n\r\n    /** @deprecated Mantido só pra não quebrar quem lia o getter. */\r\n    get showsInlineChips(): boolean {\r\n        return this.inlineChips !== false && this.inlineChips !== 'false';\r\n    }\r\n\r\n    /**\r\n     * Fixa no topo do painel as options JÁ selecionadas (multi apenas).\r\n     *\r\n     * Existe pro modo sem chips (`[showChips]=\"false\"`): sem a lista de chips abaixo do campo,\r\n     * o usuário não tem onde ver — nem de onde tirar — o que já escolheu, e numa lista longa a\r\n     * seleção some depois do primeiro scroll. Fixadas no topo, ficam à mão pra desmarcar.\r\n     *\r\n     * A ordem é um SNAPSHOT tirado na ABERTURA do painel, não uma reordenação ao vivo: marcar\r\n     * uma option não a faz pular de lugar — ela fugiria de debaixo do cursor no meio de uma\r\n     * seleção em sequência. A lista se reorganiza na próxima abertura.\r\n     *\r\n     * Implementado com `order` CSS, não movendo nós: as options são content-projected, quase\r\n     * sempre por um `@for` do consumidor, e mexer no DOM debaixo do Angular quebraria o\r\n     * próximo update da lista.\r\n     */\r\n    @Input() pinSelected: boolean | string = false;\r\n    get isPinSelected(): boolean {\r\n        return this.pinSelected === true || this.pinSelected === '' || (typeof this.pinSelected === 'string' && this.pinSelected !== 'false');\r\n    }\r\n\r\n    /** Fixação ligada de fato — em single não há bloco a fixar. Usado pelo template. */\r\n    get isPinActive(): boolean {\r\n        return this.isMultiple && this.isPinSelected;\r\n    }\r\n\r\n    /**\r\n     * Botão \"Selecionar todos\" / \"Desmarcar todos\" no topo do painel (multi apenas).\r\n     * Default `true` — comportamento histórico.\r\n     *\r\n     * Desligue quando selecionar tudo não é uma ação legítima do fluxo: seleção com custo por\r\n     * item (dispara request, cobra, notifica), lista paginada/backend onde \"todos\" só alcança a\r\n     * página carregada e mente sobre o que foi escolhido, ou regra de negócio com teto de itens.\r\n     * Um botão que promete \"todos\" e entrega a página atual é pior do que não existir.\r\n     *\r\n     * O botão some, não fica desabilitado: um botão permanentemente inerte no header do painel\r\n     * só ocupa espaço e convida ao clique. O `selectAll()` público continua funcionando — isto\r\n     * governa a UI, não a capacidade.\r\n     */\r\n    @Input() showSelectAll: boolean | string = true;\r\n    get showsSelectAll(): boolean {\r\n        return this.showSelectAll !== false && this.showSelectAll !== 'false';\r\n    }\r\n\r\n    /**\r\n     * \"Limpar\" em lote no header do painel.\r\n     *\r\n     * Com o select all à vista, o botão só aparece em seleção PARCIAL — selecionado tudo, o\r\n     * próprio botão de cima já virou \"Desmarcar todos\" e dois botões fariam a mesma coisa.\r\n     * Sem ele (`[showSelectAll]=\"false\"`), esse par não existe: aí \"Limpar\" precisa valer pra\r\n     * qualquer seleção, senão marcar a última option apagaria a única saída em lote da tela.\r\n     */\r\n    get showsBulkClear(): boolean {\r\n        return this.selectedCount > 0 && (!this.showsSelectAll || !this.isAllSelected);\r\n    }\r\n\r\n    /** Habilita input de busca — em single vira combobox (input dentro do trigger);\r\n     *  em multi, renderiza input de busca no topo do panel. */\r\n    @Input() searchable: boolean | string = false;\r\n    get isSearchable(): boolean {\r\n        return this.searchable === true || this.searchable === '' || (typeof this.searchable === 'string' && this.searchable !== 'false');\r\n    }\r\n\r\n    /** Modo de render do dropdown: 'auto' (mobile = sheet, desktop = dropdown), 'dropdown' (força panel),\r\n     *  ou 'sheet' (força bottom-sheet). Default 'auto'. Breakpoint mobile: <=768px. */\r\n    @Input() mode: 'auto' | 'dropdown' | 'sheet' = 'auto';\r\n\r\n    /**\r\n     * Modo da busca do painel (só tem efeito com `searchable`):\r\n     *  - 'client' (default): filtro local sobre as options projetadas — comportamento atual.\r\n     *  - 'backend': o consumidor busca — o filtro local NÃO esconde nada (as options já chegam\r\n     *    filtradas), e cada termo digitado é emitido debouncado via `(search)`. Na PRIMEIRA\r\n     *    abertura o select emite `search('')` pra carregar a página inicial (painel nunca abre\r\n     *    vazio). Par natural do `<matcha-lazyload-data>` como sentinela pra paginação.\r\n     *\r\n     * Portado do type=\"autocomplete\" do matcha-field (decisão 2026-08-05: o select absorve a\r\n     * busca remota e o autocomplete sai de cena).\r\n     */\r\n    @Input() searchMode: 'client' | 'backend' = 'client';\r\n\r\n    /** Debounce em ms pro `(search)` em backend mode. Default 300 (canon UX). */\r\n    @Input() searchDebounce = 300;\r\n\r\n    /** Exibe spinner no painel enquanto o consumidor busca (backend mode). */\r\n    @Input() loading: boolean | string = false;\r\n    get isLoading(): boolean {\r\n        return this.loading === true || this.loading === '' || (typeof this.loading === 'string' && this.loading !== 'false');\r\n    }\r\n\r\n    /**\r\n     * Auto-seleção por match exato na busca do painel (single mode, opt-in).\r\n     *\r\n     * Avaliado **no fechamento do painel** — o fim da interação com o campo —, nunca\r\n     * durante a digitação: se o termo casa EXATAMENTE (normalizado, ignorando acento/\r\n     * case/pontuação) com o texto de UMA option, ela é selecionada ao fechar. Se o\r\n     * termo é prefixo próprio de outra (\"Rio\" vs \"Rio de Janeiro\") não há match único\r\n     * e nada é selecionado.\r\n     *\r\n     * Fechar escolhendo uma option na lista NÃO reavalia o termo — a escolha explícita\r\n     * do usuário vence o match.\r\n     *\r\n     * Multi ignora — seleção automática em multi fecharia o fluxo de marcar várias.\r\n     */\r\n    @Input() autoSelectOnMatch: boolean | string = false;\r\n    get isAutoSelectOnMatch(): boolean {\r\n        return this.autoSelectOnMatch === true || this.autoSelectOnMatch === '' || (typeof this.autoSelectOnMatch === 'string' && this.autoSelectOnMatch !== 'false');\r\n    }\r\n\r\n    /** Termo de busca, emitido debouncado em backend mode (e `''` na primeira abertura). */\r\n    @Output() search = new EventEmitter<string>();\r\n\r\n    /** Subject pro debounce do (search) — mesmo padrão do matcha-field. */\r\n    private readonly searchSubject = new Subject<string>();\r\n\r\n    /** Já disparou o fetch inicial de backend mode? (1× por instância) */\r\n    private backendInitialFetchDone = false;\r\n\r\n    /** Título exibido no header da bottom-sheet (mobile). Default usa placeholder. */\r\n    @Input() sheetTitle: string = '';\r\n\r\n    /** Viewport atual — atualizado via resize listener pra reatividade do sheet mode. */\r\n    private viewportIsMobile = false;\r\n\r\n    /** True quando a UI deve render como bottom-sheet (mobile) em vez de dropdown. */\r\n    get isSheetMode(): boolean {\r\n        if (this.mode === 'sheet') return true;\r\n        if (this.mode === 'dropdown') return false;\r\n        return this.viewportIsMobile; // auto\r\n    }\r\n\r\n    get effectiveSheetTitle(): string {\r\n        return this.sheetTitle || this.placeholder || 'Selecionar';\r\n    }\r\n\r\n    private updateViewportBreakpoint = () => {\r\n        if (typeof window === 'undefined') return;\r\n        const isMobile = window.matchMedia('(max-width: 768px)').matches;\r\n        if (isMobile !== this.viewportIsMobile) {\r\n            this.viewportIsMobile = isMobile;\r\n            this.cdr.markForCheck();\r\n        }\r\n    };\r\n\r\n    /** Texto atual do filtro. Matcha contra getTextContent() de cada option. */\r\n    searchQuery = '';\r\n    /** Quantas options estão visíveis após filtro — usado pra empty state. */\r\n    visibleOptionsCount = 0;\r\n\r\n    onSearchInput(evt: Event) {\r\n        const raw = (evt.target as HTMLInputElement).value ?? '';\r\n        this.searchQuery = raw;\r\n        this.applySearchFilter();\r\n        // Backend mode: o termo vai pro consumidor (debouncado); o filtro local acima\r\n        // vira no-op de visibilidade (ver applySearchFilter), só a contagem roda.\r\n        if (this.searchMode === 'backend') {\r\n            this.searchSubject.next(raw);\r\n        }\r\n        // NÃO tenta auto-selecionar aqui: o match roda no fim da interação com o\r\n        // campo (closePanel), nunca durante a digitação. Ver tryAutoSelectOnMatch.\r\n    }\r\n\r\n    /** Suprime o auto-match no closePanel disparado por uma seleção explícita. */\r\n    private skipAutoSelectOnClose = false;\r\n\r\n    /**\r\n     * Match exato da busca → seleção automática (ver JSDoc de `autoSelectOnMatch`).\r\n     *\r\n     * Chamado UMA vez, no `closePanel()` — o fim da interação com o campo. Não roda\r\n     * a cada tecla nem quando a lista de options muda: fazer isso resolvia o campo\r\n     * sozinho no meio da digitação (em backend mode, bastava o fetch devolver um\r\n     * único resultado) e o usuário perdia o controle da escolha.\r\n     *\r\n     * Compara texto NORMALIZADO (não a visibilidade do filtro): o filtro local é\r\n     * sensível a acento (\"sao paulo\" esconde \"São Paulo\"), mas o match não deve ser.\r\n     * O guard de prefixo continua valendo: se o termo é prefixo próprio de outra\r\n     * option (\"Rio\" vs \"Rio de Janeiro\"), não há match único e nada é selecionado.\r\n     */\r\n    private tryAutoSelectOnMatch(): void {\r\n        if (!this.isAutoSelectOnMatch || this.isMultiple || !this.open) return;\r\n        const q = matchaNormalize(this.searchQuery);\r\n        if (!q) return;\r\n\r\n        const enabled = this.options.filter(o => !o.disabled());\r\n        const exact = enabled.filter(o => matchaNormalize(o.getTextContent()) === q);\r\n        if (exact.length !== 1) return;\r\n\r\n        const isPrefixOfAnother = enabled.some(o => {\r\n            const t = matchaNormalize(o.getTextContent());\r\n            return t !== q && t.startsWith(q);\r\n        });\r\n        if (isPrefixOfAnother) return;\r\n        if (this.isValueSelected(exact[0].value())) return;   // já selecionada\r\n\r\n        this.selectOption(exact[0]);\r\n    }\r\n\r\n    /** Snapshot dos valores fixados no topo, tirado na abertura do painel. Ver `pinSelected`. */\r\n    private pinnedValues: any[] = [];\r\n\r\n    /** Refaz o snapshot das fixadas. Chamado na ABERTURA, e só nela — é isso que congela a\r\n     *  ordem enquanto o painel está aberto. */\r\n    private snapshotPinnedValues(): void {\r\n        this.pinnedValues = this.isPinActive ? [...this.selectedValues] : [];\r\n    }\r\n\r\n    /**\r\n     * Aplica as classes de fixação: `matcha-select-option-pinned` (sobe via `order` CSS) e\r\n     * `matcha-select-option-pinned-last` (ancora a divisória do bloco).\r\n     *\r\n     * Roda na abertura, no filtro de busca e quando options registram tarde (lazyload/async) —\r\n     * sempre lendo o SNAPSHOT, nunca `selectedValues`, senão a ordem mudaria a cada clique.\r\n     */\r\n    private applyPinnedOrder(): void {\r\n        const active = this.isPinActive;\r\n        const visiblePinned: HTMLElement[] = [];\r\n        const visibleUnpinned: HTMLElement[] = [];\r\n\r\n        this.options.forEach(opt => {\r\n            const el = opt.nativeElement;\r\n            const pinned = active && this.pinnedValues.includes(opt.value());\r\n            el.classList.toggle('matcha-select-option-pinned', pinned);\r\n            el.classList.remove('matcha-select-option-pinned-last');\r\n            // Escondida pelo filtro de busca não ancora divisória nem conta como bloco.\r\n            if (el.style.display === 'none') return;\r\n            (pinned ? visiblePinned : visibleUnpinned).push(el);\r\n        });\r\n\r\n        // Divisória só quando existem os DOIS blocos: com tudo selecionado (ou tudo filtrado),\r\n        // uma linha no fim da lista não separaria nada.\r\n        const last = visiblePinned[visiblePinned.length - 1];\r\n        if (last && visibleUnpinned.length > 0) {\r\n            last.classList.add('matcha-select-option-pinned-last');\r\n        }\r\n    }\r\n\r\n    private applySearchFilter(): void {\r\n        const q = this.searchQuery.trim().toLowerCase();\r\n        // Backend mode: o consumidor já entrega as options filtradas — esconder localmente\r\n        // por substring mataria resultados legítimos (ex.: busca fuzzy/acento no servidor).\r\n        // Tudo fica visível; a contagem considera todas as não-disabled pro empty state.\r\n        const filterLocally = this.searchMode !== 'backend';\r\n        let visible = 0;\r\n        this.options.forEach(opt => {\r\n            const text = opt.getTextContent().toLowerCase();\r\n            const matches = !filterLocally || !q || text.includes(q);\r\n            // Options disabled ficam SEMPRE visíveis (sentinela de matcha-lazyload-data,\r\n            // cabeçalho de seção, hint) e NÃO contam como resultado. Antes o mesmo `if`\r\n            // decidia mostrar e contar: a sentinela sumia no filtro (seu getTextContent é\r\n            // vazio, então nunca casava) e, se ficasse, envenenaria o empty state.\r\n            const isDisabled = opt.disabled();\r\n            opt.nativeElement.style.display = (isDisabled || matches) ? '' : 'none';\r\n            if (!isDisabled && matches) visible++;\r\n        });\r\n        this.visibleOptionsCount = visible;\r\n        // O filtro muda QUEM está visível — a divisória do bloco fixado precisa reancorar.\r\n        this.applyPinnedOrder();\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    clearSearch(evt?: Event) {\r\n        if (evt) { evt.stopPropagation(); evt.preventDefault(); }\r\n        this.searchQuery = '';\r\n        this.applySearchFilter();\r\n        // Backend mode: avisa o consumidor que o filtro zerou, senão a lista fica\r\n        // presa no último termo buscado (distinctUntilChanged dedupa repetições).\r\n        if (this.searchMode === 'backend') {\r\n            this.searchSubject.next('');\r\n        }\r\n    }\r\n\r\n    // ── Outputs ───────────────────────────────────────────────────────────\r\n    @Output() opened = new EventEmitter<void>();\r\n    @Output() closed = new EventEmitter<void>();\r\n    @Output() selectionChange = new EventEmitter<any>();\r\n    @Output() openedChange = new EventEmitter<boolean>();\r\n\r\n    open = false;\r\n    triggerElement?: HTMLElement;\r\n    private activeIndex = -1;\r\n\r\n    /** Seq global pra ids estáveis do listbox (pareados via aria-controls). */\r\n    private static listboxUidSeq = 0;\r\n    readonly listboxId = `matcha-select-listbox-${++MatchaSelectComponent.listboxUidSeq}`;\r\n\r\n    /** Id da option highlighted pelo teclado — consumido via `aria-activedescendant`. */\r\n    get activeDescendantId(): string | null {\r\n        if (!this.open || this.activeIndex < 0) return null;\r\n        const opt = this.options?.[this.activeIndex];\r\n        return opt?.optionId ?? null;\r\n    }\r\n\r\n    // ── CVA ───────────────────────────────────────────────────────────────\r\n    private onChange = (_value: any) => {};\r\n    private onTouched = () => {};\r\n    private isDisabledByForm = false;\r\n\r\n    get isCurrentlyDisabled(): boolean {\r\n        return this.disabled || this.isDisabledByForm;\r\n    }\r\n\r\n    @HostBinding('attr.readonly') get readonlyAttr(): string | null {\r\n        return this.readonly ? '' : null;\r\n    }\r\n\r\n    @HostBinding('attr.aria-readonly') get ariaReadonlyAttr(): string | null {\r\n        return this.readonly ? 'true' : null;\r\n    }\r\n\r\n    @HostBinding('class.matcha-select-disabled') get hostDisabledClass(): boolean {\r\n        return this.isCurrentlyDisabled;\r\n    }\r\n    @HostBinding('attr.disabled') get hostDisabledAttr(): string | null {\r\n        return this.isCurrentlyDisabled ? '' : null;\r\n    }\r\n\r\n    public elRef = inject(ElementRef);\r\n    private cdr = inject(ChangeDetectorRef);\r\n    private destroyRef = inject(DestroyRef);\r\n\r\n    constructor() {\r\n        // Attach listeners no ctor pra que estejam ativos ANTES de qualquer\r\n        // matcha-option projetada disparar 'matcha-option-register' em ngOnInit.\r\n        this.attachOptionRegisterListeners();\r\n\r\n        // Backend-search: pipe debounced do termo digitado pro (search).\r\n        // `searchDebounce` é lido 1× na construção (mesma semântica do matcha-field).\r\n        this.searchSubject\r\n            .pipe(\r\n                debounceTime(this.searchDebounce),\r\n                distinctUntilChanged(),\r\n                takeUntilDestroyed(this.destroyRef),\r\n            )\r\n            .subscribe(term => this.search.emit(term));\r\n\r\n        // Breakpoint reativo — precisa existir antes do primeiro render pra `isSheetMode` ser correto.\r\n        if (typeof window !== 'undefined') {\r\n            this.updateViewportBreakpoint();\r\n            window.addEventListener('resize', this.updateViewportBreakpoint);\r\n            this.destroyRef.onDestroy(() => window.removeEventListener('resize', this.updateViewportBreakpoint));\r\n        }\r\n    }\r\n\r\n    /** Subs individuais pras options — regeneradas quando a QueryList muda.\r\n     *  Tipo genérico pra aceitar OutputRefSubscription (Angular signal outputs)\r\n     *  e Subscription (rxjs) indistintamente. */\r\n    private optionSubs: Array<{ unsubscribe: () => void }> = [];\r\n\r\n    // ── Computeds auxiliares ─────────────────────────────────────────────\r\n    /** Tem algo selecionado? Branch por modo. */\r\n    hasSelection(): boolean {\r\n        return this.isMultiple\r\n            ? this.selectedValues.length > 0\r\n            : this.selectedValue !== undefined && this.selectedValue !== null && this.selectedValue !== '';\r\n    }\r\n\r\n    /** Um valor está na seleção atual? */\r\n    isValueSelected(value: any): boolean {\r\n        return this.isMultiple\r\n            ? this.selectedValues.includes(value)\r\n            : this.selectedValue === value;\r\n    }\r\n\r\n    get showClearButton(): boolean {\r\n        return this.isClearable && !this.isCurrentlyDisabled && !this.readonly && this.hasSelection();\r\n    }\r\n\r\n    /** Mostra placeholder quando seleção vazia (mesmo comportamento single/multi). */\r\n    get showPlaceholder(): boolean {\r\n        return !this.hasSelection();\r\n    }\r\n\r\n    /** Label renderizado no trigger em modo single. */\r\n    getSelectedLabel(): string {\r\n        return this.selectedLabel || '';\r\n    }\r\n\r\n    ngAfterContentInit() {\r\n        // Seed inicial — contentOptions (direct usage) já populado;\r\n        // registeredOptions vem via HostListener acima.\r\n        this.syncOptionsSelectedState();\r\n        this.subscribeToOptionOutputs();\r\n\r\n        // Re-sincroniza + re-subscreve quando contentOptions mudarem (*ngFor dinâmico).\r\n        this.contentOptions.changes\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe(() => this.onOptionsListChanged());\r\n    }\r\n\r\n    /**\r\n     * Escuta `optionSelect` de cada option diretamente via QueryList.\r\n     *\r\n     * Por quê não @Optional() @Inject() ou addEventListener('matcha-option-selected'):\r\n     *   - `matcha-field` projeta as options no matcha-select via ng-content. Content\r\n     *     projection preserva o injector da DECLARAÇÃO (fora do matcha-select), então\r\n     *     `MATCHA_OPTION_PARENT` não é resolvível pelas options.\r\n     *   - `matcha-panel` usa `portalToBody=true`: no open, move o DOM pra fora do\r\n     *     matcha-select. Bubbling de CustomEvent não chega mais no elRef do select.\r\n     *\r\n     * Subscribing direto no output da option é resiliente a ambos.\r\n     */\r\n    private subscribeToOptionOutputs(): void {\r\n        if (this.isDestroyed) return;\r\n\r\n        // Cleanup das subs anteriores (QueryList mudou)\r\n        this.optionSubs.forEach(s => s.unsubscribe());\r\n        this.optionSubs = [];\r\n\r\n        this.options.forEach(opt => {\r\n            // Skip options já destruídas — `.subscribe()` em OutputRef de componente\r\n            // destroyed dispara NG0953 (acontece em batch destroy durante route change).\r\n            if (opt.isDestroyed) return;\r\n            const sub = opt.optionSelect.subscribe(option => this.selectOption(option));\r\n            this.optionSubs.push(sub);\r\n        });\r\n    }\r\n\r\n    private isDestroyed = false;\r\n\r\n    ngAfterViewInit() {\r\n        this.cdr.detectChanges();\r\n\r\n        const formField = this.elRef.nativeElement.closest('matcha-form-field') as HTMLElement | null;\r\n        const panelAnchor = formField || this.elRef.nativeElement;\r\n        if (this.panel) this.panel.attachTo(panelAnchor);\r\n\r\n        this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\r\n        this.setupKeyboardNavigation();\r\n        // Nota: não precisamos de addEventListener('matcha-option-selected') aqui —\r\n        // subscribeToOptionOutputs() (ngAfterContentInit) já escuta cada option direto.\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.isDestroyed = true;\r\n        this.optionSubs.forEach(s => s.unsubscribe());\r\n        this.optionSubs = [];\r\n        this.registeredOptions = [];\r\n    }\r\n\r\n    // ── Keyboard ─────────────────────────────────────────────────────────\r\n    private setupKeyboardNavigation() {\r\n        if (!this.triggerElement) return;\r\n\r\n        this.triggerElement.addEventListener('keydown', (event: KeyboardEvent) => {\r\n            if (this.isCurrentlyDisabled) return;\r\n\r\n            switch (event.key) {\r\n                case 'ArrowDown': event.preventDefault(); this.handleArrowDown(); break;\r\n                case 'ArrowUp':   event.preventDefault(); this.handleArrowUp();   break;\r\n                case 'Enter':\r\n                case ' ':         event.preventDefault(); this.handleEnterOrSpace(); break;\r\n                case 'Escape':    event.preventDefault(); this.handleEscape();    break;\r\n                case 'Backspace':\r\n                    // Em multi, Backspace com panel fechado remove o último chip.\r\n                    if (this.isMultiple && !this.open && this.selectedValues.length > 0) {\r\n                        event.preventDefault();\r\n                        this.removeValueFromSelection(this.selectedValues[this.selectedValues.length - 1]);\r\n                    }\r\n                    break;\r\n                default:\r\n                    // Type-ahead: letra única → pula pra primeira opção iniciada pelo buffer.\r\n                    // Paridade com o `<select>` nativo. Ignora se user está digitando no search input.\r\n                    if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\r\n                        this.handleTypeahead(event.key);\r\n                    }\r\n                    break;\r\n            }\r\n        });\r\n    }\r\n\r\n    // ── Type-ahead ───────────────────────────────────────────────────────\r\n    private typeaheadBuffer = '';\r\n    private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n    private handleTypeahead(char: string): void {\r\n        // Quando searchable e panel aberto, o input interno cuida da busca.\r\n        // Nesse caso, redirecionamos o foco pro search pra não digitar \"no nada\".\r\n        // Busca pelo listboxId no document, não no próprio host: o matcha-panel\r\n        // portala o conteúdo pro <body>, então querySelector no host não acha nada.\r\n        if (this.open && this.isSearchable) {\r\n            const listbox = typeof document !== 'undefined' ? document.getElementById(this.listboxId) : null;\r\n            const searchInput = listbox?.querySelector<HTMLInputElement>('.matcha-select-search-input');\r\n            if (searchInput) { searchInput.focus(); /* letra original já foi */ }\r\n            return;\r\n        }\r\n\r\n        if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\r\n        this.typeaheadBuffer += char.toLowerCase();\r\n        this.typeaheadTimer = setTimeout(() => { this.typeaheadBuffer = ''; }, 800);\r\n\r\n        const match = this.options.findIndex(opt =>\r\n            !opt.disabled() && opt.getTextContent().trim().toLowerCase().startsWith(this.typeaheadBuffer)\r\n        );\r\n        if (match < 0) return;\r\n\r\n        if (this.open) {\r\n            this.activeIndex = match;\r\n            this.updateSelectedStates();\r\n            this.scrollToActive();\r\n        } else if (!this.isMultiple) {\r\n            // Panel fechado + single: seleciona direto (igual <select> nativo).\r\n            const opt = this.options[match];\r\n            this.activeIndex = match;\r\n            this.selectOption(opt);\r\n        } else {\r\n            // Multi fechado: abre e destaca.\r\n            this.activeIndex = match;\r\n            this.openPanel();\r\n        }\r\n    }\r\n\r\n    private handleArrowDown() {\r\n        if (!this.open) {\r\n            // Em multi não fazemos quick-select com arrow; abrimos o panel.\r\n            if (this.isMultiple) this.openPanel();\r\n            else this.selectNextOption();\r\n        } else {\r\n            this.highlightNext();\r\n        }\r\n    }\r\n\r\n    private handleArrowUp() {\r\n        if (!this.open) {\r\n            if (this.isMultiple) this.openPanel();\r\n            else this.selectPreviousOption();\r\n        } else {\r\n            this.highlightPrevious();\r\n        }\r\n    }\r\n\r\n    private handleEnterOrSpace() {\r\n        if (this.open) this.selectActive();\r\n        else this.openPanel();\r\n    }\r\n\r\n    private handleEscape() {\r\n        if (this.open) this.closePanel();\r\n    }\r\n\r\n    // ── Sheet swipe-to-close (mobile) ────────────────────────────────────\r\n    // Drag pra baixo no handle/header do bottom-sheet fecha. Threshold por\r\n    // distância (>80px) OU velocidade (>0.5 px/ms, swipe rápido).\r\n    private sheetDragStartY: number | null = null;\r\n    private sheetDragStartTime = 0;\r\n\r\n    onSheetDragStart(e: TouchEvent): void {\r\n        if (!this.isSheetMode || e.touches.length === 0) return;\r\n        this.sheetDragStartY = e.touches[0].clientY;\r\n        this.sheetDragStartTime = Date.now();\r\n    }\r\n\r\n    onSheetDragMove(e: TouchEvent): void {\r\n        if (this.sheetDragStartY === null || e.touches.length === 0) return;\r\n        const deltaY = e.touches[0].clientY - this.sheetDragStartY;\r\n        if (deltaY <= 0) return;                                       // só swipe pra baixo\r\n        const root = this.elRef.nativeElement as HTMLElement;\r\n        const sheet = root.querySelector<HTMLElement>('.matcha-select-sheet');\r\n        if (sheet) sheet.style.transform = `translateY(${deltaY}px)`;\r\n    }\r\n\r\n    onSheetDragEnd(e: TouchEvent): void {\r\n        if (this.sheetDragStartY === null) return;\r\n        const endY   = e.changedTouches[0]?.clientY ?? this.sheetDragStartY;\r\n        const deltaY = endY - this.sheetDragStartY;\r\n        const dur    = Math.max(Date.now() - this.sheetDragStartTime, 1);\r\n        const velocity = deltaY / dur;                                 // px/ms\r\n        this.sheetDragStartY = null;\r\n\r\n        const root = this.elRef.nativeElement as HTMLElement;\r\n        const sheet = root.querySelector<HTMLElement>('.matcha-select-sheet');\r\n        if (!sheet) return;\r\n\r\n        const shouldClose = deltaY > 80 || velocity > 0.5;\r\n        if (shouldClose) {\r\n            sheet.style.transform = '';\r\n            this.closePanel();\r\n            return;\r\n        }\r\n\r\n        // Snap back com transição curta\r\n        sheet.style.transition = 'transform 200ms ease';\r\n        sheet.style.transform = '';\r\n        setTimeout(() => { sheet.style.transition = ''; }, 210);\r\n    }\r\n\r\n    // ── Panel lifecycle ──────────────────────────────────────────────────\r\n    onTriggerClick() {\r\n        if (this.isCurrentlyDisabled || this.readonly) { this.ensurePanelClosed(); return; }\r\n        this.togglePanel();\r\n    }\r\n\r\n    openPanel() {\r\n        // Idempotente — combobox chama openPanel em focus+click+input, e re-entry\r\n        // resetaria searchQuery no meio da digitação.\r\n        if (this.open) return;\r\n        if (this.isCurrentlyDisabled || this.readonly) { this.ensurePanelClosed(); return; }\r\n\r\n        const formField = this.elRef.nativeElement.closest('matcha-form-field') as HTMLElement | null;\r\n        const panelAnchor = formField || this.elRef.nativeElement;\r\n\r\n        this.open = true;\r\n        this.cdr.detectChanges();\r\n\r\n        // Dropdown mode: delega posicionamento pro matcha-panel.\r\n        // Sheet mode (mobile): CSS controla posição via .matcha-select-sheet-open\r\n        if (!this.isSheetMode && this.panel) {\r\n            this.panel.attachTo(panelAnchor);\r\n            this.panel.openPanel();\r\n        } else if (this.isSheetMode && typeof document !== 'undefined') {\r\n            // Previne scroll do body enquanto sheet aberta\r\n            document.body.style.overflow = 'hidden';\r\n        }\r\n\r\n        this.setActiveIndexFromSelectedValue();\r\n        this.updateSelectedStates();\r\n\r\n        // Reset search ao abrir — UX comum (fresh start a cada open)\r\n        if (this.isSearchable) {\r\n            this.searchQuery = '';\r\n            this.applySearchFilter();\r\n        }\r\n\r\n        // Ordem das fixadas: congelada AGORA, depois do reset da busca (que decide quem está\r\n        // visível). Daqui até o próximo open, marcar/desmarcar não reordena nada.\r\n        this.snapshotPinnedValues();\r\n        this.applyPinnedOrder();\r\n\r\n        // Backend mode: 1ª abertura dispara search('') pro consumidor carregar a página\r\n        // inicial — o painel nunca abre vazio esperando o usuário digitar. Bypass do\r\n        // debounce (o usuário está olhando pro painel agora). Idempotente por instância;\r\n        // as aberturas seguintes reusam a lista que o consumidor já tem.\r\n        if (this.searchMode === 'backend' && !this.backendInitialFetchDone) {\r\n            this.backendInitialFetchDone = true;\r\n            this.search.emit('');\r\n        }\r\n\r\n        // Guard-rail (dev): options registradas mas NENHUMA anexada ao DOM = painel vazio\r\n        // silencioso. Causa clássica: <matcha-option> agrupadas num <ng-container *ngIf>\r\n        // sem ngProjectAs — o <ng-content select=\"matcha-option\"> do matcha-field não casa\r\n        // com o container, então as options são criadas e registram via DI (a busca liga,\r\n        // a contagem as vê) mas nunca entram no painel. Compila sem erro nenhum.\r\n        if (isDevMode() && this.options.length > 0 &&\r\n            this.options.every(o => !o.nativeElement.isConnected)) {\r\n            console.warn(\r\n                `[matcha-select] ${this.options.length} matcha-option registrada(s) mas nenhuma ` +\r\n                `anexada ao DOM do painel — o painel vai abrir vazio. Se as options estão ` +\r\n                `agrupadas num <ng-container *ngIf>, adicione ngProjectAs=\"matcha-option\" ao container.`\r\n            );\r\n        }\r\n\r\n        this.opened.emit();\r\n        this.openedChange.emit(true);\r\n    }\r\n\r\n    closePanel() {\r\n        if (!this.open) return;\r\n\r\n        // Auto-seleção por match exato acontece AQUI — no fim da interação com o\r\n        // campo, não durante a digitação. Suprimida quando o fechamento é\r\n        // consequência de uma seleção explícita (selectOption fecha o painel):\r\n        // sem isso, digitar \"Sede Central\" e clicar em OUTRA igreja fazia o match\r\n        // sobrescrever a escolha do usuário no caminho de volta.\r\n        // Roda antes de `open = false` (o guard de tryAutoSelectOnMatch exige o\r\n        // painel aberto) e antes do reset do searchQuery mais abaixo.\r\n        if (!this.skipAutoSelectOnClose) this.tryAutoSelectOnMatch();\r\n\r\n        this.open = false;\r\n        this.activeIndex = -1;\r\n        this.updateSelectedStates();\r\n        if (this.panel) this.panel.closePanel();\r\n        if (this.isSheetMode && typeof document !== 'undefined') {\r\n            document.body.style.overflow = '';\r\n        }\r\n        // Reseta search ao fechar — garante que display:none inline não sobreviva\r\n        // entre aberturas. É também o que faz o texto digitado na busca ser\r\n        // descartado: no select ele é filtro, nunca valor.\r\n        if (this.isSearchable && this.searchQuery) {\r\n            this.searchQuery = '';\r\n            this.applySearchFilter();\r\n            // Backend mode: consumidor volta pra lista sem filtro — senão a próxima\r\n            // abertura mostraria só os resultados do último termo digitado.\r\n            if (this.searchMode === 'backend') {\r\n                this.searchSubject.next('');\r\n            }\r\n        }\r\n        this.closed.emit();\r\n        this.openedChange.emit(false);\r\n        this.onTouched();\r\n    }\r\n\r\n    togglePanel() {\r\n        this.open ? this.closePanel() : this.openPanel();\r\n    }\r\n\r\n    private ensurePanelClosed(): void {\r\n        if (this.open) this.closePanel();\r\n    }\r\n\r\n    // ── Navegação por índice ─────────────────────────────────────────────\r\n    resetActive() {\r\n        this.activeIndex = -1;\r\n        this.updateSelectedStates();\r\n    }\r\n\r\n    private setActiveIndexFromSelectedValue() {\r\n        const options = this.options;\r\n        if (!options.length) { this.activeIndex = 0; return; }\r\n\r\n        const reference = this.isMultiple\r\n            ? (this.selectedValues.length > 0 ? this.selectedValues[this.selectedValues.length - 1] : undefined)\r\n            : this.selectedValue;\r\n\r\n        if (reference === undefined) { this.activeIndex = 0; return; }\r\n        const idx = options.findIndex(opt => opt.value() === reference);\r\n        this.activeIndex = idx >= 0 ? idx : 0;\r\n    }\r\n\r\n    private selectNextOption() {\r\n        const options = this.options;\r\n        if (!options.length) return;\r\n        const current = options.findIndex(opt => opt.value() === this.selectedValue);\r\n        const next = current < 0 || current >= options.length - 1 ? 0 : current + 1;\r\n        this.selectOptionByIndex(next);\r\n    }\r\n\r\n    private selectPreviousOption() {\r\n        const options = this.options;\r\n        if (!options.length) return;\r\n        const current = options.findIndex(opt => opt.value() === this.selectedValue);\r\n        const prev = current <= 0 ? options.length - 1 : current - 1;\r\n        this.selectOptionByIndex(prev);\r\n    }\r\n\r\n    private selectOptionByIndex(index: number) {\r\n        const options = this.options;\r\n        if (index < 0 || index >= options.length) return;\r\n        const option = options[index];\r\n        if (option.disabled()) return;\r\n        this.selectOption(option);\r\n    }\r\n\r\n    /**\r\n     * Atualiza visual das options:\r\n     *   • `.selected` reflete SELEÇÃO persistida (single: ===, multi: array includes)\r\n     *   • classe DOM `matcha-option-highlighted` reflete cursor de teclado (activeIndex)\r\n     *\r\n     * ⚠️ Em multi, o `.selected` precisa ser fiel ao array senão o marcador ✓ fica errado.\r\n     * Highlight de teclado é ortogonal ao selected.\r\n     */\r\n    private updateSelectedStates() {\r\n        const items = this.options;\r\n        items.forEach((opt, i) => {\r\n            // Highlight visual de teclado (orthogonal à seleção)\r\n            const el = opt.nativeElement;\r\n            if (i === this.activeIndex) el.classList.add('matcha-option-highlighted');\r\n            else                        el.classList.remove('matcha-option-highlighted');\r\n            // Seleção persistida (a verdade vem do state do select)\r\n            opt.selected = this.isValueSelected(opt.value());\r\n        });\r\n    }\r\n\r\n    highlightNext() {\r\n        const length = this.options.length;\r\n        if (!length) return;\r\n        this.activeIndex = (this.activeIndex + 1) % length;\r\n        this.updateSelectedStates();\r\n        this.scrollToActive();\r\n    }\r\n\r\n    highlightPrevious() {\r\n        const length = this.options.length;\r\n        if (!length) return;\r\n        this.activeIndex = (this.activeIndex - 1 + length) % length;\r\n        this.updateSelectedStates();\r\n        this.scrollToActive();\r\n    }\r\n\r\n    private scrollToActive() {\r\n        const opts = this.options;\r\n        if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\r\n        const host = opts[this.activeIndex].nativeElement;\r\n        if (host?.scrollIntoView) host.scrollIntoView({ block: 'nearest' });\r\n    }\r\n\r\n    selectActive() {\r\n        if (this.activeIndex < 0) return;\r\n        const opt = this.options[this.activeIndex];\r\n        if (opt?.disabled()) return;\r\n        this.selectOption(opt);\r\n    }\r\n\r\n    // ── selectOption: o coração da seleção (branch single/multi) ─────────\r\n    selectOption(option: MatchaOptionComponent): void {\r\n        const optValue = option.value();\r\n\r\n        if (this.isMultiple) {\r\n            // Toggle: remove se já existe, adiciona se não.\r\n            const idx = this.selectedValues.indexOf(optValue);\r\n            if (idx >= 0) {\r\n                this.selectedValues = this.selectedValues.filter((_, i) => i !== idx);\r\n            } else {\r\n                this.selectedValues = [...this.selectedValues, optValue];\r\n            }\r\n\r\n            this.syncOptionsSelectedState();\r\n            this.rebuildChips();\r\n\r\n            const snapshot = [...this.selectedValues];\r\n            this.notifyDirectiveOfSelection(snapshot);\r\n            this.selectionChange.emit({ source: this, value: snapshot });\r\n            this.onChange(snapshot);\r\n            this.onTouched();\r\n\r\n            // Panel fica aberto — usuário escolhe vários\r\n            this.cdr.detectChanges();\r\n            return;\r\n        }\r\n\r\n        // Single mode (comportamento original)\r\n        this.selectedValue = optValue;\r\n        this.selectedLabel = option.getTextContent();\r\n        this.syncOptionsSelectedState();\r\n\r\n        this.notifyDirectiveOfSelection(optValue);\r\n        this.selectionChange.emit({ source: this, value: optValue });\r\n        this.onChange(optValue);\r\n        this.onTouched();\r\n        // Este fechamento JÁ é a seleção — o auto-match não deve reavaliar o termo\r\n        // digitado por cima dela (nem recursar de volta pra cá).\r\n        this.skipAutoSelectOnClose = true;\r\n        try {\r\n            this.closePanel();\r\n        } finally {\r\n            this.skipAutoSelectOnClose = false;\r\n        }\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    /**\r\n     * Sincroniza `.selected` de cada option com a seleção atual (single ou multi).\r\n     *\r\n     * Deferido via queueMicrotask: quando options chegam tarde (ex.: *ngFor\r\n     * populado por HTTP async) com um valor já selecionado, cada\r\n     * matcha-option novo dispara 'matcha-option-register' no próprio\r\n     * ngOnInit — ainda DENTRO do ciclo de detecção de mudanças que está\r\n     * criando aquele option. Mutar `opt.selected` (HostBinding\r\n     * attr.aria-selected) síncronamente ali muda o valor DEPOIS do primeiro\r\n     * check mas ANTES do checkNoChanges (dev mode), disparando\r\n     * ExpressionChangedAfterItHasBeenCheckedError (NG0100). Adiando pra\r\n     * microtask, a mutação acontece num ciclo de CD novo e consistente.\r\n     */\r\n    private syncOptionsSelectedState(): void {\r\n        if (!this.options) return;\r\n        queueMicrotask(() => {\r\n            if (this.isDestroyed || !this.options) return;\r\n            this.options.forEach(opt => {\r\n                opt.selected = this.isValueSelected(opt.value());\r\n            });\r\n            if (this.isMultiple) this.rebuildChips();\r\n            else if (this.selectedValue !== undefined && this.selectedValue !== null) {\r\n                const match = this.options.find(o => o.value() === this.selectedValue);\r\n                if (match) this.selectedLabel = match.getTextContent();\r\n            }\r\n            // Options podem registrar DEPOIS do writeValue inicial (ng-content\r\n            // ainda não populado) — sem isso, o label resolvido aqui nunca chega\r\n            // na view: componente é OnPush e nenhum caller desta função dispara\r\n            // CD depois deste microtask (ex.: registro inicial de options com\r\n            // panel fechado). Resultado visível: placeholder + botão limpar (X)\r\n            // simultâneos, já que hasSelection() já era true antes do label existir.\r\n            this.cdr.markForCheck();\r\n        });\r\n    }\r\n\r\n    /** Reconstrói selectedChips a partir de selectedValues + options. */\r\n    private rebuildChips(): void {\r\n        if (!this.options) { this.selectedChips = []; return; }\r\n        const optMap = new Map<any, string>();\r\n        this.options.forEach(o => optMap.set(o.value(), o.getTextContent()));\r\n        this.selectedChips = this.selectedValues.map(v => ({\r\n            value: v,\r\n            label: optMap.get(v) ?? String(v),\r\n        }));\r\n    }\r\n\r\n    /**\r\n     * Label de um chip. Lido no RENDER, e NÃO capturado numa estrutura que cacheia: o texto\r\n     * da option é DOM (`getTextContent()`), não signal, então uma cópia feita antes de o pai\r\n     * renderizar a interpolação fica vazia e não se corrige. `||` e não `??` no fallback:\r\n     * option com texto vazio mostra o valor, em vez de um chip sem nada.\r\n     */\r\n    chipLabel(value: any): string {\r\n        const option = this.options?.find(o => o.value() === value);\r\n\r\n        return option?.getTextContent() || String(value);\r\n    }\r\n\r\n    /** Remove valor específico em modo multi (chamado pelo × dos chips). */\r\n    removeValueFromSelection(value: any, evt?: Event): void {\r\n        if (evt) { evt.stopPropagation(); evt.preventDefault(); }\r\n        if (!this.isMultiple || this.isCurrentlyDisabled) return;\r\n\r\n        this.selectedValues = this.selectedValues.filter(v => v !== value);\r\n        this.syncOptionsSelectedState();\r\n        this.rebuildChips();\r\n\r\n        const snapshot = [...this.selectedValues];\r\n        this.onChange(snapshot);\r\n        this.selectionChange.emit({ source: this, value: snapshot });\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    /** Seleciona TODAS as options não-disabled em multi-mode.\r\n     *  Usado pelo botão \"Selecionar todos\" no header do panel. */\r\n    selectAll(evt?: Event): void {\r\n        if (evt) { evt.stopPropagation(); evt.preventDefault(); }\r\n        if (!this.isMultiple || this.isCurrentlyDisabled) return;\r\n\r\n        const all = this.options\r\n            .filter(o => !o.disabled())\r\n            .map(o => o.value());\r\n        this.selectedValues = [...all];\r\n        this.syncOptionsSelectedState();\r\n        this.rebuildChips();\r\n\r\n        const snapshot = [...this.selectedValues];\r\n        this.onChange(snapshot);\r\n        this.selectionChange.emit({ source: this, value: snapshot });\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    /** Quantas options estão selecionadas em multi. Usado pela UI (contagem no trigger, toggle select all). */\r\n    get selectedCount(): number {\r\n        return this.isMultiple ? this.selectedValues.length : (this.hasSelection() ? 1 : 0);\r\n    }\r\n\r\n    /** True se TODAS as options não-disabled estão selecionadas (pra alternar Select all ↔ Limpar). */\r\n    get isAllSelected(): boolean {\r\n        if (!this.isMultiple) return false;\r\n        const selectable = this.options.filter(o => !o.disabled());\r\n        if (selectable.length === 0) return false;\r\n        return selectable.every(o => this.selectedValues.includes(o.value()));\r\n    }\r\n\r\n    // ── Clear (× global) ─────────────────────────────────────────────────\r\n    clear(evt?: Event): void {\r\n        if (evt) { evt.stopPropagation(); evt.preventDefault(); }\r\n        if (this.isCurrentlyDisabled) return;\r\n\r\n        if (this.isMultiple) {\r\n            this.selectedValues = [];\r\n            this.selectedChips = [];\r\n        } else {\r\n            this.selectedValue = undefined;\r\n            this.selectedLabel = '';\r\n        }\r\n\r\n        if (this.options) this.options.forEach(o => o.selected = false);\r\n\r\n        const emptyValue = this.isMultiple ? [] : undefined;\r\n        this.onChange(emptyValue);\r\n        this.onTouched();\r\n        // Mesmo shape { source, value } dos demais paths de seleção — consumidores\r\n        // fazem event.value; emitir o valor cru aqui quebrava o contrato do output.\r\n        this.selectionChange.emit({ source: this, value: emptyValue });\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    clearSelection() { this.clear(); }\r\n\r\n    getSelectedValue() {\r\n        return this.isMultiple ? [...this.selectedValues] : this.selectedValue;\r\n    }\r\n\r\n    // ── Internal ─────────────────────────────────────────────────────────\r\n    private notifyDirectiveOfSelection(value: any) {\r\n        this.elRef.nativeElement.dispatchEvent(new CustomEvent('matcha-select-selection', {\r\n            detail: { value },\r\n            bubbles: true,\r\n        }));\r\n    }\r\n\r\n    // ── CVA ──────────────────────────────────────────────────────────────\r\n    writeValue(value: any): void {\r\n        if (this.isMultiple) {\r\n            this.selectedValues = Array.isArray(value) ? [...value] : (value == null ? [] : [value]);\r\n            this.selectedValue = undefined;\r\n            this.selectedLabel = '';\r\n        } else {\r\n            const previousValue = this.selectedValue;\r\n            this.selectedValue = value;\r\n            this.selectedValues = [];\r\n            if (value !== undefined && value !== null && value !== '') {\r\n                const match = this.options?.find(o => o.value() === value);\r\n                if (match) {\r\n                    this.selectedLabel = match.getTextContent();\r\n                } else if (previousValue !== value) {\r\n                    // Valor novo sem option correspondente: sem rótulo a exibir (cai no\r\n                    // String(value) do trigger? não — fica vazio até a option registrar;\r\n                    // syncOptionsSelectedState resolve quando ela chegar).\r\n                    this.selectedLabel = '';\r\n                }\r\n                // else: MESMO valor, option ausente — backend mode refetchou a lista e a\r\n                // option selecionada saiu do DOM. Preserva o último rótulo conhecido em\r\n                // vez de esvaziar o trigger com seleção ativa.\r\n            } else {\r\n                this.selectedLabel = '';\r\n            }\r\n        }\r\n\r\n        this.syncOptionsSelectedState();\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    registerOnChange(fn: (value: any) => void): void { this.onChange = fn; }\r\n    registerOnTouched(fn: () => void): void         { this.onTouched = fn; }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.isDisabledByForm = isDisabled;\r\n        if (isDisabled) this.ensurePanelClosed();\r\n        this.cdr.markForCheck();\r\n        this.cdr.detectChanges();\r\n    }\r\n}\r\n","<!-- ng-content envolto em template pra ser reutilizado no desktop OU sheet.\r\n     Sem isso, Angular projetava options só pro último <ng-content/> declarado\r\n     (sheet), e em desktop o painel ficava vazio. -->\r\n<ng-template #projectedOptions><ng-content /></ng-template>\r\n\r\n<div class=\"matcha-select-container\" [class.matcha-select-disabled]=\"isCurrentlyDisabled\">\r\n    <div class=\"matcha-select-trigger\"\r\n         [class.matcha-select-open]=\"open\"\r\n         [class.matcha-select-disabled]=\"isCurrentlyDisabled\"\r\n         [class.matcha-select-multiple]=\"isMultiple\"\r\n         (click)=\"onTriggerClick()\"\r\n         [attr.tabindex]=\"isCurrentlyDisabled ? -1 : 0\"\r\n         role=\"combobox\"\r\n         [attr.aria-label]=\"ariaLabel || null\"\r\n         [attr.aria-expanded]=\"open\"\r\n         [attr.aria-haspopup]=\"true\"\r\n         [attr.aria-multiselectable]=\"isMultiple ? true : null\"\r\n         [attr.aria-disabled]=\"isCurrentlyDisabled\"\r\n         [attr.aria-controls]=\"open ? listboxId : null\"\r\n         [attr.aria-activedescendant]=\"activeDescendantId\">\r\n\r\n        <!-- Single: o label da opção. Multi: a CONTAGEM (\"N selecionados\"), com os chips\r\n             renderizados fora da caixa (abaixo do host) — o atômico tem 36px e não cabe aqui\r\n             dentro sem obrigar a caixa a crescer. Mesmo desenho do matcha-field. -->\r\n        @if (true) {\r\n            <span class=\"matcha-select-value\"\r\n                  [class.matcha-select-placeholder]=\"isMultiple ? selectedCount === 0 : showPlaceholder\">\r\n                @if (!isMultiple) {\r\n                    {{ getSelectedLabel() || placeholder }}\r\n                } @else if (selectedCount === 0) {\r\n                    {{ placeholder }}\r\n                } @else {\r\n                    {{ selectedCountText }}\r\n                }\r\n            </span>\r\n        }\r\n\r\n\r\n        @if (showClearButton) {\r\n            <button type=\"button\"\r\n                    class=\"matcha-select-clear\"\r\n                    [attr.aria-label]=\"clearSelectionLabel\"\r\n                    (click)=\"clear($event)\">\r\n                <span aria-hidden=\"true\">&times;</span>\r\n            </button>\r\n        }\r\n\r\n        <span class=\"matcha-select-arrow\" [class.matcha-select-arrow-open]=\"open\">\r\n            <span class=\"i-matcha-action_arrow_down i-size-sm\"></span>\r\n        </span>\r\n    </div>\r\n\r\n    <!-- ═══════════════════════════════════════════════════════════════════════\r\n         Dropdown (desktop) — render default\r\n         ═══════════════════════════════════════════════════════════════════════ -->\r\n    @if (!isSheetMode) {\r\n        <matcha-panel #panel\r\n                      [placement]=\"placement\"\r\n                      [maxHeight]=\"maxHeight\"\r\n                      [minWidth]=\"minWidth\"\r\n                      [widthMode]=\"panelWidthMode\"\r\n                      [open]=\"open\"\r\n                      [portalToBody]=\"true\"\r\n                      (closed)=\"closePanel()\">\r\n            <div class=\"matcha-select-options\" [class.matcha-select-options-multi]=\"isMultiple\"\r\n                 [class.matcha-select-options-pinned]=\"isPinActive\"\r\n                 [attr.id]=\"listboxId\"\r\n                 role=\"listbox\"\r\n                 [attr.aria-multiselectable]=\"isMultiple ? true : null\">\r\n                <!-- Busca SEMPRE dentro do painel (single e multi), como o sheet já fazia.\r\n                     Um select não se digita: o trigger nunca é editável -- quem precisa de\r\n                     digitar no próprio campo usa matcha-field type=\"autocomplete\". -->\r\n                @if (isSearchable) {\r\n                    <div class=\"matcha-select-search\">\r\n                        <!-- Lupa em vez de placeholder textual — nada a traduzir. -->\r\n                        <span class=\"matcha-select-search-icon i-matcha-search i-size-sm\" aria-hidden=\"true\"></span>\r\n                        <input type=\"text\"\r\n                               class=\"matcha-select-search-input\"\r\n                               autocomplete=\"off\"\r\n                               [value]=\"searchQuery\"\r\n                               (input)=\"onSearchInput($event)\"\r\n                               (click)=\"$event.stopPropagation()\"\r\n                               aria-label=\"Buscar opções\" />\r\n                        @if (searchQuery) {\r\n                            <button type=\"button\"\r\n                                    class=\"matcha-select-search-clear\"\r\n                                    [attr.aria-label]=\"clearSearchLabel\"\r\n                                    (click)=\"clearSearch($event)\">\r\n                                <span aria-hidden=\"true\">&times;</span>\r\n                            </button>\r\n                        }\r\n                    </div>\r\n                }\r\n\r\n                @if (isMultiple) {\r\n                    <div class=\"matcha-select-bulk-actions\" role=\"toolbar\" [attr.aria-label]=\"bulkActionsLabel\">\r\n                        @if (showsSelectAll) {\r\n                            <button type=\"button\"\r\n                                    class=\"matcha-select-bulk-btn\"\r\n                                    [attr.aria-pressed]=\"isAllSelected\"\r\n                                    [disabled]=\"isCurrentlyDisabled\"\r\n                                    (click)=\"isAllSelected ? clear($event) : selectAll($event)\">\r\n                                {{ isAllSelected ? deselectAllLabel : selectAllLabel }}\r\n                            </button>\r\n                        }\r\n                        @if (showsBulkClear) {\r\n                            <button type=\"button\"\r\n                                    class=\"matcha-select-bulk-btn matcha-select-bulk-btn-ghost\"\r\n                                    [disabled]=\"isCurrentlyDisabled\"\r\n                                    (click)=\"clear($event)\">{{ clearLabel }}</button>\r\n                        }\r\n                        <span class=\"matcha-select-bulk-count\" aria-live=\"polite\">{{ selectedCountText }}</span>\r\n                    </div>\r\n                }\r\n\r\n                <ng-container *ngTemplateOutlet=\"projectedOptions\"></ng-container>\r\n\r\n                @if (isLoading) {\r\n                    <!-- Só o spinner — texto exigiria i18n; aria-label cobre leitores de tela. -->\r\n                    <div class=\"matcha-select-loading\" role=\"status\" aria-live=\"polite\" aria-label=\"Carregando opções\">\r\n                        <span class=\"matcha-select-loading-spinner\" aria-hidden=\"true\"></span>\r\n                    </div>\r\n                }\r\n\r\n                @if (!isLoading && isSearchable && searchQuery && visibleOptionsCount === 0) {\r\n                    <div class=\"matcha-select-empty\" role=\"status\" aria-live=\"polite\">\r\n                        {{ noResultsMessage }}\r\n                    </div>\r\n                }\r\n            </div>\r\n        </matcha-panel>\r\n    }\r\n\r\n    <!-- ═══════════════════════════════════════════════════════════════════════\r\n         Bottom-sheet (mobile) — aligned com Figma matcha/field/select/mobile-sheet\r\n         ═══════════════════════════════════════════════════════════════════════ -->\r\n    @if (isSheetMode) {\r\n        <div class=\"matcha-select-sheet-overlay\"\r\n             [class.matcha-select-sheet-open]=\"open\"\r\n             (click)=\"closePanel()\"\r\n             role=\"presentation\">\r\n            <div class=\"matcha-select-sheet\"\r\n                 [class.matcha-select-sheet-open]=\"open\"\r\n                 role=\"dialog\"\r\n                 aria-modal=\"true\"\r\n                 [attr.aria-label]=\"effectiveSheetTitle\"\r\n                 (click)=\"$event.stopPropagation()\">\r\n                <!-- Drag handle (40x4 pill) — swipe-to-close ancora aqui e no header. -->\r\n                <div class=\"matcha-select-sheet-handle\" aria-hidden=\"true\"\r\n                     (touchstart)=\"onSheetDragStart($event)\"\r\n                     (touchmove)=\"onSheetDragMove($event)\"\r\n                     (touchend)=\"onSheetDragEnd($event)\"\r\n                     (touchcancel)=\"onSheetDragEnd($event)\"></div>\r\n\r\n                <!-- Header: título + close -->\r\n                <div class=\"matcha-select-sheet-header\"\r\n                     (touchstart)=\"onSheetDragStart($event)\"\r\n                     (touchmove)=\"onSheetDragMove($event)\"\r\n                     (touchend)=\"onSheetDragEnd($event)\"\r\n                     (touchcancel)=\"onSheetDragEnd($event)\">\r\n                    <h2 class=\"matcha-select-sheet-title\">{{ effectiveSheetTitle }}</h2>\r\n                    <button type=\"button\"\r\n                            class=\"matcha-select-sheet-close\"\r\n                            aria-label=\"Fechar\"\r\n                            (click)=\"closePanel()\">\r\n                        <span aria-hidden=\"true\">&times;</span>\r\n                    </button>\r\n                </div>\r\n\r\n                <div class=\"matcha-select-options matcha-select-options-sheet\"\r\n                     [class.matcha-select-options-multi]=\"isMultiple\">\r\n                    @if (isMultiple) {\r\n                        <div class=\"matcha-select-bulk-actions\" role=\"toolbar\" [attr.aria-label]=\"bulkActionsLabel\">\r\n                            @if (showsSelectAll) {\r\n                                <button type=\"button\"\r\n                                        class=\"matcha-select-bulk-btn\"\r\n                                        [attr.aria-pressed]=\"isAllSelected\"\r\n                                        [disabled]=\"isCurrentlyDisabled\"\r\n                                        (click)=\"isAllSelected ? clear($event) : selectAll($event)\">\r\n                                    {{ isAllSelected ? deselectAllLabel : selectAllLabel }}\r\n                                </button>\r\n                            }\r\n                            @if (showsBulkClear) {\r\n                                <button type=\"button\"\r\n                                        class=\"matcha-select-bulk-btn matcha-select-bulk-btn-ghost\"\r\n                                        [disabled]=\"isCurrentlyDisabled\"\r\n                                        (click)=\"clear($event)\">{{ clearLabel }}</button>\r\n                            }\r\n                            <span class=\"matcha-select-bulk-count\" aria-live=\"polite\">{{ selectedCountText }}</span>\r\n                        </div>\r\n                    }\r\n\r\n                    @if (isSearchable) {\r\n                        <div class=\"matcha-select-search\">\r\n                            <!-- Lupa em vez de placeholder textual — nada a traduzir. -->\r\n                            <span class=\"matcha-select-search-icon i-matcha-search i-size-sm\" aria-hidden=\"true\"></span>\r\n                            <input type=\"text\"\r\n                                   class=\"matcha-select-search-input\"\r\n                                   autocomplete=\"off\"\r\n                                   [value]=\"searchQuery\"\r\n                                   (input)=\"onSearchInput($event)\"\r\n                                   (click)=\"$event.stopPropagation()\"\r\n                                   aria-label=\"Buscar opções\" />\r\n                            @if (searchQuery) {\r\n                                <button type=\"button\"\r\n                                        class=\"matcha-select-search-clear\"\r\n                                        [attr.aria-label]=\"clearSearchLabel\"\r\n                                        (click)=\"clearSearch($event)\">\r\n                                    <span aria-hidden=\"true\">&times;</span>\r\n                                </button>\r\n                            }\r\n                        </div>\r\n                    }\r\n\r\n                    <!-- Sheet: as fixadas sobem dentro da LISTA (busca e ações em lote são\r\n                         irmãs dela, não filhas — já ficam acima por DOM). -->\r\n                    <div class=\"matcha-select-sheet-list\"\r\n                         [class.matcha-select-options-pinned]=\"isPinActive\">\r\n                        <ng-container *ngTemplateOutlet=\"projectedOptions\"></ng-container>\r\n\r\n                        @if (isLoading) {\r\n                            <!-- Só o spinner — texto exigiria i18n; aria-label cobre leitores de tela. -->\r\n                            <div class=\"matcha-select-loading\" role=\"status\" aria-live=\"polite\" aria-label=\"Carregando opções\">\r\n                                <span class=\"matcha-select-loading-spinner\" aria-hidden=\"true\"></span>\r\n                            </div>\r\n                        }\r\n\r\n                        @if (!isLoading && isSearchable && searchQuery && visibleOptionsCount === 0) {\r\n                            <div class=\"matcha-select-empty\" role=\"status\" aria-live=\"polite\">\r\n                                {{ noResultsMessage }}\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                </div>\r\n\r\n                <!-- Safe-area bottom (iOS home indicator) -->\r\n                <div class=\"matcha-select-sheet-safe-area\" aria-hidden=\"true\"></div>\r\n            </div>\r\n        </div>\r\n    }\r\n\r\n    <!-- Chips FORA da caixa (padrão canônico do DS), com o matcha-chip do próprio DS. Eram\r\n         `<span class=\"matcha-select-chip\">` montados à mão, de 22px, com ~95 linhas de tema\r\n         replicando o que o atômico já faz — o tamanho menor existia só pra caber dentro da\r\n         caixa, que é justamente o desenho que saiu daqui. -->\r\n    @if (isMultiple && showsChips && selectedCount > 0) {\r\n        <div class=\"matcha-select-chip-list\" role=\"list\">\r\n            @for (chip of selectedChips; track chip.value) {\r\n                <matcha-chip role=\"listitem\"\r\n                             [attr.data-value]=\"chip.value\"\r\n                             [removable]=\"true\"\r\n                             [disabled]=\"isCurrentlyDisabled\"\r\n                             (removed)=\"removeValueFromSelection(chip.value)\">{{ chipLabel(chip.value) }}</matcha-chip>\r\n            }\r\n        </div>\r\n    }\r\n</div>\r\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { MatchaSelectComponent } from './matcha-select.component';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Directive({\r\n  selector: '[matchaSelect]',\r\n  standalone: true,\r\n})\r\nexport class MatchaSelectTriggerDirective implements AfterViewInit, OnDestroy {\r\n  @Input('matchaSelect') select!: MatchaSelectComponent;\r\n  private subs = new Subscription();\r\n\r\n  constructor(private el: ElementRef<HTMLElement>) {}\r\n\r\n  ngAfterViewInit() {\r\n    if (!this.select) {\r\n      throw new Error('Você precisa passar uma referência para <matcha-select> ex: [matchaSelect]=\"select\"');\r\n    }\r\n\r\n    // close panel ao clicar fora - usando click para evitar conflito com focus\r\n    const clickSub = fromEvent(document, 'click').pipe(\r\n      filter((ev: any) => {\r\n        const target = ev.target as Node;\r\n        const isInsideTrigger = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\r\n        const isInsidePanel = this.select?.elRef?.nativeElement?.contains?.(target);\r\n\r\n        // Só fechar se o painel estiver aberto e clicou fora\r\n        return this.select?.open && !isInsideTrigger && !isInsidePanel;\r\n      })\r\n    ).subscribe(() => {\r\n      this.select.closePanel();\r\n    });\r\n\r\n    this.subs.add(clickSub);\r\n\r\n    // Escutar evento de seleção do select\r\n    const selectionSub = fromEvent(this.select.elRef.nativeElement, 'matcha-select-selection').subscribe((event: any) => {\r\n      const { value } = event.detail;\r\n      if (value !== undefined) {\r\n        this.writeValueToInput(value);\r\n      }\r\n    });\r\n\r\n    this.subs.add(selectionSub);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subs.unsubscribe();\r\n  }\r\n\r\n  private writeValueToInput(value: any) {\r\n    const input = this.el.nativeElement as HTMLInputElement;\r\n    input.value = value == null ? '' : value;\r\n\r\n    // Dispatch múltiplos eventos para garantir compatibilidade com Angular Forms\r\n    const inputEvent = new Event('input', { bubbles: true });\r\n    const changeEvent = new Event('change', { bubbles: true });\r\n    const blurEvent = new Event('blur', { bubbles: true });\r\n\r\n    input.dispatchEvent(inputEvent);\r\n    input.dispatchEvent(changeEvent);\r\n    input.dispatchEvent(blurEvent);\r\n  }\r\n\r\n  @HostListener('click')\r\n  onClick() {\r\n    // Abrir painel quando clicar no trigger\r\n    this.select.openPanel();\r\n  }\r\n\r\n  @HostListener('focus')\r\n  onFocus() {\r\n    // Não abrir automaticamente no focus para evitar conflito com click outside\r\n    // O painel será aberto apenas quando o usuário clicar\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onKeydown(ev: KeyboardEvent) {\r\n    if (!this.select) return;\r\n\r\n    switch (ev.key) {\r\n      case 'ArrowDown':\r\n        ev.preventDefault();\r\n        this.select.highlightNext();\r\n        break;\r\n      case 'ArrowUp':\r\n        ev.preventDefault();\r\n        this.select.highlightPrevious();\r\n        break;\r\n      case 'Enter':\r\n      case ' ':\r\n        ev.preventDefault();\r\n        this.select.selectActive();\r\n        // pega o value escolhido e escreve no input\r\n        setTimeout(() => {\r\n          const val = this.select.getSelectedValue();\r\n          if (val !== undefined) this.writeValueToInput(val);\r\n        });\r\n        break;\r\n      case 'Escape':\r\n        ev.preventDefault();\r\n        this.select.closePanel();\r\n        break;\r\n    }\r\n  }\r\n\r\n  // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\r\n  // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\r\n  // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\r\n  // Simples solução: observar clicks nas options via delegation:\r\n  @HostListener('document:click', ['$event'])\r\n  onDocClick(ev: MouseEvent) {\r\n    const target = ev.target as HTMLElement;\r\n\r\n    // Verificar se o clique foi em uma opção deste painel específico\r\n    const isOptionClick = target.closest('matcha-option') &&\r\n                         this.select?.elRef?.nativeElement?.contains(target);\r\n\r\n    if (isOptionClick) {\r\n      // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\r\n      setTimeout(() => {\r\n        if (this.select && typeof this.select.getSelectedValue === 'function') {\r\n          const val = this.select.getSelectedValue();\r\n          if (val !== undefined) this.writeValueToInput(val);\r\n        }\r\n      }, 10);\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaSelectComponent } from './matcha-select.component';\r\nimport { MatchaSelectTriggerDirective } from './matcha-select.directive';\r\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\r\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaSelectComponent,\r\n    MatchaSelectTriggerDirective,\r\n    MatchaOptionModule,\r\n    MatchaPanelModule\r\n  ],\r\n  exports: [\r\n    MatchaSelectComponent,\r\n    MatchaSelectTriggerDirective,\r\n    MatchaOptionModule\r\n  ]\r\n})\r\nexport class MatchaSelectModule { }\r\n","import {\r\n    Component, AfterViewInit, OnDestroy, ElementRef, HostBinding,\r\n    ChangeDetectionStrategy, ChangeDetectorRef,\r\n    input, contentChild, effect, signal, computed, booleanAttribute,\r\n    DestroyRef, inject\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgControl } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * @deprecated Preferir `<matcha-field type=\"X\">` como API canônica a partir da v1.1.\r\n * Esta primitiva low-level continua funcional e é usada internamente pelo matcha-field.\r\n * Use diretamente apenas em casos avançados (layouts custom com prefix/suffix não-padronizados).\r\n * Ver docs/migration-guide.md pra mapeamento 1:1.\r\n */\r\n\r\n// Canonical size by extension: small/medium/large. Abbreviations (sm/md/lg) are RESERVED\r\n// for breakpoints — accepted here only as @deprecated aliases (legacy tiny/huge too).\r\nconst SIZE_ALIASES: Record<string, string> = {\r\n    sm: 'small', tiny: 'small',\r\n    md: 'medium',\r\n    lg: 'large', huge: 'large',\r\n};\r\nconst normalizeSize = (v: string | null | undefined): string | null =>\r\n    v ? (SIZE_ALIASES[v] || v) : null;\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-form-field',\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: './matcha-form-field.component.html',\r\n    styleUrls: ['./matcha-form-field.component.scss'],\r\n})\r\nexport class MatchaFormFieldComponent implements AfterViewInit, OnDestroy {\r\n    // ── Inputs via signal (Angular 17.3+) ────────────────────────────────\r\n    color = input<string>('grey');\r\n\r\n    // Size com transform pra aceitar aliases legados (sm/md/lg, tiny/huge) → canônico extenso\r\n    // Default small: decisão de Design (2026-07-21) — inputs do painel ficam compactos por padrão.\r\n    size = input('small' as string | null, { transform: normalizeSize });\r\n\r\n    // Responsive size aliases (input name = breakpoint abreviado; valor = size extenso)\r\n    sizeXs = input(null as string | null, { alias: 'size-xs', transform: normalizeSize });\r\n    sizeSm = input(null as string | null, { alias: 'size-sm', transform: normalizeSize });\r\n    sizeMd = input(null as string | null, { alias: 'size-md', transform: normalizeSize });\r\n    sizeLg = input(null as string | null, { alias: 'size-lg', transform: normalizeSize });\r\n    sizeXl = input(null as string | null, { alias: 'size-xl', transform: normalizeSize });\r\n\r\n    // Estados — booleanAttribute aceita `[prop]=\"true\"`, `prop=\"\"`, `prop=\"true\"`, atributo-only\r\n    error    = input(false, { transform: booleanAttribute });\r\n    loading  = input(false, { transform: booleanAttribute });\r\n    readonly = input(false, { transform: booleanAttribute });\r\n    /** Disabled DECLARADO pelo consumidor. É o caminho autoritativo: o `matcha-field` passa o\r\n     *  próprio `isDisabled()` aqui, então vale pra qualquer type (inclusive date/time/range/\r\n     *  checklist, que os filhos não refletem como atributo e o sniffing abaixo não enxerga).\r\n     *  Compõe (não substitui) com o disabled detectado — ver `isDisabled`. */\r\n    disabled = input(false, { transform: booleanAttribute });\r\n\r\n    // ── Content queries via signal ────────────────────────────────────────\r\n    controlDir = contentChild(NgControl);\r\n\r\n    // ── Host bindings (lidos do signal) ──────────────────────────────────\r\n    @HostBinding('attr.size')     get sizeAttr()     { return this.size(); }\r\n    @HostBinding('attr.error')    get errorAttr()    { return this.error() ? 'true' : null; }\r\n    @HostBinding('attr.loading')  get loadingAttr()  { return this.loading() ? 'true' : null; }\r\n    @HostBinding('attr.readonly') get readonlyAttr() { return this.readonly() ? 'true' : null; }\r\n    /** Reflete o estado disabled no HOST — é o que ativa `matcha-form-field[disabled]` no tema\r\n     *  (opacity 0.38 em label + box + hint). Sem isso, disabled só trocava a borda pra\r\n     *  `interaction-disabled-border`, que tem MAIS contraste que a borda normal nos dois temas:\r\n     *  o campo desabilitado ficava mais evidente que o ativo. Espelha loading/readonly acima. */\r\n    @HostBinding('attr.disabled') get disabledAttr() { return this.isDisabled() ? 'true' : null; }\r\n\r\n    // ── Estado interno ────────────────────────────────────────────────────\r\n    /** Disabled inferido do DOM/FormControl projetado (ver `checkDisabledState`). Fallback pro\r\n     *  uso da primitiva composta à mão — quem usa `matcha-field` chega pelo input `disabled`. */\r\n    private detectedDisabled = signal<boolean>(false);\r\n\r\n    /** Estado efetivo: declarado pelo consumidor OU detectado. Lido pelo template e pelo host. */\r\n    isDisabled = computed<boolean>(() => this.disabled() || this.detectedDisabled());\r\n    private mutationObserver?: MutationObserver;\r\n    private static idCounter = 0;\r\n\r\n    private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n    private cdr = inject(ChangeDetectorRef);\r\n    private destroyRef = inject(DestroyRef);\r\n\r\n    constructor() {\r\n        // Sincroniza `readonly` nos inputs projetados reativamente\r\n        effect(() => {\r\n            this.syncReadonly(this.readonly());\r\n        });\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this.generateDataCy();\r\n        this.setupA11y();\r\n        this.checkDisabledState();\r\n        this.setupDisabledObserver();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.mutationObserver?.disconnect();\r\n    }\r\n\r\n    /** Acesso público ao FormControl projetado (se houver ngModel/formControlName). */\r\n    get control() { return this.controlDir()?.control; }\r\n\r\n    // Espelha `control.invalid && control.touched` num signal de verdade. `computed()`\r\n    // só reage a LEITURAS DE SIGNAL — ler `this.control?.invalid`/`.touched` (propriedades\r\n    // mutáveis comuns do AbstractControl) não cria dependência nenhuma, então o cálculo\r\n    // antigo rodava uma vez (control pristine → false) e nunca mais reavaliava, mesmo com\r\n    // o campo touched+invalid. Atualizado em setupA11y() via `ctrl.events`.\r\n    private controlErrorState = signal(false);\r\n\r\n    /** Quando exibir o bloco de erro. Força-exibe via [error]=true, ou reage ao control invalid+touched. */\r\n    showError = computed(() => this.error() || this.controlErrorState());\r\n\r\n    // ─────────────────────────────────────────────────────────────────────\r\n    // DOM SETUP (legítimo — ajusta ARIA em elementos nativos projetados).\r\n    // Não dá pra substituir querySelector por ContentChild aqui porque\r\n    // <input>, <textarea>, <select> são nativos sem @Component que indexe.\r\n    // Pra resolver isso corretamente seria criar um `matchaInput` directive\r\n    // e exigir que todos os inputs no DS declarem a directive. Mudança DS-wide\r\n    // fora de escopo desta iteração.\r\n    // ─────────────────────────────────────────────────────────────────────\r\n\r\n    /**\r\n     * @deprecated Handle de teste legado. Desde a v21.3.0 o handle canônico é o `data-qa`\r\n     * autoral: no host via `MatchaDataQaDirective` (`<matcha-form-field data-qa=\"...\">`) ou\r\n     * direto no `<input>` projetado (`<input data-qa=\"...\">`). Este `data-cy` derivado do\r\n     * label é frágil (muda com i18n, colide em labels iguais, ausente sem label) e será\r\n     * removido num major futuro (entrada breaking no changelog). Mantido por retrocompat.\r\n     */\r\n    private generateDataCy(): void {\r\n        const el = this.elementRef.nativeElement;\r\n        const labelElement = el.querySelector('matcha-label');\r\n        const inputElement = el.querySelector('input, textarea, select');\r\n        if (!labelElement || !inputElement) return;\r\n        const labelText = labelElement.textContent?.trim();\r\n        if (!labelText) return;\r\n        inputElement.setAttribute('data-cy', `matcha-form-field-${this.kebab(labelText)}`);\r\n    }\r\n\r\n    private kebab(text: string): string {\r\n        return text\r\n            .toLowerCase()\r\n            .replace(/\\s+/g, '-')\r\n            .replace(/[^\\w\\-]/g, '')\r\n            .replace(/\\-\\-+/g, '-')\r\n            .replace(/^-+|-+$/g, '');\r\n    }\r\n\r\n    /**\r\n     * A11y: link label→input, error/hint→input via aria-describedby, aria-required/invalid.\r\n     */\r\n    private setupA11y(): void {\r\n        const el    = this.elementRef.nativeElement;\r\n        // Elemento que carrega a semântica do campo -- é NELE que nome acessível,\r\n        // aria-describedby e aria-invalid fazem efeito; num nó sem `role` os atributos\r\n        // ficam presentes e inertes. Ordem:\r\n        //   1. controle nativo (<input>/<textarea>/<select>) -- inclui o input interno do\r\n        //      matcha-date, que é o nó que a árvore de acessibilidade usa;\r\n        //   2. o nó com role dentro do controle custom. O HOST do matcha-select NÃO tem\r\n        //      role: quem é o campo é o `div[role=\"combobox\"]` do trigger, interno;\r\n        //   3. o host do controle custom, último recurso pra custom ainda não previsto.\r\n        // Sem essa resolução, um form-field com APENAS um controle custom saía no\r\n        // `if (!input) return` abaixo e perdia de uma vez label, aria-describedby do\r\n        // matcha-error, aria-required, aria-invalid e o controlErrorState que EXIBE o erro.\r\n        const input = (el.querySelector('input, textarea, select')\r\n            ?? el.querySelector('[role=\"combobox\"]')\r\n            ?? el.querySelector('matcha-select, matcha-autocomplete, matcha-date')) as HTMLElement | null;\r\n\r\n        // Espelha o \"required\" do validator nos controles custom (matcha-select/date/\r\n        // autocomplete), que não são <input> nativos. O matcha-label já auto-detecta\r\n        // `matcha-select[required]` etc., mas nada setava o atributo neles — por isso o\r\n        // asterisco não aparecia em select/date/autocomplete obrigatórios.\r\n        if (this.controlDir()?.control?.validator?.({} as any)?.['required']) {\r\n            el.querySelectorAll('matcha-select, matcha-autocomplete, matcha-date')\r\n                .forEach(c => {\r\n                    c.setAttribute('required', '');\r\n                    c.setAttribute('aria-required', 'true');\r\n                });\r\n        }\r\n\r\n        if (!input) return;\r\n        const label = el.querySelector('matcha-label') as HTMLElement | null;\r\n        const error = el.querySelector('matcha-error') as HTMLElement | null;\r\n        const hint  = el.querySelector('matcha-hint-text') as HTMLElement | null;\r\n\r\n        if (!input.id) {\r\n            input.id = 'matcha-input-' + (++MatchaFormFieldComponent.idCounter);\r\n        }\r\n\r\n        if (label) {\r\n            label.setAttribute('id', input.id + '-label');\r\n            // aria-labelledby VENCE aria-label no cálculo do nome acessível. Se o controle\r\n            // já tem aria-label próprio, é porque o consumidor passou [ariaLabel] de\r\n            // propósito (o matcha-select remove o atributo quando o input está vazio, então\r\n            // a presença é sinal confiável de escolha explícita) -- não atropelar.\r\n            if (!input.hasAttribute('aria-label')) {\r\n                input.setAttribute('aria-labelledby', input.id + '-label');\r\n            }\r\n        }\r\n\r\n        const describedBy: string[] = [];\r\n        if (error) {\r\n            const errorId = input.id + '-error';\r\n            error.setAttribute('id', errorId);\r\n            error.setAttribute('role', 'alert');\r\n            error.setAttribute('aria-live', 'polite');\r\n            describedBy.push(errorId);\r\n        }\r\n        if (hint) {\r\n            const hintId = input.id + '-hint';\r\n            hint.setAttribute('id', hintId);\r\n            describedBy.push(hintId);\r\n        }\r\n        if (describedBy.length) {\r\n            input.setAttribute('aria-describedby', describedBy.join(' '));\r\n        }\r\n\r\n        const ctrl = this.controlDir()?.control;\r\n        if (!ctrl) return;\r\n\r\n        // aria-required a partir dos validators\r\n        if (ctrl.validator) {\r\n            const result = ctrl.validator({} as any);\r\n            if (result?.['required']) {\r\n                input.setAttribute('aria-required', 'true');\r\n                input.setAttribute('required', '');\r\n            }\r\n        }\r\n\r\n        // Reage a QUALQUER evento do controle (valor, status, touched, pristine) — não só\r\n        // statusChanges, que NÃO emite quando o campo só é tocado (blur) sem o valor mudar\r\n        // de novo: markAsTouched() não roda updateValueAndValidity(), então um blur num\r\n        // campo que já estava inválido desde a primeira tecla nunca atualizava aria-invalid\r\n        // nem o signal que controla a exibição do <matcha-error>.\r\n        const syncErrorState = () => {\r\n            input.setAttribute('aria-invalid', String(ctrl.invalid && ctrl.touched));\r\n            el.classList.toggle('matcha-form-field-has-value', !!ctrl.value);\r\n            this.controlErrorState.set(!!ctrl.invalid && !!ctrl.touched);\r\n        };\r\n        ctrl.events\r\n            ?.pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe(syncErrorState);\r\n\r\n        syncErrorState();\r\n    }\r\n\r\n    /** Aplica/remove attr readonly nos inputs projetados quando a prop muda. */\r\n    private syncReadonly(isReadonly: boolean): void {\r\n        const el = this.elementRef?.nativeElement;\r\n        if (!el) return;\r\n        const inputs = el.querySelectorAll<HTMLInputElement>('input, textarea');\r\n        inputs.forEach(i => {\r\n            if (isReadonly) i.setAttribute('readonly', '');\r\n            else            i.removeAttribute('readonly');\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Infere disabled do conteúdo projetado. É FALLBACK pro uso da primitiva composta à mão —\r\n     * quem usa `matcha-field` chega pelo input `disabled` (autoritativo, cobre todos os types).\r\n     *\r\n     * Limitação conhecida: só detecta o que o filho reflete como ATRIBUTO ou expõe via\r\n     * `:disabled` nativo. `matcha-date`/`matcha-time`/`matcha-field-range` não refletem\r\n     * `attr.disabled` (só `matcha-select` e `matcha-phone` refletem), então a primitiva\r\n     * composta à mão com esses filhos não é detectada aqui.\r\n     *\r\n     * `this.control` é `contentChild(NgControl)`: dentro do arranjo do `matcha-field` ele acha o\r\n     * `ngModel` INTERNO do controle (standalone, nunca desabilitado), não o FormControl do\r\n     * consumidor — por isso essa primeira condição não cobre o caso canônico.\r\n     */\r\n    private checkDisabledState(): void {\r\n        this.detectedDisabled.set(this.detectDisabledFromContent());\r\n        // OnPush + mutação vinda de FORA do ciclo (MutationObserver / statusChanges): sem\r\n        // markForCheck o @HostBinding('attr.disabled') não re-avalia e o DOM fica com o valor\r\n        // anterior — mesmo com o signal já correto. `cdr` estava injetado e nunca usado.\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    private detectDisabledFromContent(): boolean {\r\n        const nativeElement = this.elementRef.nativeElement;\r\n\r\n        if (this.control?.disabled) return true;\r\n\r\n        if (nativeElement.querySelectorAll('input:disabled, textarea:disabled, select:disabled').length)\r\n            return true;\r\n\r\n        if (nativeElement.querySelectorAll('matcha-select[disabled], matcha-autocomplete[disabled], matcha-date[disabled], matcha-phone[disabled]').length)\r\n            return true;\r\n\r\n        if (nativeElement.querySelectorAll('.matcha-select-disabled, .matcha-autocomplete-disabled').length)\r\n            return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    private setupDisabledObserver(): void {\r\n        this.control?.statusChanges\r\n            ?.pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe(() => this.checkDisabledState());\r\n\r\n        this.mutationObserver = new MutationObserver(() => this.checkDisabledState());\r\n        this.mutationObserver.observe(this.elementRef.nativeElement, {\r\n            attributes: true,\r\n            attributeFilter: ['disabled', 'class'],\r\n            childList: true,\r\n            subtree: true,\r\n        });\r\n    }\r\n}\r\n","<div class=\"matcha-form-field-wrapper\">\r\n    <ng-content select=\"matcha-label\" />\r\n\r\n    <div class=\"matcha-form-field\"\r\n         [class.matcha-form-field-disabled]=\"isDisabled()\"\r\n         [attr.data-color]=\"color()\"\r\n         #inputSelector>\r\n        <ng-content select=\"matcha-prefix\" />\r\n        <ng-content />\r\n        <ng-content select=\"matcha-suffix\" />\r\n        @if (loading()) {\r\n            <span class=\"matcha-form-field-spinner\"\r\n                  role=\"status\"\r\n                  aria-label=\"Carregando\"></span>\r\n        }\r\n    </div>\r\n\r\n    <ng-content select=\"matcha-autocomplete\" />\r\n    @if (showError()) {\r\n        <ng-content select=\"matcha-error\" />\r\n    }\r\n    <ng-content select=\"matcha-hint-text\" />\r\n</div>\r\n","import {\r\n    Component, AfterViewInit, ElementRef, ChangeDetectionStrategy,\r\n    inject, input, signal, booleanAttribute, effect\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\ntype MatchaLabelColor =\r\n    | 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue'\r\n    | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber'\r\n    | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn'\r\n    | 'brown' | 'grey' | 'blue-grey';\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-label',\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: './matcha-label.component.html',\r\n    styleUrl: './matcha-label.component.scss',\r\n})\r\nexport class MatchaLabelComponent implements AfterViewInit {\r\n    color   = input<MatchaLabelColor>('blue-grey');\r\n    /**\r\n     * Obrigatório (asterisco). Se omitido (undefined), detecta via `required` no input\r\n     * projetado dentro do matcha-form-field. Se setado explicitamente, respeita.\r\n     */\r\n    required = input(undefined as boolean | undefined, {\r\n        transform: (v: unknown): boolean | undefined => {\r\n            if (v === undefined || v === null) return undefined;\r\n            return booleanAttribute(v as string | boolean);\r\n        },\r\n    });\r\n\r\n    /** Tooltip opcional ao lado do label (ícone info + title). */\r\n    tooltip = input<string>('');\r\n\r\n    /** Estado interno de \"required\" — combina prop explícita + auto-detect via DOM. */\r\n    isRequired = signal<boolean>(false);\r\n\r\n    private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n    constructor() {\r\n        // Reage a mudanças dinâmicas do prop `required` (ex.: toggle no playground).\r\n        // Antes usava ngAfterViewInit + queueMicrotask (1x no init) e perdia updates.\r\n        effect(() => {\r\n            const explicit = this.required();\r\n            if (explicit !== undefined) {\r\n                this.isRequired.set(explicit);\r\n            } else {\r\n                this.isRequired.set(this.detectRequiredFromDom());\r\n            }\r\n        });\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        // Re-detect quando o DOM do input projetado já tá pronto (auto-detect via `required` attr).\r\n        queueMicrotask(() => {\r\n            if (this.required() === undefined) {\r\n                this.isRequired.set(this.detectRequiredFromDom());\r\n            }\r\n        });\r\n    }\r\n\r\n    private detectRequiredFromDom(): boolean {\r\n        const formField = this.elementRef.nativeElement.closest('matcha-form-field');\r\n        if (!formField) return false;\r\n        return !!formField.querySelector(\r\n            'input[required], textarea[required], select[required], ' +\r\n            'matcha-select[required], matcha-autocomplete[required], matcha-date[required], ' +\r\n            'matcha-time[required], matcha-field-range[required], matcha-phone[required]'\r\n        );\r\n    }\r\n}\r\n","<label class=\"matcha-label-inner\"\r\n       [attr.data-color]=\"color()\"\r\n       [attr.title]=\"tooltip() || null\"\r\n       [class.has-tooltip]=\"!!tooltip()\">\r\n    <ng-content />\r\n    @if (isRequired()) {\r\n        <span class=\"matcha-label-required\" aria-label=\"obrigatório\">&nbsp;*</span>\r\n    }\r\n    @if (tooltip()) {\r\n        <span class=\"matcha-label-tooltip i-matcha-action_sign_info-out\"\r\n              [attr.aria-label]=\"tooltip()\"\r\n              tabindex=\"0\"\r\n              role=\"img\"></span>\r\n    }\r\n</label>\r\n","import {\r\n  Component,\r\n  ChangeDetectionStrategy,\r\n  ElementRef,\r\n  Renderer2,\r\n  booleanAttribute,\r\n  computed,\r\n  effect,\r\n  inject,\r\n  input,\r\n} from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaDividerDirection = 'horizontal' | 'vertical';\r\nexport type MatchaDividerInset      = 'none' | 'start' | 'end' | 'both';\r\n\r\n/**\r\n * matcha-divider — separador visual entre grupos de conteúdo.\r\n *\r\n * Direções:\r\n *   <matcha-divider></matcha-divider>                         <!-- horizontal default -->\r\n *   <matcha-divider direction=\"vertical\"></matcha-divider>\r\n *\r\n * Com label opcional (M3 — Figma DSV3 description menciona):\r\n *   <matcha-divider>OU</matcha-divider>\r\n *   <matcha-divider direction=\"vertical\">Nova seção</matcha-divider>\r\n *\r\n * Inset (linha que não vai borda-a-borda — útil em listas com avatar):\r\n *   <matcha-divider inset=\"start\"></matcha-divider>\r\n *\r\n * Render: linha 1px com matcha/color/text/hint @ matcha/opacity/strong (0.3) — canônico Figma DSV3.\r\n * Quando há label projetado, a linha quebra em duas com o texto centralizado entre elas.\r\n * Detecção de label via CSS `:has(.matcha-divider-label:not(:empty))` — sem runtime overhead.\r\n *\r\n * Acessibilidade: role=\"separator\" (default) com aria-orientation. `decorative=true` aplica\r\n * role=\"presentation\" e remove aria-orientation.\r\n *\r\n * Compat (legacy): gap/gap-sm/gap-md/gap-lg/gap-xl geram classes utility mx-/my- do matcha-core.\r\n * @deprecated Recomendado: usar gap/padding do container pai em vez disso.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-divider',\r\n  standalone: true,\r\n  templateUrl: './divider.component.html',\r\n  styleUrls: ['./divider.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    '[attr.direction]':        'direction()',\r\n    '[attr.inset]':            'inset() !== \"none\" ? inset() : null',\r\n    '[attr.role]':             'ariaRole()',\r\n    '[attr.aria-orientation]': 'ariaOrientation()',\r\n    '[attr.aria-label]':       'ariaLabel() || null',\r\n  },\r\n})\r\nexport class MatchaDividerComponent {\r\n  private el = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  private renderer = inject(Renderer2);\r\n\r\n  /** Direção visual do separador. Default 'horizontal'. */\r\n  direction = input<MatchaDividerDirection>('horizontal');\r\n\r\n  /**\r\n   * Inset — controla se a linha vai borda-a-borda ou não. Útil em listas\r\n   * com avatar (Material List): inset=\"start\" deixa a linha começar depois\r\n   * do avatar. Default 'none' (linha completa).\r\n   */\r\n  inset = input<MatchaDividerInset>('none');\r\n\r\n  /**\r\n   * Texto opcional centralizado no divider (\"OU\", \"Nova seção\").\r\n   * Quando preenchido, a linha quebra em duas com o texto entre. Quando vazio\r\n   * (default), renderiza linha única contínua. Alternativa: usar slot ng-content.\r\n   */\r\n  label = input<string>('');\r\n\r\n  /** Marca como decorativo (role=\"presentation\"). Use quando não separa grupos semânticos. */\r\n  decorative = input(false, { transform: booleanAttribute });\r\n\r\n  /** Indica se o divider deve renderizar com label (prop ou slot). */\r\n  hasLabel = computed(() => this.label().trim().length > 0);\r\n\r\n  /**\r\n   * aria-label opcional — sobrescreve o anúncio padrão. Útil quando o label\r\n   * projetado é abreviação ambígua (ex.: slot \"OU\" — preferir aria-label=\"ou continuar com\").\r\n   */\r\n  ariaLabelInput = input<string>('', { alias: 'aria-label' });\r\n\r\n  // ── Gap props (compat — geram classes utility mx-{N}/my-{N} do matcha-core) ──\r\n  // @deprecated Preferir gap/padding do container pai.\r\n  gap   = input<string | number | null>(null);\r\n  gapSm = input<string | number | null>(null, { alias: 'gap-sm' });\r\n  gapMd = input<string | number | null>(null, { alias: 'gap-md' });\r\n  gapLg = input<string | number | null>(null, { alias: 'gap-lg' });\r\n  gapXl = input<string | number | null>(null, { alias: 'gap-xl' });\r\n\r\n  /** role: separator se semântico, presentation se decorativo. */\r\n  ariaRole = computed(() => this.decorative() ? 'presentation' : 'separator');\r\n\r\n  /** aria-orientation: aplicável só com role=separator. */\r\n  ariaOrientation = computed(() =>\r\n    this.decorative() ? null : this.direction()\r\n  );\r\n\r\n  /** aria-label efetivo (input override). */\r\n  ariaLabel = computed(() => this.ariaLabelInput().trim());\r\n\r\n  constructor() {\r\n    // Aplica/remove classes de gap dinamicamente. Necessário Renderer2 porque\r\n    // host: {} não suporta strings de classe dinâmicas com sufixo (mx-sm-16).\r\n    // Compat-only: novos consumidores devem usar gap/padding do container pai.\r\n    effect(() => {\r\n      const native = this.el.nativeElement;\r\n      const isVertical = this.direction() === 'vertical';\r\n      const prefix = isVertical ? 'mx' : 'my';\r\n\r\n      // Remove gap classes anteriores (qualquer m[xy]-*)\r\n      Array.from(native.classList).forEach(cls => {\r\n        if (/^m[xy]-/.test(cls)) this.renderer.removeClass(native, cls);\r\n      });\r\n\r\n      const apply = (val: string | number | null, suffix?: string): void => {\r\n        if (val == null || val === '') return;\r\n        const cls = suffix\r\n          ? `${prefix}-${suffix}-${val}`\r\n          : `${prefix}-${val}`;\r\n        this.renderer.addClass(native, cls);\r\n      };\r\n\r\n      apply(this.gap());\r\n      apply(this.gapSm(), 'sm');\r\n      apply(this.gapMd(), 'md');\r\n      apply(this.gapLg(), 'lg');\r\n      apply(this.gapXl(), 'xl');\r\n    });\r\n  }\r\n}\r\n","<span class=\"matcha-divider-line\" aria-hidden=\"true\"></span>\r\n@if (hasLabel()) {\r\n    <span class=\"matcha-divider-label\">{{ label() }}</span>\r\n    <span class=\"matcha-divider-line\" aria-hidden=\"true\"></span>\r\n}\r\n","import {\r\n  Component, ContentChildren, QueryList, ElementRef,\r\n  AfterContentInit, ViewEncapsulation, ChangeDetectorRef,\r\n  Input, Output, EventEmitter, ViewChild, AfterViewInit, forwardRef, HostBinding, OnDestroy\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nconst HIGHLIGHT_CLASS = 'matcha-option-highlighted';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\r\nimport { MatchaOptionParent, MATCHA_OPTION_PARENT } from '../matcha-option/matcha-option-parent.interface';\r\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * @deprecated Use `<matcha-field type=\"select\" [multiple]=\"true\">`, o caminho canonico de\r\n * multi-selecao. Este e a TERCEIRA superficie para a mesma coisa (a par de\r\n * `matcha-select [multiple]`), nao renderiza chip nenhum para os valores escolhidos e nao\r\n * recebeu nem o chip atomico nem os textos traduziveis. Sai da documentacao neste release;\r\n * o export continua no public-api por retrocompat e sai num release seguinte.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-select-multiple',\r\n  templateUrl: './matcha-select-multiple.component.html',\r\n  styleUrls: ['./matcha-select-multiple.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: false,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MatchaSelectMultipleComponent),\r\n      multi: true\r\n    },\r\n    {\r\n      provide: MATCHA_OPTION_PARENT,\r\n      useExisting: forwardRef(() => MatchaSelectMultipleComponent)\r\n    }\r\n  ]\r\n})\r\nexport class MatchaSelectMultipleComponent implements AfterContentInit, AfterViewInit, OnDestroy, MatchaOptionParent, ControlValueAccessor {\r\n  @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\r\n  @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\r\n  @ViewChild('searchInput') searchInputRef?: ElementRef<HTMLInputElement>;\r\n\r\n  // Valores marcados (independente da QueryList)\r\n  selectedValues: any[] = [];\r\n\r\n  /**\r\n   * Lido pela matcha-option (via MATCHA_OPTION_PARENT) para renderizar o\r\n   * checkbox já no primeiro ciclo, mesmo quando as opções são reprojetadas.\r\n   * Nome `multipleMode` (não `multiple`) conforme MatchaOptionParent.\r\n   */\r\n  readonly multipleMode = true;\r\n\r\n  /**\r\n   * Itens selecionados renderizados na seção fixa do topo do painel.\r\n   * Mantidos pelo próprio componente (com labels capturados) para que\r\n   * permaneçam visíveis mesmo que a busca do pai remova suas opções.\r\n   */\r\n  selectedItems: { value: any; label: string }[] = [];\r\n  private selectedLabels = new Map<any, string>();\r\n\r\n  // Configurações do painel\r\n  @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\r\n  @Input() maxHeight = 280;\r\n  @Input() minWidth = 160;\r\n  @Input() placeholder = 'Selecione uma ou mais opções';\r\n  @Input() disabled = false;\r\n  @Input() label = 'Buscar';\r\n  /** Título da seção fixa de opções selecionadas no topo do painel. */\r\n  @Input() selectedHeader = 'Selecionados';\r\n\r\n  // Busca: o componente NÃO filtra a listagem — apenas emite o termo digitado\r\n  // para que o componente pai atualize as opções projetadas (dados assíncronos).\r\n  @Input() searchable = false;\r\n  @Input() searchPlaceholder = 'Buscar...';\r\n  @Input() searchDebounce = 300;\r\n\r\n  @Output() opened = new EventEmitter<void>();\r\n  @Output() closed = new EventEmitter<void>();\r\n  @Output() selectionChange = new EventEmitter<{ source: MatchaSelectMultipleComponent; value: any[] }>();\r\n  @Output() openedChange = new EventEmitter<boolean>();\r\n  /** Emitido (com debounce) conforme o usuário digita no campo de busca. */\r\n  @Output() searchChange = new EventEmitter<string>();\r\n\r\n  open = false;\r\n  triggerElement?: HTMLElement;\r\n  private activeIndex = -1;\r\n  private optionsSub?: Subscription;\r\n  /**\r\n   * Subs individuais do `optionSelect` de cada option — regeneradas quando a\r\n   * QueryList muda. Tipo estrutural pra aceitar OutputRefSubscription (signal\r\n   * output do Angular), que não é uma Subscription do rxjs.\r\n   */\r\n  private optionSelectSubs: Array<{ unsubscribe: () => void }> = [];\r\n  private search$ = new Subject<string>();\r\n  private searchSub?: Subscription;\r\n\r\n  // ControlValueAccessor\r\n  private onChange = (value: any) => { };\r\n  private onTouched = () => { };\r\n  private isDisabledByForm = false;\r\n\r\n  get isCurrentlyDisabled(): boolean {\r\n    return this.disabled || this.isDisabledByForm;\r\n  }\r\n\r\n  @HostBinding('class.matcha-select-disabled')\r\n  get hostDisabledClass(): boolean {\r\n    return this.isCurrentlyDisabled;\r\n  }\r\n\r\n  @HostBinding('attr.disabled')\r\n  get hostDisabledAttr(): string | null {\r\n    return this.isCurrentlyDisabled ? '' : null;\r\n  }\r\n\r\n  constructor(\r\n    public elRef: ElementRef,\r\n    private cdr: ChangeDetectorRef\r\n  ) { }\r\n\r\n  ngAfterContentInit() {\r\n    this.setupOptions();\r\n\r\n    // Reconfigurar quando a lista de opções mudar (ex: carregamento assíncrono)\r\n    this.optionsSub = this.options.changes.subscribe(() => {\r\n      this.setupOptions();\r\n      if (this.open) {\r\n        this.resetActive();\r\n        this.reorderOptions();\r\n        this.cdr.detectChanges();\r\n      }\r\n    });\r\n\r\n    // Emite o termo de busca com debounce para quem está implementando.\r\n    // A filtragem em si é responsabilidade do pai (dados assíncronos).\r\n    this.searchSub = this.search$\r\n      .pipe(debounceTime(this.searchDebounce), distinctUntilChanged())\r\n      .subscribe(term => this.searchChange.emit(term));\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.cdr.detectChanges();\r\n\r\n    const formField = this.elRef.nativeElement.closest('matcha-form-field') as HTMLElement | null;\r\n    const panelAnchor = formField || this.elRef.nativeElement;\r\n    if (this.panel) {\r\n      this.panel.attachTo(panelAnchor);\r\n    }\r\n\r\n    this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\r\n    this.setupKeyboardNavigation();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.optionsSub?.unsubscribe();\r\n    this.searchSub?.unsubscribe();\r\n    this.optionSelectSubs.forEach(s => s.unsubscribe());\r\n    this.optionSelectSubs = [];\r\n  }\r\n\r\n  // ===== Busca =====\r\n\r\n  /** Handler do input de busca: empurra o valor para o fluxo com debounce. */\r\n  onSearchInput(event: Event) {\r\n    const term = (event.target as HTMLInputElement).value;\r\n    this.search$.next(term);\r\n  }\r\n\r\n  /** Permite navegar/alternar/fechar usando o teclado a partir do campo de busca. */\r\n  onSearchKeydown(event: KeyboardEvent) {\r\n    switch (event.key) {\r\n      case 'ArrowDown':\r\n        event.preventDefault();\r\n        this.highlightNext();\r\n        break;\r\n      case 'ArrowUp':\r\n        event.preventDefault();\r\n        this.highlightPrevious();\r\n        break;\r\n      case 'Enter':\r\n        event.preventDefault();\r\n        this.toggleActive();\r\n        break;\r\n      case 'Escape':\r\n        event.preventDefault();\r\n        this.closePanel();\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n  }\r\n\r\n  /** Dá foco ao campo de busca (chamado ao abrir o painel). */\r\n  private focusSearchInput() {\r\n    if (!this.searchable) return;\r\n    // O input só existe no DOM após o painel renderizar (*ngIf interno do painel)\r\n    setTimeout(() => this.searchInputRef?.nativeElement?.focus());\r\n  }\r\n\r\n  /** Sincroniza o estado checado das opções (o modo múltiplo é derivado do pai). */\r\n  private setupOptions() {\r\n    if (!this.options) return;\r\n    this.subscribeToOptionOutputs();\r\n    this.syncOptionStates();\r\n  }\r\n\r\n  /**\r\n   * Escuta `optionSelect` de cada option via QueryList. A matcha-option DSV3\r\n   * emite o output ao ser clicada (não chama `parent.selectOption` direto),\r\n   * então o toggle é disparado aqui. Resiliente a content-projection e ao\r\n   * portalToBody do matcha-panel, que quebram bubbling de CustomEvent.\r\n   */\r\n  private subscribeToOptionOutputs() {\r\n    this.optionSelectSubs.forEach(s => s.unsubscribe());\r\n    this.optionSelectSubs = [];\r\n    if (!this.options) return;\r\n    this.options.forEach(opt => {\r\n      if (opt.isDestroyed) return;\r\n      this.optionSelectSubs.push(opt.optionSelect.subscribe(option => this.selectOption(option)));\r\n    });\r\n  }\r\n\r\n  private setupKeyboardNavigation() {\r\n    if (!this.triggerElement) return;\r\n\r\n    this.triggerElement.addEventListener('keydown', (event: KeyboardEvent) => {\r\n      if (this.isCurrentlyDisabled) return;\r\n\r\n      switch (event.key) {\r\n        case 'ArrowDown':\r\n          event.preventDefault();\r\n          this.open ? this.highlightNext() : this.openPanel();\r\n          break;\r\n        case 'ArrowUp':\r\n          event.preventDefault();\r\n          this.open ? this.highlightPrevious() : this.openPanel();\r\n          break;\r\n        case 'Enter':\r\n        case ' ':\r\n          event.preventDefault();\r\n          this.open ? this.toggleActive() : this.openPanel();\r\n          break;\r\n        case 'Escape':\r\n          event.preventDefault();\r\n          if (this.open) this.closePanel();\r\n          break;\r\n        case 'Tab':\r\n          // Permitir navegação normal com Tab\r\n          break;\r\n        default:\r\n          break;\r\n      }\r\n    });\r\n  }\r\n\r\n  onTriggerClick() {\r\n    if (this.isCurrentlyDisabled) {\r\n      this.ensurePanelClosed();\r\n      return;\r\n    }\r\n    this.togglePanel();\r\n  }\r\n\r\n  openPanel() {\r\n    if (this.isCurrentlyDisabled) {\r\n      this.ensurePanelClosed();\r\n      return;\r\n    }\r\n\r\n    const formField = this.elRef.nativeElement.closest('matcha-form-field') as HTMLElement | null;\r\n    const panelAnchor = formField || this.elRef.nativeElement;\r\n\r\n    this.open = true;\r\n    this.cdr.detectChanges();\r\n\r\n    this.panel.attachTo(panelAnchor);\r\n    this.panel.openPanel();\r\n\r\n    // Marcadas no início da lista ao abrir\r\n    this.reorderOptions();\r\n    this.resetActive();\r\n    this.focusSearchInput();\r\n\r\n    this.opened.emit();\r\n    this.openedChange.emit(true);\r\n  }\r\n\r\n  closePanel() {\r\n    if (!this.open) return;\r\n    this.open = false;\r\n    this.clearActive();\r\n    this.panel.closePanel();\r\n    this.closed.emit();\r\n    this.openedChange.emit(false);\r\n    this.onTouched();\r\n  }\r\n\r\n  togglePanel() {\r\n    this.open ? this.closePanel() : this.openPanel();\r\n  }\r\n\r\n  // ===== Seleção (toggle) =====\r\n\r\n  /** Chamado pela subscription do `optionSelect` ao clicar na opção ou no checkbox. */\r\n  selectOption(option: MatchaOptionComponent) {\r\n    if (option.disabled()) return;\r\n    this.toggleByValue(option.value());\r\n  }\r\n\r\n  /** Alterna a marcação de um value. Usado pelas opções e pela seção fixa de selecionados. */\r\n  toggleByValue(value: any) {\r\n    this.toggleValue(value);\r\n    this.syncOptionStates();\r\n    this.emitChange();\r\n    // Reordena em tempo real (não fecha o painel — seleção múltipla)\r\n    if (this.open) {\r\n      this.reorderOptions();\r\n    }\r\n    this.cdr.detectChanges();\r\n    // O reposicionamento do painel ao mudar de tamanho é feito automaticamente\r\n    // pelo matcha-panel (ResizeObserver), mantendo-o ancorado ao trigger.\r\n  }\r\n\r\n  private toggleValue(value: any) {\r\n    const idx = this.selectedValues.findIndex(v => v === value);\r\n    if (idx >= 0) {\r\n      this.selectedValues.splice(idx, 1);\r\n    } else {\r\n      this.selectedValues.push(value);\r\n    }\r\n  }\r\n\r\n  isSelected(value: any): boolean {\r\n    return this.selectedValues.some(v => v === value);\r\n  }\r\n\r\n  trackByValue = (_: number, item: { value: any }) => item.value;\r\n\r\n  private syncOptionStates() {\r\n    if (this.options) {\r\n      this.options.forEach(o => {\r\n        const sel = this.isSelected(o.value());\r\n        o.selected = sel;\r\n        // Atualiza o checkbox (signal) — reativo sob OnPush da matcha-option.\r\n        o.setMultipleChecked(sel);\r\n        // Esconde da lista de resultados as opções já selecionadas, pois elas\r\n        // aparecem na seção fixa do topo (evita duplicidade).\r\n        o.nativeElement.style.display = sel ? 'none' : '';\r\n      });\r\n    }\r\n    this.rebuildSelectedItems();\r\n  }\r\n\r\n  /** Reconstrói a lista de selecionados, capturando/atualizando os labels. */\r\n  private rebuildSelectedItems() {\r\n    if (this.options) {\r\n      this.options.forEach(o => {\r\n        const value = o.value();\r\n        if (this.isSelected(value)) {\r\n          const text = o.getTextContent();\r\n          if (text) {\r\n            this.selectedLabels.set(value, text);\r\n          }\r\n        }\r\n      });\r\n    }\r\n    // Remove labels de valores que não estão mais selecionados\r\n    Array.from(this.selectedLabels.keys()).forEach(v => {\r\n      if (!this.isSelected(v)) {\r\n        this.selectedLabels.delete(v);\r\n      }\r\n    });\r\n    this.selectedItems = this.selectedValues.map(v => ({\r\n      value: v,\r\n      label: this.selectedLabels.get(v) ?? String(v)\r\n    }));\r\n  }\r\n\r\n  private emitChange() {\r\n    const value = [...this.selectedValues];\r\n    this.selectionChange.emit({ source: this, value });\r\n    this.onChange(value);\r\n    this.onTouched();\r\n  }\r\n\r\n  // ===== Ordenação / navegação =====\r\n\r\n  /** Retorna as opções com as marcadas primeiro, preservando a ordem de declaração. */\r\n  private getOrderedOptions(): MatchaOptionComponent[] {\r\n    const opts = this.options ? this.options.toArray() : [];\r\n    const checked = opts.filter(o => this.isSelected(o.value()));\r\n    const unchecked = opts.filter(o => !this.isSelected(o.value()));\r\n    return [...checked, ...unchecked];\r\n  }\r\n\r\n  /** Opções navegáveis por teclado: visíveis (não selecionadas) e habilitadas. */\r\n  private getNavigableOptions(): MatchaOptionComponent[] {\r\n    const opts = this.options ? this.options.toArray() : [];\r\n    return opts.filter(o => !this.isSelected(o.value()) && !o.disabled());\r\n  }\r\n\r\n  /** Reanexa os elementos no DOM colocando as opções marcadas no início. */\r\n  private reorderOptions() {\r\n    const ordered = this.getOrderedOptions();\r\n    if (!ordered.length) return;\r\n    const parent = ordered[0].nativeElement.parentNode;\r\n    if (!parent) return;\r\n    ordered.forEach(o => parent.appendChild(o.nativeElement));\r\n  }\r\n\r\n  // ===== Navegação por teclado =====\r\n\r\n  private resetActive() {\r\n    this.activeIndex = -1;\r\n    this.clearActive();\r\n  }\r\n\r\n  private clearActive() {\r\n    if (this.options) {\r\n      // Highlight de teclado é via classe DOM (a matcha-option DSV3 não expõe\r\n      // propriedade `active`; o cursor é ortogonal ao estado marcado).\r\n      this.options.forEach(o => o.nativeElement.classList.remove(HIGHLIGHT_CLASS));\r\n    }\r\n  }\r\n\r\n  private updateActiveStates(ordered: MatchaOptionComponent[]) {\r\n    ordered.forEach((opt, i) => {\r\n      opt.nativeElement.classList.toggle(HIGHLIGHT_CLASS, i === this.activeIndex);\r\n    });\r\n  }\r\n\r\n  highlightNext() {\r\n    const nav = this.getNavigableOptions();\r\n    if (!nav.length) return;\r\n    this.activeIndex = (this.activeIndex + 1) % nav.length;\r\n    this.updateActiveStates(nav);\r\n    this.scrollToActive(nav);\r\n  }\r\n\r\n  highlightPrevious() {\r\n    const nav = this.getNavigableOptions();\r\n    if (!nav.length) return;\r\n    this.activeIndex = (this.activeIndex - 1 + nav.length) % nav.length;\r\n    this.updateActiveStates(nav);\r\n    this.scrollToActive(nav);\r\n  }\r\n\r\n  private scrollToActive(nav: MatchaOptionComponent[]) {\r\n    if (this.activeIndex < 0 || this.activeIndex >= nav.length) return;\r\n    const host = nav[this.activeIndex].nativeElement;\r\n    if (host && host.scrollIntoView) {\r\n      host.scrollIntoView({ block: 'nearest' });\r\n    }\r\n  }\r\n\r\n  private toggleActive() {\r\n    if (this.activeIndex < 0) return;\r\n    const opt = this.getNavigableOptions()[this.activeIndex];\r\n    if (!opt) return;\r\n    this.selectOption(opt);\r\n    // A opção selecionada saiu da lista navegável; reposiciona o índice ativo\r\n    const nav = this.getNavigableOptions();\r\n    if (this.activeIndex >= nav.length) {\r\n      this.activeIndex = nav.length - 1;\r\n    }\r\n    this.updateActiveStates(nav);\r\n  }\r\n\r\n  // ===== Label do trigger =====\r\n\r\n  getSelectedLabel(): string {\r\n    // Usa os labels capturados (selectedItems) para refletir também as\r\n    // selecionadas que a busca do pai possa ter removido da listagem.\r\n    return this.selectedItems.map(i => i.label).filter(Boolean).join(', ');\r\n  }\r\n\r\n  get hasSelection(): boolean {\r\n    return this.selectedValues.length > 0;\r\n  }\r\n\r\n  // ===== API pública =====\r\n\r\n  /** Limpa toda a seleção. */\r\n  clearSelection() {\r\n    this.selectedValues = [];\r\n    this.syncOptionStates();\r\n    this.emitChange();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  // ===== ControlValueAccessor =====\r\n\r\n  writeValue(value: any): void {\r\n    if (Array.isArray(value)) {\r\n      this.selectedValues = [...value];\r\n    } else if (value === undefined || value === null || value === '') {\r\n      this.selectedValues = [];\r\n    } else {\r\n      this.selectedValues = [value];\r\n    }\r\n    // writeValue costuma ser chamado pelo Angular Forms durante o CD inicial\r\n    // (ex: formControlName com valor inicial). Sincronizar o estado das options\r\n    // (selected/checkbox/DOM) dentro desse mesmo ciclo dispara NG0100 — o\r\n    // HostBinding aria-selected da matcha-option muda depois de checado. Defere\r\n    // pro próximo microtask: roda após o CD corrente e antes do paint (sem flicker).\r\n    queueMicrotask(() => {\r\n      this.syncOptionStates();\r\n      this.cdr.detectChanges();\r\n    });\r\n  }\r\n\r\n  registerOnChange(fn: (value: any) => void): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: () => void): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabledByForm = isDisabled;\r\n    if (isDisabled) {\r\n      this.ensurePanelClosed();\r\n    }\r\n    this.cdr.markForCheck();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private ensurePanelClosed(): void {\r\n    if (this.open) {\r\n      this.closePanel();\r\n    }\r\n  }\r\n}\r\n","<div class=\"matcha-select-container\" [class.matcha-select-disabled]=\"isCurrentlyDisabled\">\r\n    <div class=\"matcha-select-trigger\" [class.matcha-select-open]=\"open\" [class.matcha-select-disabled]=\"isCurrentlyDisabled\" (click)=\"onTriggerClick()\" [attr.tabindex]=\"isCurrentlyDisabled ? -1 : 0\" role=\"combobox\" [attr.aria-expanded]=\"open\" [attr.aria-haspopup]=\"true\" [attr.aria-disabled]=\"isCurrentlyDisabled\" [attr.aria-multiselectable]=\"true\">\r\n        <span class=\"matcha-select-value\" [class.matcha-select-placeholder]=\"!hasSelection\">\r\n            {{ getSelectedLabel() || placeholder }}\r\n        </span>\r\n\r\n        <span class=\"matcha-select-arrow\" [class.matcha-select-arrow-open]=\"open\">\r\n            <span class=\"i-matcha-action_arrow_down\"></span>\r\n        </span>\r\n    </div>\r\n\r\n    <matcha-panel #panel [placement]=\"placement\" [maxHeight]=\"maxHeight\" [minWidth]=\"minWidth\" [open]=\"open\" [portalToBody]=\"true\" (closed)=\"closePanel()\">\r\n        <div *ngIf=\"searchable\" (mousedown)=\"$event.stopPropagation()\" class=\"m-8 mt-16\">\r\n            <matcha-form-field>\r\n                <matcha-label>{{ label }}</matcha-label>\r\n                <input #searchInput type=\"text\" [placeholder]=\"searchPlaceholder\" (input)=\"onSearchInput($event)\" (keydown)=\"onSearchKeydown($event)\" autocomplete=\"off\" />\r\n                <div class=\"matcha-suffix\">\r\n                    <matcha-icon name=\"search\" size=\"sm\"></matcha-icon>\r\n                </div>\r\n            </matcha-form-field>\r\n        </div>\r\n\r\n        <!-- Selecionadas: permanecem visíveis no topo, independente da busca -->\r\n        <div *ngIf=\"selectedItems.length\" (mousedown)=\"$event.stopPropagation()\">\r\n            <div class=\"m-16\">{{ selectedHeader }}</div>\r\n            <matcha-option *ngFor=\"let item of selectedItems; trackBy: trackByValue\" [value]=\"item.value\" (optionClick)=\"toggleByValue(item.value)\">\r\n                {{ item.label }}\r\n            </matcha-option>\r\n            <matcha-divider></matcha-divider>\r\n        </div>\r\n        <ng-content></ng-content>\r\n    </matcha-panel>\r\n</div>\r\n","import { Component ,ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-error',\r\n    standalone: true,\r\n  imports: [MatchaIconComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: './matcha-error.component.html',\r\n    styleUrl: './matcha-error.component.scss',\r\n})\r\nexport class MatchaErrorComponent {}\r\n","<p class=\"matcha-form-field-error\" role=\"alert\" aria-live=\"polite\" aria-atomic=\"true\">\r\n    <matcha-icon name=\"action_sign_warning-out\" size=\"sm\"></matcha-icon>\r\n    <ng-content></ng-content>\r\n</p>\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\n\n/**\n * matcha-prefix — slot projetado no início do box do matcha-form-field\n * (antes do input/select/etc). Aceita qualquer conteúdo.\n *\n * Uso:\n *   <matcha-form-field>\n *     <matcha-label>Valor</matcha-label>\n *     <matcha-prefix>R$</matcha-prefix>\n *     <input [matchaMask]=\"'separator.2'\" />\n *   </matcha-form-field>\n */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-prefix',\n    standalone: true,\n    host: {\n        'class': 'matcha-form-field-prefix',\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: '<ng-content></ng-content>',\n})\nexport class MatchaPrefixComponent {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\n\n/**\n * matcha-suffix — slot projetado no fim do box do matcha-form-field\n * (depois do input/select/etc). Aceita qualquer conteúdo.\n *\n * Uso típico: stepper de quantity, chevron de select, counter de textarea.\n *\n *   <matcha-form-field>\n *     <matcha-label>Quantidade</matcha-label>\n *     <input type=\"number\" [(ngModel)]=\"qty\" />\n *     <matcha-suffix class=\"stepper\">\n *       <button matcha-icon-button size=\"xs\" (click)=\"qty=qty-1\">–</button>\n *       <button matcha-icon-button size=\"xs\" (click)=\"qty=qty+1\">+</button>\n *     </matcha-suffix>\n *   </matcha-form-field>\n */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-suffix',\n    standalone: true,\n    host: {\n        'class': 'matcha-form-field-suffix',\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: '<ng-content></ng-content>',\n})\nexport class MatchaSuffixComponent {}\n","import {\r\n    Directive,\r\n    ElementRef,\r\n    OnDestroy,\r\n    Renderer2,\r\n    RendererStyleFlags2,\r\n    booleanAttribute,\r\n    effect,\r\n    inject,\r\n    input,\r\n    numberAttribute,\r\n    output,\r\n} from '@angular/core';\r\n\r\nexport type MatchaTooltipPosition = 'auto' | 'above' | 'below' | 'left' | 'right';\r\n\r\n/** Alinhamento do texto no overlay (visível com múltiplas linhas). */\r\nexport type MatchaTooltipAlign = 'left' | 'center' | 'right';\r\n\r\nlet _idCounter = 0;\r\n\r\n/**\r\n * matchaTooltip — Tooltip informativo (Figma DSV3 14846:89).\r\n *\r\n * Renderiza um overlay com texto + arrow apontando pro elemento host. 4 posições\r\n * (above/below/left/right) + variante com close button. Auto-posicionamento\r\n * recalcula pelo viewport quando `position=\"auto\"`.\r\n *\r\n * API canônica:\r\n *   <button matchaTooltip=\"Texto\">Hover</button>\r\n *   <button matchaTooltip=\"Texto\" matchaTooltipPosition=\"above\">Above</button>\r\n *   <button matchaTooltip=\"Click\" matchaTooltipEnableClose>Click + close</button>\r\n *\r\n * Múltiplas linhas — passar um array (1 item por linha) ou `\\n` na string:\r\n *   <button [matchaTooltip]=\"['0 membros', '0 participantes', '0 visitantes']\">…</button>\r\n *   <button [matchaTooltip]=\"'Linha 1\\nLinha 2'\">…</button>\r\n *   Itens vazios são descartados; array sem conteúdo ⇒ tooltip não abre.\r\n *   matchaTooltipAlign=\"left|center|right\" alinha o texto (default center).\r\n *\r\n * API imperativa (via ViewChild):\r\n *   @ViewChild(MatchaTooltipDirective) tooltip!: MatchaTooltipDirective;\r\n *   this.tooltip.show(); / .hide(); / .toggle();\r\n *\r\n * API legada (back-compat com control-panel-v2 — preferir matchaTooltipPosition):\r\n *   matchaTooltipAbove=\"true\" | matchaTooltipBelow=\"true\"\r\n *   matchaTooltipLeft=\"true\"  | matchaTooltipRight=\"true\"\r\n *\r\n * Comportamento:\r\n *   - Hover/focus abrem com delay (showDelay default 300ms · hideDelay 100ms)\r\n *   - Cursor entrando NO tooltip cancela o hide → permite seleção/cópia de texto\r\n *   - Focus abre IMEDIATAMENTE (teclado não tem transit, delay seria fricção)\r\n *   - matchaTooltipEnableClose desliga hover/focus; só click + close button + Esc\r\n *   - effect() observa disabled/text — fecha se vier disabled OU text vazio\r\n *   - Texto se atualiza in-place se mudar enquanto aberto (recompute position)\r\n *\r\n * Acessibilidade:\r\n *   - role=\"tooltip\" no overlay; aria-describedby no host enquanto visível\r\n *   - Esc fecha em qualquer modo\r\n *   - focusin/focusout abrem/fecham (paridade com hover pra teclado)\r\n */\r\n@Directive({\r\n    selector: '[matchaTooltip]',\r\n    standalone: true,\r\n    host: {\r\n        '(mouseenter)': 'onMouseEnter()',\r\n        '(mouseleave)': 'onMouseLeave()',\r\n        '(focusin)':    'onFocusIn()',\r\n        '(focusout)':   'onFocusOut()',\r\n        '(click)':      'onClick($event)',\r\n    },\r\n})\r\nexport class MatchaTooltipDirective implements OnDestroy {\r\n    private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\r\n    private readonly renderer = inject(Renderer2);\r\n\r\n    /**\r\n     * Texto exibido. Aceita `string` ou `string[]` (1 item por linha — itens\r\n     * vazios são descartados). Sem conteúdo resolvido ⇒ tooltip não abre (e\r\n     * fecha se já aberto). `\\n` numa string também quebra linha.\r\n     */\r\n    readonly text = input<string | string[]>('', { alias: 'matchaTooltip' });\r\n\r\n    /** Posição preferida. 'auto' escolhe pelo espaço disponível no viewport. */\r\n    readonly position = input<MatchaTooltipPosition>('auto', { alias: 'matchaTooltipPosition' });\r\n\r\n    /** Alinhamento do texto (relevante com múltiplas linhas). Default 'center'. */\r\n    readonly align = input<MatchaTooltipAlign>('center', { alias: 'matchaTooltipAlign' });\r\n\r\n    /** Bloqueia exibição (fecha se já aberto). */\r\n    readonly disabled = input(false, { alias: 'matchaTooltipDisabled', transform: booleanAttribute });\r\n\r\n    /** Modo click + close button. Hover/focus deixam de abrir. */\r\n    readonly enableClose = input(false, { alias: 'matchaTooltipEnableClose', transform: booleanAttribute });\r\n\r\n    /** Delay (ms) entre mouseenter e abrir. Default 300 (hover-intent). Foco abre instantaneamente. */\r\n    readonly showDelay = input(300, { alias: 'matchaTooltipShowDelay', transform: numberAttribute });\r\n\r\n    /** Delay (ms) entre mouseleave e fechar. Default 100 (cursor pode entrar no tooltip). */\r\n    readonly hideDelay = input(100, { alias: 'matchaTooltipHideDelay', transform: numberAttribute });\r\n\r\n    // ── Aliases legacy (DEPRECATED — usar matchaTooltipPosition) ─────────\r\n    /** @deprecated Use `matchaTooltipPosition=\"above\"`. */\r\n    readonly _legacyAbove = input(false, { alias: 'matchaTooltipAbove', transform: booleanAttribute });\r\n    /** @deprecated Use `matchaTooltipPosition=\"below\"`. */\r\n    readonly _legacyBelow = input(false, { alias: 'matchaTooltipBelow', transform: booleanAttribute });\r\n    /** @deprecated Use `matchaTooltipPosition=\"left\"`. */\r\n    readonly _legacyLeft = input(false, { alias: 'matchaTooltipLeft', transform: booleanAttribute });\r\n    /** @deprecated Use `matchaTooltipPosition=\"right\"`. */\r\n    readonly _legacyRight = input(false, { alias: 'matchaTooltipRight', transform: booleanAttribute });\r\n\r\n    // ── Outputs ─────────────────────────────────────────────────────────\r\n    /** Emitido após o overlay ser inserido no DOM e posicionado. */\r\n    readonly opened = output<void>();\r\n    /** Emitido após o overlay ser removido do DOM. */\r\n    readonly closed = output<void>();\r\n\r\n    // ── Estado interno ──────────────────────────────────────────────────\r\n    private readonly tooltipId = `matcha-tooltip-${++_idCounter}`;\r\n    private tooltipElement: HTMLElement | null = null;\r\n    private textElement: HTMLElement | null = null;\r\n    private showTimer: ReturnType<typeof setTimeout> | null = null;\r\n    private hideTimer: ReturnType<typeof setTimeout> | null = null;\r\n    private documentClickOff: (() => void) | null = null;\r\n    private documentKeyOff: (() => void) | null = null;\r\n    private windowResizeOff: (() => void) | null = null;\r\n    private overlayMouseEnterOff: (() => void) | null = null;\r\n    private overlayMouseLeaveOff: (() => void) | null = null;\r\n\r\n    constructor() {\r\n        // effect() reage a TODAS as inputs visuais — fecha/atualiza/recomputa\r\n        // o overlay enquanto está aberto, sem o consumidor precisar re-trigger.\r\n        //   - disabled=true OR text vazio → fecha\r\n        //   - text mudou → atualiza textContent + recomputa posição\r\n        //   - position mudou → recomputa direção + top/left\r\n        //   - enableClose mudou → fecha (modo trocou; consumer/pin re-abre)\r\n        //   - align mudou → re-aplica o text-align no overlay aberto\r\n        effect(() => {\r\n            const disabled    = this.disabled();\r\n            const text        = this.resolvedText();\r\n            const enableClose = this.enableClose();\r\n            const align       = this.align();\r\n            // Tracked pra disparar effect quando posição muda\r\n            this.position();\r\n            this._legacyAbove(); this._legacyBelow();\r\n            this._legacyLeft();  this._legacyRight();\r\n\r\n            if (!this.tooltipElement) return;\r\n\r\n            if (disabled || !text) {\r\n                this.hide();\r\n                return;\r\n            }\r\n\r\n            // Mode (enableClose) mudou enquanto aberto → close. Hover não tem como\r\n            // mais fechar via mouseleave em close-mode, e close-mode precisa do X.\r\n            const isCurrentlyClose = this.tooltipElement.classList.contains('matcha-tooltip-content--with-close');\r\n            if (isCurrentlyClose !== enableClose) {\r\n                this.hide();\r\n                return;\r\n            }\r\n\r\n            // Text mudou → atualiza in-place\r\n            if (this.textElement && this.textElement.textContent !== text) {\r\n                this.textElement.textContent = text;\r\n            }\r\n\r\n            // Align mudou → re-aplica (a custom prop alimenta o text-align no SCSS)\r\n            this.renderer.setStyle(\r\n                this.tooltipElement, '--matcha-tooltip-text-align', align, RendererStyleFlags2.DashCase,\r\n            );\r\n\r\n            // Sempre recomputa: text width pode ter mudado, position prop também\r\n            this.computePosition(this.tooltipElement);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Conteúdo efetivo como string única. `string` passa intacta (retrocompat —\r\n     * comportamento idêntico ao de antes do suporte a array); `string[]` vira 1\r\n     * item por linha (`\\n`), com itens vazios/whitespace descartados. `''` quando\r\n     * não há nada a exibir (guarda de abertura e trigger de auto-close do effect).\r\n     */\r\n    private resolvedText(): string {\r\n        const value = this.text();\r\n        if (!Array.isArray(value)) return value ?? '';\r\n        return value.map(line => `${line ?? ''}`.trim()).filter(Boolean).join('\\n');\r\n    }\r\n\r\n    // ── Public API (imperativa) ─────────────────────────────────────────\r\n    /** Abre o tooltip imediatamente (cancela qualquer delay pendente). No-op se disabled ou text vazio. */\r\n    show(): void {\r\n        this.cancelTimers();\r\n        if (this.tooltipElement || this.disabled() || !this.resolvedText()) return;\r\n        this.renderTooltip();\r\n    }\r\n\r\n    /** Fecha o tooltip imediatamente (cancela qualquer delay pendente). */\r\n    hide(): void {\r\n        this.cancelTimers();\r\n        if (!this.tooltipElement) return;\r\n        this.removeTooltip();\r\n    }\r\n\r\n    /** Alterna estado (open ↔ closed). */\r\n    toggle(): void {\r\n        this.tooltipElement ? this.hide() : this.show();\r\n    }\r\n\r\n    // ── Event handlers (chamados via host config) ───────────────────────\r\n    onMouseEnter(): void {\r\n        if (this.disabled() || !this.resolvedText() || this.enableClose()) return;\r\n        this.scheduleShow();\r\n    }\r\n\r\n    onMouseLeave(): void {\r\n        if (this.enableClose()) return;\r\n        this.scheduleHide();\r\n    }\r\n\r\n    onFocusIn(): void {\r\n        if (this.disabled() || !this.resolvedText() || this.enableClose()) return;\r\n        this.cancelHideTimer();\r\n        this.show(); // foco abre sem delay\r\n    }\r\n\r\n    onFocusOut(): void {\r\n        if (this.enableClose()) return;\r\n        this.scheduleHide();\r\n    }\r\n\r\n    onClick(event: Event): void {\r\n        if (this.disabled() || !this.enableClose() || !this.resolvedText()) return;\r\n        event.stopPropagation();\r\n        if (!this.tooltipElement) this.show();\r\n    }\r\n\r\n    // ── Scheduling com delay ────────────────────────────────────────────\r\n    private scheduleShow(): void {\r\n        this.cancelHideTimer();\r\n        if (this.tooltipElement) return;\r\n        this.showTimer = setTimeout(() => this.show(), this.showDelay());\r\n    }\r\n\r\n    private scheduleHide(): void {\r\n        this.cancelShowTimer();\r\n        if (!this.tooltipElement) return;\r\n        this.hideTimer = setTimeout(() => this.hide(), this.hideDelay());\r\n    }\r\n\r\n    private cancelShowTimer(): void {\r\n        if (this.showTimer) { clearTimeout(this.showTimer); this.showTimer = null; }\r\n    }\r\n\r\n    private cancelHideTimer(): void {\r\n        if (this.hideTimer) { clearTimeout(this.hideTimer); this.hideTimer = null; }\r\n    }\r\n\r\n    private cancelTimers(): void {\r\n        this.cancelShowTimer();\r\n        this.cancelHideTimer();\r\n    }\r\n\r\n    // ── DOM render / remove ─────────────────────────────────────────────\r\n    private renderTooltip(): void {\r\n        const node = this.renderer.createElement('div') as HTMLElement;\r\n        this.renderer.addClass(node, 'matcha-tooltip-content');\r\n        this.renderer.setAttribute(node, 'role', 'tooltip');\r\n        this.renderer.setAttribute(node, 'id', this.tooltipId);\r\n        this.renderer.setStyle(\r\n            node, '--matcha-tooltip-text-align', this.align(), RendererStyleFlags2.DashCase,\r\n        );\r\n\r\n        const textEl = this.renderer.createElement('span') as HTMLElement;\r\n        this.renderer.addClass(textEl, 'matcha-tooltip-text');\r\n        textEl.textContent = this.resolvedText();\r\n        this.renderer.appendChild(node, textEl);\r\n        this.textElement = textEl;\r\n\r\n        if (this.enableClose()) {\r\n            this.renderer.addClass(node, 'matcha-tooltip-content--with-close');\r\n            const closeBtn = this.renderer.createElement('button') as HTMLButtonElement;\r\n            this.renderer.addClass(closeBtn, 'matcha-tooltip-close');\r\n            this.renderer.setAttribute(closeBtn, 'type', 'button');\r\n            this.renderer.setAttribute(closeBtn, 'aria-label', 'Fechar tooltip');\r\n            this.renderer.listen(closeBtn, 'click', (e: Event) => {\r\n                e.stopPropagation();\r\n                this.hide();\r\n            });\r\n            this.renderer.appendChild(node, closeBtn);\r\n\r\n            this.documentClickOff = this.renderer.listen('document', 'click', (e: Event) => {\r\n                const target = e.target as Node;\r\n                if (!this.tooltipElement?.contains(target) && !this.el.nativeElement.contains(target)) {\r\n                    this.hide();\r\n                }\r\n            });\r\n        } else {\r\n            // Modo hover: cursor entrando no tooltip cancela o hide; saindo agenda hide.\r\n            // Usuário consegue selecionar/copiar o texto sem perder o overlay.\r\n            this.overlayMouseEnterOff = this.renderer.listen(node, 'mouseenter', () => this.cancelHideTimer());\r\n            this.overlayMouseLeaveOff = this.renderer.listen(node, 'mouseleave', () => this.scheduleHide());\r\n        }\r\n\r\n        this.documentKeyOff = this.renderer.listen('document', 'keydown', (e: KeyboardEvent) => {\r\n            if (e.key === 'Escape') this.hide();\r\n        });\r\n\r\n        this.windowResizeOff = this.renderer.listen('window', 'resize', () => {\r\n            if (this.tooltipElement) this.computePosition(this.tooltipElement);\r\n        });\r\n\r\n        this.renderer.setStyle(node, 'position', 'absolute');\r\n        this.renderer.setStyle(node, 'visibility', 'hidden');\r\n        this.renderer.setStyle(node, 'top', '0');\r\n        this.renderer.setStyle(node, 'left', '0');\r\n        this.renderer.appendChild(document.body, node);\r\n        this.tooltipElement = node;\r\n\r\n        this.computePosition(node);\r\n        this.renderer.setStyle(node, 'visibility', 'visible');\r\n        this.renderer.setAttribute(this.el.nativeElement, 'aria-describedby', this.tooltipId);\r\n\r\n        this.opened.emit();\r\n    }\r\n\r\n    private removeTooltip(): void {\r\n        if (!this.tooltipElement) return;\r\n        this.renderer.removeChild(document.body, this.tooltipElement);\r\n        this.tooltipElement = null;\r\n        this.textElement = null;\r\n\r\n        this.documentClickOff?.();     this.documentClickOff = null;\r\n        this.documentKeyOff?.();       this.documentKeyOff = null;\r\n        this.windowResizeOff?.();      this.windowResizeOff = null;\r\n        this.overlayMouseEnterOff?.(); this.overlayMouseEnterOff = null;\r\n        this.overlayMouseLeaveOff?.(); this.overlayMouseLeaveOff = null;\r\n\r\n        this.renderer.removeAttribute(this.el.nativeElement, 'aria-describedby');\r\n        this.closed.emit();\r\n    }\r\n\r\n    // ── Posição efetiva (combina position + aliases legacy) ─────────────\r\n    private effectivePosition(): MatchaTooltipPosition {\r\n        const explicit = this.position();\r\n        if (explicit !== 'auto') return explicit;\r\n        if (this._legacyAbove()) return 'above';\r\n        if (this._legacyBelow()) return 'below';\r\n        if (this._legacyLeft())  return 'left';\r\n        if (this._legacyRight()) return 'right';\r\n        return 'auto';\r\n    }\r\n\r\n    private computePosition(node: HTMLElement): void {\r\n        const margin = 8;\r\n        // Espaço mínimo entre arrow e canto do tooltip (evita arrow visualmente\r\n        // colada no canto/saindo do raio do box). Inclui a meia-largura da arrow (7px).\r\n        const arrowMinFromEdge = 12;\r\n        const arrowHalfWidth = 7;\r\n\r\n        const hostRect = this.el.nativeElement.getBoundingClientRect();\r\n        const tipRect  = node.getBoundingClientRect();\r\n\r\n        const fits = {\r\n            above: hostRect.top                          >= tipRect.height + margin,\r\n            below: window.innerHeight  - hostRect.bottom >= tipRect.height + margin,\r\n            left:  hostRect.left                         >= tipRect.width  + margin,\r\n            right: window.innerWidth   - hostRect.right  >= tipRect.width  + margin,\r\n        };\r\n\r\n        const preferred = this.effectivePosition();\r\n        let chosen: 'above' | 'below' | 'left' | 'right';\r\n        if (preferred !== 'auto' && fits[preferred]) {\r\n            chosen = preferred;\r\n        } else {\r\n            // Fallback ordering: above → below → right → left\r\n            chosen = fits.above ? 'above'\r\n                  : fits.below ? 'below'\r\n                  : fits.right ? 'right'\r\n                  : fits.left  ? 'left'\r\n                  : 'above';\r\n        }\r\n\r\n        // Posição \"ideal\" (arrow centrada no trigger). Salvo ANTES do clamp pra\r\n        // calcular quanto o box foi deslocado e re-alinhar a arrow.\r\n        let idealTop = 0, idealLeft = 0;\r\n        switch (chosen) {\r\n            case 'above':\r\n                idealTop  = hostRect.top    + window.scrollY - tipRect.height - margin;\r\n                idealLeft = hostRect.left   + window.scrollX + (hostRect.width  - tipRect.width)  / 2;\r\n                break;\r\n            case 'below':\r\n                idealTop  = hostRect.bottom + window.scrollY + margin;\r\n                idealLeft = hostRect.left   + window.scrollX + (hostRect.width  - tipRect.width)  / 2;\r\n                break;\r\n            case 'left':\r\n                idealTop  = hostRect.top    + window.scrollY + (hostRect.height - tipRect.height) / 2;\r\n                idealLeft = hostRect.left   + window.scrollX - tipRect.width  - margin;\r\n                break;\r\n            case 'right':\r\n                idealTop  = hostRect.top    + window.scrollY + (hostRect.height - tipRect.height) / 2;\r\n                idealLeft = hostRect.right  + window.scrollX + margin;\r\n                break;\r\n        }\r\n\r\n        // Clamp horizontal pra não sair da viewport.\r\n        let left = idealLeft;\r\n        const maxLeft = window.innerWidth - tipRect.width - margin;\r\n        if (left < margin)       left = margin;\r\n        else if (left > maxLeft) left = maxLeft;\r\n\r\n        // Clamp vertical (relevante pra left/right; também safety pra above/below\r\n        // quando o host está perto do topo/fundo da viewport com scroll).\r\n        let top = idealTop;\r\n        const minTop = window.scrollY + margin;\r\n        const maxTop = window.scrollY + window.innerHeight - tipRect.height - margin;\r\n        if (top < minTop)      top = minTop;\r\n        else if (top > maxTop) top = maxTop;\r\n\r\n        this.renderer.setStyle(node, 'top',  `${top}px`);\r\n        this.renderer.setStyle(node, 'left', `${left}px`);\r\n\r\n        // ── Arrow re-alignment ───────────────────────────────────────────\r\n        // Quando o box é clamped, a arrow (centrada no box via CSS 50%) fica\r\n        // desalinhada do trigger. Calculamos quanto o box foi deslocado e\r\n        // setamos uma custom property que o SCSS aplica no `transform` da arrow.\r\n        //\r\n        // above/below: shift HORIZONTAL — `arrow-shift-x` em px (positivo = direita)\r\n        // left/right:  shift VERTICAL   — `arrow-shift-y` em px (positivo = baixo)\r\n        //\r\n        // O shift é clamped pra arrow não escapar do box (mantém arrowMinFromEdge\r\n        // de cada canto).\r\n\r\n        const isVerticalAxis = chosen === 'above' || chosen === 'below';\r\n\r\n        let shiftX = 0, shiftY = 0;\r\n        if (isVerticalAxis) {\r\n            // Box shifted by (left - idealLeft); arrow precisa do OPOSTO pra ficar\r\n            // sobre o trigger center → shift = idealLeft - left.\r\n            shiftX = idealLeft - left;\r\n            const maxShift = tipRect.width / 2 - arrowMinFromEdge - arrowHalfWidth;\r\n            if (shiftX >  maxShift) shiftX =  maxShift;\r\n            if (shiftX < -maxShift) shiftX = -maxShift;\r\n        } else {\r\n            shiftY = idealTop - top;\r\n            const maxShift = tipRect.height / 2 - arrowMinFromEdge - arrowHalfWidth;\r\n            if (shiftY >  maxShift) shiftY =  maxShift;\r\n            if (shiftY < -maxShift) shiftY = -maxShift;\r\n        }\r\n\r\n        // Set custom props (sempre os dois — o SCSS só usa o relevante por direção).\r\n        // DashCase flag é obrigatório: sem ele o Renderer2 faz `style['--x'] = v`,\r\n        // que NÃO registra custom property (silenciosamente sem efeito).\r\n        this.renderer.setStyle(node, '--matcha-tooltip-arrow-shift-x', `${shiftX}px`, RendererStyleFlags2.DashCase);\r\n        this.renderer.setStyle(node, '--matcha-tooltip-arrow-shift-y', `${shiftY}px`, RendererStyleFlags2.DashCase);\r\n\r\n        // Atualiza class de direção (limpa as 4 e seta a escolhida)\r\n        for (const p of ['above', 'below', 'left', 'right']) {\r\n            this.renderer.removeClass(node, `matcha-tooltip-content_${p}`);\r\n        }\r\n        this.renderer.addClass(node, `matcha-tooltip-content_${chosen}`);\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.hide();\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n// import { MatchaTooltipComponent } from './tooltip/tooltip.component';\r\nimport { MatchaTooltipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n  imports: [MatchaTooltipDirective],\r\n    exports: [MatchaTooltipDirective],\r\n})\r\nexport class MatchaTooltipModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconComponent } from './icon.component';\r\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\r\n\r\n@NgModule({\r\n  imports: [MatchaIconComponent, MatchaTooltipModule],\r\n    exports: [MatchaIconComponent],\r\n})\r\nexport class MatchaIconModule {}\r\n","import { EventEmitter, InjectionToken } from '@angular/core';\r\nimport { MaskExpression } from './matcha-mask-expression.enum';\r\n\r\nexport type InputTransformFn = (value: unknown) => string | number;\r\n\r\nexport type OutputTransformFn = (value: string | number | undefined | null) => unknown;\r\n\r\nexport type MatchaMaskConfig = {\r\n    suffix: string;\r\n    prefix: string;\r\n    thousandSeparator: string;\r\n    decimalMarker: '.' | ',' | ['.', ','];\r\n    clearIfNotMatch: boolean;\r\n    showMaskTyped: boolean;\r\n    placeHolderCharacter: string;\r\n    shownMaskExpression: string;\r\n    specialCharacters: string[] | readonly string[];\r\n    dropSpecialCharacters: boolean | string[] | readonly string[];\r\n    hiddenInput: boolean;\r\n    validation: boolean;\r\n    instantPrefix: boolean;\r\n    separatorLimit: string;\r\n    apm: boolean;\r\n    allowNegativeNumbers: boolean;\r\n    leadZeroDateTime: boolean;\r\n    leadZero: boolean;\r\n    triggerOnMaskChange: boolean;\r\n    keepCharacterPositions: boolean;\r\n    currencyMode: boolean; // Modo moeda: dígitos entram pela direita (1 → 0,01, 12 → 0,12, 123 → 1,23)\r\n    inputTransformFn: InputTransformFn;\r\n    outputTransformFn: OutputTransformFn;\r\n    maskFilled: EventEmitter<void>;\r\n    patterns: Record<\r\n        string,\r\n        {\r\n            pattern: RegExp;\r\n            optional?: boolean;\r\n            symbol?: string;\r\n        }\r\n    >;\r\n};\r\n\r\nexport type MatchaMaskOptions = Partial<MatchaMaskConfig>;\r\nexport const MATCHA_MASK_CONFIG = new InjectionToken<MatchaMaskConfig>('matcha-mask config');\r\nexport const NEW_CONFIG = new InjectionToken<MatchaMaskConfig>('new matcha-mask config');\r\nexport const INITIAL_CONFIG = new InjectionToken<MatchaMaskConfig>('initial matcha-mask config');\r\n\r\nexport const initialConfig: MatchaMaskConfig = {\r\n    suffix: '',\r\n    prefix: '',\r\n    thousandSeparator: ' ',\r\n    decimalMarker: ['.', ','],\r\n    clearIfNotMatch: false,\r\n    showMaskTyped: false,\r\n    instantPrefix: false,\r\n    placeHolderCharacter: '_',\r\n    dropSpecialCharacters: true,\r\n    hiddenInput: false,\r\n    shownMaskExpression: '',\r\n    separatorLimit: '',\r\n    allowNegativeNumbers: false,\r\n    validation: true,\r\n    specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '\"', \"'\"],\r\n    leadZeroDateTime: false,\r\n    apm: false,\r\n    leadZero: false,\r\n    keepCharacterPositions: false,\r\n    triggerOnMaskChange: false,\r\n    currencyMode: false,\r\n    inputTransformFn: (value: unknown) => value as string | number,\r\n    outputTransformFn: (value: string | number | undefined | null) => value,\r\n    maskFilled: new EventEmitter<void>(),\r\n    patterns: {\r\n        '0': {\r\n            pattern: new RegExp('\\\\d'),\r\n        },\r\n        '9': {\r\n            pattern: new RegExp('\\\\d'),\r\n            optional: true,\r\n        },\r\n        X: {\r\n            pattern: new RegExp('\\\\d'),\r\n            symbol: '*',\r\n        },\r\n        A: {\r\n            pattern: new RegExp('[a-zA-Z0-9]'),\r\n        },\r\n        S: {\r\n            pattern: new RegExp('[a-zA-Z]'),\r\n        },\r\n        U: {\r\n            pattern: new RegExp('[A-Z]'),\r\n        },\r\n        L: {\r\n            pattern: new RegExp('[a-z]'),\r\n        },\r\n        d: {\r\n            pattern: new RegExp('\\\\d'),\r\n        },\r\n        m: {\r\n            pattern: new RegExp('\\\\d'),\r\n        },\r\n        M: {\r\n            pattern: new RegExp('\\\\d'),\r\n        },\r\n        H: {\r\n            pattern: new RegExp('\\\\d'),\r\n        },\r\n        h: {\r\n            pattern: new RegExp('\\\\d'),\r\n        },\r\n        s: {\r\n            pattern: new RegExp('\\\\d'),\r\n        },\r\n    },\r\n};\r\n\r\nexport const timeMasks: string[] = [\r\n    MaskExpression.HOURS_MINUTES_SECONDS,\r\n    MaskExpression.HOURS_MINUTES,\r\n    MaskExpression.MINUTES_SECONDS,\r\n];\r\n\r\nexport const withoutValidation: string[] = [\r\n    MaskExpression.PERCENT,\r\n    MaskExpression.HOURS_HOUR,\r\n    MaskExpression.SECONDS,\r\n    MaskExpression.MINUTES,\r\n    MaskExpression.SEPARATOR,\r\n    MaskExpression.DAYS_MONTHS_YEARS,\r\n    MaskExpression.DAYS_MONTHS,\r\n    MaskExpression.DAYS,\r\n    MaskExpression.MONTHS,\r\n];\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { MatchaMaskConfig } from './matcha-mask.config';\r\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\r\nimport { MaskExpression } from './matcha-mask-expression.enum';\r\n\r\n@Injectable()\r\nexport class MatchaMaskApplierService {\r\n    protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\r\n\r\n    public dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] =\r\n        this._config.dropSpecialCharacters;\r\n\r\n    public hiddenInput: MatchaMaskConfig['hiddenInput'] = this._config.hiddenInput;\r\n\r\n    public clearIfNotMatch: MatchaMaskConfig['clearIfNotMatch'] = this._config.clearIfNotMatch;\r\n\r\n    public specialCharacters: MatchaMaskConfig['specialCharacters'] = this._config.specialCharacters;\r\n\r\n    public patterns: MatchaMaskConfig['patterns'] = this._config.patterns;\r\n\r\n    public prefix: MatchaMaskConfig['prefix'] = this._config.prefix || '';\r\n\r\n    public suffix: MatchaMaskConfig['suffix'] = this._config.suffix || '';\r\n\r\n    public thousandSeparator: MatchaMaskConfig['thousandSeparator'] = this._config.thousandSeparator || '';\r\n\r\n    public decimalMarker: MatchaMaskConfig['decimalMarker'] = this._config.decimalMarker || '';\r\n\r\n    public customPattern!: MatchaMaskConfig['patterns'];\r\n\r\n    public showMaskTyped: MatchaMaskConfig['showMaskTyped'] = this._config.showMaskTyped;\r\n\r\n    public placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] =\r\n        this._config.placeHolderCharacter;\r\n\r\n    public validation: MatchaMaskConfig['validation'] = this._config.validation;\r\n\r\n    public separatorLimit: MatchaMaskConfig['separatorLimit'] = this._config.separatorLimit;\r\n\r\n    public allowNegativeNumbers: MatchaMaskConfig['allowNegativeNumbers'] =\r\n        this._config.allowNegativeNumbers;\r\n\r\n    public leadZeroDateTime: MatchaMaskConfig['leadZeroDateTime'] = this._config.leadZeroDateTime;\r\n\r\n    public leadZero: MatchaMaskConfig['leadZero'] = this._config.leadZero;\r\n\r\n    public apm: MatchaMaskConfig['apm'] = this._config.apm;\r\n\r\n    public inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null =\r\n        this._config.inputTransformFn;\r\n\r\n    public outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null =\r\n        this._config.outputTransformFn;\r\n\r\n    public keepCharacterPositions: MatchaMaskConfig['keepCharacterPositions'] =\r\n        this._config.keepCharacterPositions;\r\n\r\n    public instantPrefix: MatchaMaskConfig['instantPrefix'] = this._config.instantPrefix;\r\n\r\n    public triggerOnMaskChange: MatchaMaskConfig['triggerOnMaskChange'] =\r\n        this._config.triggerOnMaskChange;\r\n\r\n    public currencyMode: MatchaMaskConfig['currencyMode'] = this._config.currencyMode;\r\n\r\n    private _shift = new Set<number>();\r\n\r\n    public plusOnePosition = false;\r\n\r\n    public maskExpression = '';\r\n\r\n    public actualValue = '';\r\n\r\n    public showKeepCharacterExp = '';\r\n\r\n    public shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] =\r\n        this._config.shownMaskExpression;\r\n\r\n    public deletedSpecialCharacter = false;\r\n\r\n    public ipError?: boolean;\r\n\r\n    public cpfCnpjError?: boolean;\r\n\r\n    public applyMask(\r\n        inputValue: string | object | boolean | null | undefined,\r\n        maskExpression: string,\r\n        position = 0,\r\n        justPasted = false,\r\n        backspaced = false,\r\n        // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n        cb: (...args: any[]) => any = () => {}\r\n    ): string {\r\n        if (!maskExpression || typeof inputValue !== 'string') {\r\n            return MaskExpression.EMPTY_STRING;\r\n        }\r\n        let cursor = 0;\r\n        let result = '';\r\n        let multi = false;\r\n        let backspaceShift = false;\r\n        let shift = 1;\r\n        let stepBack = false;\r\n        let processedValue = inputValue;\r\n        let processedPosition = position;\r\n\r\n        if (processedValue.slice(0, this.prefix.length) === this.prefix) {\r\n            processedValue = processedValue.slice(this.prefix.length, processedValue.length);\r\n        }\r\n        if (!!this.suffix && processedValue.length > 0) {\r\n            processedValue = this.checkAndRemoveSuffix(processedValue);\r\n        }\r\n        if (processedValue === '(' && this.prefix) {\r\n            processedValue = '';\r\n        }\r\n        const inputArray: string[] = processedValue.toString().split(MaskExpression.EMPTY_STRING);\r\n        if (\r\n            this.allowNegativeNumbers &&\r\n            processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\r\n        ) {\r\n            result += processedValue.slice(cursor, cursor + 1);\r\n        }\r\n        if (maskExpression === MaskExpression.IP) {\r\n            const valuesIP = processedValue.split(MaskExpression.DOT);\r\n            this.ipError = this._validIP(valuesIP);\r\n\r\n            // eslint-disable-next-line no-param-reassign\r\n            maskExpression = '099.099.099.099';\r\n        }\r\n        const arr: string[] = [];\r\n        // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n        for (let i = 0; i < processedValue.length; i++) {\r\n            if (processedValue[i]?.match('\\\\d')) {\r\n                arr.push(processedValue[i] ?? MaskExpression.EMPTY_STRING);\r\n            }\r\n        }\r\n        if (maskExpression === MaskExpression.CPF_CNPJ) {\r\n            this.cpfCnpjError = arr.length !== 11 && arr.length !== 14;\r\n            if (arr.length > 11) {\r\n                // eslint-disable-next-line no-param-reassign\r\n                maskExpression = '00.000.000/0000-00';\r\n            } else {\r\n                // eslint-disable-next-line no-param-reassign\r\n                maskExpression = '000.000.000-00';\r\n            }\r\n        }\r\n        if (maskExpression.startsWith(MaskExpression.PERCENT)) {\r\n            if (\r\n                processedValue.match('[a-z]|[A-Z]') ||\r\n                // eslint-disable-next-line no-useless-escape\r\n                (processedValue.match(/[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,\\/.]/) && !backspaced)\r\n            ) {\r\n                processedValue = this._stripToDecimal(processedValue);\r\n                const precision: number = this.getPrecision(maskExpression);\r\n\r\n                processedValue = this.checkInputPrecision(\r\n                    processedValue,\r\n                    precision,\r\n                    this.decimalMarker\r\n                );\r\n            }\r\n            const decimalMarker =\r\n                typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\r\n            if (\r\n                processedValue.indexOf(decimalMarker) > 0 &&\r\n                !this.percentage(processedValue.substring(0, processedValue.indexOf(decimalMarker)))\r\n            ) {\r\n                let base: string = processedValue.substring(\r\n                    0,\r\n                    processedValue.indexOf(decimalMarker) - 1\r\n                );\r\n                if (\r\n                    this.allowNegativeNumbers &&\r\n                    processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS &&\r\n                    !backspaced\r\n                ) {\r\n                    base = processedValue.substring(0, processedValue.indexOf(decimalMarker));\r\n                }\r\n\r\n                processedValue = `${base}${processedValue.substring(\r\n                    processedValue.indexOf(decimalMarker),\r\n                    processedValue.length\r\n                )}`;\r\n            }\r\n            let value = '';\r\n            // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n            this.allowNegativeNumbers &&\r\n            processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\r\n                ? (value = `${MaskExpression.MINUS}${processedValue.slice(cursor + 1, cursor + processedValue.length)}`)\r\n                : (value = processedValue);\r\n            if (this.percentage(value)) {\r\n                result = this._splitPercentZero(processedValue);\r\n            } else {\r\n                result = this._splitPercentZero(\r\n                    processedValue.substring(0, processedValue.length - 1)\r\n                );\r\n            }\r\n        } else if (maskExpression.startsWith(MaskExpression.SEPARATOR)) {\r\n            if (\r\n                processedValue.match('[wа-яА-Я]') ||\r\n                processedValue.match('[ЁёА-я]') ||\r\n                processedValue.match('[a-z]|[A-Z]') ||\r\n                processedValue.match(/[-@#!$%\\\\^&*()_£¬'+|~=`{}\\]:\";<>.?/]/) ||\r\n                processedValue.match('[^A-Za-z0-9,]')\r\n            ) {\r\n                processedValue = this._stripToDecimal(processedValue);\r\n            }\r\n\r\n            const precision: number = this.getPrecision(maskExpression);\r\n            let decimalMarker = this.decimalMarker;\r\n\r\n            if (Array.isArray(this.decimalMarker)) {\r\n                if (\r\n                    this.actualValue.includes(this.decimalMarker[0]) ||\r\n                    this.actualValue.includes(this.decimalMarker[1])\r\n                ) {\r\n                    decimalMarker = this.actualValue.includes(this.decimalMarker[0])\r\n                        ? this.decimalMarker[0]\r\n                        : this.decimalMarker[1];\r\n                } else {\r\n                    decimalMarker = this.decimalMarker.find(\r\n                        (dm) => dm !== this.thousandSeparator\r\n                    ) as '.' | ',';\r\n                }\r\n            }\r\n\r\n            // Modo moeda: dígitos entram pela direita (ex: 1 → 0,01, 12 → 0,12, 123 → 1,23)\r\n            // IMPORTANTE: Detectar se devemos aplicar currencyMode\r\n            // - NÃO aplicar se estamos em writeValue (valor vindo do backend/programático)\r\n            // - Aplicar apenas durante digitação do usuário (onInput)\r\n            const actualDecimalMarker = typeof decimalMarker === 'string' ? decimalMarker : ',';\r\n            const hasDecimalMarker = processedValue.includes(actualDecimalMarker);\r\n\r\n            let shouldApplyCurrencyMode = false;\r\n\r\n            // NUNCA aplicar currencyMode quando writingValue = true (writeValue do backend)\r\n            if (this.currencyMode && precision > 0 && !(this as any).writingValue) {\r\n                if (!hasDecimalMarker) {\r\n                    // Sem vírgula: aplicar currencyMode (digitação começando)\r\n                    shouldApplyCurrencyMode = true;\r\n                } else {\r\n                    // Com vírgula: verificar se é digitação em andamento ou valor do backend\r\n                    const parts = processedValue.split(actualDecimalMarker);\r\n                    const decimalPart = parts[1] || '';\r\n\r\n                    // Se a parte decimal tem mais dígitos que a precisão, é digitação em andamento\r\n                    // Se tem menos, veio do backend (ex: \"10,5\" com precisão 2)\r\n                    shouldApplyCurrencyMode = decimalPart.length > precision;\r\n                }\r\n            }\r\n\r\n            if (shouldApplyCurrencyMode) {\r\n                // Extrair apenas dígitos e sinal negativo\r\n                const hasMinus = processedValue.startsWith(MaskExpression.MINUS) ||\r\n                                 (this.allowNegativeNumbers && processedValue.includes(MaskExpression.MINUS));\r\n                const digitsOnly = processedValue.replace(/[^\\d]/g, '');\r\n\r\n                if (digitsOnly.length === 0) {\r\n                    result = MaskExpression.EMPTY_STRING;\r\n                } else {\r\n                    // Remover zeros à esquerda desnecessários\r\n                    const cleanDigits = digitsOnly.replace(/^0+/, '') || '0';\r\n\r\n                    let formattedValue: string;\r\n                    if (cleanDigits.length <= precision) {\r\n                        // Menos ou igual dígitos que a precisão: 0,XX\r\n                        const paddedDecimal = cleanDigits.padStart(precision, '0');\r\n                        formattedValue = '0' + (decimalMarker as string) + paddedDecimal;\r\n                    } else {\r\n                        // Mais dígitos que a precisão: separar inteiro e decimal\r\n                        const integerPart = cleanDigits.slice(0, -precision);\r\n                        const decimalPart = cleanDigits.slice(-precision);\r\n\r\n                        // Aplicar separador de milhares na parte inteira\r\n                        let formattedInteger = integerPart;\r\n                        const rgx = /(\\d+)(\\d{3})/;\r\n                        while (this.thousandSeparator && rgx.test(formattedInteger)) {\r\n                            formattedInteger = formattedInteger.replace(rgx, '$1' + this.thousandSeparator + '$2');\r\n                        }\r\n\r\n                        formattedValue = formattedInteger + (decimalMarker as string) + decimalPart;\r\n                    }\r\n\r\n                    result = (hasMinus ? MaskExpression.MINUS : '') + formattedValue;\r\n                }\r\n\r\n                // Mover o cursor para o final\r\n                cb(result.length, result.length);\r\n\r\n                // Pular toda a lógica de formatação normal e ir direto para o retorno\r\n                // O result já está formatado corretamente para exibição\r\n                // O formControlResult (no service) vai processar e remover prefixo/sufixo\r\n                let res = `${this.prefix}${result}${this.suffix}`;\r\n                if (result.length === 0) {\r\n                    res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\r\n                }\r\n                return res;\r\n            }\r\n\r\n            if (backspaced) {\r\n                const { decimalMarkerIndex, nonZeroIndex } = this._findFirstNonZeroAndDecimalIndex(\r\n                    processedValue,\r\n                    decimalMarker as '.' | ','\r\n                );\r\n                const zeroIndexMinus = processedValue[0] === MaskExpression.MINUS;\r\n                const zeroIndexNumberZero = processedValue[0] === MaskExpression.NUMBER_ZERO;\r\n                const zeroIndexDecimalMarker = processedValue[0] === decimalMarker;\r\n                const firstIndexDecimalMarker = processedValue[1] === decimalMarker;\r\n\r\n                if (\r\n                    (zeroIndexDecimalMarker && !nonZeroIndex) ||\r\n                    (zeroIndexMinus && firstIndexDecimalMarker && !nonZeroIndex) ||\r\n                    (zeroIndexNumberZero && !decimalMarkerIndex && !nonZeroIndex)\r\n                ) {\r\n                    processedValue = MaskExpression.NUMBER_ZERO;\r\n                }\r\n\r\n                if (\r\n                    decimalMarkerIndex &&\r\n                    nonZeroIndex &&\r\n                    zeroIndexMinus &&\r\n                    processedPosition === 1\r\n                ) {\r\n                    if (decimalMarkerIndex < nonZeroIndex || decimalMarkerIndex > nonZeroIndex) {\r\n                        processedValue = MaskExpression.MINUS + processedValue.slice(nonZeroIndex);\r\n                    }\r\n                }\r\n\r\n                if (!decimalMarkerIndex && nonZeroIndex && processedValue.length > nonZeroIndex) {\r\n                    processedValue = zeroIndexMinus\r\n                        ? MaskExpression.MINUS + processedValue.slice(nonZeroIndex)\r\n                        : processedValue.slice(nonZeroIndex);\r\n                }\r\n\r\n                if (decimalMarkerIndex && nonZeroIndex && processedPosition === 0) {\r\n                    if (decimalMarkerIndex < nonZeroIndex) {\r\n                        processedValue = processedValue.slice(decimalMarkerIndex - 1);\r\n                    }\r\n                    if (decimalMarkerIndex > nonZeroIndex) {\r\n                        processedValue = processedValue.slice(nonZeroIndex);\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (precision === 0) {\r\n                processedValue = this.allowNegativeNumbers\r\n                    ? processedValue.length > 2 &&\r\n                      processedValue[0] === MaskExpression.MINUS &&\r\n                      processedValue[1] === MaskExpression.NUMBER_ZERO &&\r\n                      processedValue[2] !== this.thousandSeparator &&\r\n                      processedValue[2] !== MaskExpression.COMMA &&\r\n                      processedValue[2] !== MaskExpression.DOT\r\n                        ? '-' + processedValue.slice(2, processedValue.length)\r\n                        : processedValue[0] === MaskExpression.NUMBER_ZERO &&\r\n                            processedValue.length > 1 &&\r\n                            processedValue[1] !== this.thousandSeparator &&\r\n                            processedValue[1] !== MaskExpression.COMMA &&\r\n                            processedValue[1] !== MaskExpression.DOT\r\n                          ? processedValue.slice(1, processedValue.length)\r\n                          : processedValue\r\n                    : processedValue.length > 1 &&\r\n                        processedValue[0] === MaskExpression.NUMBER_ZERO &&\r\n                        processedValue[1] !== this.thousandSeparator &&\r\n                        processedValue[1] !== MaskExpression.COMMA &&\r\n                        processedValue[1] !== MaskExpression.DOT\r\n                      ? processedValue.slice(1, processedValue.length)\r\n                      : processedValue;\r\n            } else {\r\n                if (\r\n                    processedValue[0] === decimalMarker &&\r\n                    processedValue.length > 1 &&\r\n                    !backspaced\r\n                ) {\r\n                    processedValue =\r\n                        MaskExpression.NUMBER_ZERO +\r\n                        processedValue.slice(0, processedValue.length + 1);\r\n                    this.plusOnePosition = true;\r\n                }\r\n                if (\r\n                    processedValue[0] === MaskExpression.NUMBER_ZERO &&\r\n                    processedValue[1] !== decimalMarker &&\r\n                    processedValue[1] !== this.thousandSeparator &&\r\n                    !backspaced\r\n                ) {\r\n                    processedValue =\r\n                        processedValue.length > 1\r\n                            ? processedValue.slice(0, 1) +\r\n                              decimalMarker +\r\n                              processedValue.slice(1, processedValue.length + 1)\r\n                            : processedValue;\r\n                    this.plusOnePosition = true;\r\n                }\r\n                if (\r\n                    this.allowNegativeNumbers &&\r\n                    !backspaced &&\r\n                    processedValue[0] === MaskExpression.MINUS &&\r\n                    (processedValue[1] === decimalMarker ||\r\n                        processedValue[1] === MaskExpression.NUMBER_ZERO)\r\n                ) {\r\n                    processedValue =\r\n                        processedValue[1] === decimalMarker && processedValue.length > 2\r\n                            ? processedValue.slice(0, 1) +\r\n                              MaskExpression.NUMBER_ZERO +\r\n                              processedValue.slice(1, processedValue.length)\r\n                            : processedValue[1] === MaskExpression.NUMBER_ZERO &&\r\n                                processedValue.length > 2 &&\r\n                                processedValue[2] !== decimalMarker\r\n                              ? processedValue.slice(0, 2) +\r\n                                decimalMarker +\r\n                                processedValue.slice(2, processedValue.length)\r\n                              : processedValue;\r\n                    this.plusOnePosition = true;\r\n                }\r\n            }\r\n\r\n            // TODO: we had different rexexps here for the different cases... but tests dont seam to bother - check this\r\n            //  separator: no COMMA, dot-sep: no SPACE, COMMA OK, comma-sep: no SPACE, COMMA OK\r\n\r\n            const thousandSeparatorCharEscaped: string = this._charToRegExpExpression(\r\n                this.thousandSeparator\r\n            );\r\n            let invalidChars: string = '@#!$%^&*()_+|~=`{}\\\\[\\\\]:\\\\s,\\\\.\";<>?\\\\/'.replace(\r\n                thousandSeparatorCharEscaped,\r\n                ''\r\n            );\r\n            //.replace(decimalMarkerEscaped, '');\r\n            if (Array.isArray(this.decimalMarker)) {\r\n                for (const marker of this.decimalMarker) {\r\n                    invalidChars = invalidChars.replace(\r\n                        this._charToRegExpExpression(marker),\r\n                        MaskExpression.EMPTY_STRING\r\n                    );\r\n                }\r\n            } else {\r\n                invalidChars = invalidChars.replace(\r\n                    this._charToRegExpExpression(this.decimalMarker),\r\n                    ''\r\n                );\r\n            }\r\n\r\n            const invalidCharRegexp = new RegExp('[' + invalidChars + ']');\r\n            if (processedValue.match(invalidCharRegexp)) {\r\n                processedValue = processedValue.substring(0, processedValue.length - 1);\r\n            }\r\n\r\n            processedValue = this.checkInputPrecision(\r\n                processedValue,\r\n                precision,\r\n                this.decimalMarker\r\n            );\r\n            const strForSep: string = processedValue.replace(\r\n                new RegExp(thousandSeparatorCharEscaped, 'g'),\r\n                ''\r\n            );\r\n\r\n            result = this._formatWithSeparators(\r\n                strForSep,\r\n                this.thousandSeparator,\r\n                this.decimalMarker,\r\n                precision\r\n            );\r\n\r\n            const commaShift: number =\r\n                result.indexOf(MaskExpression.COMMA) - processedValue.indexOf(MaskExpression.COMMA);\r\n            const shiftStep: number = result.length - processedValue.length;\r\n            const backspacedDecimalMarkerWithSeparatorLimit =\r\n                backspaced && result.length < inputValue.length && this.separatorLimit;\r\n\r\n            if (\r\n                (result[processedPosition - 1] === this.thousandSeparator ||\r\n                    result[processedPosition - this.prefix.length]) &&\r\n                this.prefix &&\r\n                backspaced\r\n            ) {\r\n                processedPosition = processedPosition - 1;\r\n            } else if (\r\n                (shiftStep > 0 && result[processedPosition] !== this.thousandSeparator) ||\r\n                backspacedDecimalMarkerWithSeparatorLimit\r\n            ) {\r\n                backspaceShift = true;\r\n                let _shift = 0;\r\n                do {\r\n                    this._shift.add(processedPosition + _shift);\r\n                    _shift++;\r\n                } while (_shift < shiftStep);\r\n            } else if (\r\n                result[processedPosition - 1] === this.thousandSeparator ||\r\n                shiftStep === -4 ||\r\n                shiftStep === -3 ||\r\n                result[processedPosition] === this.thousandSeparator\r\n            ) {\r\n                this._shift.clear();\r\n                this._shift.add(processedPosition - 1);\r\n            } else if (\r\n                (commaShift !== 0 &&\r\n                    processedPosition > 0 &&\r\n                    !(\r\n                        result.indexOf(MaskExpression.COMMA) >= processedPosition &&\r\n                        processedPosition > 3\r\n                    )) ||\r\n                (!(\r\n                    result.indexOf(MaskExpression.DOT) >= processedPosition && processedPosition > 3\r\n                ) &&\r\n                    shiftStep <= 0)\r\n            ) {\r\n                this._shift.clear();\r\n                backspaceShift = true;\r\n                shift = shiftStep;\r\n\r\n                processedPosition += shiftStep;\r\n                this._shift.add(processedPosition);\r\n            } else {\r\n                this._shift.clear();\r\n            }\r\n        } else {\r\n            for (\r\n                // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n                let i = 0, inputSymbol: string = inputArray[0]!;\r\n                i < inputArray.length;\r\n                i++, inputSymbol = inputArray[i] ?? MaskExpression.EMPTY_STRING\r\n            ) {\r\n                if (cursor === maskExpression.length) {\r\n                    break;\r\n                }\r\n\r\n                const symbolStarInPattern: boolean = MaskExpression.SYMBOL_STAR in this.patterns;\r\n                if (\r\n                    this._checkSymbolMask(\r\n                        inputSymbol,\r\n                        maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\r\n                    ) &&\r\n                    maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION\r\n                ) {\r\n                    result += inputSymbol;\r\n                    cursor += 2;\r\n                } else if (\r\n                    maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\r\n                    multi &&\r\n                    this._checkSymbolMask(\r\n                        inputSymbol,\r\n                        maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\r\n                    )\r\n                ) {\r\n                    result += inputSymbol;\r\n                    cursor += 3;\r\n                    multi = false;\r\n                } else if (\r\n                    this._checkSymbolMask(\r\n                        inputSymbol,\r\n                        maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\r\n                    ) &&\r\n                    maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\r\n                    !symbolStarInPattern\r\n                ) {\r\n                    result += inputSymbol;\r\n                    multi = true;\r\n                } else if (\r\n                    maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\r\n                    this._checkSymbolMask(\r\n                        inputSymbol,\r\n                        maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\r\n                    )\r\n                ) {\r\n                    result += inputSymbol;\r\n                    cursor += 3;\r\n                } else if (\r\n                    this._checkSymbolMask(\r\n                        inputSymbol,\r\n                        maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\r\n                    )\r\n                ) {\r\n                    if (maskExpression[cursor] === MaskExpression.HOURS) {\r\n                        if (this.apm ? Number(inputSymbol) > 9 : Number(inputSymbol) > 2) {\r\n                            processedPosition = !this.leadZeroDateTime\r\n                                ? processedPosition + 1\r\n                                : processedPosition;\r\n                            cursor += 1;\r\n                            this._shiftStep(cursor);\r\n                            i--;\r\n                            if (this.leadZeroDateTime) {\r\n                                result += '0';\r\n                            }\r\n                            continue;\r\n                        }\r\n                    }\r\n                    if (maskExpression[cursor] === MaskExpression.HOUR) {\r\n                        if (\r\n                            this.apm\r\n                                ? (result.length === 1 && Number(result) > 1) ||\r\n                                  (result === '1' && Number(inputSymbol) > 2) ||\r\n                                  (processedValue.slice(cursor - 1, cursor).length === 1 &&\r\n                                      Number(processedValue.slice(cursor - 1, cursor)) > 2) ||\r\n                                  (processedValue.slice(cursor - 1, cursor) === '1' &&\r\n                                      Number(inputSymbol) > 2)\r\n                                : (result === '2' && Number(inputSymbol) > 3) ||\r\n                                  ((result.slice(cursor - 2, cursor) === '2' ||\r\n                                      result.slice(cursor - 3, cursor) === '2' ||\r\n                                      result.slice(cursor - 4, cursor) === '2' ||\r\n                                      result.slice(cursor - 1, cursor) === '2') &&\r\n                                      Number(inputSymbol) > 3 &&\r\n                                      cursor > 10)\r\n                        ) {\r\n                            processedPosition = processedPosition + 1;\r\n                            cursor += 1;\r\n                            i--;\r\n                            continue;\r\n                        }\r\n                    }\r\n                    if (\r\n                        maskExpression[cursor] === MaskExpression.MINUTE ||\r\n                        maskExpression[cursor] === MaskExpression.SECOND\r\n                    ) {\r\n                        if (Number(inputSymbol) > 5) {\r\n                            processedPosition = !this.leadZeroDateTime\r\n                                ? processedPosition + 1\r\n                                : processedPosition;\r\n                            cursor += 1;\r\n                            this._shiftStep(cursor);\r\n                            i--;\r\n                            if (this.leadZeroDateTime) {\r\n                                result += '0';\r\n                            }\r\n                            continue;\r\n                        }\r\n                    }\r\n                    const daysCount = 31;\r\n                    const inputValueCursor = processedValue[cursor] as string;\r\n                    const inputValueCursorPlusOne = processedValue[cursor + 1] as string;\r\n                    const inputValueCursorPlusTwo = processedValue[cursor + 2] as string;\r\n                    const inputValueCursorMinusOne = processedValue[cursor - 1] as string;\r\n                    const inputValueCursorMinusTwo = processedValue[cursor - 2] as string;\r\n                    const inputValueSliceMinusThreeMinusOne = processedValue.slice(\r\n                        cursor - 3,\r\n                        cursor - 1\r\n                    );\r\n                    const inputValueSliceMinusOnePlusOne = processedValue.slice(\r\n                        cursor - 1,\r\n                        cursor + 1\r\n                    );\r\n                    const inputValueSliceCursorPlusTwo = processedValue.slice(cursor, cursor + 2);\r\n                    const inputValueSliceMinusTwoCursor = processedValue.slice(cursor - 2, cursor);\r\n                    if (maskExpression[cursor] === MaskExpression.DAY) {\r\n                        const maskStartWithMonth =\r\n                            maskExpression.slice(0, 2) === MaskExpression.MONTHS;\r\n                        const startWithMonthInput: boolean =\r\n                            maskExpression.slice(0, 2) === MaskExpression.MONTHS &&\r\n                            this.specialCharacters.includes(inputValueCursorMinusTwo);\r\n                        if (\r\n                            (Number(inputSymbol) > 3 && this.leadZeroDateTime) ||\r\n                            (!maskStartWithMonth &&\r\n                                (Number(inputValueSliceCursorPlusTwo) > daysCount ||\r\n                                    Number(inputValueSliceMinusOnePlusOne) > daysCount ||\r\n                                    this.specialCharacters.includes(inputValueCursorPlusOne))) ||\r\n                            (startWithMonthInput\r\n                                ? Number(inputValueSliceMinusOnePlusOne) > daysCount ||\r\n                                  (!this.specialCharacters.includes(inputValueCursor) &&\r\n                                      this.specialCharacters.includes(inputValueCursorPlusTwo)) ||\r\n                                  this.specialCharacters.includes(inputValueCursor)\r\n                                : Number(inputValueSliceCursorPlusTwo) > daysCount ||\r\n                                  (this.specialCharacters.includes(inputValueCursorPlusOne) &&\r\n                                      !backspaced))\r\n                        ) {\r\n                            processedPosition = !this.leadZeroDateTime\r\n                                ? processedPosition + 1\r\n                                : processedPosition;\r\n                            cursor += 1;\r\n                            this._shiftStep(cursor);\r\n                            i--;\r\n\r\n                            if (this.leadZeroDateTime) {\r\n                                result += '0';\r\n                            }\r\n                            continue;\r\n                        }\r\n                    }\r\n                    if (maskExpression[cursor] === MaskExpression.MONTH) {\r\n                        const monthsCount = 12;\r\n                        // mask without day\r\n                        const withoutDays: boolean =\r\n                            cursor === 0 &&\r\n                            (Number(inputSymbol) > 2 ||\r\n                                Number(inputValueSliceCursorPlusTwo) > monthsCount ||\r\n                                (this.specialCharacters.includes(inputValueCursorPlusOne) &&\r\n                                    !backspaced));\r\n                        // day<10 && month<12 for input\r\n                        const specialChart = maskExpression.slice(cursor + 2, cursor + 3);\r\n                        const day1monthInput: boolean =\r\n                            inputValueSliceMinusThreeMinusOne.includes(specialChart) &&\r\n                            maskExpression.includes('d0') &&\r\n                            ((this.specialCharacters.includes(inputValueCursorMinusTwo) &&\r\n                                Number(inputValueSliceMinusOnePlusOne) > monthsCount &&\r\n                                !this.specialCharacters.includes(inputValueCursor)) ||\r\n                                this.specialCharacters.includes(inputValueCursor));\r\n                        //  month<12 && day<10 for input\r\n                        const day2monthInput: boolean =\r\n                            Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\r\n                            !this.specialCharacters.includes(\r\n                                inputValueSliceMinusThreeMinusOne as string\r\n                            ) &&\r\n                            this.specialCharacters.includes(inputValueCursorMinusOne) &&\r\n                            (Number(inputValueSliceCursorPlusTwo) > monthsCount ||\r\n                                this.specialCharacters.includes(inputValueCursorPlusOne));\r\n                        // cursor === 5 && without days\r\n                        const day2monthInputDot: boolean =\r\n                            (Number(inputValueSliceCursorPlusTwo) > monthsCount && cursor === 5) ||\r\n                            (this.specialCharacters.includes(inputValueCursorPlusOne) &&\r\n                                cursor === 5);\r\n                        // // day<10 && month<12 for paste whole data\r\n                        const day1monthPaste: boolean =\r\n                            Number(inputValueSliceMinusThreeMinusOne) > daysCount &&\r\n                            !this.specialCharacters.includes(\r\n                                inputValueSliceMinusThreeMinusOne as string\r\n                            ) &&\r\n                            !this.specialCharacters.includes(\r\n                                inputValueSliceMinusTwoCursor as string\r\n                            ) &&\r\n                            Number(inputValueSliceMinusTwoCursor) > monthsCount &&\r\n                            maskExpression.includes('d0');\r\n                        // 10<day<31 && month<12 for paste whole data\r\n                        const day2monthPaste: boolean =\r\n                            Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\r\n                            !this.specialCharacters.includes(\r\n                                inputValueSliceMinusThreeMinusOne as string\r\n                            ) &&\r\n                            !this.specialCharacters.includes(inputValueCursorMinusOne) &&\r\n                            Number(inputValueSliceMinusOnePlusOne) > monthsCount;\r\n                        if (\r\n                            (Number(inputSymbol) > 1 && this.leadZeroDateTime) ||\r\n                            withoutDays ||\r\n                            day1monthInput ||\r\n                            day2monthPaste ||\r\n                            day1monthPaste ||\r\n                            day2monthInput ||\r\n                            (day2monthInputDot && !this.leadZeroDateTime)\r\n                        ) {\r\n                            processedPosition = !this.leadZeroDateTime\r\n                                ? processedPosition + 1\r\n                                : processedPosition;\r\n                            cursor += 1;\r\n                            this._shiftStep(cursor);\r\n                            i--;\r\n                            if (this.leadZeroDateTime) {\r\n                                result += '0';\r\n                            }\r\n                            continue;\r\n                        }\r\n                    }\r\n                    result += inputSymbol;\r\n                    cursor++;\r\n                } else if (\r\n                    this.specialCharacters.includes(inputSymbol) &&\r\n                    maskExpression[cursor] === inputSymbol\r\n                ) {\r\n                    result += inputSymbol;\r\n                    cursor++;\r\n                } else if (\r\n                    this.specialCharacters.indexOf(\r\n                        maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\r\n                    ) !== -1\r\n                ) {\r\n                    result += maskExpression[cursor];\r\n                    cursor++;\r\n                    this._shiftStep(cursor);\r\n                    i--;\r\n                } else if (\r\n                    maskExpression[cursor] === MaskExpression.NUMBER_NINE &&\r\n                    this.showMaskTyped\r\n                ) {\r\n                    this._shiftStep(cursor);\r\n                } else if (\r\n                    this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING] &&\r\n                    this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]?.optional\r\n                ) {\r\n                    if (\r\n                        !!inputArray[cursor] &&\r\n                        maskExpression !== '099.099.099.099' &&\r\n                        maskExpression !== '000.000.000-00' &&\r\n                        maskExpression !== '00.000.000/0000-00' &&\r\n                        !maskExpression.match(/^9+\\.0+$/) &&\r\n                        !this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]\r\n                            ?.optional\r\n                    ) {\r\n                        result += inputArray[cursor];\r\n                    }\r\n                    if (\r\n                        maskExpression.includes(\r\n                            MaskExpression.NUMBER_NINE + MaskExpression.SYMBOL_STAR\r\n                        ) &&\r\n                        maskExpression.includes(\r\n                            MaskExpression.NUMBER_ZERO + MaskExpression.SYMBOL_STAR\r\n                        )\r\n                    ) {\r\n                        cursor++;\r\n                    }\r\n\r\n                    cursor++;\r\n                    i--;\r\n                } else if (\r\n                    this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\r\n                    this._findSpecialChar(\r\n                        this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\r\n                    ) &&\r\n                    this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\r\n                    multi\r\n                ) {\r\n                    cursor += 3;\r\n                    result += inputSymbol;\r\n                } else if (\r\n                    this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\r\n                    this._findSpecialChar(\r\n                        this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\r\n                    ) &&\r\n                    this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\r\n                    multi\r\n                ) {\r\n                    cursor += 3;\r\n                    result += inputSymbol;\r\n                } else if (\r\n                    this.showMaskTyped &&\r\n                    this.specialCharacters.indexOf(inputSymbol) < 0 &&\r\n                    inputSymbol !== this.placeHolderCharacter &&\r\n                    this.placeHolderCharacter.length === 1\r\n                ) {\r\n                    stepBack = true;\r\n                }\r\n            }\r\n        }\r\n        if (\r\n            result[processedPosition - 1] &&\r\n            result.length + 1 === maskExpression.length &&\r\n            this.specialCharacters.indexOf(\r\n                maskExpression[maskExpression.length - 1] ?? MaskExpression.EMPTY_STRING\r\n            ) !== -1\r\n        ) {\r\n            result += maskExpression[maskExpression.length - 1];\r\n        }\r\n        let newPosition: number = processedPosition + 1;\r\n\r\n        while (this._shift.has(newPosition)) {\r\n            shift++;\r\n            newPosition++;\r\n        }\r\n\r\n        let actualShift: number =\r\n            justPasted && !maskExpression.startsWith(MaskExpression.SEPARATOR)\r\n                ? cursor\r\n                : this._shift.has(processedPosition)\r\n                  ? shift\r\n                  : 0;\r\n        if (stepBack) {\r\n            actualShift--;\r\n        }\r\n\r\n        cb(actualShift, backspaceShift);\r\n        if (shift < 0) {\r\n            this._shift.clear();\r\n        }\r\n        let onlySpecial = false;\r\n        if (backspaced) {\r\n            onlySpecial = inputArray.every((char) => this.specialCharacters.includes(char));\r\n        }\r\n\r\n        let res = `${this.prefix}${onlySpecial ? MaskExpression.EMPTY_STRING : result}${\r\n            this.showMaskTyped ? '' : this.suffix\r\n        }`;\r\n\r\n        if (result.length === 0) {\r\n            res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\r\n        }\r\n\r\n        const isSpecialCharacterMaskFirstSymbol =\r\n            processedValue.length === 1 &&\r\n            this.specialCharacters.includes(maskExpression[0] as string) &&\r\n            processedValue !== maskExpression[0];\r\n\r\n        if (\r\n            !this._checkSymbolMask(processedValue, maskExpression[1] as string) &&\r\n            isSpecialCharacterMaskFirstSymbol\r\n        ) {\r\n            return '';\r\n        }\r\n\r\n        if (result.includes(MaskExpression.MINUS) && this.prefix && this.allowNegativeNumbers) {\r\n            if (backspaced && result === MaskExpression.MINUS) {\r\n                return '';\r\n            }\r\n            res = `${MaskExpression.MINUS}${this.prefix}${result\r\n                .split(MaskExpression.MINUS)\r\n                .join(MaskExpression.EMPTY_STRING)}${this.suffix}`;\r\n        }\r\n        return res;\r\n    }\r\n\r\n    public _findDropSpecialChar(inputSymbol: string): undefined | string {\r\n        if (Array.isArray(this.dropSpecialCharacters)) {\r\n            return this.dropSpecialCharacters.find((val: string) => val === inputSymbol);\r\n        }\r\n        return this._findSpecialChar(inputSymbol);\r\n    }\r\n\r\n    public _findSpecialChar(inputSymbol: string): undefined | string {\r\n        return this.specialCharacters.find((val: string) => val === inputSymbol);\r\n    }\r\n\r\n    public _checkSymbolMask(inputSymbol: string, maskSymbol: string): boolean {\r\n        this.patterns = this.customPattern ? this.customPattern : this.patterns;\r\n        return (\r\n            (this.patterns?.[maskSymbol]?.pattern &&\r\n                this.patterns?.[maskSymbol]?.pattern.test(inputSymbol)) ??\r\n            false\r\n        );\r\n    }\r\n\r\n    private _formatWithSeparators = (\r\n        str: string,\r\n        thousandSeparatorChar: string,\r\n        decimalChars: string | string[],\r\n        precision: number\r\n    ) => {\r\n        let x: string[] = [];\r\n        let decimalChar = '';\r\n\r\n        if (Array.isArray(decimalChars)) {\r\n            const regExp = new RegExp(\r\n                decimalChars.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|')\r\n            );\r\n            x = str.split(regExp);\r\n            decimalChar = str.match(regExp)?.[0] ?? MaskExpression.EMPTY_STRING;\r\n        } else {\r\n            x = str.split(decimalChars);\r\n            decimalChar = decimalChars;\r\n        }\r\n        const decimals: string =\r\n            x.length > 1 ? `${decimalChar}${x[1]}` : MaskExpression.EMPTY_STRING;\r\n        let res: string = x[0] ?? MaskExpression.EMPTY_STRING;\r\n        const separatorLimit: string = this.separatorLimit.replace(\r\n            /\\s/g,\r\n            MaskExpression.EMPTY_STRING\r\n        );\r\n        if (separatorLimit && +separatorLimit) {\r\n            if (res[0] === MaskExpression.MINUS) {\r\n                res = `-${res.slice(1, res.length).slice(0, separatorLimit.length)}`;\r\n            } else {\r\n                res = res.slice(0, separatorLimit.length);\r\n            }\r\n        }\r\n        const rgx = /(\\d+)(\\d{3})/;\r\n\r\n        while (thousandSeparatorChar && rgx.test(res)) {\r\n            res = res.replace(rgx, '$1' + thousandSeparatorChar + '$2');\r\n        }\r\n\r\n        if (typeof precision === 'undefined') {\r\n            return res + decimals;\r\n        } else if (precision === 0) {\r\n            return res;\r\n        }\r\n        return res + decimals.substring(0, precision + 1);\r\n    };\r\n\r\n    private percentage = (str: string): boolean => {\r\n        const sanitizedStr = str.replace(',', '.');\r\n        const value = Number(\r\n            this.allowNegativeNumbers && str.includes(MaskExpression.MINUS)\r\n                ? sanitizedStr.slice(1, str.length)\r\n                : sanitizedStr\r\n        );\r\n\r\n        return !isNaN(value) && value >= 0 && value <= 100;\r\n    };\r\n\r\n    public getPrecision = (maskExpression: string): number => {\r\n        const x: string[] = maskExpression.split(MaskExpression.DOT);\r\n        if (x.length > 1) {\r\n            return Number(x[x.length - 1]);\r\n        }\r\n\r\n        return Infinity;\r\n    };\r\n\r\n    private checkAndRemoveSuffix = (inputValue: string): string => {\r\n        for (let i = this.suffix?.length - 1; i >= 0; i--) {\r\n            const substr = this.suffix.substring(i, this.suffix?.length);\r\n            if (\r\n                inputValue.includes(substr) &&\r\n                i !== this.suffix?.length - 1 &&\r\n                (i - 1 < 0 ||\r\n                    !inputValue.includes(this.suffix.substring(i - 1, this.suffix?.length)))\r\n            ) {\r\n                return inputValue.replace(substr, MaskExpression.EMPTY_STRING);\r\n            }\r\n        }\r\n        return inputValue;\r\n    };\r\n\r\n    private checkInputPrecision = (\r\n        inputValue: string,\r\n        precision: number,\r\n        decimalMarker: MatchaMaskConfig['decimalMarker']\r\n    ): string => {\r\n        let processedInputValue = inputValue;\r\n        let processedDecimalMarker = decimalMarker;\r\n\r\n        if (precision < Infinity) {\r\n            // TODO need think about decimalMarker\r\n            if (Array.isArray(processedDecimalMarker)) {\r\n                const marker = processedDecimalMarker.find((dm) => dm !== this.thousandSeparator);\r\n\r\n                processedDecimalMarker = marker ? marker : processedDecimalMarker[0];\r\n            }\r\n            const precisionRegEx = new RegExp(\r\n                this._charToRegExpExpression(processedDecimalMarker) + `\\\\d{${precision}}.*$`\r\n            );\r\n            const precisionMatch: RegExpMatchArray | null =\r\n                processedInputValue.match(precisionRegEx);\r\n            const precisionMatchLength: number = (precisionMatch && precisionMatch[0]?.length) ?? 0;\r\n            if (precisionMatchLength - 1 > precision) {\r\n                const diff = precisionMatchLength - 1 - precision;\r\n\r\n                processedInputValue = processedInputValue.substring(\r\n                    0,\r\n                    processedInputValue.length - diff\r\n                );\r\n            }\r\n            if (\r\n                precision === 0 &&\r\n                this._compareOrIncludes(\r\n                    processedInputValue[processedInputValue.length - 1],\r\n                    processedDecimalMarker,\r\n                    this.thousandSeparator\r\n                )\r\n            ) {\r\n                processedInputValue = processedInputValue.substring(\r\n                    0,\r\n                    processedInputValue.length - 1\r\n                );\r\n            }\r\n        }\r\n        return processedInputValue;\r\n    };\r\n\r\n    private _stripToDecimal(str: string): string {\r\n        return str\r\n            .split(MaskExpression.EMPTY_STRING)\r\n            .filter((i: string, idx: number) => {\r\n                const isDecimalMarker =\r\n                    typeof this.decimalMarker === 'string'\r\n                        ? i === this.decimalMarker\r\n                        : // TODO (inepipenko) use utility type\r\n                          this.decimalMarker.includes(\r\n                              i as MaskExpression.COMMA | MaskExpression.DOT\r\n                          );\r\n                return (\r\n                    i.match('^-?\\\\d') ||\r\n                    i === this.thousandSeparator ||\r\n                    isDecimalMarker ||\r\n                    (i === MaskExpression.MINUS && idx === 0 && this.allowNegativeNumbers)\r\n                );\r\n            })\r\n            .join(MaskExpression.EMPTY_STRING);\r\n    }\r\n\r\n    private _charToRegExpExpression(char: string): string {\r\n        // if (Array.isArray(char)) {\r\n        // \treturn char.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|');\r\n        // }\r\n        if (char) {\r\n            const charsToEscape = '[\\\\^$.|?*+()';\r\n            return char === ' ' ? '\\\\s' : charsToEscape.indexOf(char) >= 0 ? `\\\\${char}` : char;\r\n        }\r\n        return char;\r\n    }\r\n\r\n    private _shiftStep(cursor: number) {\r\n        this._shift.add(cursor + this.prefix.length || 0);\r\n    }\r\n\r\n    protected _compareOrIncludes<T>(value: T, comparedValue: T | T[], excludedValue: T): boolean {\r\n        return Array.isArray(comparedValue)\r\n            ? comparedValue.filter((v) => v !== excludedValue).includes(value)\r\n            : value === comparedValue;\r\n    }\r\n\r\n    private _validIP(valuesIP: string[]): boolean {\r\n        return !(\r\n            valuesIP.length === 4 &&\r\n            !valuesIP.some((value: string, index: number) => {\r\n                if (valuesIP.length !== index + 1) {\r\n                    return value === MaskExpression.EMPTY_STRING || Number(value) > 255;\r\n                }\r\n                return value === MaskExpression.EMPTY_STRING || Number(value.substring(0, 3)) > 255;\r\n            })\r\n        );\r\n    }\r\n\r\n    private _splitPercentZero(value: string): string {\r\n        if (value === MaskExpression.MINUS && this.allowNegativeNumbers) {\r\n            return value;\r\n        }\r\n        const decimalIndex =\r\n            typeof this.decimalMarker === 'string'\r\n                ? value.indexOf(this.decimalMarker)\r\n                : value.indexOf(MaskExpression.DOT);\r\n        const emptyOrMinus =\r\n            this.allowNegativeNumbers && value.includes(MaskExpression.MINUS) ? '-' : '';\r\n        if (decimalIndex === -1) {\r\n            const parsedValue = parseInt(emptyOrMinus ? value.slice(1, value.length) : value, 10);\r\n            return isNaN(parsedValue)\r\n                ? MaskExpression.EMPTY_STRING\r\n                : `${emptyOrMinus}${parsedValue}`;\r\n        } else {\r\n            const integerPart = parseInt(value.replace('-', '').substring(0, decimalIndex), 10);\r\n            const decimalPart = value.substring(decimalIndex + 1);\r\n            const integerString = isNaN(integerPart) ? '' : integerPart.toString();\r\n\r\n            const decimal =\r\n                typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\r\n\r\n            return integerString === MaskExpression.EMPTY_STRING\r\n                ? MaskExpression.EMPTY_STRING\r\n                : `${emptyOrMinus}${integerString}${decimal}${decimalPart}`;\r\n        }\r\n    }\r\n\r\n    private _findFirstNonZeroAndDecimalIndex(inputString: string, decimalMarker: '.' | ',') {\r\n        let decimalMarkerIndex: number | null = null;\r\n        let nonZeroIndex: number | null = null;\r\n\r\n        for (let i = 0; i < inputString.length; i++) {\r\n            const char = inputString[i];\r\n\r\n            if (char === decimalMarker && decimalMarkerIndex === null) {\r\n                decimalMarkerIndex = i;\r\n            }\r\n\r\n            if (char && char >= '1' && char <= '9' && nonZeroIndex === null) {\r\n                nonZeroIndex = i;\r\n            }\r\n\r\n            if (decimalMarkerIndex !== null && nonZeroIndex !== null) {\r\n                break;\r\n            }\r\n        }\r\n\r\n        return {\r\n            decimalMarkerIndex,\r\n            nonZeroIndex,\r\n        };\r\n    }\r\n}\r\n","import { ElementRef, inject, Injectable, Renderer2 } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n\r\nimport type { MatchaMaskConfig } from './matcha-mask.config';\r\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\r\nimport { MatchaMaskApplierService } from './matcha-mask-applier.service';\r\nimport { MaskExpression } from './matcha-mask-expression.enum';\r\n\r\n// console.log('🎯 MATCHA-MASK VERSION: v107 - FIX DECIMAL DISPLAY & BACKSPACE LOOP - ' + new Date().toISOString());\r\n\r\n@Injectable()\r\nexport class MatchaMaskService extends MatchaMaskApplierService {\r\n    public isNumberValue = false;\r\n    public maskIsShown = '';\r\n    public selStart: number | null = null;\r\n    public selEnd: number | null = null;\r\n    public maskChanged = false;\r\n    public maskExpressionArray: string[] = [];\r\n    public previousValue = '';\r\n    public currentValue = '';\r\n    /**\r\n     * Whether we are currently in writeValue function, in this case when applying the mask we don't want to trigger onChange function,\r\n     * since writeValue should be a one way only process of writing the DOM value based on the Angular model value.\r\n     */\r\n    public writingValue = false;\r\n\r\n    private _emitValue = false;\r\n    private _start!: number;\r\n    private _end!: number;\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    public onChange = (_: any) => {};\r\n\r\n    public readonly _elementRef = inject(ElementRef, { optional: true });\r\n\r\n    private readonly document = inject(DOCUMENT);\r\n\r\n    protected override _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\r\n\r\n    private readonly _renderer = inject(Renderer2, { optional: true });\r\n\r\n    /**\r\n     * Applies the mask to the input value.\r\n     * @param inputValue The input value to be masked.\r\n     * @param maskExpression The mask expression to apply.\r\n     * @param position The position in the input value.\r\n     * @param justPasted Whether the value was just pasted.\r\n     * @param backspaced Whether the value was backspaced.\r\n     * @param cb Callback function.\r\n     * @returns The masked value.\r\n     */\r\n    public override applyMask(\r\n        inputValue: string | object | boolean | null | undefined,\r\n        maskExpression: string,\r\n        position = 0,\r\n        justPasted = false,\r\n        backspaced = false,\r\n        // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n        cb: (...args: any[]) => any = () => {}\r\n    ): string {\r\n        // Armazenar maskExpression como propriedade da classe para uso posterior\r\n        this.maskExpression = maskExpression;\r\n\r\n        // Converter automaticamente número, boolean ou object para string (retrocompatível)\r\n        // Isso previne o erro \"indexOf is not a function\" quando números são passados\r\n        let processedInputValue: string;\r\n        if (inputValue === null || inputValue === undefined) {\r\n            processedInputValue = '';\r\n        } else if (typeof inputValue === 'number') {\r\n            processedInputValue = String(inputValue);\r\n        } else if (typeof inputValue === 'boolean') {\r\n            processedInputValue = inputValue ? 'true' : 'false';\r\n        } else if (typeof inputValue === 'object') {\r\n            // Para objetos, tentar converter para string (JSON.stringify ou toString)\r\n            try {\r\n                processedInputValue = JSON.stringify(inputValue);\r\n            } catch {\r\n                processedInputValue = String(inputValue);\r\n            }\r\n        } else {\r\n            processedInputValue = String(inputValue);\r\n        }\r\n\r\n        // If no mask expression, return the input value or the actual value\r\n        if (!maskExpression) {\r\n            return processedInputValue !== this.actualValue ? this.actualValue : processedInputValue;\r\n        }\r\n\r\n        // Show mask in input if required\r\n        this.maskIsShown = this.showMaskTyped\r\n            ? this.showMaskInInput()\r\n            : MaskExpression.EMPTY_STRING;\r\n\r\n        // Handle specific mask expressions\r\n        if (this.maskExpression === MaskExpression.IP && this.showMaskTyped) {\r\n            this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\r\n        }\r\n        if (this.maskExpression === MaskExpression.CPF_CNPJ && this.showMaskTyped) {\r\n            this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\r\n        }\r\n\r\n        // Handle empty input value with mask typed\r\n        if (!processedInputValue && this.showMaskTyped) {\r\n            this.formControlResult(this.prefix);\r\n            return `${this.prefix}${this.maskIsShown}${this.suffix}`;\r\n        }\r\n\r\n        const getSymbol: string =\r\n            !!processedInputValue && typeof this.selStart === 'number'\r\n                ? (processedInputValue[this.selStart] ?? MaskExpression.EMPTY_STRING)\r\n                : MaskExpression.EMPTY_STRING;\r\n        let newInputValue = '';\r\n        let newPosition = position;\r\n\r\n        // Handle hidden input or input with asterisk symbol\r\n        if (\r\n            (this.hiddenInput ||\r\n                (processedInputValue && processedInputValue.indexOf(MaskExpression.SYMBOL_STAR) >= 0)) &&\r\n            !this.writingValue\r\n        ) {\r\n            let actualResult: string[] =\r\n                processedInputValue && processedInputValue.length === 1\r\n                    ? processedInputValue.split(MaskExpression.EMPTY_STRING)\r\n                    : this.actualValue.split(MaskExpression.EMPTY_STRING);\r\n\r\n            // Handle backspace\r\n            if (backspaced) {\r\n                actualResult = actualResult\r\n                    .slice(0, position)\r\n                    .concat(actualResult.slice(position + 1));\r\n            }\r\n\r\n            // Remove mask if showMaskTyped is true\r\n            if (this.showMaskTyped) {\r\n                // eslint-disable-next-line no-param-reassign\r\n                processedInputValue = this.removeMask(processedInputValue);\r\n                actualResult = this.removeMask(actualResult.join('')).split(\r\n                    MaskExpression.EMPTY_STRING\r\n                );\r\n            }\r\n\r\n            // Handle selection start and end\r\n            if (typeof this.selStart === 'object' && typeof this.selEnd === 'object') {\r\n                this.selStart = Number(this.selStart);\r\n                this.selEnd = Number(this.selEnd);\r\n            } else {\r\n                if (processedInputValue !== MaskExpression.EMPTY_STRING && actualResult.length) {\r\n                    if (typeof this.selStart === 'number' && typeof this.selEnd === 'number') {\r\n                        if (processedInputValue.length > actualResult.length) {\r\n                            actualResult.splice(this.selStart, 0, getSymbol);\r\n                        } else if (processedInputValue.length < actualResult.length) {\r\n                            if (actualResult.length - processedInputValue.length === 1) {\r\n                                if (backspaced) {\r\n                                    actualResult.splice(this.selStart - 1, 1);\r\n                                } else {\r\n                                    actualResult.splice(processedInputValue.length - 1, 1);\r\n                                }\r\n                            } else {\r\n                                actualResult.splice(this.selStart, this.selEnd - this.selStart);\r\n                            }\r\n                        }\r\n                    }\r\n                } else {\r\n                    actualResult = [];\r\n                }\r\n            }\r\n\r\n            // Remove mask if showMaskTyped is true and hiddenInput is false\r\n            if (this.showMaskTyped && !this.hiddenInput) {\r\n                newInputValue = this.removeMask(processedInputValue);\r\n            }\r\n\r\n            // Handle actual value length\r\n            if (this.actualValue.length) {\r\n                if (actualResult.length < processedInputValue.length) {\r\n                    newInputValue = this.shiftTypedSymbols(\r\n                        actualResult.join(MaskExpression.EMPTY_STRING)\r\n                    );\r\n                } else if (actualResult.length === processedInputValue.length) {\r\n                    newInputValue = actualResult.join(MaskExpression.EMPTY_STRING);\r\n                } else {\r\n                    newInputValue = processedInputValue;\r\n                }\r\n            } else {\r\n                newInputValue = processedInputValue;\r\n            }\r\n        }\r\n\r\n        // Handle just pasted input\r\n        if (justPasted && (this.hiddenInput || !this.hiddenInput)) {\r\n            newInputValue = processedInputValue;\r\n        }\r\n\r\n        // Handle backspace with special characters\r\n        if (\r\n            backspaced &&\r\n            this.specialCharacters.indexOf(\r\n                this.maskExpression[newPosition] ?? MaskExpression.EMPTY_STRING\r\n            ) !== -1 &&\r\n            this.showMaskTyped &&\r\n            !this.prefix\r\n        ) {\r\n            newInputValue = this.currentValue;\r\n        }\r\n\r\n        // Handle deleted special character\r\n        if (this.deletedSpecialCharacter && newPosition) {\r\n            if (\r\n                this.specialCharacters.includes(\r\n                    this.actualValue.slice(newPosition, newPosition + 1)\r\n                )\r\n            ) {\r\n                newPosition = newPosition + 1;\r\n            } else if (\r\n                maskExpression.slice(newPosition - 1, newPosition + 1) !== MaskExpression.MONTHS\r\n            ) {\r\n                newPosition = newPosition - 2;\r\n            }\r\n\r\n            this.deletedSpecialCharacter = false;\r\n        }\r\n\r\n        // Remove mask if showMaskTyped is true and placeHolderCharacter length is 1\r\n        if (\r\n            this.showMaskTyped &&\r\n            this.placeHolderCharacter.length === 1 &&\r\n            !this.leadZeroDateTime\r\n        ) {\r\n            newInputValue = this.removeMask(newInputValue);\r\n        }\r\n\r\n        // Handle mask changed\r\n        if (this.maskChanged) {\r\n            newInputValue = processedInputValue;\r\n        } else {\r\n            newInputValue =\r\n                Boolean(newInputValue) && newInputValue.length ? newInputValue : processedInputValue;\r\n        }\r\n\r\n        // Handle showMaskTyped and keepCharacterPositions\r\n        if (\r\n            this.showMaskTyped &&\r\n            this.keepCharacterPositions &&\r\n            this.actualValue &&\r\n            !justPasted &&\r\n            !this.writingValue\r\n        ) {\r\n            const value = this.dropSpecialCharacters\r\n                ? this.removeMask(this.actualValue)\r\n                : this.actualValue;\r\n            this.formControlResult(value);\r\n            return this.actualValue\r\n                ? this.actualValue\r\n                : `${this.prefix}${this.maskIsShown}${this.suffix}`;\r\n        }\r\n\r\n        // Apply the mask using the parent class method\r\n        const result: string = super.applyMask(\r\n            newInputValue,\r\n            maskExpression,\r\n            newPosition,\r\n            justPasted,\r\n            backspaced,\r\n            cb\r\n        );\r\n\r\n        this.actualValue = this.getActualValue(result);\r\n\r\n        // handle some separator implications:\r\n        // a.) adjust decimalMarker default (. -> ,) if thousandSeparator is a dot\r\n        if (\r\n            this.thousandSeparator === MaskExpression.DOT &&\r\n            this.decimalMarker === MaskExpression.DOT\r\n        ) {\r\n            this.decimalMarker = MaskExpression.COMMA;\r\n        }\r\n        // b) remove ONLY decimal marker from list of special characters to mask\r\n        // The thousandSeparator should REMAIN in the list to be removed from the final value\r\n        if (\r\n            this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\r\n            this.dropSpecialCharacters === true\r\n        ) {\r\n            this.specialCharacters = this.specialCharacters.filter(\r\n                (item: string) =>\r\n                    !this._compareOrIncludes(item, this.decimalMarker, null) // Only remove decimalMarker, keep thousandSeparator\r\n            );\r\n        }\r\n        // c) set isNumberValue to true for separator masks to ensure proper number conversion\r\n        if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\r\n            this.isNumberValue = true;\r\n        }\r\n\r\n        // Update previous and current values\r\n        if (result || result === '') {\r\n            this.previousValue = this.currentValue;\r\n            this.currentValue = result;\r\n\r\n            this._emitValue =\r\n                this.previousValue !== this.currentValue ||\r\n                (newInputValue !== this.currentValue && this.writingValue) ||\r\n                (this.previousValue === this.currentValue && justPasted);\r\n        }\r\n\r\n        // Propagate the input value back to the Angular model\r\n        // eslint-disable-next-line no-unused-expressions,@typescript-eslint/no-unused-expressions\r\n        this._emitValue ? this.formControlResult(result) : '';\r\n\r\n        // Handle hidden input and showMaskTyped\r\n        if (!this.showMaskTyped || (this.showMaskTyped && this.hiddenInput)) {\r\n            if (this.hiddenInput) {\r\n                return `${this.hideInput(result, this.maskExpression)}${this.maskIsShown.slice(result.length)}`;\r\n            }\r\n            return result;\r\n        }\r\n\r\n        const resLen: number = result.length;\r\n        const prefNmask = `${this.prefix}${this.maskIsShown}${this.suffix}`;\r\n\r\n        // Handle specific mask expressions\r\n        if (this.maskExpression.includes(MaskExpression.HOURS)) {\r\n            const countSkipedSymbol = this._numberSkipedSymbols(result);\r\n            return `${result}${prefNmask.slice(resLen + countSkipedSymbol)}`;\r\n        } else if (\r\n            this.maskExpression === MaskExpression.IP ||\r\n            this.maskExpression === MaskExpression.CPF_CNPJ\r\n        ) {\r\n            return `${result}${prefNmask}`;\r\n        }\r\n\r\n        return `${result}${prefNmask.slice(resLen)}`;\r\n    }\r\n\r\n    // get the number of characters that were shifted\r\n    private _numberSkipedSymbols(value: string): number {\r\n        const regex = /(^|\\D)(\\d\\D)/g;\r\n        let match = regex.exec(value);\r\n        let countSkipedSymbol = 0;\r\n        while (match != null) {\r\n            countSkipedSymbol += 1;\r\n            match = regex.exec(value);\r\n        }\r\n        return countSkipedSymbol;\r\n    }\r\n\r\n    public applyValueChanges(\r\n        position: number,\r\n        justPasted: boolean,\r\n        backspaced: boolean,\r\n        // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n        cb: (...args: any[]) => any = () => {}\r\n    ): void {\r\n        const formElement = this._elementRef?.nativeElement;\r\n        if (!formElement) {\r\n            return;\r\n        }\r\n\r\n        formElement.value = this.applyMask(\r\n            formElement.value,\r\n            this.maskExpression,\r\n            position,\r\n            justPasted,\r\n            backspaced,\r\n            cb\r\n        );\r\n        if (formElement === this._getActiveElement()) {\r\n            return;\r\n        }\r\n        this.clearIfNotMatchFn();\r\n    }\r\n\r\n    public hideInput(inputValue: string, maskExpression: string): string {\r\n        return inputValue\r\n            .split(MaskExpression.EMPTY_STRING)\r\n            .map((curr: string, index: number) => {\r\n                if (\r\n                    this.patterns &&\r\n                    this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING] &&\r\n                    this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]?.symbol\r\n                ) {\r\n                    return this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]\r\n                        ?.symbol;\r\n                }\r\n                return curr;\r\n            })\r\n            .join(MaskExpression.EMPTY_STRING);\r\n    }\r\n\r\n    // this function is not necessary, it checks result against maskExpression\r\n    public getActualValue(res: string): string {\r\n        const compare: string[] = res\r\n            .split(MaskExpression.EMPTY_STRING)\r\n            .filter((symbol: string, i: number) => {\r\n                const maskChar = this.maskExpression[i] ?? MaskExpression.EMPTY_STRING;\r\n                return (\r\n                    this._checkSymbolMask(symbol, maskChar) ||\r\n                    (this.specialCharacters.includes(maskChar) && symbol === maskChar)\r\n                );\r\n            });\r\n        if (compare.join(MaskExpression.EMPTY_STRING) === res) {\r\n            return compare.join(MaskExpression.EMPTY_STRING);\r\n        }\r\n        return res;\r\n    }\r\n\r\n    public shiftTypedSymbols(inputValue: string): string {\r\n        let symbolToReplace = '';\r\n        const newInputValue: (string | undefined)[] =\r\n            (inputValue &&\r\n                inputValue\r\n                    .split(MaskExpression.EMPTY_STRING)\r\n                    .map((currSymbol: string, index: number) => {\r\n                        if (\r\n                            this.specialCharacters.includes(\r\n                                inputValue[index + 1] ?? MaskExpression.EMPTY_STRING\r\n                            ) &&\r\n                            inputValue[index + 1] !== this.maskExpression[index + 1]\r\n                        ) {\r\n                            symbolToReplace = currSymbol;\r\n                            return inputValue[index + 1];\r\n                        }\r\n                        if (symbolToReplace.length) {\r\n                            const replaceSymbol: string = symbolToReplace;\r\n                            symbolToReplace = MaskExpression.EMPTY_STRING;\r\n                            return replaceSymbol;\r\n                        }\r\n                        return currSymbol;\r\n                    })) ||\r\n            [];\r\n        return newInputValue.join(MaskExpression.EMPTY_STRING);\r\n    }\r\n\r\n    /**\r\n     * Convert number value to string\r\n     * 3.1415 -> '3.1415'\r\n     * 1e-7 -> '0.0000001'\r\n     */\r\n    public numberToString(value: number | string): string {\r\n        if (\r\n            (!value && value !== 0) ||\r\n            (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\r\n                (this.leadZero || !this.dropSpecialCharacters)) ||\r\n            (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\r\n                this.separatorLimit.length > 14 &&\r\n                String(value).length > 14)\r\n        ) {\r\n            return String(value);\r\n        }\r\n        return Number(value)\r\n            .toLocaleString('fullwide', {\r\n                useGrouping: false,\r\n                maximumFractionDigits: 20,\r\n            })\r\n            .replace(`/${MaskExpression.MINUS}/`, MaskExpression.MINUS);\r\n    }\r\n\r\n    public showMaskInInput(inputVal?: string): string {\r\n        if (this.showMaskTyped && !!this.shownMaskExpression) {\r\n            if (this.maskExpression.length !== this.shownMaskExpression.length) {\r\n                throw new Error('Mask expression must match mask placeholder length');\r\n            } else {\r\n                return this.shownMaskExpression;\r\n            }\r\n        } else if (this.showMaskTyped) {\r\n            if (inputVal) {\r\n                if (this.maskExpression === MaskExpression.IP) {\r\n                    return this._checkForIp(inputVal);\r\n                }\r\n                if (this.maskExpression === MaskExpression.CPF_CNPJ) {\r\n                    return this._checkForCpfCnpj(inputVal);\r\n                }\r\n            }\r\n            if (this.placeHolderCharacter.length === this.maskExpression.length) {\r\n                return this.placeHolderCharacter;\r\n            }\r\n            return this.maskExpression.replace(/\\w/g, this.placeHolderCharacter);\r\n        }\r\n        return '';\r\n    }\r\n\r\n    public clearIfNotMatchFn(): void {\r\n        const formElement = this._elementRef?.nativeElement;\r\n        if (!formElement) {\r\n            return;\r\n        }\r\n        if (\r\n            this.clearIfNotMatch &&\r\n            this.prefix.length + this.maskExpression.length + this.suffix.length !==\r\n                formElement.value.replace(this.placeHolderCharacter, MaskExpression.EMPTY_STRING)\r\n                    .length\r\n        ) {\r\n            this.formElementProperty = ['value', MaskExpression.EMPTY_STRING];\r\n            this.applyMask('', this.maskExpression);\r\n        }\r\n    }\r\n\r\n    public set formElementProperty([name, value]: [string, string | boolean]) {\r\n        if (!this._renderer || !this._elementRef) {\r\n            return;\r\n        }\r\n        //[TODO]: andriikamaldinov1 find better solution\r\n        Promise.resolve().then(() =>\r\n            this._renderer?.setProperty(this._elementRef?.nativeElement, name, value)\r\n        );\r\n    }\r\n\r\n    public checkDropSpecialCharAmount(mask: string): number {\r\n        const chars: string[] = mask\r\n            .split(MaskExpression.EMPTY_STRING)\r\n            .filter((item: string) => this._findDropSpecialChar(item));\r\n        return chars.length;\r\n    }\r\n\r\n    public removeMask(inputValue: string): string {\r\n        return this._removeMask(\r\n            this._removeSuffix(this._removePrefix(inputValue)),\r\n            this.specialCharacters.concat('_').concat(this.placeHolderCharacter)\r\n        );\r\n    }\r\n\r\n    private _checkForIp(inputVal: string): string {\r\n        if (inputVal === MaskExpression.HASH) {\r\n            return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\r\n        }\r\n        const arr: string[] = [];\r\n        // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n        for (let i = 0; i < inputVal.length; i++) {\r\n            const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\r\n            if (!value) {\r\n                continue;\r\n            }\r\n            if (value.match('\\\\d')) {\r\n                arr.push(value);\r\n            }\r\n        }\r\n        if (arr.length <= 3) {\r\n            return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\r\n        }\r\n        if (arr.length > 3 && arr.length <= 6) {\r\n            return `${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\r\n        }\r\n        if (arr.length > 6 && arr.length <= 9) {\r\n            return this.placeHolderCharacter;\r\n        }\r\n        if (arr.length > 9 && arr.length <= 12) {\r\n            return '';\r\n        }\r\n        return '';\r\n    }\r\n\r\n    private _checkForCpfCnpj(inputVal: string): string {\r\n        const cpf =\r\n            `${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\r\n            `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\r\n            `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\r\n            `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\r\n        const cnpj =\r\n            `${this.placeHolderCharacter}${this.placeHolderCharacter}` +\r\n            `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\r\n            `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\r\n            `/${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\r\n            `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\r\n\r\n        if (inputVal === MaskExpression.HASH) {\r\n            return cpf;\r\n        }\r\n        const arr: string[] = [];\r\n        // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n        for (let i = 0; i < inputVal.length; i++) {\r\n            const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\r\n            if (!value) {\r\n                continue;\r\n            }\r\n            if (value.match('\\\\d')) {\r\n                arr.push(value);\r\n            }\r\n        }\r\n        if (arr.length <= 3) {\r\n            return cpf.slice(arr.length, cpf.length);\r\n        }\r\n        if (arr.length > 3 && arr.length <= 6) {\r\n            return cpf.slice(arr.length + 1, cpf.length);\r\n        }\r\n        if (arr.length > 6 && arr.length <= 9) {\r\n            return cpf.slice(arr.length + 2, cpf.length);\r\n        }\r\n        if (arr.length > 9 && arr.length < 11) {\r\n            return cpf.slice(arr.length + 3, cpf.length);\r\n        }\r\n        if (arr.length === 11) {\r\n            return '';\r\n        }\r\n        if (arr.length === 12) {\r\n            if (inputVal.length === 17) {\r\n                return cnpj.slice(16, cnpj.length);\r\n            }\r\n            return cnpj.slice(15, cnpj.length);\r\n        }\r\n        if (arr.length > 12 && arr.length <= 14) {\r\n            return cnpj.slice(arr.length + 4, cnpj.length);\r\n        }\r\n        return '';\r\n    }\r\n\r\n    /**\r\n     * Recursively determine the current active element by navigating the Shadow DOM until the Active Element is found.\r\n     */\r\n    private _getActiveElement(document: DocumentOrShadowRoot = this.document): Element | null {\r\n        const shadowRootEl = document?.activeElement?.shadowRoot;\r\n        if (!shadowRootEl?.activeElement) {\r\n            return document.activeElement;\r\n        } else {\r\n            return this._getActiveElement(shadowRootEl);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Propogates the input value back to the Angular model by triggering the onChange function. It won't do this if writingValue\r\n     * is true. If that is true it means we are currently in the writeValue function, which is supposed to only update the actual\r\n     * DOM element based on the Angular model value. It should be a one way process, i.e. writeValue should not be modifying the Angular\r\n     * model value too. Therefore, we don't trigger onChange in this scenario.\r\n     * @param inputValue the current form input value\r\n     */\r\n    private formControlResult(inputValue: string): void {\r\n        const outputTransformFn = this.outputTransformFn\r\n            ? this.outputTransformFn\r\n            : (v: unknown) => v;\r\n        this.writingValue = false;\r\n        this.maskChanged = false;\r\n\r\n        // Para máscaras de separador (currency), fazer conversão direta para número\r\n        if (this.maskExpression.startsWith(MaskExpression.SEPARATOR) && this.dropSpecialCharacters) {\r\n            // Remover prefixo e sufixo\r\n            let cleanValue = inputValue;\r\n            if (this.prefix) {\r\n                cleanValue = cleanValue.replace(this.prefix, '');\r\n            }\r\n            if (this.suffix) {\r\n                cleanValue = cleanValue.replace(this.suffix, '');\r\n            }\r\n\r\n            // Remover separador de milhares\r\n            if (this.thousandSeparator) {\r\n                cleanValue = cleanValue.split(this.thousandSeparator).join('');\r\n            }\r\n\r\n            // Converter decimal marker para ponto\r\n            const markers = Array.isArray(this.decimalMarker)\r\n                ? this.decimalMarker\r\n                : [this.decimalMarker];\r\n            for (const marker of markers) {\r\n                if (marker && marker !== '.') {\r\n                    cleanValue = cleanValue.replace(marker, '.');\r\n                }\r\n            }\r\n\r\n            // Converter para número\r\n            const numValue = parseFloat(cleanValue);\r\n            const finalValue = isNaN(numValue) ? 0 : numValue;\r\n\r\n            this.onChange(outputTransformFn(finalValue));\r\n            return;\r\n        }\r\n\r\n        // Para máscaras de separador, garantir que isNumberValue é true\r\n        // Isso assegura a conversão correta para número\r\n        if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\r\n            this.isNumberValue = true;\r\n        }\r\n\r\n        if (Array.isArray(this.dropSpecialCharacters)) {\r\n            this.onChange(\r\n                outputTransformFn(\r\n                    this._toNumber(\r\n                        this._checkSymbols(\r\n                            this._removeMask(\r\n                                this._removeSuffix(this._removePrefix(inputValue)),\r\n                                this.dropSpecialCharacters\r\n                            )\r\n                        )\r\n                    )\r\n                )\r\n            );\r\n        } else if (\r\n            this.dropSpecialCharacters ||\r\n            (!this.dropSpecialCharacters && this.prefix === inputValue)\r\n        ) {\r\n            this.onChange(\r\n                outputTransformFn(\r\n                    this._toNumber(\r\n                        this._checkSymbols(this._removeSuffix(this._removePrefix(inputValue)))\r\n                    )\r\n                )\r\n            );\r\n        } else {\r\n            this.onChange(outputTransformFn(this._toNumber(inputValue)));\r\n        }\r\n    }\r\n\r\n    private _toNumber(value: string | number | undefined | null) {\r\n        if (!this.isNumberValue || value === MaskExpression.EMPTY_STRING) {\r\n            return value;\r\n        }\r\n        if (\r\n            this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\r\n            (this.leadZero || !this.dropSpecialCharacters)\r\n        ) {\r\n            return value;\r\n        }\r\n\r\n        if (String(value).length > 14 && this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\r\n            return String(value);\r\n        }\r\n\r\n        const num = Number(value);\r\n        if (this.maskExpression.startsWith(MaskExpression.SEPARATOR) && Number.isNaN(num)) {\r\n            const val = String(value).replace(',', '.');\r\n            return Number(val);\r\n        }\r\n\r\n        return Number.isNaN(num) ? value : num;\r\n    }\r\n\r\n    private _removeMask(value: string, specialCharactersForRemove: string[]): string {\r\n        if (\r\n            this.maskExpression.startsWith(MaskExpression.PERCENT) &&\r\n            value.includes(MaskExpression.DOT)\r\n        ) {\r\n            return value;\r\n        }\r\n\r\n        return value\r\n            ? value.replace(\r\n                  this._regExpForRemove(specialCharactersForRemove),\r\n                  MaskExpression.EMPTY_STRING\r\n              )\r\n            : value;\r\n    }\r\n\r\n    private _removePrefix(value: string): string {\r\n        if (!this.prefix) {\r\n            return value;\r\n        }\r\n        return value ? value.replace(this.prefix, MaskExpression.EMPTY_STRING) : value;\r\n    }\r\n\r\n    private _removeSuffix(value: string): string {\r\n        if (!this.suffix) {\r\n            return value;\r\n        }\r\n        return value ? value.replace(this.suffix, MaskExpression.EMPTY_STRING) : value;\r\n    }\r\n\r\n    private _retrieveSeparatorValue(result: string): string {\r\n        let specialCharacters = Array.isArray(this.dropSpecialCharacters)\r\n            ? this.specialCharacters.filter((v) => {\r\n                  return (this.dropSpecialCharacters as string[]).includes(v);\r\n              })\r\n            : [...this.specialCharacters]; // Criar cópia para não modificar o original\r\n\r\n        if (\r\n            !this.deletedSpecialCharacter &&\r\n            this._checkPatternForSpace() &&\r\n            result.includes(MaskExpression.WHITE_SPACE) &&\r\n            this.maskExpression.includes(MaskExpression.SYMBOL_STAR)\r\n        ) {\r\n            specialCharacters = specialCharacters.filter(\r\n                (char) => char !== MaskExpression.WHITE_SPACE\r\n            );\r\n        }\r\n\r\n        // Para máscaras de separador, NÃO remover o decimalMarker - ele será convertido para ponto depois\r\n        if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\r\n            specialCharacters = specialCharacters.filter(\r\n                (char) => !this._compareOrIncludes(char, this.decimalMarker, null)\r\n            );\r\n        }\r\n\r\n        return this._removeMask(result, specialCharacters as string[]);\r\n    }\r\n\r\n    private _regExpForRemove(specialCharactersForRemove: string[]): RegExp {\r\n        return new RegExp(\r\n            specialCharactersForRemove.map((item: string) => `\\\\${item}`).join('|'),\r\n            'gi'\r\n        );\r\n    }\r\n\r\n    private _replaceDecimalMarkerToDot(value: string): string {\r\n        const markers = Array.isArray(this.decimalMarker)\r\n            ? this.decimalMarker\r\n            : [this.decimalMarker];\r\n\r\n        return value.replace(this._regExpForRemove(markers), MaskExpression.DOT);\r\n    }\r\n\r\n    public _checkSymbols(result: string): string | number | undefined | null {\r\n        let processedResult = result;\r\n\r\n        if (processedResult === MaskExpression.EMPTY_STRING) {\r\n            return processedResult;\r\n        }\r\n\r\n        if (\r\n            this.maskExpression.startsWith(MaskExpression.PERCENT) &&\r\n            this.decimalMarker === MaskExpression.COMMA\r\n        ) {\r\n            processedResult = processedResult.replace(MaskExpression.COMMA, MaskExpression.DOT);\r\n        }\r\n\r\n        // Para máscaras de separador (currency), processar de forma especial\r\n        // Remover separador de milhares e converter decimal marker para ponto\r\n        if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\r\n            let cleanValue = processedResult;\r\n\r\n            // Remover separador de milhares\r\n            if (this.thousandSeparator) {\r\n                cleanValue = cleanValue.split(this.thousandSeparator).join('');\r\n            }\r\n\r\n            // Converter decimal marker para ponto\r\n            const markers = Array.isArray(this.decimalMarker)\r\n                ? this.decimalMarker\r\n                : [this.decimalMarker];\r\n            for (const marker of markers) {\r\n                if (marker && marker !== '.') {\r\n                    cleanValue = cleanValue.replace(marker, '.');\r\n                }\r\n            }\r\n\r\n            return cleanValue;\r\n        }\r\n\r\n        const separatorPrecision: number | null = this._retrieveSeparatorPrecision(\r\n            this.maskExpression\r\n        );\r\n\r\n        const separatorValue: string =\r\n            this.specialCharacters.length === 0\r\n                ? this._retrieveSeparatorValue(processedResult)\r\n                : this._replaceDecimalMarkerToDot(this._retrieveSeparatorValue(processedResult));\r\n\r\n        if (!this.isNumberValue) {\r\n            return separatorValue;\r\n        }\r\n        if (separatorPrecision) {\r\n            if (processedResult === this.decimalMarker) {\r\n                return null;\r\n            }\r\n            if (separatorValue.length > 14) {\r\n                return String(separatorValue);\r\n            }\r\n            return this._checkPrecision(this.maskExpression, separatorValue);\r\n        } else {\r\n            return separatorValue;\r\n        }\r\n    }\r\n\r\n    private _checkPatternForSpace(): boolean {\r\n        for (const key in this.patterns) {\r\n            // eslint-disable-next-line no-prototype-builtins\r\n            if (this.patterns[key] && this.patterns[key]?.hasOwnProperty('pattern')) {\r\n                const patternString = this.patterns[key]?.pattern.toString();\r\n                const pattern = this.patterns[key]?.pattern;\r\n                if (\r\n                    (patternString?.includes(MaskExpression.WHITE_SPACE) as boolean) &&\r\n                    pattern?.test(this.maskExpression)\r\n                ) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    // TODO should think about helpers or separting decimal precision to own property\r\n    private _retrieveSeparatorPrecision(maskExpretion: string): number | null {\r\n        const matcher: RegExpMatchArray | null = maskExpretion.match(\r\n            new RegExp(`^separator\\\\.([^d]*)`)\r\n        );\r\n        return matcher ? Number(matcher[1]) : null;\r\n    }\r\n\r\n    public _checkPrecision(separatorExpression: string, separatorValue: string): number | string {\r\n        const separatorPrecision = this.getPrecision(separatorExpression);\r\n        let value = separatorValue;\r\n\r\n        if (\r\n            separatorExpression.indexOf('2') > 0 ||\r\n            (this.leadZero && Number(separatorPrecision) > 0)\r\n        ) {\r\n            if (this.decimalMarker === MaskExpression.COMMA && this.leadZero) {\r\n                value = value.replace(',', '.');\r\n            }\r\n            return this.leadZero\r\n                ? Number(value).toFixed(Number(separatorPrecision))\r\n                : Number(value).toFixed(2);\r\n        }\r\n        return this.numberToString(value);\r\n    }\r\n\r\n    public _repeatPatternSymbols(maskExp: string): string {\r\n        return (\r\n            (maskExp.match(/{[0-9]+}/) &&\r\n                maskExp\r\n                    .split(MaskExpression.EMPTY_STRING)\r\n                    .reduce((accum: string, currVal: string, index: number): string => {\r\n                        this._start =\r\n                            currVal === MaskExpression.CURLY_BRACKETS_LEFT ? index : this._start;\r\n                        if (currVal !== MaskExpression.CURLY_BRACKETS_RIGHT) {\r\n                            return this._findSpecialChar(currVal) ? accum + currVal : accum;\r\n                        }\r\n                        this._end = index;\r\n                        const repeatNumber = Number(maskExp.slice(this._start + 1, this._end));\r\n                        const replaceWith: string = new Array(repeatNumber + 1).join(\r\n                            maskExp[this._start - 1]\r\n                        );\r\n                        if (\r\n                            maskExp.slice(0, this._start).length > 1 &&\r\n                            maskExp.includes(MaskExpression.LETTER_S)\r\n                        ) {\r\n                            const symbols = maskExp.slice(0, this._start - 1);\r\n                            return symbols.includes(MaskExpression.CURLY_BRACKETS_LEFT)\r\n                                ? accum + replaceWith\r\n                                : symbols + accum + replaceWith;\r\n                        } else {\r\n                            return accum + replaceWith;\r\n                        }\r\n                    }, '')) ||\r\n            maskExp\r\n        );\r\n    }\r\n\r\n    public currentLocaleDecimalMarker(): string {\r\n        return (1.1).toLocaleString().substring(1, 2);\r\n    }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\n/**\r\n * MatchaValidators — funções puras compatíveis com Angular Forms.\r\n *\r\n * Uso:\r\n *   this.form = fb.group({\r\n *       cpf: ['', [Validators.required, MatchaValidators.cpf]],\r\n *       cep: ['', [MatchaValidators.cep]],\r\n *       email: ['', [MatchaValidators.email]],\r\n *   });\r\n *\r\n * Cada validator retorna `null` quando válido ou `{ [nome]: true }` quando inválido\r\n * (padrão Angular). Valores vazios/null/undefined são considerados VÁLIDOS — use\r\n * `Validators.required` em combo para campos obrigatórios.\r\n */\r\nexport class MatchaValidators {\r\n    // ── CPF (com dígito verificador) ─────────────────────────────────────────\r\n    static cpf(control: AbstractControl): ValidationErrors | null {\r\n        const value = MatchaValidators.toDigits(control.value);\r\n        if (!value) return null;\r\n        if (value.length !== 11) return { cpf: true };\r\n        if (/^(\\d)\\1{10}$/.test(value)) return { cpf: true }; // todos iguais\r\n\r\n        const calcDigit = (base: string, factor: number): number => {\r\n            let sum = 0;\r\n            for (let i = 0; i < base.length; i++) sum += parseInt(base[i], 10) * (factor - i);\r\n            const rest = (sum * 10) % 11;\r\n            return rest === 10 ? 0 : rest;\r\n        };\r\n\r\n        const d1 = calcDigit(value.slice(0, 9), 10);\r\n        const d2 = calcDigit(value.slice(0, 10), 11);\r\n        return (d1 === parseInt(value[9], 10) && d2 === parseInt(value[10], 10)) ? null : { cpf: true };\r\n    }\r\n\r\n    // ── CNPJ (com dígito verificador) ────────────────────────────────────────\r\n    static cnpj(control: AbstractControl): ValidationErrors | null {\r\n        const value = MatchaValidators.toDigits(control.value);\r\n        if (!value) return null;\r\n        if (value.length !== 14) return { cnpj: true };\r\n        if (/^(\\d)\\1{13}$/.test(value)) return { cnpj: true };\r\n\r\n        const calcDigit = (base: string): number => {\r\n            const weights = base.length === 12\r\n                ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]\r\n                : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\r\n            let sum = 0;\r\n            for (let i = 0; i < base.length; i++) sum += parseInt(base[i], 10) * weights[i];\r\n            const rest = sum % 11;\r\n            return rest < 2 ? 0 : 11 - rest;\r\n        };\r\n\r\n        const d1 = calcDigit(value.slice(0, 12));\r\n        const d2 = calcDigit(value.slice(0, 13));\r\n        return (d1 === parseInt(value[12], 10) && d2 === parseInt(value[13], 10)) ? null : { cnpj: true };\r\n    }\r\n\r\n    // ── CEP (formato 00000-000, sem lookup) ──────────────────────────────────\r\n    static cep(control: AbstractControl): ValidationErrors | null {\r\n        const value = MatchaValidators.toDigits(control.value);\r\n        if (!value) return null;\r\n        return value.length === 8 ? null : { cep: true };\r\n    }\r\n\r\n    // ── Telefone BR (10 ou 11 dígitos com DDD) ───────────────────────────────\r\n    static phoneBr(control: AbstractControl): ValidationErrors | null {\r\n        const value = MatchaValidators.toDigits(control.value);\r\n        if (!value) return null;\r\n        if (value.length < 10 || value.length > 11) return { phoneBr: true };\r\n        // DDD válido: 11–99, primeiro dígito != 0\r\n        const ddd = value.slice(0, 2);\r\n        if (ddd[0] === '0') return { phoneBr: true };\r\n        // 11 dígitos = celular, primeiro depois do DDD deve ser 9\r\n        if (value.length === 11 && value[2] !== '9') return { phoneBr: true };\r\n        return null;\r\n    }\r\n\r\n    // ── Data (formato dd/mm/aaaa + data real) ────────────────────────────────\r\n    static date(control: AbstractControl): ValidationErrors | null {\r\n        const value = (control.value ?? '').toString().trim();\r\n        if (!value) return null;\r\n        const match = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(value);\r\n        if (!match) return { date: true };\r\n        const [, dayStr, monthStr, yearStr] = match;\r\n        const day = +dayStr, month = +monthStr, year = +yearStr;\r\n        if (month < 1 || month > 12) return { date: true };\r\n        if (day < 1 || day > 31) return { date: true };\r\n        if (year < 1900 || year > 2999) return { date: true };\r\n        // Data real (29/02 só em bissexto, 31/04 inválido)\r\n        const d = new Date(year, month - 1, day);\r\n        return (d.getFullYear() === year && d.getMonth() === month - 1 && d.getDate() === day)\r\n            ? null : { date: true };\r\n    }\r\n\r\n    // ── Hora (00:00 – 23:59) ─────────────────────────────────────────────────\r\n    static time(control: AbstractControl): ValidationErrors | null {\r\n        const value = (control.value ?? '').toString().trim();\r\n        if (!value) return null;\r\n        const match = /^(\\d{2}):(\\d{2})$/.exec(value);\r\n        if (!match) return { time: true };\r\n        const [, hStr, mStr] = match;\r\n        const h = +hStr, m = +mStr;\r\n        return (h >= 0 && h <= 23 && m >= 0 && m <= 59) ? null : { time: true };\r\n    }\r\n\r\n    // ── Email (RFC-ish + HTML5) ──────────────────────────────────────────────\r\n    static email(control: AbstractControl): ValidationErrors | null {\r\n        const value = (control.value ?? '').toString().trim();\r\n        if (!value) return null;\r\n        // regex prática — cobre 99% dos casos reais sem ser paranoica RFC 5322\r\n        const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/;\r\n        return re.test(value) ? null : { email: true };\r\n    }\r\n\r\n    // ── URL (http/https absoluta) ────────────────────────────────────────────\r\n    static url(control: AbstractControl): ValidationErrors | null {\r\n        const value = (control.value ?? '').toString().trim();\r\n        if (!value) return null;\r\n        // Exige protocolo http(s) explícito e um host com TLD. Deliberadamente NÃO\r\n        // aceita url relativa, mailto:, ftp: nem host sem ponto (localhost) — o campo\r\n        // existe pra link público colável no navegador. Consumidores que precisem de\r\n        // um domínio específico compõem com Validators.pattern por cima.\r\n        const re = /^https?:\\/\\/[^\\s/?#.]+(?:\\.[^\\s/?#.]+)+(?:[/?#][^\\s]*)?$/i;\r\n        return re.test(value) ? null : { url: true };\r\n    }\r\n\r\n    // ── Range de datas (FormGroup validator) ─────────────────────────────────\r\n    // Uso: fb.group({ start, end }, { validators: MatchaValidators.dateRangeOrder('start', 'end') })\r\n    static dateRangeOrder(startKey: string, endKey: string): ValidatorFn {\r\n        return (group: AbstractControl): ValidationErrors | null => {\r\n            const start = group.get(startKey)?.value;\r\n            const end   = group.get(endKey)?.value;\r\n            if (!start || !end) return null;\r\n            const s = MatchaValidators.parseBrDate(start);\r\n            const e = MatchaValidators.parseBrDate(end);\r\n            if (!s || !e) return null;  // deixa validators individuais reportarem formato\r\n            return s <= e ? null : { dateRange: true };\r\n        };\r\n    }\r\n\r\n    // ─────────────────────────────────────────────────────────────────────────\r\n    // ── DOCUMENTOS INTERNACIONAIS ────────────────────────────────────────────\r\n    // ─────────────────────────────────────────────────────────────────────────\r\n\r\n    // ── SSN — US Social Security Number (9 dígitos) ──────────────────────────\r\n    // Rejeita ranges conhecidamente inválidos: area 000, 666, 900-999.\r\n    static ssn(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        if (v.length !== 9) return { ssn: true };\r\n        const area = v.slice(0, 3);\r\n        const group = v.slice(3, 5);\r\n        const serial = v.slice(5);\r\n        if (area === '000' || area === '666') return { ssn: true };\r\n        if (+area >= 900) return { ssn: true };\r\n        if (group === '00' || serial === '0000') return { ssn: true };\r\n        return null;\r\n    }\r\n\r\n    // ── SIN — Canada Social Insurance Number (9 dígitos, Luhn) ──────────────\r\n    static sin(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        if (v.length !== 9) return { sin: true };\r\n        let sum = 0;\r\n        for (let i = 0; i < 9; i++) {\r\n            let d = +v[i];\r\n            if (i % 2 === 1) { d *= 2; if (d > 9) d -= 9; }\r\n            sum += d;\r\n        }\r\n        return sum % 10 === 0 ? null : { sin: true };\r\n    }\r\n\r\n    // ── NIF — Portugal (9 dígitos, mod-11) ──────────────────────────────────\r\n    static nif(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        if (v.length !== 9) return { nif: true };\r\n        // Primeiro dígito: 1, 2, 3, 5, 6, 8, 9 (9= pessoa coletiva, 1/2/3= pessoa física, etc.)\r\n        if (!'123568'.includes(v[0]) && v[0] !== '9') return { nif: true };\r\n        let sum = 0;\r\n        for (let i = 0; i < 8; i++) sum += +v[i] * (9 - i);\r\n        const mod = sum % 11;\r\n        const check = mod < 2 ? 0 : 11 - mod;\r\n        return check === +v[8] ? null : { nif: true };\r\n    }\r\n\r\n    // ── DNI — Spain (8 dígitos + letra verificadora) ─────────────────────────\r\n    static dniEs(control: AbstractControl): ValidationErrors | null {\r\n        const raw = (control.value ?? '').toString().toUpperCase().replace(/\\s/g, '');\r\n        if (!raw) return null;\r\n        const match = /^(\\d{8})([A-Z])$/.exec(raw);\r\n        if (!match) return { dniEs: true };\r\n        const [, digits, letter] = match;\r\n        const letters = 'TRWAGMYFPDXBNJZSQVHLCKE';\r\n        return letters[+digits % 23] === letter ? null : { dniEs: true };\r\n    }\r\n\r\n    // ── CUIT — Argentina (11 dígitos com mod-11 pesado) ──────────────────────\r\n    static cuit(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        if (v.length !== 11) return { cuit: true };\r\n        const weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\r\n        let sum = 0;\r\n        for (let i = 0; i < 10; i++) sum += +v[i] * weights[i];\r\n        const mod = sum % 11;\r\n        const check = mod === 0 ? 0 : mod === 1 ? null : 11 - mod;\r\n        return check === +v[10] ? null : { cuit: true };\r\n    }\r\n\r\n    // ── RUT — Chile (7-8 dígitos + verifier 0-9 ou K, mod-11) ────────────────\r\n    static rut(control: AbstractControl): ValidationErrors | null {\r\n        const raw = (control.value ?? '').toString().toUpperCase().replace(/[.\\s]/g, '');\r\n        if (!raw) return null;\r\n        const match = /^(\\d{7,8})-?([0-9K])$/.exec(raw);\r\n        if (!match) return { rut: true };\r\n        const [, digits, verifier] = match;\r\n        let sum = 0;\r\n        let mult = 2;\r\n        for (let i = digits.length - 1; i >= 0; i--) {\r\n            sum += +digits[i] * mult;\r\n            mult = mult === 7 ? 2 : mult + 1;\r\n        }\r\n        const rest = 11 - (sum % 11);\r\n        const expected = rest === 11 ? '0' : rest === 10 ? 'K' : String(rest);\r\n        return expected === verifier ? null : { rut: true };\r\n    }\r\n\r\n    // ── RFC — México (12 empresa ou 13 pessoa física, alphanumeric) ─────────\r\n    // Validação estrutural: tamanho + charset. Não valida homoclave profunda.\r\n    static rfc(control: AbstractControl): ValidationErrors | null {\r\n        const v = (control.value ?? '').toString().toUpperCase().replace(/\\s/g, '');\r\n        if (!v) return null;\r\n        // Pessoa física: 4 letras + 6 dígitos (data) + 3 alphanumeric (homoclave) = 13\r\n        // Empresa:       3 letras + 6 dígitos (data) + 3 alphanumeric             = 12\r\n        const person = /^[A-ZÑ&]{4}\\d{6}[A-Z0-9]{3}$/;\r\n        const company = /^[A-ZÑ&]{3}\\d{6}[A-Z0-9]{3}$/;\r\n        return (person.test(v) || company.test(v)) ? null : { rfc: true };\r\n    }\r\n\r\n    // ─────────────────────────────────────────────────────────────────────────\r\n    // ── TELEFONES INTERNACIONAIS ─────────────────────────────────────────────\r\n    // BR = `phoneBr` (já definido acima). Validações por formato + DDD/NDC\r\n    // quando aplicável — sem chamar libphonenumber (manter footprint pequeno).\r\n    // ─────────────────────────────────────────────────────────────────────────\r\n\r\n    // ── US / CA — NANP (10 dígitos, area [2-9]XX, exchange [2-9]XX) ──────────\r\n    static phoneUs(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        // Aceita 10 dígitos ou 11 com country code 1 (NANP)\r\n        const digits = v.length === 11 && v[0] === '1' ? v.slice(1) : v;\r\n        if (digits.length !== 10) return { phoneUs: true };\r\n        // NPA (area code): 1º dígito 2-9, 2º/3º 0-9\r\n        if (digits[0] === '0' || digits[0] === '1') return { phoneUs: true };\r\n        // NXX (exchange): 1º dígito 2-9\r\n        if (digits[3] === '0' || digits[3] === '1') return { phoneUs: true };\r\n        return null;\r\n    }\r\n\r\n    /** Canada segue NANP — mesma regra do US */\r\n    static phoneCa(control: AbstractControl): ValidationErrors | null {\r\n        return MatchaValidators.phoneUs(control);\r\n    }\r\n\r\n    // ── PT (9 dígitos, começa com 2/3 fixo ou 9 móvel) ───────────────────────\r\n    static phonePt(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        const d = v.length === 12 && v.startsWith('351') ? v.slice(3) : v;\r\n        if (d.length !== 9) return { phonePt: true };\r\n        return '239'.includes(d[0]) ? null : { phonePt: true };\r\n    }\r\n\r\n    // ── ES (9 dígitos, começa com 6/7 móvel ou 8/9 fixo) ─────────────────────\r\n    static phoneEs(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        const d = v.length === 11 && v.startsWith('34') ? v.slice(2) : v;\r\n        if (d.length !== 9) return { phoneEs: true };\r\n        return '6789'.includes(d[0]) ? null : { phoneEs: true };\r\n    }\r\n\r\n    // ── MX (10 dígitos, primeiro dígito ≠ 0/1) ───────────────────────────────\r\n    static phoneMx(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        const d = v.length === 12 && v.startsWith('52') ? v.slice(2) : v;\r\n        if (d.length !== 10) return { phoneMx: true };\r\n        return (d[0] !== '0' && d[0] !== '1') ? null : { phoneMx: true };\r\n    }\r\n\r\n    // ── AR (10 dígitos sem código país; alguns casos 11 com \"9\" para celular) ─\r\n    static phoneAr(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        const d = v.length >= 12 && v.startsWith('54') ? v.slice(2) : v;\r\n        return (d.length >= 10 && d.length <= 11) ? null : { phoneAr: true };\r\n    }\r\n\r\n    // ── CL (9 dígitos, 1º dígito 2/9) ────────────────────────────────────────\r\n    static phoneCl(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        const d = v.length === 11 && v.startsWith('56') ? v.slice(2) : v;\r\n        if (d.length !== 9) return { phoneCl: true };\r\n        return '29'.includes(d[0]) ? null : { phoneCl: true };\r\n    }\r\n\r\n    // ── FR (10 dígitos começando com 0, ou 9 sem o 0 inicial) ────────────────\r\n    static phoneFr(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        const d = v.length === 11 && v.startsWith('33') ? '0' + v.slice(2) : v;\r\n        if (d.length !== 10 || d[0] !== '0') return { phoneFr: true };\r\n        return '123456789'.includes(d[1]) ? null : { phoneFr: true };\r\n    }\r\n\r\n    // ── DE (10-11 dígitos, começa com 0 ou 49) ───────────────────────────────\r\n    static phoneDe(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        const d = v.startsWith('49') ? v.slice(2) : v.startsWith('0') ? v.slice(1) : v;\r\n        return (d.length >= 9 && d.length <= 11) ? null : { phoneDe: true };\r\n    }\r\n\r\n    // ── UK (10-11 dígitos, começa com 0 ou 44) ───────────────────────────────\r\n    static phoneUk(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        const d = v.startsWith('44') ? v.slice(2) : v.startsWith('0') ? v.slice(1) : v;\r\n        return (d.length >= 9 && d.length <= 10) ? null : { phoneUk: true };\r\n    }\r\n\r\n    /**\r\n     * Validador de telefone GENÉRICO por faixa de tamanho — fallback para os países\r\n     * NÃO curados (camada `generic` do `matcha-phone`). Diferente dos validators\r\n     * acima, é uma FACTORY: recebe [min, max] de dígitos nacionais e retorna a função.\r\n     *\r\n     * ⚠️ DELIBERADAMENTE IMPRECISO: só checa quantidade de dígitos, não formato/plano\r\n     * de numeração do país. Não pretende substituir uma regra real por país — existe\r\n     * pra barrar entrada obviamente errada (curta/longa demais) sem fingir exatidão.\r\n     * Nunca é despachado via `MatchaValidators[stringKey]`; só é construído por\r\n     * `validatePhoneDigits` a partir de `spec.nsnRange`.\r\n     */\r\n    static phoneGeneric(min: number, max: number): ValidatorFn {\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n            const v = MatchaValidators.toDigits(control.value);\r\n            if (!v) return null;\r\n            return (v.length >= min && v.length <= max) ? null : { phoneGeneric: true };\r\n        };\r\n    }\r\n\r\n    // ─────────────────────────────────────────────────────────────────────────\r\n    // ── CÓDIGOS POSTAIS INTERNACIONAIS ───────────────────────────────────────\r\n    // BR = `cep` (já definido acima). Aqui os principais mercados adicionais.\r\n    // ─────────────────────────────────────────────────────────────────────────\r\n\r\n    // ── ZIP — US (5 dígitos ou ZIP+4 \"00000-0000\") ───────────────────────────\r\n    static zipUs(control: AbstractControl): ValidationErrors | null {\r\n        const v = (control.value ?? '').toString().trim();\r\n        if (!v) return null;\r\n        return /^\\d{5}(-\\d{4})?$/.test(v) ? null : { zipUs: true };\r\n    }\r\n\r\n    // ── Postal Code — Canada (A1A 1A1, com letras restritas) ─────────────────\r\n    static postcodeCa(control: AbstractControl): ValidationErrors | null {\r\n        const v = (control.value ?? '').toString().toUpperCase().trim();\r\n        if (!v) return null;\r\n        // Letras D, F, I, O, Q, U não aparecem em códigos canadenses.\r\n        // Primeira letra nunca pode ser W ou Z.\r\n        return /^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$/.test(v)\r\n            ? null : { postcodeCa: true };\r\n    }\r\n\r\n    // ── Postal Code — Portugal (0000-000) ────────────────────────────────────\r\n    static postcodePt(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        return v.length === 7 ? null : { postcodePt: true };\r\n    }\r\n\r\n    // ── Postal Code — Spain (00000, primeiras 2 casas = província 01-52) ─────\r\n    static postcodeEs(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        if (v.length !== 5) return { postcodeEs: true };\r\n        const province = +v.slice(0, 2);\r\n        return province >= 1 && province <= 52 ? null : { postcodeEs: true };\r\n    }\r\n\r\n    // ── Postal Code — México (00000) ─────────────────────────────────────────\r\n    static postcodeMx(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        return v.length === 5 ? null : { postcodeMx: true };\r\n    }\r\n\r\n    // ── Postal Code — Argentina (CPA4 `0000` ou CPA8 `A0000AAA`) ─────────────\r\n    static postcodeAr(control: AbstractControl): ValidationErrors | null {\r\n        const v = (control.value ?? '').toString().toUpperCase().trim();\r\n        if (!v) return null;\r\n        return /^(\\d{4}|[A-Z]\\d{4}[A-Z]{3})$/.test(v) ? null : { postcodeAr: true };\r\n    }\r\n\r\n    // ── Postal Code — Chile (7 dígitos) ──────────────────────────────────────\r\n    static postcodeCl(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        return v.length === 7 ? null : { postcodeCl: true };\r\n    }\r\n\r\n    // ── Postal Code — France (00000, 2 primeiros = departamento 01-95+DOM) ──\r\n    static postcodeFr(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        if (v.length !== 5) return { postcodeFr: true };\r\n        const dep = v.slice(0, 2);\r\n        const depNum = +dep;\r\n        const isMetro = depNum >= 1 && depNum <= 95;\r\n        const isCorsica = dep === '2A' || dep === '2B';   // casos especiais Córsega (raramente em dígitos)\r\n        const isDom = ['971', '972', '973', '974', '975', '976'].includes(v.slice(0, 3));\r\n        return (isMetro || isCorsica || isDom) ? null : { postcodeFr: true };\r\n    }\r\n\r\n    // ── Postal Code — Germany (00000) ────────────────────────────────────────\r\n    static postcodeDe(control: AbstractControl): ValidationErrors | null {\r\n        const v = MatchaValidators.toDigits(control.value);\r\n        if (!v) return null;\r\n        return v.length === 5 ? null : { postcodeDe: true };\r\n    }\r\n\r\n    // ── Min / max date (dd/mm/aaaa) ──────────────────────────────────────────\r\n    static minDate(min: string): ValidatorFn {\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n            const date = MatchaValidators.parseBrDate(control.value);\r\n            const limit = MatchaValidators.parseBrDate(min);\r\n            if (!date || !limit) return null;\r\n            return date >= limit ? null : { minDate: { min, actual: control.value } };\r\n        };\r\n    }\r\n\r\n    static maxDate(max: string): ValidatorFn {\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n            const date = MatchaValidators.parseBrDate(control.value);\r\n            const limit = MatchaValidators.parseBrDate(max);\r\n            if (!date || !limit) return null;\r\n            return date <= limit ? null : { maxDate: { max, actual: control.value } };\r\n        };\r\n    }\r\n\r\n    // ── Helpers ──────────────────────────────────────────────────────────────\r\n    private static toDigits(v: unknown): string {\r\n        if (v === null || v === undefined) return '';\r\n        return v.toString().replace(/\\D+/g, '');\r\n    }\r\n\r\n    private static parseBrDate(v: unknown): Date | null {\r\n        if (!v) return null;\r\n        const str = v.toString().trim();\r\n        const m = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(str);\r\n        if (!m) return null;\r\n        const [, d, mo, y] = m;\r\n        const date = new Date(+y, +mo - 1, +d);\r\n        if (date.getFullYear() !== +y || date.getMonth() !== +mo - 1 || date.getDate() !== +d) return null;\r\n        return date;\r\n    }\r\n}\r\n","import {\r\n    HostListener, Directive, forwardRef, inject, HostBinding, ElementRef,\r\n    input, output, effect,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n    ControlValueAccessor,\r\n    FormControl,\r\n    ValidationErrors,\r\n    Validator,\r\n} from '@angular/forms';\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { MatchaMaskConfig } from './matcha-mask.config';\r\nimport { MATCHA_MASK_CONFIG, initialConfig } from './matcha-mask.config';\r\nimport { MatchaMaskService } from './matcha-mask.service';\r\nimport { MatchaValidators } from '../matcha-validators/matcha-validators';\r\n\r\n// ── Transforms ───────────────────────────────────────────────────────────\r\n// null-sentinel booleans: null = \"não foi setado, não toca no service\"\r\ntype NullableBoolInput = boolean | string | null | undefined;\r\nconst toBooleanOrNull = (v: NullableBoolInput): boolean | null => {\r\n    if (v === null || v === undefined) return null;\r\n    if (typeof v === 'boolean') return v;\r\n    if (typeof v === 'string') return v.toLowerCase() === 'true';\r\n    return false;\r\n};\r\n\r\n// dropSpecialCharacters aceita boolean OR array OR string-boolean\r\ntype DropSpecialInput = MatchaMaskConfig['dropSpecialCharacters'] | string | null;\r\nconst toDropSpecialCharacters = (v: DropSpecialInput): MatchaMaskConfig['dropSpecialCharacters'] | null => {\r\n    if (v === 'true' || v === true) return true;\r\n    if (v === 'false' || v === false) return false;\r\n    if (Array.isArray(v) || v === null) return v;\r\n    return false;\r\n};\r\n\r\n@Directive({\r\n    selector: 'input[matchaMask], textarea[matchaMask]',\r\n    standalone: true,\r\n    providers: [\r\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MatchaMaskCompatibleDirective), multi: true },\r\n        { provide: NG_VALIDATORS,     useExisting: forwardRef(() => MatchaMaskCompatibleDirective), multi: true },\r\n        MatchaMaskService,\r\n    ],\r\n    exportAs: 'matchaMask',\r\n})\r\nexport class MatchaMaskCompatibleDirective implements ControlValueAccessor, Validator {\r\n    // ── Signal inputs ─────────────────────────────────────────────────────\r\n    // Defaults são `null` (= \"não foi setado explicitamente\") pra que o effect abaixo\r\n    // NÃO clobbere a config global vinda do MatchaMaskModule/provideMatchaMask\r\n    // (compatibleOptions: specialCharacters padrão, patterns '0'/'9'/'A'/'S', etc.).\r\n    // Sentinels null = preserva default global; valor setado = override local.\r\n    mask              = input<string | null | undefined>('', { alias: 'matchaMask' });\r\n    specialCharacters = input<MatchaMaskConfig['specialCharacters'] | null>(null);\r\n    patterns          = input<MatchaMaskConfig['patterns'] | null>(null);\r\n    prefix            = input<MatchaMaskConfig['prefix'] | null>(null);\r\n    suffix            = input<MatchaMaskConfig['suffix'] | null>(null);\r\n    thousandSeparator = input<MatchaMaskConfig['thousandSeparator'] | null>(null);\r\n    decimalMarker     = input<MatchaMaskConfig['decimalMarker'] | null>(null);\r\n    placeHolderCharacter = input<MatchaMaskConfig['placeHolderCharacter'] | null>(null);\r\n    shownMaskExpression  = input<MatchaMaskConfig['shownMaskExpression'] | null>(null);\r\n    separatorLimit    = input<MatchaMaskConfig['separatorLimit'] | null>('');\r\n    inputTransformFn  = input<MatchaMaskConfig['inputTransformFn'] | null>(null);\r\n    outputTransformFn = input<MatchaMaskConfig['outputTransformFn'] | null>(null);\r\n\r\n    // Boolean com sentinel null (\"não tocar no service\")\r\n    dropSpecialCharacters  = input(null as MatchaMaskConfig['dropSpecialCharacters'] | null, { transform: toDropSpecialCharacters });\r\n    hiddenInput            = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    showMaskTyped          = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    clearIfNotMatch        = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    validation             = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    allowNegativeNumbers   = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    leadZeroDateTime       = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    leadZero               = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    triggerOnMaskChange    = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    apm                    = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    keepCharacterPositions = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    instantPrefix          = input(null as boolean | null, { transform: toBooleanOrNull });\r\n    currencyMode           = input(null as boolean | null, { transform: toBooleanOrNull });\r\n\r\n    // ── Signal outputs ────────────────────────────────────────────────────\r\n    maskFilled = output<void>();\r\n\r\n    // ── Host bindings (lidos dos signals) ────────────────────────────────\r\n    @HostBinding('attr.data-matcha-mask') get maskAttr():   string | null { return this.mask() ?? null; }\r\n    @HostBinding('attr.data-prefix')      get prefixAttr(): string | null { return this.prefix() || null; }\r\n    @HostBinding('attr.data-suffix')      get suffixAttr(): string | null { return this.suffix() || null; }\r\n\r\n    // ── Estado interno ────────────────────────────────────────────────────\r\n    private _maskValue = '';\r\n    private _inputValue = '';\r\n    private _maskExpressionArray: string[] = [];\r\n    private _justPasted = false;\r\n    private _isFocused = false;\r\n    /** For IME composition event */\r\n    private _isComposing = false;\r\n\r\n    public _maskService = inject(MatchaMaskService, { self: true });\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly elementRef = inject(ElementRef);\r\n    // Standalone-safe: se o consumer esqueceu de importar MatchaMaskModule / provideMatchaMask,\r\n    // caímos em `initialConfig` pra não crashar no inject. Isso cobre uso via <matcha-field>\r\n    // sem bootstrapping explícito do módulo de máscara.\r\n    protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG, { optional: true }) ?? initialConfig;\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    public onChange = (_: any) => {};\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    public onTouch = () => {};\r\n\r\n    constructor() {\r\n        // Um único effect sincroniza todos os inputs → _maskService.\r\n        // Roda sempre que qualquer signal input mudar — substitui ngOnChanges.\r\n        effect(() => {\r\n            // mask + estado derivado\r\n            const m = this.mask() ?? '';\r\n            this._maskValue = m;\r\n            this._maskExpressionArray = m.split('');\r\n\r\n            // Forward: só sobrescreve quando o user setou explicitamente (non-null).\r\n            // Null sentinel preserva os defaults de MatchaMaskModule/provideMatchaMask\r\n            // (senão clobbering de specialCharacters/patterns quebra QUALQUER máscara).\r\n            const specials = this.specialCharacters();\r\n            if (specials !== null) this._maskService.specialCharacters = specials;\r\n            const pat = this.patterns();\r\n            if (pat !== null) this._maskService.patterns = pat;\r\n            const pfx = this.prefix();\r\n            if (pfx !== null) this._maskService.prefix = pfx;\r\n            const sfx = this.suffix();\r\n            if (sfx !== null) this._maskService.suffix = sfx;\r\n            const ths = this.thousandSeparator();\r\n            if (ths !== null) this._maskService.thousandSeparator = ths;\r\n            const dm = this.decimalMarker();\r\n            if (dm !== null) this._maskService.decimalMarker = dm;\r\n            this._maskService.separatorLimit    = this.separatorLimit() ?? '';\r\n            this._maskService.placeHolderCharacter = this.placeHolderCharacter() as MatchaMaskConfig['placeHolderCharacter'];\r\n            this._maskService.shownMaskExpression  = this.shownMaskExpression() as MatchaMaskConfig['shownMaskExpression'];\r\n            this._maskService.inputTransformFn     = this.inputTransformFn() as MatchaMaskConfig['inputTransformFn'];\r\n            this._maskService.outputTransformFn    = this.outputTransformFn() as MatchaMaskConfig['outputTransformFn'];\r\n\r\n            // Boolean-like com sentinel null — só atualiza quando foi explicitamente setado\r\n            const drop = this.dropSpecialCharacters();\r\n            if (drop !== null) this._maskService.dropSpecialCharacters = drop;\r\n\r\n            const hidden = this.hiddenInput();\r\n            if (hidden !== null) this._maskService.hiddenInput = hidden;\r\n\r\n            const showMask = this.showMaskTyped();\r\n            if (showMask !== null) this._maskService.showMaskTyped = showMask;\r\n\r\n            const clearNoMatch = this.clearIfNotMatch();\r\n            if (clearNoMatch !== null) this._maskService.clearIfNotMatch = clearNoMatch;\r\n\r\n            const validation = this.validation();\r\n            if (validation !== null) this._maskService.validation = validation;\r\n\r\n            const allowNeg = this.allowNegativeNumbers();\r\n            if (allowNeg !== null) this._maskService.allowNegativeNumbers = allowNeg;\r\n\r\n            const leadZeroDT = this.leadZeroDateTime();\r\n            if (leadZeroDT !== null) this._maskService.leadZeroDateTime = leadZeroDT;\r\n\r\n            const leadZero = this.leadZero();\r\n            if (leadZero !== null) this._maskService.leadZero = leadZero;\r\n\r\n            const trigger = this.triggerOnMaskChange();\r\n            if (trigger !== null) this._maskService.triggerOnMaskChange = trigger;\r\n\r\n            const apm = this.apm();\r\n            if (apm !== null) this._maskService.apm = apm;\r\n\r\n            const keep = this.keepCharacterPositions();\r\n            if (keep !== null) this._maskService.keepCharacterPositions = keep;\r\n\r\n            const instant = this.instantPrefix();\r\n            if (instant !== null) this._maskService.instantPrefix = instant;\r\n\r\n            const currency = this.currencyMode();\r\n            if (currency !== null) this._maskService.currencyMode = currency;\r\n        });\r\n    }\r\n\r\n    // ═══════════════════════ Host listeners (inalterados) ═══════════════════════\r\n\r\n    @HostListener('paste', ['$event'])\r\n    public onPaste(): void {\r\n        this._justPasted = true;\r\n    }\r\n\r\n    @HostListener('focus', ['$event'])\r\n    public onFocus(_event: FocusEvent): void {\r\n        this._isFocused = true;\r\n    }\r\n\r\n    @HostListener('ngModelChange', ['$event'])\r\n    public onModelChange(value: string | number): void {\r\n        if (this._maskService.writingValue) return;\r\n        if (typeof value === 'number') return;\r\n\r\n        const stringValue = value || '';\r\n        this._inputValue = stringValue;\r\n\r\n        const mask = this.mask();\r\n        if (!mask || mask.trim() === '') {\r\n            this._maskService.onChange(stringValue);\r\n        }\r\n    }\r\n\r\n    @HostListener('input', ['$event'])\r\n    public onInput(event: KeyboardEvent): void {\r\n        if (this._isComposing) return;\r\n\r\n        const target = event.target as HTMLInputElement;\r\n        const value = target.value;\r\n\r\n        const prefix = this._maskService.prefix || '';\r\n        const suffix = this._maskService.suffix || '';\r\n        const valueWithoutPrefixSuffix = value.replace(prefix, '').replace(suffix, '').trim();\r\n\r\n        const mask = this.mask();\r\n        const isCurrencyMask = mask && mask.trim().startsWith('separator.');\r\n\r\n        const onlySymbols = /^[^\\d]*$/.test(valueWithoutPrefixSuffix) ||\r\n                           (isCurrencyMask && /^0+[,.]?0*$/.test(valueWithoutPrefixSuffix));\r\n\r\n        if (valueWithoutPrefixSuffix === '' || onlySymbols) {\r\n            target.value = '';\r\n            this._maskService.onChange('');\r\n            return;\r\n        }\r\n\r\n        if (mask && mask.trim() !== '') {\r\n            const maskedValue = this._maskService.applyMask(value, mask);\r\n            if (maskedValue !== value) target.value = maskedValue;\r\n        } else {\r\n            this._maskService.onChange(value);\r\n        }\r\n    }\r\n\r\n    @HostListener('compositionstart', ['$event'])\r\n    public onCompositionStart(_event: CompositionEvent): void {\r\n        this._isComposing = true;\r\n    }\r\n\r\n    @HostListener('compositionend', ['$event'])\r\n    public onCompositionEnd(event: CompositionEvent): void {\r\n        this._isComposing = false;\r\n        const target = event.target as HTMLInputElement;\r\n        this._maskService.onChange(target.value);\r\n    }\r\n\r\n    @HostListener('blur', ['$event'])\r\n    public onBlur(_event: FocusEvent): void {\r\n        this._isFocused = false;\r\n        this.onTouch();\r\n    }\r\n\r\n    @HostListener('click', ['$event'])\r\n    public onClick(_event: MouseEvent): void {\r\n        // placeholder — reservado pra lógica futura\r\n    }\r\n\r\n    @HostListener('keydown', ['$event'])\r\n    public onKeyDown(_event: KeyboardEvent): void {\r\n        // placeholder — reservado pra lógica futura\r\n    }\r\n\r\n    // ═══════════════════════ CVA + Validator ═══════════════════════\r\n\r\n    public writeValue(value: string | number | null | undefined): void {\r\n        if (this._maskService.writingValue) return;\r\n\r\n        this._maskService.writingValue = true;\r\n\r\n        let inputValue: string;\r\n        const mask = this.mask() ?? '';\r\n\r\n        if (value === null || value === undefined) {\r\n            inputValue = '';\r\n        } else if (typeof value === 'number') {\r\n            if (mask && mask.trim().startsWith('separator.')) {\r\n                const precision = parseInt(mask.split('.')[1], 10) || 2;\r\n                inputValue = value.toFixed(precision).replace('.', ',');\r\n            } else {\r\n                inputValue = value.toString();\r\n            }\r\n        } else {\r\n            inputValue = String(value);\r\n        }\r\n\r\n        // Máscara de separador: converter ponto do backend (10.5) pra vírgula local (10,5)\r\n        if (mask && mask.trim().startsWith('separator.') && inputValue.includes('.')) {\r\n            const decimalMarker = this._maskService.decimalMarker;\r\n            const actualDecimalMarker = decimalMarker === ',' ||\r\n                (Array.isArray(decimalMarker) && decimalMarker.includes(',')) ? ',' : '.';\r\n            if (actualDecimalMarker === ',') {\r\n                inputValue = inputValue.replace('.', ',');\r\n            }\r\n        }\r\n\r\n        this._inputValue = inputValue;\r\n\r\n        if (mask && mask.trim() !== '') {\r\n            const maskedValue = this._maskService.applyMask(inputValue, mask);\r\n            if (this.elementRef?.nativeElement) {\r\n                this.elementRef.nativeElement.value = maskedValue;\r\n            }\r\n        }\r\n\r\n        this._maskService.writingValue = false;\r\n    }\r\n\r\n    public registerOnChange(fn: (value: string) => void): void {\r\n        this.onChange = fn;\r\n        this._maskService.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: () => void): void {\r\n        this.onTouch = fn;\r\n    }\r\n\r\n    public setDisabledState(_isDisabled: boolean): void {\r\n        // placeholder — reservado\r\n    }\r\n\r\n    public validate(control: FormControl): ValidationErrors | null {\r\n        // Auto-validação baseada no pattern da máscara.\r\n        // Patterns reconhecidos:\r\n        //   BR: CPF · CNPJ · CEP · Phone\r\n        //   US: SSN · CA: SIN · PT: NIF · ES: DNI · AR: CUIT · CL: RUT · MX: RFC\r\n        //   Postais: CA · PT · AR · CL\r\n        // Outros: sem validação automática (dev usa MatchaValidators manualmente).\r\n        const value = control.value;\r\n        if (value === null || value === undefined || value === '') return null;\r\n\r\n        const mask = (this.mask() ?? '').toString();\r\n\r\n        switch (mask) {\r\n            // ── Brasil ──\r\n            case '000.000.000-00':      return MatchaValidators.cpf(control);\r\n            case '00.000.000/0000-00':  return MatchaValidators.cnpj(control);\r\n            case '00000-000':           return MatchaValidators.cep(control);\r\n            case '(00) 00000-0000':\r\n            case '(00) 0000-0000':      return MatchaValidators.phoneBr(control);\r\n\r\n            // ── Internacional ──\r\n            case '000-00-0000':         return MatchaValidators.ssn(control);\r\n            case '000-000-000':         return MatchaValidators.sin(control);\r\n            case '000000000':           return MatchaValidators.nif(control);\r\n            case '00000000U':           return MatchaValidators.dniEs(control);\r\n            case '00-00000000-0':       return MatchaValidators.cuit(control);\r\n            case '00.000.000-A':        return MatchaValidators.rut(control);\r\n            case 'AAAAAAAAAAAAA':       return MatchaValidators.rfc(control);\r\n\r\n            // ── Postal Codes ──\r\n            case 'U0U 0U0':             return MatchaValidators.postcodeCa(control);\r\n            case '0000-000':            return MatchaValidators.postcodePt(control);\r\n            case '0000':                return MatchaValidators.postcodeAr(control);\r\n            case '0000000':             return MatchaValidators.postcodeCl(control);\r\n\r\n            // Shared masks ('00000' US/ES/MX/FR/DE) sem auto-dispatch — dev aplica manualmente.\r\n        }\r\n\r\n        return null;\r\n    }\r\n}\r\n","import type { PipeTransform } from '@angular/core';\r\nimport { inject, Pipe } from '@angular/core';\r\n\r\nimport type { MatchaMaskConfig } from './matcha-mask.config';\r\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\r\nimport { MatchaMaskService } from './matcha-mask.service';\r\nimport { MaskExpression } from './matcha-mask-expression.enum';\r\n\r\n@Pipe({\r\n    // Usar 'matchaMask' para evitar conflito com o pipe 'mask' legado (ex: ngx-mask)\r\n    name: 'matchaMask',\r\n    pure: true,\r\n    standalone: true,\r\n})\r\nexport class MatchaMaskPipe implements PipeTransform {\r\n    private readonly defaultOptions = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\r\n\r\n    private readonly _maskService = inject(MatchaMaskService);\r\n\r\n    private _maskExpressionArray: string[] = [];\r\n\r\n    private mask = '';\r\n\r\n    public transform(\r\n        value: string | number,\r\n        mask: string,\r\n        { patterns, ...config }: Partial<MatchaMaskConfig> = {} as Partial<MatchaMaskConfig>\r\n    ): string {\r\n        let processedValue: string | number = value;\r\n\r\n        const currentConfig = {\r\n            maskExpression: mask,\r\n            ...this.defaultOptions,\r\n            ...config,\r\n            patterns: {\r\n                ...this._maskService.patterns,\r\n                ...patterns,\r\n            },\r\n        };\r\n\r\n        Object.entries(currentConfig).forEach(([key, val]) => {\r\n            (this._maskService as any)[key] = val;\r\n        });\r\n\r\n        if (mask.includes('||')) {\r\n            const maskParts = mask.split('||');\r\n            if (maskParts.length > 1) {\r\n                this._maskExpressionArray = maskParts.sort(\r\n                    (a: string, b: string) => a.length - b.length\r\n                );\r\n                this._setMask(`${processedValue}`);\r\n                return this._maskService.applyMask(`${processedValue}`, this.mask);\r\n            } else {\r\n                this._maskExpressionArray = [];\r\n                return this._maskService.applyMask(`${processedValue}`, this.mask);\r\n            }\r\n        }\r\n\r\n        if (mask.includes(MaskExpression.CURLY_BRACKETS_LEFT)) {\r\n            return this._maskService.applyMask(\r\n                `${processedValue}`,\r\n                this._maskService._repeatPatternSymbols(mask)\r\n            );\r\n        }\r\n\r\n        if (mask.startsWith(MaskExpression.SEPARATOR)) {\r\n            if (config.decimalMarker) {\r\n                this._maskService.decimalMarker = config.decimalMarker;\r\n            }\r\n            if (config.thousandSeparator) {\r\n                this._maskService.thousandSeparator = config.thousandSeparator;\r\n            }\r\n            if (config.leadZero) {\r\n                this._maskService.leadZero = config.leadZero;\r\n            }\r\n\r\n            processedValue = String(processedValue);\r\n            const localeDecimalMarker = this._maskService.currentLocaleDecimalMarker();\r\n\r\n            if (!Array.isArray(this._maskService.decimalMarker)) {\r\n                processedValue =\r\n                    this._maskService.decimalMarker !== localeDecimalMarker\r\n                        ? (processedValue as string).replace(\r\n                              localeDecimalMarker,\r\n                              this._maskService.decimalMarker\r\n                          )\r\n                        : processedValue;\r\n            }\r\n\r\n            if (\r\n                this._maskService.leadZero &&\r\n                processedValue &&\r\n                this._maskService.dropSpecialCharacters !== false\r\n            ) {\r\n                processedValue = this._maskService._checkPrecision(mask, processedValue as string);\r\n            }\r\n\r\n            if (this._maskService.decimalMarker === MaskExpression.COMMA) {\r\n                processedValue = (processedValue as string).replace(\r\n                    MaskExpression.DOT,\r\n                    MaskExpression.COMMA\r\n                );\r\n            }\r\n\r\n            this._maskService.isNumberValue = true;\r\n        }\r\n\r\n        if (processedValue === null || typeof processedValue === 'undefined') {\r\n            return this._maskService.applyMask('', mask);\r\n        }\r\n\r\n        return this._maskService.applyMask(`${processedValue}`, mask);\r\n    }\r\n\r\n    private _setMask(value: string) {\r\n        if (this._maskExpressionArray.length > 0) {\r\n            this._maskExpressionArray.some((mask): boolean | void => {\r\n                const test =\r\n                    this._maskService.removeMask(value)?.length <=\r\n                    this._maskService.removeMask(mask)?.length;\r\n                if (value && test) {\r\n                    this.mask = mask;\r\n                    return test;\r\n                } else {\r\n                    this.mask =\r\n                        this._maskExpressionArray[this._maskExpressionArray.length - 1] ??\r\n                        MaskExpression.EMPTY_STRING;\r\n                }\r\n            });\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { MatchaMaskCompatibleDirective } from './matcha-mask-compatible.directive';\r\nimport { MatchaMaskService } from './matcha-mask.service';\r\nimport { MATCHA_MASK_CONFIG, MatchaMaskOptions } from './matcha-mask.config';\r\nimport { MatchaMaskPipe } from './matcha-mask.pipe';\r\n\r\nexport const compatibleOptions: MatchaMaskOptions = {\r\n  specialCharacters: ['/', '(', ')', '.', ':', '-', ' ', '+', ',', '@', '[', ']', '\"', \"'\", '*'],\r\n  patterns: {\r\n    '0': { pattern: /\\d/ },\r\n    '9': { pattern: /\\d/, optional: true },\r\n    'A': { pattern: /[a-zA-Z0-9]/ },\r\n    'S': { pattern: /[a-zA-Z]/ }\r\n  },\r\n  prefix: '',\r\n  suffix: '',\r\n  thousandSeparator: '',\r\n  decimalMarker: '.',\r\n  clearIfNotMatch: false,\r\n  showMaskTyped: false,\r\n  placeHolderCharacter: '_',\r\n  shownMaskExpression: '',\r\n  dropSpecialCharacters: true,\r\n  hiddenInput: false,\r\n  validation: true,\r\n  instantPrefix: false,\r\n  separatorLimit: '',\r\n  apm: false,\r\n  allowNegativeNumbers: false,\r\n  leadZeroDateTime: false,\r\n  leadZero: false,\r\n  triggerOnMaskChange: false,\r\n  keepCharacterPositions: false,\r\n  inputTransformFn: (v) => v as string,\r\n  outputTransformFn: (v) => v,\r\n  maskFilled: new EventEmitter<void>()\r\n};\r\n\r\n@NgModule({\r\n  imports: [MatchaMaskCompatibleDirective, MatchaMaskPipe],\r\n  exports: [\r\n    MatchaMaskCompatibleDirective,\r\n    MatchaMaskPipe\r\n  ],\r\n  providers: [\r\n    MatchaMaskService,\r\n    { provide: MATCHA_MASK_CONFIG, useValue: compatibleOptions }\r\n  ]\r\n})\r\nexport class MatchaMaskModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatchaFormFieldComponent } from './matcha-form-field/matcha-form-field.component';\r\nimport { MatchaLabelComponent } from './matcha-label/matcha-label.component';\r\nimport { MatchaErrorComponent } from './matcha-error/matcha-error.component';\r\nimport { MatchaPrefixComponent } from './matcha-prefix/matcha-prefix.component';\r\nimport { MatchaSuffixComponent } from './matcha-suffix/matcha-suffix.component';\r\n\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaFormFieldComponent,\r\n    MatchaLabelComponent,\r\n    MatchaErrorComponent,\r\n    MatchaPrefixComponent,\r\n    MatchaSuffixComponent,\r\n    MatchaIconModule,\r\n    ReactiveFormsModule,\r\n    MatchaMaskModule\r\n  ],\r\n  exports: [\r\n    MatchaFormFieldComponent,\r\n    MatchaLabelComponent,\r\n    MatchaErrorComponent,\r\n    MatchaPrefixComponent,\r\n    MatchaSuffixComponent,\r\n    ReactiveFormsModule,\r\n    MatchaMaskModule\r\n  ],\r\n})\r\nexport class MatchaFormFieldModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaDividerComponent } from './divider/divider.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaDividerComponent],\r\n    exports: [\r\n        MatchaDividerComponent\r\n    ],\r\n})\r\nexport class MatchaDividerModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaSelectMultipleComponent } from './matcha-select-multiple.component';\r\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\r\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\r\nimport { MatchaFormFieldModule } from '../matcha-form-field/matcha-form-field.module';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\r\n\r\n/**\r\n * @deprecated Use `MatchaFieldModule` com `type=\"select\"` e `[multiple]=\"true\"`.\r\n * Ver `MatchaSelectMultipleComponent`.\r\n */\r\n@NgModule({\r\n  declarations: [\r\n    MatchaSelectMultipleComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    MatchaOptionModule,\r\n    MatchaPanelModule,\r\n    MatchaFormFieldModule,\r\n    MatchaIconModule,\r\n    MatchaDividerModule\r\n  ],\r\n  exports: [\r\n    MatchaSelectMultipleComponent,\r\n    MatchaOptionModule,\r\n    MatchaDividerModule\r\n  ]\r\n})\r\nexport class MatchaSelectMultipleModule { }\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  ElementRef,\r\n  booleanAttribute,\r\n  computed,\r\n  inject,\r\n  input,\r\n  model,\r\n  output,\r\n} from '@angular/core';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nlet _accId = 0;\r\n\r\n/**\r\n * matcha-accordion-item — disclosure item canônico (Figma DSV3 15808:51).\r\n *\r\n * Estados: Fechado | Aberto | Disabled. Signals API, native <button> no header,\r\n * heading semântico configurável (role=\"heading\" + aria-level), animação CSS-only\r\n * via grid-template-rows: 0fr → 1fr (sem Angular Animations / sem JS measuring).\r\n *\r\n * Two-way: `[(isOpen)]` (model). Acesso ao state via template:\r\n *   <matcha-accordion-item #it=\"matchaAccordionItem\">\r\n *     {{ it.isOpen() ? 'Aberto' : 'Fechado' }}\r\n *   </matcha-accordion-item>\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-accordion-item',\r\n  templateUrl: './accordion-item.component.html',\r\n  styleUrls: ['./accordion-item.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [MatchaIconComponent],\r\n  exportAs: 'matchaAccordionItem',\r\n  host: {\r\n    '[class.is-open]':  'isOpen()',\r\n    '[class.stretch]':  'stretch()',\r\n    '[class.disabled]': 'disabled()',\r\n  },\r\n})\r\nexport class MatchaAccordionItemComponent {\r\n  /** Estado expand/collapse (two-way: `[(isOpen)]`). */\r\n  readonly isOpen = model<boolean>(false);\r\n\r\n  /** Ocupa 100% da largura disponível (legacy — header já é 100% por default). */\r\n  readonly stretch = input(false, { transform: booleanAttribute });\r\n\r\n  /** Click no header dispara toggle. Off = controlar via botão custom externo. */\r\n  readonly clickableHeader = input(true, { transform: booleanAttribute });\r\n\r\n  /** Bloqueia interação + 50% opacity. */\r\n  readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n  /** Nível semântico do título (h2/h3/h4/h5/h6). Default h3. */\r\n  readonly headingLevel = input<2 | 3 | 4 | 5 | 6>(3);\r\n\r\n  /** Emitido quando o item é aberto/fechado (compat — duplica `isOpenChange`). */\r\n  readonly opened = output<boolean>();\r\n\r\n  /** Disparado pelo header click. Use pra interceptar antes do toggle. */\r\n  readonly toggleRequested = output<void>();\r\n\r\n  // ── IDs únicos pra aria-controls / aria-labelledby ───────────────────\r\n  protected readonly _id = ++_accId;\r\n  readonly headerId = computed(() => `matcha-acc-header-${this._id}`);\r\n  readonly contentId = computed(() => `matcha-acc-content-${this._id}`);\r\n\r\n  /** ElementRef público — usado pelo accordion pai pra focar header em arrow nav. */\r\n  readonly host: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n  /** Toggle invocado pelo click do header. Gated por clickable + !disabled. */\r\n  toggle(): void {\r\n    if (this.disabled() || !this.clickableHeader()) return;\r\n    this.toggleRequested.emit();\r\n  }\r\n\r\n  /** Set imperativo do estado — chamado pelo accordion pai (single-mode close). */\r\n  _setOpen(value: boolean): void {\r\n    if (this.isOpen() === value) return;\r\n    this.isOpen.set(value);\r\n    this.opened.emit(value);\r\n  }\r\n\r\n  /** Foca o button interno do header (chamado pelo accordion pai em arrow nav). */\r\n  focusHeader(): void {\r\n    const btn = this.host.nativeElement.querySelector<HTMLButtonElement>('button.accordion-header-button');\r\n    btn?.focus();\r\n  }\r\n}\r\n","<div class=\"accordion-item\">\r\n    <!--\r\n        WAI-ARIA Accordion Pattern: heading wrapper (role=heading + aria-level)\r\n        que envolve um <button> nativo. role=heading + aria-level é semanticamente\r\n        equivalente a <hN> pra screen readers e evita tag dinâmica.\r\n    -->\r\n    <div class=\"accordion-heading\"\r\n         role=\"heading\"\r\n         [attr.aria-level]=\"headingLevel()\">\r\n        <!--\r\n            Native <button> sempre renderizado. Enter/Space disparam toggle de graça.\r\n            Quando [clickableHeader]=\"false\", o (click) é gated em toggle() e o button\r\n            recebe a classe --static (sem state-layer/focus-ring/cursor).\r\n\r\n            Nota: HTML spec proíbe <a> ou <button> dentro de <button>. Se o consumer\r\n            precisar de elementos interativos no header, use o slot [matchaAccordionTrailing]\r\n            ou construa um expansion-card manual (sem accordion-item).\r\n        -->\r\n        <button type=\"button\"\r\n                class=\"accordion-header-button\"\r\n                [class.accordion-header-button--static]=\"!clickableHeader()\"\r\n                [id]=\"headerId()\"\r\n                [attr.aria-expanded]=\"isOpen()\"\r\n                [attr.aria-controls]=\"contentId()\"\r\n                [attr.aria-disabled]=\"disabled() || null\"\r\n                [disabled]=\"disabled()\"\r\n                [tabindex]=\"clickableHeader() ? 0 : -1\"\r\n                (click)=\"toggle()\">\r\n            <span class=\"accordion-header-state\" aria-hidden=\"true\"></span>\r\n            <span class=\"accordion-header-slot\">\r\n                <ng-content select=\"matcha-accordion-header\"></ng-content>\r\n            </span>\r\n\r\n            <!-- Trailing slot: chevron default ou customização do consumer -->\r\n            <span class=\"accordion-trailing\">\r\n                <ng-content select=\"[matchaAccordionTrailing]\">\r\n                    <!-- Fallback: chevron canônico Figma rotacionando 180° quando aberto -->\r\n                    <matcha-icon class=\"accordion-chevron\"\r\n                                 name=\"chevron-down\"\r\n                                 size=\"sm\"\r\n                                 aria-hidden=\"true\"></matcha-icon>\r\n                </ng-content>\r\n            </span>\r\n        </button>\r\n    </div>\r\n\r\n    <!--\r\n        Content wrapper usa CSS grid-template-rows: 0fr → 1fr trick pra animar\r\n        height suavemente (sem Angular Animations / sem JS measuring).\r\n        prefers-reduced-motion respeitado via media query no SCSS.\r\n    -->\r\n    <div class=\"accordion-content\"\r\n         role=\"region\"\r\n         [id]=\"contentId()\"\r\n         [attr.aria-labelledby]=\"headerId()\"\r\n         [attr.hidden]=\"!isOpen() ? '' : null\">\r\n        <div class=\"accordion-content-inner\">\r\n            <div class=\"accordion-content-body\">\r\n                <ng-content select=\"matcha-accordion-content\"></ng-content>\r\n                <ng-content></ng-content>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  contentChildren,\r\n  effect,\r\n  input,\r\n  output,\r\n} from '@angular/core';\r\nimport { MatchaAccordionItemComponent } from '../accordion-item/accordion-item.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-accordion — container que coordena single/multiple e keyboard nav.\r\n * Implementa WAI-ARIA Accordion Pattern: ArrowDown/Up + Home/End movem foco\r\n * entre headers; single mode auto-fecha outros; role=region delimita landmark.\r\n *\r\n * Modernidade Angular 18+:\r\n *   - contentChildren() signal (dispensa ngAfterContentInit + .changes.subscribe)\r\n *   - effect() com onCleanup re-binda outputs sempre que a lista de items muda;\r\n *     subscriptions são limpas antes do próximo run e em destroy do host (auto)\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-accordion',\r\n  template: '<ng-content></ng-content>',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  host: {\r\n    'role': 'region',\r\n    '(keydown)': 'onKeydown($event)',\r\n  },\r\n})\r\nexport class MatchaAccordionComponent {\r\n  /** Permite múltiplos itens abertos. Default: single (auto-fecha outros). */\r\n  readonly multiple = input(false, { transform: booleanAttribute });\r\n\r\n  /** Emite isOpen sempre que QUALQUER item alterna. Use pra sincronizar UI externa. */\r\n  readonly openedChange = output<boolean>();\r\n\r\n  /** Signal-based content query — auto-reativo quando a lista de items muda. */\r\n  readonly items = contentChildren(MatchaAccordionItemComponent, { descendants: true });\r\n\r\n  constructor() {\r\n    // Re-binda outputs a cada mudança da lista; onCleanup desfaz subscriptions\r\n    // antes do próximo run E na destruição do component (cobre tudo sem OnDestroy).\r\n    effect((onCleanup) => {\r\n      const items = this.items();\r\n      const subs: { unsubscribe(): void }[] = [];\r\n\r\n      for (const item of items) {\r\n        subs.push(\r\n          item.toggleRequested.subscribe(() => this._toggleItem(item)),\r\n          item.opened.subscribe((isOpen) => this.openedChange.emit(isOpen)),\r\n        );\r\n      }\r\n\r\n      onCleanup(() => subs.forEach((s) => s.unsubscribe()));\r\n    });\r\n  }\r\n\r\n  private _toggleItem(selected: MatchaAccordionItemComponent): void {\r\n    const willOpen = !selected.isOpen();\r\n    selected._setOpen(willOpen);\r\n\r\n    if (!this.multiple() && willOpen) {\r\n      for (const item of this.items()) {\r\n        if (item !== selected && item.isOpen()) {\r\n          item._setOpen(false);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // ── Keyboard nav (WAI-ARIA Accordion Pattern) ────────────────────────\r\n  /**\r\n   * ArrowDown/Up: foca header anterior/próximo (com wrap).\r\n   * Home/End: pula pra primeiro/último.\r\n   * Listener no host pra capturar mesmo quando foco está num botão filho.\r\n   */\r\n  onKeydown(e: KeyboardEvent): void {\r\n    const key = e.key;\r\n    if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(key)) return;\r\n\r\n    // Só responde se o foco está num header de item (button.accordion-header-button)\r\n    const target = e.target as HTMLElement;\r\n    if (!target?.classList?.contains('accordion-header-button')) return;\r\n\r\n    e.preventDefault();\r\n    const arr = this.items();\r\n    const currentIdx = arr.findIndex((it) => it.host.nativeElement.contains(target));\r\n    if (currentIdx < 0) return;\r\n\r\n    const last = arr.length - 1;\r\n    let next: number;\r\n    switch (key) {\r\n      case 'ArrowDown': next = currentIdx >= last ? 0 : currentIdx + 1; break;\r\n      case 'ArrowUp':   next = currentIdx <= 0 ? last : currentIdx - 1; break;\r\n      case 'Home':      next = 0; break;\r\n      case 'End':       next = last; break;\r\n      default: return;\r\n    }\r\n\r\n    arr[next]?.focusHeader();\r\n  }\r\n}\r\n","import { Component ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-accordion-header',\r\n  template: '<ng-content></ng-content>',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaAccordionHeaderComponent {}\r\n","import { Component ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-accordion-content',\r\n  template: '<ng-content></ng-content>',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaAccordionContentComponent {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaAccordionComponent } from './accordion/accordion.component';\r\nimport { MatchaAccordionItemComponent } from './accordion-item/accordion-item.component';\r\nimport { MatchaAccordionHeaderComponent } from './accordion-header/accordion-header.component';\r\nimport { MatchaAccordionContentComponent } from './accordion-content/accordion-content.component';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaAccordionComponent,\r\n    MatchaAccordionItemComponent,\r\n    MatchaAccordionHeaderComponent,\r\n    MatchaAccordionContentComponent,\r\n    MatchaIconModule,\r\n    MatchaDividerModule\r\n  ],\r\n  exports: [\r\n    MatchaAccordionComponent,\r\n    MatchaAccordionItemComponent,\r\n    MatchaAccordionHeaderComponent,\r\n    MatchaAccordionContentComponent\r\n  ]\r\n})\r\nexport class MatchaAccordionModule {}\r\n","import {\r\n    booleanAttribute,\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    computed,\r\n    ElementRef,\r\n    HostBinding,\r\n    inject,\r\n    Input,\r\n    isDevMode,\r\n    OnChanges,\r\n    OnInit,\r\n    Renderer2,\r\n    signal,\r\n} from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\ntype MatchaButtonVariant = 'filled' | 'outline' | 'ghost';\r\n/**\r\n * Tamanhos suportados — canônico por extenso (tiny/small/medium/large/huge), regra\r\n * DS-wide (abreviações são reservadas EXCLUSIVAMENTE pra breakpoint). `xs/sm/md/lg/xl`\r\n * como VALOR de size são alias `@deprecated` — o Figma do `matcha/button` ainda usa\r\n * abreviado no Size (pendência de correção, ver FIGMA-ALIGNMENT.md); enquanto isso não\r\n * sai, o código é a fonte da verdade do vocabulário (exceção à política \"Figma vence\").\r\n * Tipado como string pra aceitar strings dinâmicas sem quebrar compile-time em consumers existentes.\r\n */\r\ntype MatchaButtonSize = string;\r\n/**\r\n * Cores semânticas recomendadas: basic | primary | accent | success | warn | danger | info.\r\n * Aceita string pra retrocompat com cores Material legacy (blue, green, warning, etc.).\r\n */\r\ntype MatchaButtonColor = string | null;\r\n\r\n/**\r\n * Matcha Button — contrato alinhado com Figma (matcha/button), exceto o vocabulário\r\n * de `size` (ver nota em MatchaButtonSize acima — Figma pendente de correção).\r\n *\r\n * API CANÔNICA (use em código novo):\r\n *   - variant:  'filled' | 'outline' | 'ghost'\r\n *   - size:     'tiny' | 'small' | 'medium' | 'large' | 'huge'\r\n *   - color:    'basic' | 'primary' | 'accent' | 'success' | 'warn' | 'danger' | 'info'\r\n *   - loading:  boolean (substitui o pattern manual [disabled]=\"isLoading\")\r\n *   - pill:     boolean (modifier ortogonal)\r\n *\r\n * API LEGACY (ainda suportada — @deprecated v3):\r\n *   - size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' (abreviação — reservada pra breakpoint em todo o resto do DS)\r\n *   - [outline], [basic], [link], [icon], [badge], [alpha]\r\n *\r\n * O SCSS (matcha-buttons.scss) usa attribute selectors (`[size=\"medium\"]`, `[outline]`...)\r\n * pareados com o alias abreviado (`[size=\"md\"]`) — ambos os vocabulários renderizam igual.\r\n * Angular reflete inputs string como atributos HTML, então o styling flui automaticamente.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: '[matcha-button]',\r\n    template: `\r\n        <ng-content></ng-content>\r\n        @if (loading) {\r\n            <span class=\"matcha-button__spinner\" aria-hidden=\"true\">\r\n                <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\r\n                    <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                            stroke-dasharray=\"40 20\" opacity=\"0.9\">\r\n                        <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 12 12\" to=\"360 12 12\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\r\n                    </circle>\r\n                </svg>\r\n            </span>\r\n            <span class=\"matcha-button__sr-only\" aria-live=\"polite\">{{ loadingAnnouncement }}</span>\r\n        }\r\n    `,\r\n    styleUrls: ['./button.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-button',\r\n        '[attr.data-variant]': 'resolvedVariant()',\r\n        '[attr.aria-busy]': 'loading ? \"true\" : null',\r\n    },\r\n})\r\nexport class MatchaButtonComponent implements OnChanges, OnInit {\r\n    // ───────────────────────────────────────────────────────────────────────\r\n    // API CANÔNICA\r\n    // ───────────────────────────────────────────────────────────────────────\r\n\r\n    /** Variante visual alinhada com Figma: 'filled' | 'outline' | 'ghost'. */\r\n    @Input() variant: MatchaButtonVariant | null = null;\r\n\r\n    /** Tamanho: 'tiny'|'small'|'medium'|'large'|'huge' (canônico) ou 'xs'|'sm'|'md'|'lg'|'xl' (alias @deprecated). */\r\n    @Input() size: MatchaButtonSize | null = null;\r\n\r\n    /** Tamanho responsivo por breakpoint (aceita ambos vocabulários). */\r\n    @Input('size-xs') sizeXs: MatchaButtonSize | null = null;\r\n    @Input('size-sm') sizeSm: MatchaButtonSize | null = null;\r\n    @Input('size-md') sizeMd: MatchaButtonSize | null = null;\r\n    @Input('size-lg') sizeLg: MatchaButtonSize | null = null;\r\n    @Input('size-xl') sizeXl: MatchaButtonSize | null = null;\r\n\r\n    /** Cor semântica. */\r\n    @Input() color: MatchaButtonColor = 'basic';\r\n\r\n    /** Loading state — desabilita interação + mostra spinner inline. */\r\n    @Input({ transform: booleanAttribute }) loading = false;\r\n\r\n    /** Texto anunciado pra screen readers quando loading=true (i18n) */\r\n    @Input() loadingAnnouncement: string = 'Carregando';\r\n\r\n    /** Disabled state — desabilita interação sem spinner. */\r\n    @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n    /** Gap interno entre children (ícone + label). */\r\n    @Input() gap: string | number | null = null;\r\n\r\n    /** Pill: radius 9999px (modifier ortogonal). */\r\n    @Input({ transform: booleanAttribute }) pill = false;\r\n\r\n    // ───────────────────────────────────────────────────────────────────────\r\n    // API LEGACY (@deprecated v3)\r\n    // ───────────────────────────────────────────────────────────────────────\r\n\r\n    /** @deprecated — use variant=\"outline\" */\r\n    @Input({ transform: booleanAttribute }) outline = false;\r\n\r\n    /** @deprecated — use variant=\"ghost\" */\r\n    @Input({ transform: booleanAttribute }) basic = false;\r\n\r\n    /** @deprecated — vira modifier [alpha] em directive própria */\r\n    @Input({ transform: booleanAttribute }) alpha = false;\r\n\r\n    /** @deprecated — use <matcha-link> standalone */\r\n    @Input({ transform: booleanAttribute }) link = false;\r\n\r\n    /** @deprecated — use <matcha-icon-button> standalone */\r\n    @Input({ transform: booleanAttribute }) icon = false;\r\n\r\n    /** @deprecated — use directive [matchaBadge] */\r\n    @Input({ transform: booleanAttribute }) badge = false;\r\n\r\n    // ───────────────────────────────────────────────────────────────────────\r\n    // Host bindings — refletem inputs como atributos pro SCSS attribute-selector\r\n    // ───────────────────────────────────────────────────────────────────────\r\n\r\n    @HostBinding('attr.color') get colorAttr() { return this.color; }\r\n    @HostBinding('attr.size') get sizeAttr() { return this.size; }\r\n    @HostBinding('attr.size-xs') get sizeXsAttr() { return this.sizeXs; }\r\n    @HostBinding('attr.size-sm') get sizeSmAttr() { return this.sizeSm; }\r\n    @HostBinding('attr.size-md') get sizeMdAttr() { return this.sizeMd; }\r\n    @HostBinding('attr.size-lg') get sizeLgAttr() { return this.sizeLg; }\r\n    @HostBinding('attr.size-xl') get sizeXlAttr() { return this.sizeXl; }\r\n\r\n    @HostBinding('attr.outline')  get outlineAttr() { return this.outline || this.variant === 'outline' ? '' : null; }\r\n    @HostBinding('attr.basic')    get basicAttr()   { return this.basic   || this.variant === 'ghost'   ? '' : null; }\r\n    @HostBinding('attr.alpha')    get alphaAttr()   { return this.alpha   ? '' : null; }\r\n    @HostBinding('attr.link')     get linkAttr()    { return this.link    ? '' : null; }\r\n    @HostBinding('attr.icon')     get iconAttr()    { return this.icon    ? '' : null; }\r\n    @HostBinding('attr.badge')    get badgeAttr()   { return this.badge   ? '' : null; }\r\n    @HostBinding('attr.pill')     get pillAttr()    { return this.pill    ? '' : null; }\r\n    @HostBinding('attr.disabled') get disabledAttr(){ return this.loading || this.disabled ? 'true' : null; }\r\n\r\n    @HostBinding('class.matcha-button--loading') get loadingClass() { return this.loading; }\r\n\r\n    @HostBinding('style.--matcha-button-gap') get gapStyle() {\r\n        return this.gap != null ? `${this.gap}px` : null;\r\n    }\r\n\r\n    // ───────────────────────────────────────────────────────────────────────\r\n    // Variant resolution (novo > legacy > default)\r\n    // ───────────────────────────────────────────────────────────────────────\r\n\r\n    resolvedVariant = computed<MatchaButtonVariant>(() => {\r\n        const state = this._variantState();\r\n        return state;\r\n    });\r\n\r\n    /** Signal ressincronizado em ngOnChanges pra trigger computed. */\r\n    private _variantState = signal<MatchaButtonVariant>('filled');\r\n\r\n    private computeVariant(): MatchaButtonVariant {\r\n        if (this.variant === 'filled' || this.variant === 'outline' || this.variant === 'ghost') {\r\n            return this.variant;\r\n        }\r\n        if (this.outline) return 'outline';\r\n        if (this.basic) return 'ghost';\r\n        return 'filled';\r\n    }\r\n\r\n    // ───────────────────────────────────────────────────────────────────────\r\n    // Ripple (inline, sem document.querySelectorAll)\r\n    // ───────────────────────────────────────────────────────────────────────\r\n\r\n    /**\r\n     * Element ref publico — usado pelo matcha-button-toggle pra mapear\r\n     * QueryList<MatchaButtonComponent> ↔ HTMLButtonElement (DOM events).\r\n     */\r\n    public elementRef = inject(ElementRef<HTMLElement>);\r\n    private renderer = inject(Renderer2);\r\n    private cdRef = inject(ChangeDetectorRef);\r\n\r\n    /**\r\n     * Forca CD no componente quando Inputs sao mutados programaticamente\r\n     * (sem template binding). Usado pelo matcha-button-toggle pra propagar\r\n     * variant/color/outline depois de setar diretamente as propriedades —\r\n     * caso contrario as host bindings nao re-avaliam (OnPush).\r\n     */\r\n    public markForCheck(): void {\r\n        this._variantState.set(this.computeVariant());\r\n        this.cdRef.markForCheck();\r\n    }\r\n\r\n    // Ripple removido — animação estava quebrada (translate/scale conflict). Agora usa\r\n    // state layer (::before) + scale(0.97) no :active pra feedback de press (mais cleanup MD3).\r\n\r\n    // ───────────────────────────────────────────────────────────────────────\r\n    // Lifecycle\r\n    // ───────────────────────────────────────────────────────────────────────\r\n\r\n    ngOnInit(): void {\r\n        this._variantState.set(this.computeVariant());\r\n        this.updateDividerStyles();\r\n        this.warnDeprecatedApiOnce();\r\n        this.warnMissingAriaLabelIfIconOnly();\r\n    }\r\n\r\n    /**\r\n     * A11y — Warn in dev mode when an icon-only button has no accessible name.\r\n     * Icon-only = button has no visible text content (só ícone ou SVG).\r\n     * Screen readers sem aria-label anunciam só \"botão\" — ruim pra navegação.\r\n     */\r\n    private warnMissingAriaLabelIfIconOnly(): void {\r\n        if (!isDevMode()) return;\r\n        setTimeout(() => {\r\n            const el = this.elementRef.nativeElement as HTMLElement;\r\n            const hasAriaLabel = !!(el.getAttribute('aria-label') || el.getAttribute('aria-labelledby'));\r\n            if (hasAriaLabel) return;\r\n\r\n            // Text content visível (ignorando whitespace + ícones puros)\r\n            const textContent = (el.textContent || '').trim();\r\n            const hasTextContent = textContent.length > 0;\r\n            if (hasTextContent) return;\r\n\r\n            // Sem texto visível e sem aria-label → icon-only sem a11y\r\n            console.warn(\r\n                '[matcha-button] Botão ícone-only sem aria-label/aria-labelledby. ' +\r\n                'Screen readers vão anunciar apenas \"botão\" sem descrever a ação. ' +\r\n                'Adicione `aria-label=\"Descrição da ação\"`. Aviso apenas em dev mode.',\r\n                el,\r\n            );\r\n        });\r\n    }\r\n\r\n    ngOnChanges(): void {\r\n        this._variantState.set(this.computeVariant());\r\n        this.updateDividerStyles();\r\n    }\r\n\r\n    /**\r\n     * Dev-mode warning pro uso de inputs legacy (outline/basic/link/alpha booleans).\r\n     * S\\u00f3 dispara uma vez por instance em dev mode. Silent em prod.\r\n     */\r\n    private _warnedDeprecated = false;\r\n    private warnDeprecatedApiOnce(): void {\r\n        if (this._warnedDeprecated || !isDevMode()) return;\r\n        const legacy: string[] = [];\r\n        if (this.outline)  legacy.push('outline');\r\n        if (this.basic)    legacy.push('basic');\r\n        if (this.link)     legacy.push('link');\r\n        if (this.alpha)    legacy.push('alpha');\r\n        if (legacy.length > 0) {\r\n            this._warnedDeprecated = true;\r\n            console.warn(\r\n                `[matcha-button] Inputs legacy depreciados em uso: ${legacy.join(', ')}. ` +\r\n                `Migre pra API can\\u00f4nica: use <button matcha-button variant=\"outline|ghost\"> ou <a matcha-link> / [alpha]. ` +\r\n                `Ver MIGRATION.md. Este aviso s\\u00f3 aparece em dev mode.`,\r\n                this.elementRef.nativeElement,\r\n            );\r\n        }\r\n    }\r\n\r\n    /** Retrocompat — botões legacy usam matcha-divider interno. */\r\n    private updateDividerStyles(): void {\r\n        const dividers = this.elementRef.nativeElement.querySelectorAll('matcha-divider');\r\n        dividers.forEach((divider: HTMLElement) => {\r\n            divider.querySelectorAll('div').forEach((div: HTMLElement) => {\r\n                if (div.classList.contains('border-color-disabled')) {\r\n                    this.renderer.removeClass(div, 'border-color-disabled');\r\n                    this.renderer.addClass(div, 'opacity-03');\r\n                }\r\n            });\r\n        });\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatchaButtonComponent } from './button/button.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaButtonComponent],\r\n    exports: [MatchaButtonComponent],\r\n})\r\nexport class MatchaButtonModule {}\r\n","import {\r\n    AfterContentInit,\r\n    booleanAttribute,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ContentChildren,\r\n    ElementRef,\r\n    EventEmitter,\r\n    forwardRef,\r\n    HostBinding,\r\n    HostListener,\r\n    inject,\r\n    Input,\r\n    OnDestroy,\r\n    Output,\r\n    QueryList,\r\n    Renderer2,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-button-toggle — grupo de botões com seleção mutuamente exclusiva (single)\r\n * ou múltipla (multiple=true). **Implementa ControlValueAccessor** — aceita\r\n * `formControlName` / `[(ngModel)]` em cima da API imperativa.\r\n *\r\n * **Identificação dos children por `value`**: cada `<button matcha-button>` filho\r\n * deve declarar `value=\"X\"`. O FormControl recebe/emite essas strings. Sem `value`,\r\n * o componente cai no fallback de índice (`change` event emite índices, igual antes).\r\n *\r\n * @example Reactive forms — single\r\n *   <matcha-button-toggle formControlName=\"viewMode\">\r\n *     <button matcha-button value=\"desktop\">Desktop</button>\r\n *     <button matcha-button value=\"mobile\">Mobile</button>\r\n *   </matcha-button-toggle>\r\n *   // formControl.value === 'desktop' | 'mobile' | null\r\n *\r\n * @example Reactive forms — multiple\r\n *   <matcha-button-toggle [multiple]=\"true\" formControlName=\"filters\">\r\n *     <button matcha-button value=\"active\">Ativos</button>\r\n *     <button matcha-button value=\"pending\">Pendentes</button>\r\n *   </matcha-button-toggle>\r\n *   // formControl.value === ['active', 'pending']\r\n *\r\n * @example Imperativo (legacy — sem value attribute)\r\n *   <matcha-button-toggle (change)=\"onChange($event)\">\r\n *     <button matcha-button active>A</button> <button matcha-button>B</button>\r\n *   </matcha-button-toggle>\r\n *   // change emite [0] | [1]\r\n *\r\n * Acessibilidade:\r\n *   - role=\"radiogroup\" (single) ou \"group\" (multiple)\r\n *   - aria-pressed refletido automaticamente em cada child\r\n *   - Keyboard: ArrowLeft/ArrowRight navegam, Home/End extremos, Enter/Space seleciona\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-button-toggle',\r\n    templateUrl: './button-toggle.component.html',\r\n    styleUrl: './button-toggle.component.scss',\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [{\r\n        provide: NG_VALUE_ACCESSOR,\r\n        useExisting: forwardRef(() => MatchaButtonToggleComponent),\r\n        multi: true,\r\n    }],\r\n})\r\nexport class MatchaButtonToggleComponent implements AfterContentInit, OnDestroy, ControlValueAccessor {\r\n    /**\r\n     * Permite múltipla seleção simultânea. Default: false (single).\r\n     * Usa booleanAttribute do Angular: `<comp multiple>` = true, `[multiple]=\"false\"` = false.\r\n     */\r\n    private _multiple = false;\r\n    @Input() get multiple() { return this._multiple; }\r\n    set multiple(v: boolean | string | null | undefined) { this._multiple = booleanAttribute(v); }\r\n\r\n    /** Desabilita o grupo inteiro. */\r\n    private _disabled = false;\r\n    @Input() get disabled() { return this._disabled; }\r\n    set disabled(v: boolean | string | null | undefined) { this._disabled = booleanAttribute(v); }\r\n\r\n    /**\r\n     * Somente leitura: a seleção continua LEGÍVEL — o botão ativo segue com o contraste de ativo\r\n     * — mas o clique não muda nada.\r\n     *\r\n     * Não é sinônimo de `disabled`, e a diferença decide se uma tela de leitura funciona:\r\n     * `disabled` apaga o contraste, tira o grupo da ordem de tabulação e o esconde do leitor de\r\n     * tela. Use `disabled` para AÇÃO INDISPONÍVEL e `readonly` para CONTEÚDO QUE SE LÊ.\r\n     *\r\n     * Aqui a inércia é no `onSelect`, e não no `<button>`: desabilitar os botões apagaria\r\n     * justamente o estado que a pessoa veio ler.\r\n     */\r\n    private _readonly = false;\r\n    @Input() get readonly() { return this._readonly; }\r\n    set readonly(v: boolean | string | null | undefined) { this._readonly = booleanAttribute(v); }\r\n\r\n    /** Força que sempre exista pelo menos 1 selecionado (single mode). */\r\n    private _required = false;\r\n    @Input() get required() { return this._required; }\r\n    set required(v: boolean | string | null | undefined) { this._required = booleanAttribute(v); }\r\n\r\n    /**\r\n     * Variant aplicado nos botões NÃO-selecionados.\r\n     * Figma DSV3 canon (playground Variante/Tamanho): ativo=filled, inativo=outline accent.\r\n     * Valores: 'filled' | 'solid' (alias) | 'outline' | 'ghost' | 'basic' (alias) | 'alpha' | 'link'.\r\n     * Default: 'outline' (mudado de 'alpha' — alpha+accent ficava visualmente\r\n     * indistinguível do filled+accent ativo, quebrando a usabilidade).\r\n     * Setter reativo: re-aplica nos children quando mudar em runtime (playground-friendly).\r\n     */\r\n    private _inactiveType: 'filled' | 'solid' | 'outline' | 'ghost' | 'basic' | 'alpha' | 'link' = 'outline';\r\n    @Input() get inactiveType() { return this._inactiveType; }\r\n    set inactiveType(v: 'filled' | 'solid' | 'outline' | 'ghost' | 'basic' | 'alpha' | 'link') {\r\n        this._inactiveType = v;\r\n        // Re-aplica variants em todos os children existentes\r\n        this.buttons.forEach(b => this.applyVariant(b, b.hasAttribute('active')));\r\n    }\r\n\r\n    /**\r\n     * Cor aplicada nos botões NÃO-selecionados (sobrescreve o `color` original).\r\n     * Ex: `inactiveColor=\"primary\"` + children `color=\"accent\"` → ativos accent, inativos primary.\r\n     * Default: 'basic' (neutro). Antes era 'accent' mas accent inativo competia\r\n     * cromaticamente com accent ativo (dark theme) — usuario nao distinguia\r\n     * selected vs unselected. basic da contraste claro: ativo brilha em accent\r\n     * enquanto inativo fica neutro. Consumers que dependiam do accent inativo\r\n     * devem setar `inactiveColor=\"accent\"` explicitamente.\r\n     * Setter reativo — re-aplica nos children existentes quando mudar.\r\n     */\r\n    private _inactiveColor = 'basic';\r\n    @Input() get inactiveColor() { return this._inactiveColor; }\r\n    set inactiveColor(v: string) {\r\n        this._inactiveColor = v;\r\n        this.buttons.forEach(b => this.applyVariant(b, b.hasAttribute('active')));\r\n    }\r\n\r\n    /**\r\n     * Cor aplicada nos botões SELECIONADOS (override opcional). Se omitido,\r\n     * usa o `color` original do child (como declarado no HTML).\r\n     * Setter reativo — útil pra playgrounds onde a cor ativa muda dinamicamente.\r\n     */\r\n    private _activeColor: string | null = null;\r\n    @Input() get activeColor(): string | null { return this._activeColor; }\r\n    set activeColor(v: string | null) {\r\n        this._activeColor = v || null;\r\n        this.buttons.forEach(b => this.applyVariant(b, b.hasAttribute('active')));\r\n    }\r\n\r\n    /**\r\n     * Reflete inactiveType/inactiveColor como atributos DOM do host. O tema\r\n     * (matcha-button-toggle.scss) seleciona por [inactivetype]/[inactivecolor] —\r\n     * sem a reflexão, binding por input ([inactiveType]=\"...\") ou uso com defaults\r\n     * nunca engata as regras de inativo do tema e os botões inativos ficam com o\r\n     * visual filled da própria cor (indistinguíveis do ativo).\r\n     */\r\n    @HostBinding('attr.inactivetype') get inactiveTypeAttr() { return this._inactiveType; }\r\n    @HostBinding('attr.inactivecolor') get inactiveColorAttr() { return this._inactiveColor; }\r\n\r\n    /** Gap entre botões em px. 0 = segmented (colados), 16 = separated (default). */\r\n    private _gap = 16;\r\n    @Input() set gap(v: string | number) { const n = +v; this._gap = isNaN(n) ? 16 : n; }\r\n    get gapClass() { return `gap-${this._gap}`; }\r\n    get gap(): number { return this._gap; }\r\n\r\n    /**\r\n     * Estica o grupo pra 100% do container, dividindo a largura igualmente\r\n     * entre os botões (flex: 1 1 0). Default: false — o grupo abraça o\r\n     * conteúdo (hug), igual ao Figma. Era o comportamento default até a\r\n     * 20.x — consumers que dependiam do stretch devem setar `stretched`.\r\n     */\r\n    private _stretched = false;\r\n    @Input() get stretched() { return this._stretched; }\r\n    set stretched(v: boolean | string | null | undefined) { this._stretched = booleanAttribute(v); }\r\n    @HostBinding('attr.stretched') get stretchedAttr() { return this._stretched ? '' : null; }\r\n\r\n    /** Emitido quando seleção muda. Payload: índices ativos (array). Legacy — mantido pra back-compat. */\r\n    @Output() change = new EventEmitter<number[]>();\r\n\r\n    /**\r\n     * Emitido junto com `change` quando os children têm attribute `value`.\r\n     * Single: string | null | undefined. Multiple: string[].\r\n     * Use isso ao invés de `change` quando estiver em modo value-based (não-índice).\r\n     */\r\n    @Output() valueChange = new EventEmitter<string | string[] | null>();\r\n\r\n    // ── ControlValueAccessor state ───────────────────────────────────────────\r\n    private onChangeFn: (v: string | string[] | null) => void = () => {};\r\n    private onTouchedFn: () => void = () => {};\r\n    /** Última value escrita via writeValue — aplicada quando children chegam (AfterContentInit). */\r\n    private pendingValue: string | string[] | null = null;\r\n\r\n    // Host a11y\r\n    @HostBinding('attr.role') get roleAttr() { return this._multiple ? 'group' : 'radiogroup'; }\r\n    @HostBinding('attr.aria-disabled') get ariaDisabledAttr() { return this._disabled ? 'true' : null; }\r\n    @HostBinding('attr.disabled') get disabledAttr() { return this._disabled ? 'true' : null; }\r\n    @HostBinding('attr.readonly') get readonlyAttr() { return this._readonly ? 'true' : null; }\r\n    @HostBinding('attr.aria-readonly') get ariaReadonlyAttr() { return this._readonly ? 'true' : null; }\r\n\r\n    private elementRef = inject(ElementRef<HTMLElement>);\r\n    private renderer = inject(Renderer2);\r\n    private clickHandlers = new Map<Element, () => void>();\r\n    private keyHandler?: (e: KeyboardEvent) => void;\r\n    private childObserver?: MutationObserver;\r\n\r\n    /**\r\n     * Mapa elementRef → MatchaButtonComponent. Populado via ContentChildren\r\n     * pra que applyVariant possa mutar Inputs do componente diretamente\r\n     * (em vez de Renderer2.setAttribute, que perde pra HostBinding do\r\n     * matcha-button no proximo CD).\r\n     */\r\n    @ContentChildren(MatchaButtonComponent, { descendants: false })\r\n    private buttonComponents!: QueryList<MatchaButtonComponent>;\r\n    /**\r\n     * Flag pra distinguir mutations internas (setActive chamado pelo proprio\r\n     * componente) de mutations externas (consumer usando [attr.active]).\r\n     * Mutations internas NAO precisam triggerar applyVariant — ja foram\r\n     * processadas. Mutations externas SIM (do contrario o visual fica stale).\r\n     */\r\n    private internalMutation = false;\r\n\r\n    /** Contador pra gerar id único do <matcha-label> projetado (a11y — aria-labelledby). */\r\n    private static labelIdCounter = 0;\r\n\r\n    ngAfterContentInit(): void {\r\n        this.syncChildren();\r\n        this.setupLabelA11y();\r\n        // Aplica value pendente (caso writeValue tenha chegado antes dos children).\r\n        if (this.pendingValue !== null) {\r\n            this.applyValue(this.pendingValue);\r\n            this.pendingValue = null;\r\n        }\r\n        // Observa mutations de children:\r\n        // (1) childList: ngFor add/remove → re-sync completo.\r\n        // (2) attributes 'active' nos buttons: muda externa via [attr.active]\r\n        //     do consumer → re-aplica variant pra esse button (caso contrario\r\n        //     active vira true/false mas o visual de filled/outline fica stale).\r\n        //\r\n        // Flag `internalMutation` previne loop quando setActive (interno) muta\r\n        // o attr active — só re-renderiza quando a mudança veio de fora.\r\n        // Debounced via microtask — múltiplas mutations no mesmo tick = 1 sync.\r\n        let scheduled = false;\r\n        this.childObserver = new MutationObserver((mutations) => {\r\n            if (scheduled) return;\r\n            // Filtra mutations: childList SEMPRE re-sync; attribute só se NÃO\r\n            // foi mutation interna (evita loop infinito do setActive).\r\n            const needsFullSync = mutations.some(m => m.type === 'childList');\r\n            const attrMutations = mutations.filter(\r\n                m => m.type === 'attributes' && m.attributeName === 'active' && !this.internalMutation,\r\n            );\r\n            if (!needsFullSync && attrMutations.length === 0) return;\r\n\r\n            scheduled = true;\r\n            queueMicrotask(() => {\r\n                scheduled = false;\r\n                if (needsFullSync) {\r\n                    this.syncChildren();\r\n                } else {\r\n                    // Só re-aplica variant nos buttons que mudaram attr active.\r\n                    for (const m of attrMutations) {\r\n                        const btn = m.target as HTMLElement;\r\n                        const isActive = btn.hasAttribute('active');\r\n                        this.applyVariant(btn, isActive);\r\n                        // Mantém aria-checked/tabindex em sync com o attr externo.\r\n                        if (this._multiple) {\r\n                            this.renderer.setAttribute(btn, 'aria-pressed', String(isActive));\r\n                        } else {\r\n                            this.renderer.setAttribute(btn, 'aria-checked', String(isActive));\r\n                            this.renderer.setAttribute(btn, 'tabindex', isActive ? '0' : '-1');\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n        });\r\n        this.childObserver.observe(this.elementRef.nativeElement, {\r\n            childList: true,\r\n            subtree: true,        // attributes em children precisam de subtree:true\r\n            attributes: true,\r\n            attributeFilter: ['active'],\r\n        });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        for (const [btn, handler] of this.clickHandlers) {\r\n            btn.removeEventListener('click', handler);\r\n        }\r\n        this.clickHandlers.clear();\r\n        this.childObserver?.disconnect();\r\n    }\r\n\r\n    private get buttons(): HTMLButtonElement[] {\r\n        return Array.from(this.elementRef.nativeElement.querySelectorAll('button[matcha-button]'));\r\n    }\r\n\r\n    /**\r\n     * Liga o <matcha-label> projetado ao grupo via aria-labelledby (paridade com o\r\n     * setupA11y do matcha-form-field). Sem label projetado, não faz nada — o host\r\n     * permanece sem aria-labelledby, idêntico ao comportamento anterior.\r\n     */\r\n    private setupLabelA11y(): void {\r\n        const host = this.elementRef.nativeElement;\r\n        const label = host.querySelector('matcha-label');\r\n        if (!label) return;\r\n        let id = label.getAttribute('id');\r\n        if (!id) {\r\n            id = `matcha-button-toggle-label-${++MatchaButtonToggleComponent.labelIdCounter}`;\r\n            this.renderer.setAttribute(label, 'id', id);\r\n        }\r\n        this.renderer.setAttribute(host, 'aria-labelledby', id);\r\n    }\r\n\r\n    /** Sincroniza role, aria-pressed/checked, variant inativo e listeners em cada child button. */\r\n    private syncChildren(): void {\r\n        const multi = this._multiple;\r\n        this.buttons.forEach((button, index) => {\r\n            const isActive = button.hasAttribute('active');\r\n\r\n            // role por child: radio (single) ou switch (multi)\r\n            this.renderer.setAttribute(button, 'role', multi ? 'switch' : 'radio');\r\n\r\n            // aria-checked/aria-pressed inicial\r\n            if (multi) {\r\n                this.renderer.setAttribute(button, 'aria-pressed', String(isActive));\r\n            } else {\r\n                this.renderer.setAttribute(button, 'aria-checked', String(isActive));\r\n                this.renderer.setAttribute(button, 'tabindex', isActive ? '0' : '-1');\r\n            }\r\n\r\n            // Aplica variant automaticamente: active=filled, inactive=inactiveType\r\n            this.applyVariant(button, isActive);\r\n\r\n            // Bind click handler (remove previous if re-init)\r\n            const existing = this.clickHandlers.get(button);\r\n            if (existing) button.removeEventListener('click', existing);\r\n            const handler = () => this.onSelect(index);\r\n            button.addEventListener('click', handler);\r\n            this.clickHandlers.set(button, handler);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Aplica variant + color no child button baseado em active + inactiveType + inactiveColor.\r\n     * - Active: variant original (filled default) + cor original do child (ou `activeColor` se setado)\r\n     * - Inactive: aplica `inactiveType` (variant) e `inactiveColor` (cor)\r\n     *\r\n     * IMPORTANTE: muta os Inputs do MatchaButtonComponent diretamente (nao\r\n     * Renderer2.setAttribute). O matcha-button tem @HostBinding em color/\r\n     * outline/basic/alpha/link que reflete o Input em cada CD — se mutarmos\r\n     * o DOM atributo, o HostBinding sobrescreve no proximo tick. Setar o\r\n     * Input + markForCheck garante que a HostBinding renderize com o valor\r\n     * novo.\r\n     *\r\n     * data-original-color guarda o `color` declarado no HTML do consumer\r\n     * (1a vez que sync acontece) pra restaurar quando button vira ativo.\r\n     */\r\n    private applyVariant(button: HTMLElement, isActive: boolean): void {\r\n        const comp = this.compFor(button);\r\n        if (!comp) return; // sem instancia (button raw sem matcha-button) — pula\r\n\r\n        // Salva color original (so 1 vez, se ainda nao foi salvo). Le do\r\n        // Input do componente — fonte de verdade real do template.\r\n        if (!button.hasAttribute('data-original-color')) {\r\n            const originalColor = comp.color || '';\r\n            this.renderer.setAttribute(button, 'data-original-color', originalColor);\r\n        }\r\n\r\n        const variant = isActive ? 'filled' : this._inactiveType;\r\n\r\n        // Muta Input variant + booleans de variant legacy (matcha-button\r\n        // computa variant final via \"variant > legacy bools > default filled\").\r\n        // Setamos AMBOS pra cobrir os dois codepaths do matcha-button.\r\n        if (variant === 'outline') {\r\n            comp.variant = 'outline';\r\n            comp.outline = true;\r\n            comp.basic = false;\r\n            comp.alpha = false;\r\n            comp.link = false;\r\n        } else if (variant === 'ghost' || variant === 'basic') {\r\n            comp.variant = 'ghost';\r\n            comp.outline = false;\r\n            comp.basic = true;\r\n            comp.alpha = false;\r\n            comp.link = false;\r\n        } else if (variant === 'alpha') {\r\n            comp.variant = null;\r\n            comp.outline = false;\r\n            comp.basic = false;\r\n            comp.alpha = true;\r\n            comp.link = false;\r\n        } else if (variant === 'link') {\r\n            comp.variant = null;\r\n            comp.outline = false;\r\n            comp.basic = false;\r\n            comp.alpha = false;\r\n            comp.link = true;\r\n        } else {\r\n            // filled / solid / default\r\n            comp.variant = 'filled';\r\n            comp.outline = false;\r\n            comp.basic = false;\r\n            comp.alpha = false;\r\n            comp.link = false;\r\n        }\r\n\r\n        // Muta Input color:\r\n        // - Ativo:   activeColor (se setado) > color original do child\r\n        // - Inativo: inactiveColor\r\n        const colorToApply = isActive\r\n            ? (this._activeColor || button.getAttribute('data-original-color') || '')\r\n            : this._inactiveColor;\r\n        comp.color = colorToApply || 'basic';\r\n\r\n        // Trigger CD no matcha-button (OnPush) — re-avalia HostBindings com\r\n        // novo variant/color/outline. Sem isso o visual fica stale (Input\r\n        // mudou mas hostBinding cacheia o valor anterior).\r\n        comp.markForCheck();\r\n    }\r\n\r\n    /** Resolve MatchaButtonComponent pelo HTMLButtonElement (mapeamento DOM ↔ instance). */\r\n    private compFor(button: HTMLElement): MatchaButtonComponent | undefined {\r\n        if (!this.buttonComponents) return undefined;\r\n        return this.buttonComponents.find(c => c.elementRef?.nativeElement === button);\r\n    }\r\n\r\n    /** Handler central — encapsula lógica de seleção single vs multiple. */\r\n    private onSelect(index: number): void {\r\n        if (this._disabled || this._readonly) return;\r\n        const buttons = this.buttons;\r\n        const selected = buttons[index];\r\n        if (!selected || selected.hasAttribute('disabled')) return;\r\n\r\n        const activeIndexes: number[] = [];\r\n\r\n        if (this._multiple) {\r\n            const isActive = selected.hasAttribute('active');\r\n            if (isActive) {\r\n                this.setActive(selected, false);\r\n            } else {\r\n                this.setActive(selected, true);\r\n            }\r\n            buttons.forEach((b, i) => { if (b.hasAttribute('active')) activeIndexes.push(i); });\r\n        } else {\r\n            // Single-mode: required bloqueia desativar o único ativo\r\n            const currentlyActive = buttons.filter(b => b.hasAttribute('active'));\r\n            if (this._required && currentlyActive.length === 1 && currentlyActive[0] === selected) {\r\n                return;\r\n            }\r\n            const wasActive = selected.hasAttribute('active');\r\n            buttons.forEach((b, i) => {\r\n                const shouldBeActive = b === selected && !wasActive;\r\n                this.setActive(b, shouldBeActive);\r\n                if (shouldBeActive) activeIndexes.push(i);\r\n            });\r\n        }\r\n\r\n        this.change.emit(activeIndexes);\r\n\r\n        // Emite também por value (CVA + valueChange) se children têm `value`.\r\n        const newValue = this.readActiveValue();\r\n        this.valueChange.emit(newValue);\r\n        this.onChangeFn(newValue);\r\n        this.onTouchedFn();\r\n    }\r\n\r\n    // ── Value <-> button mapping helpers ─────────────────────────────────────\r\n\r\n    /** Lê o `value` do button (preferindo property pra evitar HTMLButtonElement.value=''). */\r\n    private buttonValue(btn: HTMLButtonElement): string | null {\r\n        const attr = btn.getAttribute('value');\r\n        return attr !== null ? attr : null;\r\n    }\r\n\r\n    /** Snapshot do value atual dos botões ativos. */\r\n    private readActiveValue(): string | string[] | null {\r\n        const active = this.buttons.filter(b => b.hasAttribute('active'));\r\n        if (this._multiple) {\r\n            return active.map(b => this.buttonValue(b)).filter((v): v is string => v !== null);\r\n        }\r\n        return active.length > 0 ? this.buttonValue(active[0]) : null;\r\n    }\r\n\r\n    /** Aplica value vindo do FormControl nos buttons. Idempotente — não dispara change. */\r\n    private applyValue(value: string | string[] | null): void {\r\n        const buttons = this.buttons;\r\n        if (buttons.length === 0) return;\r\n\r\n        const wanted = new Set<string>();\r\n        if (this._multiple) {\r\n            if (Array.isArray(value)) value.forEach(v => wanted.add(String(v)));\r\n        } else {\r\n            if (value !== null && value !== undefined && !Array.isArray(value)) wanted.add(String(value));\r\n        }\r\n\r\n        for (const btn of buttons) {\r\n            const v = this.buttonValue(btn);\r\n            const shouldBeActive = v !== null && wanted.has(v);\r\n            // setActive sem disparar change — usa o método existente que só toca DOM.\r\n            this.setActive(btn, shouldBeActive);\r\n        }\r\n    }\r\n\r\n    // ── ControlValueAccessor implementation ──────────────────────────────────\r\n\r\n    writeValue(value: string | string[] | null): void {\r\n        if (this.buttons.length === 0) {\r\n            // Children ainda não montados — aplica em ngAfterContentInit.\r\n            this.pendingValue = value;\r\n            return;\r\n        }\r\n        this.applyValue(value);\r\n    }\r\n\r\n    registerOnChange(fn: (v: string | string[] | null) => void): void {\r\n        this.onChangeFn = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: () => void): void {\r\n        this.onTouchedFn = fn;\r\n    }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this._disabled = isDisabled;\r\n    }\r\n\r\n    @HostListener('focusout')\r\n    private onFocusOut(): void {\r\n        this.onTouchedFn();\r\n    }\r\n\r\n    private setActive(button: HTMLElement, active: boolean): void {\r\n        // Marca como mutation interna — o MutationObserver vai ignorar.\r\n        // Sem isso, cada setActive triggera o observer que tenta re-aplicar\r\n        // o variant, criando loop infinito.\r\n        this.internalMutation = true;\r\n        try {\r\n            if (active) {\r\n                this.renderer.setAttribute(button, 'active', '');\r\n            } else {\r\n                this.renderer.removeAttribute(button, 'active');\r\n            }\r\n            if (this._multiple) {\r\n                this.renderer.setAttribute(button, 'aria-pressed', String(active));\r\n            } else {\r\n                this.renderer.setAttribute(button, 'aria-checked', String(active));\r\n                this.renderer.setAttribute(button, 'tabindex', active ? '0' : '-1');\r\n            }\r\n            // Sincroniza o variant automaticamente: filled quando active, inactiveType caso contrário\r\n            this.applyVariant(button, active);\r\n        } finally {\r\n            // Defer pra próximo microtask — garante que o MutationObserver\r\n            // ja processou as mutations atuais antes de reabrir o gate.\r\n            queueMicrotask(() => { this.internalMutation = false; });\r\n        }\r\n    }\r\n\r\n    /** Keyboard navigation — arrow keys, Home/End. */\r\n    @HostListener('keydown', ['$event'])\r\n    onKeyDown(e: KeyboardEvent): void {\r\n        const key = e.key;\r\n        if (!['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(key)) return;\r\n\r\n        const buttons = this.buttons.filter(b => !b.hasAttribute('disabled'));\r\n        if (buttons.length === 0) return;\r\n\r\n        const current = document.activeElement as HTMLElement;\r\n        const currentIndex = buttons.indexOf(current as HTMLButtonElement);\r\n        let nextIndex = currentIndex;\r\n\r\n        if (key === 'ArrowLeft' || key === 'ArrowUp') {\r\n            nextIndex = currentIndex <= 0 ? buttons.length - 1 : currentIndex - 1;\r\n        } else if (key === 'ArrowRight' || key === 'ArrowDown') {\r\n            nextIndex = currentIndex >= buttons.length - 1 ? 0 : currentIndex + 1;\r\n        } else if (key === 'Home') {\r\n            nextIndex = 0;\r\n        } else if (key === 'End') {\r\n            nextIndex = buttons.length - 1;\r\n        }\r\n\r\n        if (nextIndex !== currentIndex && buttons[nextIndex]) {\r\n            e.preventDefault();\r\n            buttons[nextIndex].focus();\r\n            // Em single mode (radiogroup), arrow keys SELECIONAM automaticamente\r\n            if (!this._multiple) {\r\n                this.onSelect(this.buttons.indexOf(buttons[nextIndex]));\r\n            }\r\n        }\r\n    }\r\n}\r\n","<!-- Label opcional projetado (<matcha-label>) — empilha ACIMA do grupo, igual matcha-form-field. -->\r\n<ng-content select=\"matcha-label\"></ng-content>\r\n<div class=\"button-group\"\r\n     [ngClass]=\"gapClass\"\r\n     [class.flex-wrap]=\"gap !== 0\"\r\n     role=\"group\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaButtonToggleComponent } from './button-toggle/button-toggle.component';\r\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\r\n\r\n@NgModule({\r\n  imports: [MatchaButtonToggleComponent, MatchaTooltipModule],\r\n  exports: [MatchaButtonToggleComponent]\r\n})\r\nexport class MatchaButtonToggleModule { }\r\n","/**\r\n * Canonical component size is BY EXTENSION: tiny | small | medium | large | huge.\r\n *\r\n * Abbreviations (xs/sm/md/lg/xl) are RESERVED for breakpoints across the design\r\n * system, so they must NOT be used as component-size values. They are still\r\n * accepted on size inputs as `@deprecated` aliases and normalized to the\r\n * canonical extended name — a 1:1, value-preserving mapping (no pixel change).\r\n *\r\n * Use as an Angular input transform:\r\n *   size = input<'small' | 'medium' | 'large'>('medium', { transform: sizeAlias });\r\n */\r\nexport const SIZE_ABBREV_TO_EXTENSO: Readonly<Record<string, string>> = {\r\n  xs: 'tiny',\r\n  sm: 'small',\r\n  md: 'medium',\r\n  lg: 'large',\r\n  xl: 'huge',\r\n};\r\n\r\n/**\r\n * Normalizes a size value to the canonical extended scale. Unknown values\r\n * (already extended, or component-specific like 'default'/'compact') pass\r\n * through untouched. `null`/`undefined`/`''` are returned as-is so the input's\r\n * own default takes over.\r\n */\r\nexport function sizeAlias<T extends string>(value: T | null | undefined): T {\r\n  if (value == null || value === '') {\r\n    return value as T;\r\n  }\r\n  return (SIZE_ABBREV_TO_EXTENSO[value] ?? value) as T;\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    booleanAttribute,\r\n    computed,\r\n    inject,\r\n    input,\r\n    output,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { sizeAlias } from '../../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaCardType = 'surface' | 'outline' | 'alpha';\r\nexport type MatchaCardDirection = 'vertical' | 'horizontal';\r\n// Canonical by extension; sm/md/lg accepted as @deprecated aliases (1:1, value-preserving).\r\nexport type MatchaCardSize = 'small' | 'medium' | 'large';\r\nexport type MatchaCardFooterAlign = 'start' | 'end' | 'between';\r\nexport type MatchaCardContentGap = 'sm' | 'md' | 'lg';\r\nexport type MatchaCardBlockquote = 'left' | 'right' | 'none' | null;\r\n\r\n/**\r\n * matcha-card — container slot-based de conteúdo (Figma DSV3 15412:8664).\r\n *\r\n * 7 variantes Figma = 3 tipos × 2 direções (Surface/Outline/Alpha × V/H).\r\n *\r\n * Anatomia (5 slots projetáveis, todos opcionais) — ORDEM VISUAL em vertical:\r\n * header → media → content → footer. Header é SEMPRE o elemento mais no topo\r\n * do card, inclusive acima da media (decisão 2026-08-04: cobre o padrão\r\n * \"barra de título + ações, mídia abaixo\", comum em cards reais do painel).\r\n * Quem quer título ABAIXO da media projeta o título dentro de [matcha-card-content].\r\n *   • [matcha-card-header]        — título/conteúdo à esquerda, cresce e trunca\r\n *   • [matcha-card-header-action] — ações à direita do header (ex.: botão editar/fechar),\r\n *     nunca encolhe. O card renderiza os dois como wrappers próprios\r\n *     (__header-left/__header-actions, mesma anatomia de matcha-section/matcha-modal-header)\r\n *     — não depende do consumer envolver título+ações num único elemento.\r\n *   • [matcha-card-media]         — img/video/icon-badge (aspect-ratio configurável)\r\n *   • [matcha-card-content]       — corpo principal (gap configurável)\r\n *   • [matcha-card-footer]        — actions row (alinhamento configurável + flex-wrap)\r\n *\r\n * **Estados interativos:**\r\n *   • [clickable]   — role=button + (clicked) emit\r\n *   • [href]        — role=link, navega via window.location\r\n *   • [routerLink]  — role=link, navega via Angular Router\r\n *\r\n * `[href]`/`[routerLink]` honram ctrl/cmd/shift+clique e clique do meio abrindo em\r\n * nova aba (`window.open`), porque o card navega por código e não é uma âncora — sem\r\n * isso os modificadores eram silenciosamente ignorados.\r\n *\r\n * ⚠️ O card NÃO vira `<a>`: ele não tem input de label (a âncora ficaria sem nome\r\n * acessível) e o conteúdo projetado costuma ter botões/checkbox dentro — âncora\r\n * envolvendo conteúdo interativo é HTML inválido. Em card de LISTAGEM, o link\r\n * canônico é uma âncora de verdade no TÍTULO do card, projetada pelo consumidor\r\n * (mesma regra da célula da tabela — ver `docs/canon/matcha-table.md`); o clique no\r\n * card inteiro fica como conveniência.\r\n *   • [selected]    — visual selected (border accent + bg tint)\r\n *   • [disabled]    — bloqueia interação + aria-disabled (sobrepõe clickable/href)\r\n *   • [loading]     — skeleton shimmer + aria-busy\r\n *   • [matcha-card-reveal] — no elemento projetado (ex.: botão de ação secundária):\r\n *     fica oculto (opacity 0) até hover ou focus-within do card, então revela\r\n *     com fade+slide. CSS-only, sem input novo — mesmo padrão de atributo dos\r\n *     slots (media/header/content/footer).\r\n *\r\n * **Layout em grid**: content slot tem flex-grow:1 — em grids com `align-items:\r\n * stretch`, footer fica colado no bottom do card (alinha cards desiguais).\r\n *\r\n * **Composição livre**: cada slot aceita QUALQUER atom. Slots vazios são\r\n * hidden via `:not(:has(*))`.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-card',\r\n    templateUrl: './card.component.html',\r\n    styleUrls: ['./card.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[attr.color]':         'color()',\r\n        '[attr.type]':          'effectiveType()',\r\n        '[attr.direction]':     'direction()',\r\n        '[attr.size]':          'size()',\r\n        '[attr.footer-align]':  'footerAlign()',\r\n        '[attr.content-gap]':   'contentGap()',\r\n        '[attr.alpha]':         'effectiveType() === \"alpha\"   ? \"true\" : \"false\"',\r\n        '[attr.outline]':       'effectiveType() === \"outline\" ? \"true\" : \"false\"',\r\n        '[attr.loading]':       'loading() ? \"\" : null',\r\n        '[attr.disabled]':      'disabled() ? \"\" : null',\r\n        '[attr.aria-busy]':     'loading() ? \"true\" : null',\r\n        '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n        '[attr.aria-pressed]':  'clickable() && selected() ? \"true\" : null',\r\n        '[attr.aria-current]':  '!clickable() && selected() ? \"true\" : null',\r\n        '[attr.role]':          'computedRole()',\r\n        '[attr.tabindex]':      'isInteractive() && !disabled() ? \"0\" : null',\r\n        '[style.--matcha-card-media-aspect-ratio]': 'mediaAspectRatio()',\r\n        '[class.matcha-card]':              'true',\r\n        '[class.matcha-card--horizontal]':  'direction() === \"horizontal\"',\r\n        '[class.matcha-card--clickable]':   'isInteractive()',\r\n        '[class.matcha-card--selected]':    'selected()',\r\n        '[class.matcha-card--disabled]':    'disabled()',\r\n        '[class.matcha-card-border-left]':  'blockquote() === \"left\"',\r\n        '[class.matcha-card-border-right]': 'blockquote() === \"right\"',\r\n        '[class.loading]':                  'loading()',\r\n        '(click)':              'onHostClick($event)',\r\n        // `click` não dispara pro botão do meio — sem `auxclick` o clique da rolagem\r\n        // simplesmente não faz nada num card com link.\r\n        '(auxclick)':           'onHostAuxClick($event)',\r\n        '(keydown.enter)':      'onHostKey($event)',\r\n        '(keydown.space)':      'onHostKey($event)',\r\n    },\r\n})\r\nexport class MatchaCardComponent {\r\n    /** Cor semântica. accent/primary/success/warn/danger/info/fg/etc. */\r\n    readonly color = input<string>('surface');\r\n\r\n    /** Tipo canônico DSV3. surface | outline | alpha. */\r\n    readonly type = input<MatchaCardType | null>(null);\r\n\r\n    /** Layout direction. */\r\n    readonly direction = input<MatchaCardDirection>('vertical');\r\n\r\n    /** Escala padding+gap. sm (compacto) · md (default) · lg (largo). */\r\n    readonly size = input<MatchaCardSize, string>('medium', { transform: (v) => sizeAlias(v) as MatchaCardSize });\r\n\r\n    /** Card-as-button. role=button + (clicked) emit. */\r\n    readonly clickable = input(false, { transform: booleanAttribute });\r\n\r\n    /** URL pra navegação direta (full reload). Vira role=link. */\r\n    readonly href = input<string | null>(null);\r\n\r\n    /** Angular Router link. Vira role=link. Prioritário sobre href. */\r\n    readonly routerLink = input<string | unknown[] | null | undefined>(null);\r\n\r\n    /** Selected state (filter/multi-select pattern). Border accent + bg tint. */\r\n    readonly selected = input(false, { transform: booleanAttribute });\r\n\r\n    /** Disabled state. Bloqueia click + aria-disabled. Sobrepõe clickable/href. */\r\n    readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /** Skeleton loading state. Shimmer + aria-busy + pointer-events:none. */\r\n    readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n    /**\r\n     * Aspect ratio do media slot (CSS aspect-ratio value: '16/9' | '1/1' | etc).\r\n     * Garante uniformidade de altura em grids. Default null = altura natural da imagem.\r\n     */\r\n    readonly mediaAspectRatio = input<string | null>(null);\r\n\r\n    /** Alinhamento do footer slot. */\r\n    readonly footerAlign = input<MatchaCardFooterAlign>('end');\r\n\r\n    /** Gap interno do content slot. md=16 (default) · sm=8 · lg=24. */\r\n    readonly contentGap = input<MatchaCardContentGap>('md');\r\n\r\n    /** @deprecated Use [type]=\"alpha\". */\r\n    readonly alpha = input(false, { transform: booleanAttribute });\r\n\r\n    /** @deprecated Use [type]=\"outline\". */\r\n    readonly outline = input(false, { transform: booleanAttribute });\r\n\r\n    /** Adorno border colored. Não combine com [type]=\"outline\" — overlap. */\r\n    readonly blockquote = input<MatchaCardBlockquote>('none');\r\n\r\n    /** Cor da blockquote (semantic name). */\r\n    readonly blockquoteColor = input<string | null>(null);\r\n\r\n    /** Emitido em click/Enter/Space quando interativo. No-op em loading/disabled. */\r\n    readonly clicked = output<MouseEvent | KeyboardEvent>();\r\n\r\n    /** Tipo efetivo (canônico → legacy fallback). */\r\n    readonly effectiveType = computed<MatchaCardType>(() => {\r\n        const explicit = this.type();\r\n        if (explicit) return explicit;\r\n        if (this.alpha())   return 'alpha';\r\n        if (this.outline()) return 'outline';\r\n        return 'surface';\r\n    });\r\n\r\n    /** Card é interativo? clickable OR href OR routerLink. */\r\n    readonly isInteractive = computed<boolean>(() =>\r\n        this.clickable() || !!this.href() || this.routerLink() != null\r\n    );\r\n\r\n    /** Role efetivo: link (href/router) > button (clickable) > null. */\r\n    readonly computedRole = computed<string | null>(() => {\r\n        if (this.disabled()) return null; // disabled remove semantic role\r\n        if (this.href() || this.routerLink() != null) return 'link';\r\n        if (this.clickable()) return 'button';\r\n        return null;\r\n    });\r\n\r\n    private readonly router = inject(Router, { optional: true });\r\n\r\n    onHostClick(event: MouseEvent): void {\r\n        if (this.disabled() || this.loading()) return;\r\n        if (!this.isInteractive()) return;\r\n\r\n        // Permitir interactive children (botões nested) NÃO disparar o card click.\r\n        // Se o target original é um <button> ou <a>, deixa o evento dele rolar.\r\n        const target = event.target as HTMLElement | null;\r\n        if (target && target.closest('button, a, input, select, textarea')\r\n            && target.closest('matcha-card') !== target.closest('matcha-card')?.querySelector('matcha-card')) {\r\n            // Se tem button/a/input dentro do card, e não é o próprio card, deixa\r\n            // o handler nativo do elemento agir. Não emite (clicked) do card.\r\n            return;\r\n        }\r\n\r\n        const route = this.routerLink();\r\n        if (route != null) {\r\n            // Modificador ou botão do meio → nova aba, como faria uma âncora.\r\n            if (this.wantsNewTab(event)) {\r\n                const url = this.router?.serializeUrl(\r\n                    this.router.createUrlTree(Array.isArray(route) ? route : [route]),\r\n                );\r\n                if (url) window.open(url, '_blank');\r\n                return;\r\n            }\r\n            this.router?.navigate(Array.isArray(route) ? route : [route]);\r\n            this.clicked.emit(event);\r\n            return;\r\n        }\r\n        const href = this.href();\r\n        if (href) {\r\n            if (this.wantsNewTab(event)) {\r\n                window.open(href, '_blank');\r\n                return;\r\n            }\r\n            window.location.href = href;\r\n            this.clicked.emit(event);\r\n            return;\r\n        }\r\n        // clickable puro\r\n        this.clicked.emit(event);\r\n    }\r\n\r\n    /** Clique do meio — `click` não dispara pro botão 1, só `auxclick`.\r\n     *  Ligado pelo objeto `host` do decorator (convenção deste arquivo). */\r\n    onHostAuxClick(event: MouseEvent): void {\r\n        if (event.button !== 1) return;\r\n        if (this.disabled() || this.loading()) return;\r\n        if (this.routerLink() == null && !this.href()) return;\r\n        event.preventDefault();\r\n        this.onHostClick(event);\r\n    }\r\n\r\n    /** O usuário pediu outra aba? (ctrl/cmd/shift/alt ou botão do meio) */\r\n    private wantsNewTab(event: MouseEvent): boolean {\r\n        return event.ctrlKey || event.metaKey || event.shiftKey || event.altKey || event.button === 1;\r\n    }\r\n\r\n    onHostKey(event: KeyboardEvent): void {\r\n        if (this.disabled() || this.loading()) return;\r\n        if (!this.isInteractive()) return;\r\n        // Permitir Enter/Space em children interativos (sem capture do card)\r\n        const target = event.target as HTMLElement | null;\r\n        if (target && target !== event.currentTarget && target.matches('button, a, input, select, textarea, [role=\"button\"], [role=\"link\"]')) {\r\n            return;\r\n        }\r\n        event.preventDefault();\r\n        const route = this.routerLink();\r\n        if (route != null) {\r\n            this.router?.navigate(Array.isArray(route) ? route : [route]);\r\n        } else if (this.href()) {\r\n            window.location.href = this.href()!;\r\n        }\r\n        this.clicked.emit(event);\r\n    }\r\n\r\n    hasBlockquotePosition(): boolean {\r\n        const b = this.blockquote();\r\n        return b === 'left' || b === 'right';\r\n    }\r\n}\r\n","<!-- Estrutura:\r\n       :host (overflow:hidden, sem padding)\r\n         ├─ slot--header          (topo absoluto do card -- título esq + ações dir)\r\n         ├─ slot--media           (full-bleed em vertical · esq em horizontal)\r\n         └─ card__body            (wrapper com padding + gap uniformes)\r\n              ├─ slot--content\r\n              └─ slot--footer\r\n\r\n     Header é SEMPRE o elemento mais no topo (acima até da media) -- decisão\r\n     2026-08-04: cobre o padrão \"barra de título + ações, com mídia abaixo\"\r\n     (vários cards reais do painel precisam disso; antes só dava pra fazer\r\n     \"mídia no topo, título depois\" via [matcha-card-content]). Quem quer\r\n     título ABAIXO da mídia projeta o título dentro de [matcha-card-content]\r\n     -- o slot header continua existindo pra esse caso, só não é mais o único\r\n     jeito de ter um título no card.\r\n\r\n     Em vertical: header tem padding próprio (não mora dentro de card__body,\r\n     já que fica FORA/ANTES dela); body é flex-col com padding/gap; slots\r\n     vazios colapsam. Em horizontal: body vira `display: contents` e os\r\n     slots (incl. header, que agora é filho direto do host) viram grid items\r\n     diretos do host (placados via grid-template-areas).\r\n\r\n     Padding e gap controlados por --card-pad-x/y/--card-gap → consumer\r\n     override sem !important.\r\n-->\r\n<div class=\"matcha-card__slot matcha-card__slot--header\">\r\n    <div class=\"matcha-card__header-left\">\r\n        <ng-content select=\"[matcha-card-header]\"></ng-content>\r\n    </div>\r\n    <div class=\"matcha-card__header-actions\">\r\n        <ng-content select=\"[matcha-card-header-action]\"></ng-content>\r\n    </div>\r\n</div>\r\n<div class=\"matcha-card__slot matcha-card__slot--media\">\r\n    <ng-content select=\"[matcha-card-media]\"></ng-content>\r\n</div>\r\n<div class=\"matcha-card__body\">\r\n    <div class=\"matcha-card__slot matcha-card__slot--content\">\r\n        <!-- [matcha-card-content] explícito (canônico DSV3) + fallback default\r\n             pra back-compat com consumers que não usam o selector. -->\r\n        <ng-content select=\"[matcha-card-content]\"></ng-content>\r\n        <ng-content></ng-content>\r\n    </div>\r\n    <div class=\"matcha-card__slot matcha-card__slot--footer\">\r\n        <ng-content select=\"[matcha-card-footer]\"></ng-content>\r\n    </div>\r\n</div>\r\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[elevation]',\r\n    standalone: true\r\n})\r\nexport class MatchaElevationDirective {\r\n    @Input('elevation') elevation: number | string = 0; // Valor padrão para elevação é 0\r\n\r\n    constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {}\r\n\r\n    ngOnChanges() {\r\n        // Remove qualquer classe de elevação existente\r\n        for (let i = 0; i <= 24; i++) {\r\n            this._renderer.removeClass(this._elementRef.nativeElement, `elevation-z-${i}`);\r\n        }\r\n\r\n        // Converte para número se for string\r\n        const elevationValue = typeof this.elevation === 'string'\r\n            ? parseInt(this.elevation, 10)\r\n            : this.elevation;\r\n\r\n        // Adiciona a classe de elevação correspondente\r\n        if (elevationValue >= 1 && elevationValue <= 24) {\r\n            this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-${elevationValue}`);\r\n        } else {\r\n            this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-0`);\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaElevationDirective } from './elevation.directive';\r\n\r\n@NgModule({\r\n  imports: [MatchaElevationDirective],\r\n    exports: [MatchaElevationDirective],\r\n})\r\nexport class MatchaElevationModule {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ElementRef,\r\n    booleanAttribute,\r\n    computed,\r\n    inject,\r\n    input,\r\n    numberAttribute,\r\n    output,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent, MatchaIconSize } from '../../matcha-icon/icon.component';\r\nimport { sizeAlias } from '../../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaTitleType  = 'pill' | 'bullet' | 'icon' | 'none';\r\n/** Canonical sizes BY EXTENSION: tiny/small/medium/large/huge. Abbreviations (xs/sm/md/lg/xl)\r\n *  and numerics (1-7) are accepted as @deprecated aliases.\r\n *  Escala 22.x (reposicionada): medium 16/22 · large 18/24 · huge 20/28 — os antigos\r\n *  `title-sm`/`title-md` saíram da API (aceitos como @deprecated alias de mesmo valor)\r\n *  e os tamanhos display 32/40 não existem mais no componente. */\r\nexport type MatchaTitleSize  = 'tiny' | 'small' | 'medium' | 'large' | 'huge'\r\n    | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 1 | 2 | 3 | 4 | 5 | 6 | 7;\r\nexport type MatchaTitleColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info' | 'fg' | 'grey';\r\n\r\n/**\r\n * matcha-title — Title visual com decoração + skeleton state.\r\n *\r\n * SEMÂNTICA DE HEADING POR BAIXO DO CAPÔ (22.x): o dev não precisa lembrar de nada.\r\n *   1. `[level]` explícito (1-6) vence sempre; `[level]=\"0\"` desliga a semântica.\r\n *   2. Sem `[level]`, os tiers de título ganham heading pelo de/para do size:\r\n *      huge→1 · large→2 · medium→3. small/tiny NÃO viram heading por default —\r\n *      são ênfase de texto/chip (ex.: pill de status em tabela); use [level] quando\r\n *      forem título de verdade.\r\n *   3. Envolvido em h1-h6 nativo? O componente DETECTA e não seta role/aria-level\r\n *      (o wrapper já dá a semântica — sem duplo heading).\r\n *\r\n * Escala 22.x (reposicionada — titles menores por decisão de Design):\r\n *   • Sizes: tiny (12/16), small (14/20), medium (16/22, default), large (18/24), huge (20/28)\r\n *   • Types: pill (barra accent) · bullet (ponto) · icon · none\r\n *   • Cores: 6 semânticas DSV3 + fg/grey neutros\r\n * Todos Manrope Bold 700. Tokens: medium→title-sm, large→title-md, huge→title-lg.\r\n *\r\n * Os antigos `title-sm` (16/22) e `title-md` (18/24) saíram da API — `medium`/`large`\r\n * assumiram exatamente esses valores; como alias @deprecated eles ainda normalizam pro\r\n * nome novo SEM mudança visual. Os tamanhos display (32/40 e 40/48) saíram do\r\n * componente — display/hero é caso pros tokens `--matcha-text-display*` no consumidor.\r\n * TODO(canon): atualizar o componente matcha/title no Figma (14917:158) pra nova escala.\r\n *\r\n *   <!-- section header: heading h3 automático (de/para do medium) -->\r\n *   <matcha-title type=\"pill\" color=\"accent\">Título</matcha-title>\r\n *\r\n *   <!-- Icon clickable (sempre setar [clickable]=true se tiver listener) -->\r\n *   <matcha-title type=\"icon\" icon=\"edit\" [clickable]=\"true\"\r\n *                 (iconClick)=\"edit()\">\r\n *     Nome do membro\r\n *   </matcha-title>\r\n *\r\n * Numeric sizes (1-7) ainda funcionam como deprecated alias:\r\n *   1↔tiny, 2↔small, 3↔small (sem canon, falls back), 4↔medium, 5↔large, 6↔huge, 7↔huge (sem canon).\r\n *\r\n *   <!-- Truncamento nativo: cargo/nome longo quebra em até 2 linhas + \"…\" -->\r\n *   <matcha-title size=\"small\" [lineClamp]=\"2\">{{ cargo.nome }}</matcha-title>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-title',\r\n    templateUrl: './title.component.html',\r\n    styleUrls: ['./title.component.scss'],\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaIconComponent],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-title',\r\n        '[attr.size]': 'size()',\r\n        '[attr.type]': 'type()',\r\n        '[attr.color]': 'color()',\r\n        '[attr.icon]': 'icon() || null',\r\n        '[attr.loading]': 'loading() ? \"true\" : null',\r\n        '[attr.aria-busy]': 'loading() ? \"true\" : null',\r\n        '[attr.line-clamp]': 'lineClamp() > 0 ? lineClamp() : null',\r\n        '[style.--matcha-title-line-clamp]': 'lineClamp() > 0 ? lineClamp() : null',\r\n        // Heading semantic AUTOMÁTICA — [level] explícito vence; sem ele, de/para do\r\n        // size (huge→1, large→2, medium→3); wrapper h1-h6 nativo detectado suprime\r\n        // (sem duplo heading); [level]=\"0\" desliga. Ver effectiveLevel().\r\n        '[attr.role]': 'effectiveLevel() ? \"heading\" : null',\r\n        '[attr.aria-level]': 'effectiveLevel()',\r\n    },\r\n})\r\nexport class MatchaTitleComponent {\r\n    /** Cor da decoração (pill/bullet/icon). 8 opções estritas DSV3 — sem string fallback legacy.\r\n     *  Pra usar cor de attribute HTML (color=\"accent\"), Angular aceita string match dos literals. */\r\n    readonly color = input<MatchaTitleColor>('fg');\r\n\r\n    /** Tamanho — canônico extenso (tiny/small/medium/large/huge).\r\n     *  Default: 'medium' (16/22, section header).\r\n     *  Transform aceita abreviado (sm/md/lg…), numérico legacy (1-7) e os removidos\r\n     *  title-sm/title-md (mesmo valor dos novos medium/large) como alias @deprecated.\r\n     *  Runtime é sempre o nome extenso canônico. */\r\n    readonly size = input('medium' as 'tiny' | 'small' | 'medium' | 'large' | 'huge', {\r\n        transform: (v: unknown): 'tiny' | 'small' | 'medium' | 'large' | 'huge' => {\r\n            if (v === null || v === undefined || v === '') return 'medium';\r\n            const raw = String(v);\r\n            const mapped = sizeAlias(raw); // xs→tiny, sm→small, … ; extenso passa direto\r\n            if (mapped === 'tiny' || mapped === 'small' || mapped === 'medium'\r\n                || mapped === 'large' || mapped === 'huge') return mapped;\r\n            // Aliases @deprecated dos nomes removidos na escala 22.x — mapeiam pro nome\r\n            // novo de MESMO valor renderizado (title-sm=16/22→medium, title-md=18/24→large).\r\n            if (raw === 'title-sm') return 'medium';\r\n            if (raw === 'title-md') return 'large';\r\n            // Numeric legacy → extenso (deprecated alias).\r\n            const numericMap: Record<string, 'tiny' | 'small' | 'medium' | 'large' | 'huge'> = {\r\n                '1': 'tiny', '2': 'small', '3': 'small', '4': 'medium', '5': 'large', '6': 'huge', '7': 'huge',\r\n            };\r\n            return numericMap[raw] || 'medium';\r\n        },\r\n    });\r\n\r\n    /** Tipo de decoração à esquerda do texto. */\r\n    readonly type = input<MatchaTitleType>('pill');\r\n\r\n    /** Nome do ícone (sem prefixo matcha-). Aplicado apenas quando type=icon. */\r\n    readonly icon = input<string>('');\r\n\r\n    /** Loading state — substitui pill+texto por skeleton animado. */\r\n    readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n    /** Trunca o texto em N linhas com \"…\" (CSS line-clamp nativo). `0`/omitido =\r\n     *  sem truncamento — comportamento atual, texto cresce livremente (aditivo,\r\n     *  não muda nada pra quem já usa o componente sem este input).\r\n     *  Nome `lineClamp` (não `lines`): `lines` já existe em matcha-list-item com\r\n     *  semântica diferente (variante de layout, não truncamento) — reusar o nome\r\n     *  seria confuso. Ecoa a propriedade CSS e a utilitária `.line-clamp-{n}`\r\n     *  que o matcha-core já expõe pra outros contextos. */\r\n    readonly lineClamp = input(0, { transform: numberAttribute });\r\n\r\n    /** Sinaliza que o ícone é clickable — adiciona cursor pointer + role button.\r\n     *  Setar EXPLICITAMENTE quando tiver listener (iconClick); sem isso o ícone é decorativo. */\r\n    readonly clickable = input(false, { transform: booleanAttribute });\r\n\r\n    /** Nível ARIA do heading (1-6). Explícito vence o de/para automático do size;\r\n     *  `0` DESLIGA a semântica de heading (title puramente visual em qualquer size).\r\n     *  Sem setar (null), vale o de/para de effectiveLevel().\r\n     *  Type parameter omitido pra que o TS infira do transform (input<T> + transform incompatíveis). */\r\n    readonly level = input(null as number | null, { transform: (v: unknown): number | null => {\r\n        if (v === null || v === undefined || v === '') return null;\r\n        const n = Number(v);\r\n        if (!Number.isFinite(n)) return null;\r\n        if (n <= 0) return 0; // opt-out explícito\r\n        return Math.min(6, Math.floor(n));\r\n    }});\r\n\r\n    private readonly host: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n    /** Wrapper h1-h6 nativo detectado? Avaliado uma vez, lazy — no primeiro run dos\r\n     *  host bindings o elemento já está anexado ao pai. Estático por design: mover\r\n     *  um title entre wrappers em runtime não é caso real de uso. */\r\n    private _wrappedInNativeHeading?: boolean;\r\n    private get wrappedInNativeHeading(): boolean {\r\n        return this._wrappedInNativeHeading ??=\r\n            /^H[1-6]$/.test(this.host.nativeElement.parentElement?.tagName ?? '');\r\n    }\r\n\r\n    /** De/para default size→level (decisão de Design, 2026-07-21): só os tiers de\r\n     *  TÍTULO ganham heading automático. small/tiny são ênfase de texto/chip\r\n     *  (ex.: pill de status em listagem — dezenas por tela) e ficam visuais até\r\n     *  o consumidor setar [level] explícito. */\r\n    private static readonly DEFAULT_LEVEL_BY_SIZE: Readonly<Partial<Record<string, number>>> = {\r\n        huge: 1, large: 2, medium: 3,\r\n    };\r\n\r\n    /** Nível efetivo do heading — a regra \"por baixo do capô\":\r\n     *  [level]=0 → sem semântica · [level]=1-6 → vence · envolvido em h1-h6 nativo\r\n     *  → suprime (wrapper já é o heading) · senão → de/para do size. */\r\n    readonly effectiveLevel = computed<number | null>(() => {\r\n        const explicit = this.level();\r\n        if (explicit === 0) return null;\r\n        if (explicit !== null) return explicit;\r\n        if (this.wrappedInNativeHeading) return null;\r\n        return MatchaTitleComponent.DEFAULT_LEVEL_BY_SIZE[this.size()] ?? null;\r\n    });\r\n\r\n    /** Disparado em click no ícone. Só faz sentido com type=icon E [clickable]=true. */\r\n    readonly iconClick = output<{ icon: string }>();\r\n\r\n    /** Tamanho do matcha-icon proporcional ao title size:\r\n     *   tiny/small/medium/large → icon sm (16px) — text 12-18px\r\n     *   huge                    → icon md (24px) — text 20px\r\n     *\r\n     *  Mantém a UX call da escala anterior: em 20px de texto o ícone 16 fica\r\n     *  afogado → sobe pra 24 (md). Nos demais, 16 (sm) preserva a hierarquia. */\r\n    readonly iconSize = computed<MatchaIconSize>(() => {\r\n        return this.size() === 'huge' ? 'md' : 'sm';\r\n    });\r\n\r\n    /** Handler de click — emite iconClick se clickable + type=icon. */\r\n    onIconClick(): void {\r\n        if (this.clickable() && this.type() === 'icon') {\r\n            this.iconClick.emit({ icon: this.icon() });\r\n        }\r\n    }\r\n}\r\n","<!-- Loading: 2 skeleton blocks no lugar do sign + texto -->\r\n<ng-container *ngIf=\"loading(); else liveContent\">\r\n    <span class=\"matcha-title__skeleton matcha-title__skeleton--sign skeleton-animated-background\"></span>\r\n    <span class=\"matcha-title__skeleton matcha-title__skeleton--text skeleton-animated-background\">&nbsp;</span>\r\n</ng-container>\r\n\r\n<!-- Estado normal: sign (pill/bullet/icon/none) + texto projetado -->\r\n<ng-template #liveContent>\r\n    <span class=\"matcha-title__sign\"\r\n          [class.matcha-title__sign--clickable]=\"clickable() && type() === 'icon'\"\r\n          [attr.role]=\"clickable() && type() === 'icon' ? 'button' : null\"\r\n          [attr.tabindex]=\"clickable() && type() === 'icon' ? 0 : null\"\r\n          (click)=\"onIconClick()\"\r\n          (keydown.enter)=\"onIconClick()\"\r\n          (keydown.space)=\"onIconClick(); $event.preventDefault()\">\r\n\r\n        <span *ngIf=\"type() === 'pill'\" class=\"matcha-title__pill\" aria-hidden=\"true\"></span>\r\n        <span *ngIf=\"type() === 'bullet'\" class=\"matcha-title__bullet\" aria-hidden=\"true\"></span>\r\n        <!-- Icon canonical DSV3: matcha-icon component (SVG do Figma).\r\n             [filled] omitido pra usar variante OUTLINED por padrão (regra DSV3).\r\n             [size] mapeado proporcional ao title size (tiny-large → sm/16, huge → md/24). -->\r\n        <matcha-icon *ngIf=\"type() === 'icon' && icon()\"\r\n                     class=\"matcha-title__icon\"\r\n                     [name]=\"icon()\"\r\n                     [size]=\"iconSize()\"\r\n                     aria-hidden=\"true\">\r\n        </matcha-icon>\r\n    </span>\r\n\r\n    <span class=\"matcha-title__text\">\r\n        <ng-content></ng-content>\r\n    </span>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaTitleComponent } from './title/title.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaTitleComponent],\r\n    exports: [MatchaTitleComponent],\r\n})\r\nexport class MatchaTitleModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaCardComponent } from './card/card.component';\r\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\r\nimport { MatchaTitleModule } from '../matcha-title/title.module';\r\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaCardComponent,\r\n    MatchaElevationModule,\r\n    MatchaIconModule,\r\n    MatchaTitleModule,\r\n    MatchaDividerModule,\r\n    MatchaTooltipModule\r\n  ],\r\n    exports: [MatchaCardComponent],\r\n})\r\nexport class MatchaCardModule {}\r\n","import {\r\n  Component,\r\n  ChangeDetectionStrategy,\r\n  booleanAttribute,\r\n  computed,\r\n  input,\r\n} from '@angular/core';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaHintTextType = 'error' | 'warning' | 'info' | 'success';\r\n// Canonical size by extension. Abbreviations (sm/md) are RESERVED for breakpoints —\r\n// accepted here only as @deprecated aliases.\r\nexport type MatchaHintTextSize = 'small' | 'medium';\r\n\r\nconst SIZE_ALIASES: Record<string, MatchaHintTextSize> = {\r\n  tiny:   'small',\r\n  sm:     'small',\r\n  md:     'medium',\r\n};\r\n\r\nconst normalizeSize = (v: string | null | undefined): MatchaHintTextSize => {\r\n  if (!v) return 'small';\r\n  const aliased = SIZE_ALIASES[v];\r\n  if (aliased) return aliased;\r\n  return v === 'medium' ? 'medium' : 'small';\r\n};\r\n\r\nconst ICON_BY_TYPE: Record<MatchaHintTextType, string> = {\r\n  error:   'warning',\r\n  warning: 'warning',\r\n  info:    'info',\r\n  success: 'check',\r\n};\r\n\r\n/**\r\n * matcha-hint-text — Texto de feedback contextual com ícone.\r\n *\r\n * Tipicamente abaixo de um campo de formulário para mostrar erro de validação,\r\n * aviso, informação ou confirmação de sucesso. Pode ser usado standalone em\r\n * qualquer contexto (toast inline, status leve em listas, etc.).\r\n *\r\n * Uso:\r\n *   <matcha-hint-text type=\"error\">Email inválido</matcha-hint-text>\r\n *   <matcha-hint-text type=\"success\" size=\"medium\">Salvo com sucesso</matcha-hint-text>\r\n *\r\n * Tamanhos canônicos (Figma DSV3 matcha/hint-text):\r\n *  - 'small'  — 12px / leading 16 (padrão, abaixo de form-field)\r\n *  - 'medium' — 14px / leading 20 (containers maiores, mensagens em destaque)\r\n *\r\n * Tipos (cor + ícone):\r\n *  - 'error'   → ícone warning · cor feedback/danger\r\n *  - 'warning' → ícone warning · cor feedback/warn-fill\r\n *  - 'info'    → ícone info    · cor feedback/info\r\n *  - 'success' → ícone check   · cor feedback/success-fill\r\n *\r\n * A11y: `live=true` ativa role=\"alert\" (erro) ou role=\"status\" + aria-live=\"polite\"\r\n * (demais), recomendado quando a mensagem aparece em resposta a uma ação do\r\n * usuário (validação após blur, salvamento, etc.). O ícone é decorativo.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-hint-text',\r\n  standalone: true,\r\n  imports: [MatchaIconComponent],\r\n  templateUrl: './hint-text.component.html',\r\n  styleUrls: ['./hint-text.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    'class': 'matcha-hint-text',\r\n    '[attr.type]': 'type()',\r\n    '[attr.size]': 'size()',\r\n    '[attr.role]': 'live() ? roleByType() : null',\r\n    '[attr.aria-live]': 'live() ? (type() === \"error\" ? \"assertive\" : \"polite\") : null',\r\n  },\r\n})\r\nexport class MatchaHintTextComponent {\r\n  /** Tipo semântico — define ícone e cor. */\r\n  type = input<MatchaHintTextType>('error');\r\n\r\n  /** Tamanho. Padrão 'small' (abaixo de form-field). Use 'medium' em destaque. */\r\n  size = input<MatchaHintTextSize>('small', { transform: normalizeSize as any });\r\n\r\n  /**\r\n   * Ativa anúncio dinâmico para leitores de tela. Use quando a mensagem\r\n   * aparece após uma ação (validação, salvamento). Padrão estático para evitar\r\n   * leitura repetida em mensagens já presentes na renderização inicial.\r\n   */\r\n  live = input(false, { transform: booleanAttribute });\r\n\r\n  /** Nome do ícone derivado do tipo. */\r\n  readonly iconName = computed(() => ICON_BY_TYPE[this.type()]);\r\n\r\n  /** role=\"alert\" para erro, role=\"status\" para os demais. */\r\n  readonly roleByType = computed(() => this.type() === 'error' ? 'alert' : 'status');\r\n}\r\n","<matcha-icon class=\"matcha-hint-text__icon\" [name]=\"iconName()\" aria-hidden=\"true\"></matcha-icon>\r\n<span class=\"matcha-hint-text__content\"><ng-content></ng-content></span>\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\n\n/**\n * Tokens canônicos --matcha-text/* pra Corpo, Labels e Utilitários (Display/Hero e\n * Títulos ficam de fora — Títulos é `matcha-title`; Display/Hero é caso pros tokens\n * `--matcha-text-display*` direto no elemento, por decisão de Design registrada em\n * conventions.md, ou um componente dedicado no futuro, mas não este).\n *\n * `body`/`label` são alias do respectivo `-md` (default de cada grupo) — aceitos no\n * input, normalizados no transform de `variant` abaixo. O host class SEMPRE reflete\n * a forma canônica (`text-body-md`, nunca `text-body`).\n */\nexport type MatchaTextVariant =\n    | 'body-lg' | 'body-md' | 'body-sm' | 'p-tiny'\n    | 'label-lg' | 'label-md' | 'label-sm'\n    | 'overline';\ntype MatchaTextVariantInput = MatchaTextVariant | 'body' | 'label';\n\n/**\n * `base`/`caption` em vez de `primary`/`secondary` (nomes reais dos tokens\n * --matcha-color-text-primary/-secondary) DE PROPÓSITO — esses dois nomes colidem em\n * significado com o vocabulário de ROLE já usado em outro lugar da DS (`primary` =\n * azul de marca, ex. matcha-button color=\"primary\"). O rename do token em si é\n * discussão separada com Design (ver docs/audits/backlog.json).\n */\nexport type MatchaTextColor =\n    | 'base' | 'caption' | 'label' | 'hint' | 'placeholder'\n    | 'muted' | 'inverse' | 'static-dark' | 'static-light';\n\nconst LABEL_VARIANTS = new Set<MatchaTextVariant>(['label-lg', 'label-md', 'label-sm']);\n\n/**\n * matcha-text — atomo de texto pra Corpo (body-lg/md/sm, p-tiny), Labels\n * (label-lg/md/sm) e Utilitários (overline). Puramente visual: aplica a classe\n * `.text-*` já gerada pelo matcha-core (fonte única de verdade dos tokens de\n * tipografia) e pinta a cor via `--matcha-color-text-*` (runtime-adaptável a\n * light/dark).\n *\n *   <matcha-text variant=\"body-md\" color=\"caption\">Texto de corpo</matcha-text>\n *   <matcha-text variant=\"label-sm\">Badge</matcha-text>\n *   <matcha-text variant=\"overline\" color=\"muted\">Categoria</matcha-text>\n */\n@Component({\n    selector: 'matcha-text',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    host: {\n        '[class]': 'hostClass()',\n        '[attr.color]': 'effectiveColor()',\n    },\n    template: '<ng-content></ng-content>',\n    styleUrl: './matcha-text.component.scss',\n})\nexport class MatchaTextComponent {\n    /** Estilo de texto. Default `body-md` — \"90% dos textos\" (conventions.md). */\n    readonly variant = input('body-md' as MatchaTextVariant, {\n        transform: (v: MatchaTextVariantInput): MatchaTextVariant => {\n            if (v === 'body') return 'body-md';\n            if (v === 'label') return 'label-md';\n            return v;\n        },\n    });\n\n    /** Cor do texto — 9 tokens `text/*`, todos runtime-adaptáveis a light/dark\n     *  exceto `static-dark`/`static-light` (estáticos por design). `null`\n     *  (default) delega pro de/para de `effectiveColor` conforme o grupo do\n     *  `variant` — setar explicitamente sempre vence. */\n    readonly color = input<MatchaTextColor | null>(null);\n\n    readonly hostClass = computed(() => `matcha-text text-${this.variant()}`);\n\n    /** De/para cor→grupo quando `color` não é setado explicitamente (decisão de\n     *  Design, 2026-07-24): body → base, label → label, overline → muted. Cada\n     *  grupo tem a cor que combina com o uso real do token (label-* já é a cor\n     *  de rótulo de formulário; overline é microcopy discreta). */\n    readonly effectiveColor = computed<MatchaTextColor>(() => {\n        const explicit = this.color();\n        if (explicit !== null) return explicit;\n        if (LABEL_VARIANTS.has(this.variant())) return 'label';\n        if (this.variant() === 'overline') return 'muted';\n        return 'base';\n    });\n}\n","import { Directive } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\nimport { MatchaValidators } from './matcha-validators';\r\n\r\n/**\r\n * matchaEmail — Auto-validação de email em `<input type=\"email\">`.\r\n *\r\n * Aplica-se automaticamente pelo seletor (sem precisar adicionar atributo).\r\n * Funciona com Reactive Forms (formControlName) ou Template-driven (ngModel).\r\n *\r\n * Exemplo:\r\n *   <input type=\"email\" formControlName=\"email\" />       // ✅ valida automático\r\n *   <input type=\"email\" [(ngModel)]=\"email\" />           // ✅ valida automático\r\n *   <input type=\"email\" />                               // sem binding: não valida\r\n *\r\n * Retorna `{ email: true }` quando o valor existe e é inválido.\r\n * Valores vazios retornam `null` (use `Validators.required` em combo).\r\n */\r\n@Directive({\r\n    selector: 'input[type=\"email\"]',\r\n    standalone: true,\r\n    providers: [{\r\n        provide: NG_VALIDATORS,\r\n        useExisting: MatchaEmailValidatorDirective,\r\n        multi: true\r\n    }]\r\n})\r\nexport class MatchaEmailValidatorDirective implements Validator {\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return MatchaValidators.email(control);\r\n    }\r\n}\r\n","import { Directive, ElementRef, OnInit, OnDestroy, Renderer2, input, inject } from '@angular/core';\r\n\r\n/**\r\n * matchaPasswordToggle — Auto-aplica em `<input type=\"password\">`.\r\n *\r\n * Injeta um botão irmão (à direita do input) com ícone de olho que alterna\r\n * entre `type=\"password\"` e `type=\"text\"`, permitindo revelar/ocultar a senha.\r\n *\r\n * Visual: Figma matcha/field/password (ícone 16/20/24 por size do form-field,\r\n * cor `--matcha-color-text-placeholder` #9AA0A6).\r\n *\r\n * Opt-out: use `<input type=\"password\" noMatchaPasswordToggle>` para desabilitar.\r\n */\r\n@Directive({\r\n    selector: 'input[type=\"password\"]:not([noMatchaPasswordToggle])',\r\n    standalone: true\r\n})\r\nexport class MatchaPasswordToggleDirective implements OnInit, OnDestroy {\r\n    /** aria-label do botão quando a senha está ESCONDIDA (ação = mostrar). */\r\n    showLabel = input<string>('Mostrar senha');\r\n    /** aria-label do botão quando a senha está VISÍVEL (ação = esconder). */\r\n    hideLabel = input<string>('Esconder senha');\r\n\r\n    private toggleButton: HTMLButtonElement | null = null;\r\n    private iconSpan: HTMLSpanElement | null = null;\r\n    private clickHandler: (() => void) | null = null;\r\n    private isRevealed = false;\r\n\r\n    private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n    private renderer = inject(Renderer2);\r\n\r\n    ngOnInit(): void {\r\n        const input = this.el.nativeElement;\r\n        const parent = input.parentElement;\r\n        if (!parent) return;\r\n\r\n        // Cria botão do olho\r\n        const button = this.renderer.createElement('button') as HTMLButtonElement;\r\n        this.renderer.setAttribute(button, 'type', 'button');\r\n        this.renderer.setAttribute(button, 'tabindex', '0');\r\n        this.renderer.setAttribute(button, 'aria-label', this.showLabel());\r\n        this.renderer.setAttribute(button, 'aria-pressed', 'false');\r\n        this.renderer.addClass(button, 'matcha-password-toggle-button');\r\n\r\n        // Herda disabled do input (estado inicial)\r\n        if (input.disabled) {\r\n            this.renderer.setAttribute(button, 'disabled', '');\r\n        }\r\n\r\n        // Ícone\r\n        const span = this.renderer.createElement('span') as HTMLSpanElement;\r\n        this.renderer.addClass(span, 'i-matcha-visibility-on');\r\n        this.renderer.appendChild(button, span);\r\n\r\n        // Insere IMEDIATAMENTE APÓS o input (sibling)\r\n        const next = input.nextSibling;\r\n        if (next) this.renderer.insertBefore(parent, button, next);\r\n        else this.renderer.appendChild(parent, button);\r\n\r\n        this.toggleButton = button;\r\n        this.iconSpan = span;\r\n\r\n        // Click handler\r\n        this.clickHandler = () => this.toggle();\r\n        button.addEventListener('click', this.clickHandler);\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        if (this.toggleButton && this.clickHandler) {\r\n            this.toggleButton.removeEventListener('click', this.clickHandler);\r\n        }\r\n        if (this.toggleButton?.parentElement) {\r\n            this.renderer.removeChild(this.toggleButton.parentElement, this.toggleButton);\r\n        }\r\n        this.toggleButton = null;\r\n        this.iconSpan = null;\r\n        this.clickHandler = null;\r\n    }\r\n\r\n    private toggle(): void {\r\n        const input = this.el.nativeElement;\r\n        if (input.disabled) return;\r\n\r\n        this.isRevealed = !this.isRevealed;\r\n        this.renderer.setAttribute(input, 'type', this.isRevealed ? 'text' : 'password');\r\n\r\n        if (this.iconSpan) {\r\n            if (this.isRevealed) {\r\n                this.renderer.removeClass(this.iconSpan, 'i-matcha-visibility-on');\r\n                this.renderer.addClass(this.iconSpan, 'i-matcha-visibility-off');\r\n            } else {\r\n                this.renderer.removeClass(this.iconSpan, 'i-matcha-visibility-off');\r\n                this.renderer.addClass(this.iconSpan, 'i-matcha-visibility-on');\r\n            }\r\n        }\r\n\r\n        // A11y: aria-pressed anuncia estado atual; aria-label descreve a próxima ação.\r\n        if (this.toggleButton) {\r\n            this.renderer.setAttribute(this.toggleButton, 'aria-pressed', String(this.isRevealed));\r\n            this.renderer.setAttribute(\r\n                this.toggleButton,\r\n                'aria-label',\r\n                this.isRevealed ? this.hideLabel() : this.showLabel()\r\n            );\r\n        }\r\n\r\n        // Devolve foco pro input (UX: continuar digitando)\r\n        input.focus();\r\n    }\r\n}\r\n","import {\r\n    Directive, ElementRef, OnInit, OnDestroy, Renderer2,\r\n    input, effect, booleanAttribute\r\n} from '@angular/core';\r\n\r\n/**\r\n * matchaClearButton — Injeta um botão (×) ao lado do input quando há valor.\r\n *\r\n * Auto-aplica em `input[type=\"search\"]:not([noMatchaClearButton])`.\r\n * Pode ser aplicado explicitamente em qualquer input via `matchaClearButton`.\r\n *\r\n * Click no × limpa o valor e dispara `input` + `change` events nativos\r\n * (formControlName/ngModel reagem automaticamente).\r\n *\r\n *   <input type=\"search\" />                          // auto-aplica (ligado)\r\n *   <input type=\"text\" matchaClearButton />          // explicit (ligado)\r\n *   <input type=\"text\" [matchaClearButton]=\"flag\" /> // controle runtime\r\n *   <input type=\"search\" noMatchaClearButton />      // opt-out estático\r\n */\r\n@Directive({\r\n    selector: 'input[type=\"search\"]:not([noMatchaClearButton]), input[matchaClearButton]',\r\n    standalone: true\r\n})\r\nexport class MatchaClearButtonDirective implements OnInit, OnDestroy {\r\n    /** Liga/desliga em runtime. Default `true`. Usa booleanAttribute pra\r\n     *  tratar `matchaClearButton` (sem valor) como `true`. */\r\n    enabled = input(true, { alias: 'matchaClearButton', transform: booleanAttribute });\r\n\r\n    private button: HTMLButtonElement | null = null;\r\n    private clickHandler: (() => void) | null = null;\r\n    private inputHandler: (() => void) | null = null;\r\n    private escHandler: ((e: KeyboardEvent) => void) | null = null;\r\n    /** MutationObserver pra detectar mudanças programáticas no atributo `value`\r\n     *  (ex: ngModel writeValue restaurando estado vindo de URL/storage). Sem\r\n     *  isso, o X fica oculto mesmo com valor presente. */\r\n    private valueObserver: MutationObserver | null = null;\r\n    /** Patched property descriptor pra hook na atribuição direta `input.value = X`.\r\n     *  ngModel/FormControl usam essa via, que NÃO dispara `input` event nativo. */\r\n    private valuePropertyPatched = false;\r\n\r\n    constructor(\r\n        private el: ElementRef<HTMLInputElement>,\r\n        private renderer: Renderer2\r\n    ) {\r\n        // Re-sync visibilidade quando `enabled` muda em runtime.\r\n        effect(() => { this.enabled(); this.syncVisibility(); });\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        const input = this.el.nativeElement;\r\n        const parent = input.parentElement;\r\n        if (!parent) return;\r\n\r\n        const btn = this.renderer.createElement('button') as HTMLButtonElement;\r\n        this.renderer.setAttribute(btn, 'type', 'button');\r\n        this.renderer.setAttribute(btn, 'tabindex', '0');\r\n        this.renderer.setAttribute(btn, 'aria-label', 'Limpar');\r\n        this.renderer.addClass(btn, 'matcha-clear-button');\r\n\r\n        const icon = this.renderer.createElement('span') as HTMLSpanElement;\r\n        this.renderer.addClass(icon, 'i-matcha-action_close');\r\n        this.renderer.setAttribute(icon, 'aria-hidden', 'true');\r\n        this.renderer.appendChild(btn, icon);\r\n\r\n        // Insere logo após o input\r\n        const next = input.nextSibling;\r\n        if (next) this.renderer.insertBefore(parent, btn, next);\r\n        else this.renderer.appendChild(parent, btn);\r\n\r\n        this.button = btn;\r\n\r\n        // Visibilidade controlada pela presença do value\r\n        this.syncVisibility();\r\n\r\n        // Listeners\r\n        this.clickHandler = () => this.clear();\r\n        this.inputHandler = () => this.syncVisibility();\r\n        // Esc no input focado limpa o valor (convenção web de search inputs).\r\n        // Aplicado também em text/email/password/search — se habilitado, Esc vira atalho de limpar.\r\n        this.escHandler = (e) => {\r\n            if (e.key !== 'Escape') return;\r\n            if (!this.enabled()) return;\r\n            if (!input.value) return;\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            this.clear();\r\n        };\r\n        btn.addEventListener('click', this.clickHandler);\r\n        input.addEventListener('input', this.inputHandler);\r\n        input.addEventListener('keydown', this.escHandler);\r\n\r\n        // Detecta mudanças programáticas no value (ngModel writeValue, FormControl\r\n        // patchValue, atribuição direta). Sem isso, restaurar valor via URL/storage\r\n        // deixa o X oculto porque nenhum `input` event dispara.\r\n        this.patchValueProperty(input);\r\n\r\n        // Backup observer: também observa mudança no atributo `value` (raro mas\r\n        // possível via `input.setAttribute('value', X)`).\r\n        this.valueObserver = new MutationObserver(() => this.syncVisibility());\r\n        this.valueObserver.observe(input, { attributes: true, attributeFilter: ['value'] });\r\n    }\r\n\r\n    /** Hook na atribuição `input.value = X`: chama syncVisibility após cada set.\r\n     *  Necessário porque ngModel writeValue chama `element.value = X` diretamente,\r\n     *  o que NÃO dispara `input` ou `change` events nativos. */\r\n    private patchValueProperty(input: HTMLInputElement): void {\r\n        if (this.valuePropertyPatched) return;\r\n        const proto = HTMLInputElement.prototype;\r\n        const desc = Object.getOwnPropertyDescriptor(proto, 'value');\r\n        if (!desc || !desc.set) return;\r\n        const origSet = desc.set;\r\n        const origGet = desc.get!;\r\n        const self = this;\r\n        Object.defineProperty(input, 'value', {\r\n            configurable: true,\r\n            get() { return origGet.call(this); },\r\n            set(v: string) {\r\n                origSet.call(this, v);\r\n                // Defer pra evitar layout thrashing dentro do mesmo tick.\r\n                queueMicrotask(() => self.syncVisibility());\r\n            },\r\n        });\r\n        this.valuePropertyPatched = true;\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        const input = this.el.nativeElement;\r\n        if (this.button && this.clickHandler) this.button.removeEventListener('click', this.clickHandler);\r\n        if (this.inputHandler) input.removeEventListener('input', this.inputHandler);\r\n        if (this.escHandler)   input.removeEventListener('keydown', this.escHandler);\r\n        if (this.valueObserver) {\r\n            this.valueObserver.disconnect();\r\n            this.valueObserver = null;\r\n        }\r\n        if (this.button?.parentElement) {\r\n            this.renderer.removeChild(this.button.parentElement, this.button);\r\n        }\r\n        this.button = null;\r\n        this.clickHandler = this.inputHandler = this.escHandler = null;\r\n    }\r\n\r\n    private clear(): void {\r\n        const input = this.el.nativeElement;\r\n        if (input.disabled) return;\r\n        input.value = '';\r\n        input.dispatchEvent(new Event('input', { bubbles: true }));\r\n        input.dispatchEvent(new Event('change', { bubbles: true }));\r\n        this.syncVisibility();\r\n        input.focus();\r\n    }\r\n\r\n    private syncVisibility(): void {\r\n        if (!this.button) return;\r\n        const show = this.enabled() && !!this.el.nativeElement.value;\r\n        this.renderer.setStyle(this.button, 'display', show ? 'inline-flex' : 'none');\r\n        // Classe sinaliza pro form-field via CSS :has() ocultar ícones\r\n        // suffix default (ex: lupa de search) — CSS não consegue checar\r\n        // `style=\"display: none\"` inline, então usamos classe.\r\n        if (show) this.renderer.addClass(this.button, 'matcha-clear-button--visible');\r\n        else      this.renderer.removeClass(this.button, 'matcha-clear-button--visible');\r\n    }\r\n}\r\n","import {\r\n    Directive, ElementRef, OnInit, OnDestroy, Renderer2,\r\n    input, effect, booleanAttribute\r\n} from '@angular/core';\r\n\r\n/**\r\n * matchaAutoGrow — Faz um `<textarea>` crescer conforme o conteúdo, com piso (`minRows`)\r\n * e teto (`maxRows`). Ao atingir `maxRows`, passa a rolar (scroll interno).\r\n *\r\n * Comportamento:\r\n *   - Mede `scrollHeight` a cada input e ajusta `height` respeitando min/max.\r\n *   - Desliga resize nativo (`resize: none`) pra evitar conflito.\r\n *   - Adiciona class `matcha-autogrow` pra SCSS conseguir override (remover `height: 100%`).\r\n *\r\n * Uso:\r\n *   <textarea matchaAutoGrow></textarea>                             // default min=2 max=8\r\n *   <textarea [matchaAutoGrow]=\"true\" minRows=\"3\" maxRows=\"10\" ></textarea>\r\n *   <textarea [matchaAutoGrow]=\"false\"></textarea>                    // desliga\r\n */\r\n@Directive({\r\n    selector: 'textarea[matchaAutoGrow]',\r\n    standalone: true\r\n})\r\nexport class MatchaAutoGrowDirective implements OnInit, OnDestroy {\r\n    /** Liga/desliga em runtime. Default `true` (uso clássico: `<textarea matchaAutoGrow>`). */\r\n    enabled = input(true, { alias: 'matchaAutoGrow', transform: booleanAttribute });\r\n    /** Linhas mínimas — altura de piso. Default 2. */\r\n    minRows = input<number>(2);\r\n    /** Linhas máximas — a partir daí rola. Default 8. */\r\n    maxRows = input<number>(8);\r\n\r\n    private inputHandler: (() => void) | null = null;\r\n    private resizeObserver: ResizeObserver | null = null;\r\n    /** Cache do line-height computado. Recalculado em ngOnInit e ResizeObserver (font-size pode mudar). */\r\n    private lineHeight = 0;\r\n\r\n    constructor(\r\n        private el: ElementRef<HTMLTextAreaElement>,\r\n        private renderer: Renderer2\r\n    ) {\r\n        effect(() => {\r\n            // Re-aplica quando enabled/minRows/maxRows mudam.\r\n            this.enabled(); this.minRows(); this.maxRows();\r\n            this.apply();\r\n        });\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        const ta = this.el.nativeElement;\r\n\r\n        this.inputHandler = () => this.apply();\r\n        ta.addEventListener('input', this.inputHandler);\r\n\r\n        // Re-calcula quando o textarea muda de tamanho (responsive, parent resize).\r\n        this.resizeObserver = new ResizeObserver(() => this.apply());\r\n        this.resizeObserver.observe(ta);\r\n\r\n        this.apply();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        const ta = this.el.nativeElement;\r\n        if (this.inputHandler) ta.removeEventListener('input', this.inputHandler);\r\n        if (this.resizeObserver) { this.resizeObserver.disconnect(); this.resizeObserver = null; }\r\n    }\r\n\r\n    private apply(): void {\r\n        const ta = this.el.nativeElement;\r\n\r\n        // Desligado: limpa overrides e deixa CSS natural\r\n        if (!this.enabled()) {\r\n            this.renderer.removeClass(ta, 'matcha-autogrow');\r\n            this.renderer.removeStyle(ta, 'height');\r\n            this.renderer.removeStyle(ta, 'overflow-y');\r\n            return;\r\n        }\r\n\r\n        this.renderer.addClass(ta, 'matcha-autogrow');\r\n\r\n        // Mede line-height real (pode variar por size sm/md/lg).\r\n        if (!this.lineHeight) {\r\n            const cs = getComputedStyle(ta);\r\n            this.lineHeight = parseFloat(cs.lineHeight) || parseFloat(cs.fontSize) * 1.4 || 20;\r\n        }\r\n\r\n        const min = this.minRows() * this.lineHeight;\r\n        const max = this.maxRows() * this.lineHeight;\r\n\r\n        // Zera altura pra medir scrollHeight real (sem altura previa inflando).\r\n        this.renderer.setStyle(ta, 'height', 'auto');\r\n        const needed = ta.scrollHeight;\r\n\r\n        const clamped = Math.max(min, Math.min(max, needed));\r\n        this.renderer.setStyle(ta, 'height', `${clamped}px`);\r\n        this.renderer.setStyle(ta, 'overflow-y', needed > max ? 'auto' : 'hidden');\r\n    }\r\n}\r\n","import { Directive, ElementRef, NgZone, OnInit, OnDestroy, Renderer2, input, inject } from '@angular/core';\r\n\r\n/**\r\n * matchaCapsLockHint — Auto-aplica em `<input type=\"password\">`.\r\n *\r\n * Detecta Caps Lock via `KeyboardEvent.getModifierState('CapsLock')` em `keydown`\r\n * enquanto o input está focado. Injeta um indicador inline ao lado do input\r\n * (antes dos botões) com ícone + texto. Some quando desativa ou perde foco.\r\n *\r\n * Motivação: \"por que meu login tá falhando\" — Caps Lock é a causa #1 silenciosa\r\n * em forms de senha. Pattern usado por Microsoft/Stripe/GitHub login.\r\n *\r\n * Opt-out: `noMatchaCapsLockHint`.\r\n */\r\n@Directive({\r\n    selector: 'input[type=\"password\"]:not([noMatchaCapsLockHint])',\r\n    standalone: true\r\n})\r\nexport class MatchaCapsLockHintDirective implements OnInit, OnDestroy {\r\n    /** Texto do aviso. */\r\n    label = input<string>('Caps Lock ativado');\r\n\r\n    private hint: HTMLSpanElement | null = null;\r\n    private keyHandler: ((e: KeyboardEvent) => void) | null = null;\r\n    private blurHandler: (() => void) | null = null;\r\n\r\n    private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n    private renderer = inject(Renderer2);\r\n    private zone = inject(NgZone);\r\n\r\n    ngOnInit(): void {\r\n        const input = this.el.nativeElement;\r\n        const fieldBox = input.closest('.matcha-form-field');\r\n        const wrapper = fieldBox?.parentElement;\r\n        if (!wrapper) return;\r\n\r\n        // Cria elemento do hint (escondido inicialmente). Anexa no wrapper — mesmo lugar do\r\n        // char counter — pra aparecer abaixo do field, alinhado com a estrutura de hint/error.\r\n        const span = this.renderer.createElement('span') as HTMLSpanElement;\r\n        this.renderer.addClass(span, 'matcha-caps-lock-hint');\r\n        this.renderer.setAttribute(span, 'role', 'status');\r\n        this.renderer.setAttribute(span, 'aria-live', 'polite');\r\n        this.renderer.setStyle(span, 'display', 'none');\r\n\r\n        const icon = this.renderer.createElement('span') as HTMLSpanElement;\r\n        this.renderer.addClass(icon, 'i-matcha-warning');\r\n        this.renderer.setAttribute(icon, 'aria-hidden', 'true');\r\n        this.renderer.appendChild(span, icon);\r\n\r\n        const text = this.renderer.createText(this.label());\r\n        this.renderer.appendChild(span, text);\r\n\r\n        this.renderer.appendChild(wrapper, span);\r\n        this.hint = span;\r\n\r\n        // Handlers\r\n        const keyHandler = (e: KeyboardEvent) => this.sync(e);\r\n        const blurHandler = () => this.setVisible(false);\r\n        this.keyHandler = keyHandler;\r\n        this.blurHandler = blurHandler;\r\n\r\n        // Fora da zone: são 3 listeners num `<input type=\"password\">`, e keydown+keyup\r\n        // disparam a CADA tecla digitada. Dentro da zone, cada um agenda um ciclo de change\r\n        // detection global -- 2 ciclos extras por caractere, em toda tela com campo de senha,\r\n        // só para decidir o `display` de um <span>. Estes handlers não tocam estado Angular\r\n        // (só style via Renderer2), então nada precisa ser re-renderizado por causa deles.\r\n        this.zone.runOutsideAngular(() => {\r\n            input.addEventListener('keydown', keyHandler);\r\n            input.addEventListener('keyup', keyHandler);\r\n            input.addEventListener('blur', blurHandler);\r\n        });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        const input = this.el.nativeElement;\r\n        if (this.keyHandler) {\r\n            input.removeEventListener('keydown', this.keyHandler);\r\n            input.removeEventListener('keyup', this.keyHandler);\r\n        }\r\n        if (this.blurHandler) input.removeEventListener('blur', this.blurHandler);\r\n        if (this.hint?.parentElement) this.renderer.removeChild(this.hint.parentElement, this.hint);\r\n        this.hint = null;\r\n        this.keyHandler = this.blurHandler = null;\r\n    }\r\n\r\n    private sync(e: KeyboardEvent): void {\r\n        // `getModifierState` só é confiável durante eventos de teclado reais.\r\n        const active = typeof e.getModifierState === 'function' && e.getModifierState('CapsLock');\r\n        this.setVisible(!!active);\r\n    }\r\n\r\n    private setVisible(visible: boolean): void {\r\n        if (!this.hint) return;\r\n        this.renderer.setStyle(this.hint, 'display', visible ? 'inline-flex' : 'none');\r\n    }\r\n}\r\n","/**\r\n * MatchaCurrencyMasks — registro de moedas suportadas pra campos monetários.\r\n * Irmão de MatchaDocumentMasks / MatchaPostalCodeMasks / MatchaPhoneMasks.\r\n *\r\n * Usado com `matchaMask=\"separator.2\"` + prefix/separators do registro:\r\n *   <input matchaMask=\"separator.2\"\r\n *          [prefix]=\"MatchaCurrencyMasks['brl'].prefix\"\r\n *          [thousandSeparator]=\"MatchaCurrencyMasks['brl'].thousandSeparator\"\r\n *          [decimalMarker]=\"MatchaCurrencyMasks['brl'].decimalMarker\" />\r\n *\r\n * Convenções ISO-4217 por mercado:\r\n *   BRL — R$ 1.234,56  (pt-BR: ponto milhar, vírgula decimal)\r\n *   EUR — €1.234,56    (maioria dos locales EU)\r\n *   USD — $1,234.56    (en-US: vírgula milhar, ponto decimal)\r\n */\r\n\r\nexport type MatchaCurrencyId = 'brl' | 'eur' | 'usd';\r\n\r\nexport interface MatchaCurrencySpec {\r\n    /** ISO-4217 (lowercase) */\r\n    code: string;\r\n    /** Nome local */\r\n    label: string;\r\n    /** Prefixo exibido antes do valor (com espaço quando aplicável) */\r\n    prefix: string;\r\n    /** Separador de milhares (ex.: '.' pt-BR, ',' en-US) */\r\n    thousandSeparator: string;\r\n    /** Marcador decimal (ex.: ',' pt-BR, '.' en-US) */\r\n    decimalMarker: '.' | ',';\r\n    /** Placeholder sugerido (ex.: 'R$ 0,00') */\r\n    placeholder: string;\r\n}\r\n\r\nexport const MatchaCurrencyMasks: Record<MatchaCurrencyId, MatchaCurrencySpec> = {\r\n    'brl': {\r\n        code: 'BRL',\r\n        label: 'Real (R$)',\r\n        prefix: 'R$ ',\r\n        thousandSeparator: '.',\r\n        decimalMarker: ',',\r\n        placeholder: 'R$ 0,00',\r\n    },\r\n    'eur': {\r\n        code: 'EUR',\r\n        label: 'Euro (€)',\r\n        prefix: '€ ',\r\n        thousandSeparator: '.',\r\n        decimalMarker: ',',\r\n        placeholder: '€ 0,00',\r\n    },\r\n    'usd': {\r\n        code: 'USD',\r\n        label: 'Dollar ($)',\r\n        prefix: '$ ',\r\n        thousandSeparator: ',',\r\n        decimalMarker: '.',\r\n        placeholder: '$ 0.00',\r\n    },\r\n};\r\n\r\n/** Lista pronta pra dropdowns */\r\nexport const MatchaCurrencyList: Array<{ id: MatchaCurrencyId } & MatchaCurrencySpec> =\r\n    (Object.entries(MatchaCurrencyMasks) as [MatchaCurrencyId, MatchaCurrencySpec][])\r\n        .map(([id, spec]) => ({ id, ...spec }));\r\n","import {\r\n  Directive, ElementRef, HostListener, Renderer2, forwardRef, input, effect, inject\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {\r\n  MatchaCurrencyId, MatchaCurrencyMasks, MatchaCurrencySpec\r\n} from '../matcha-validators/matcha-currency-masks';\r\n\r\n/**\r\n * matchaMoney — UX de input monetário **cents-first** (padrão de mercado).\r\n *\r\n * Comportamento (igual Nubank / Itaú / checkout de e-commerce):\r\n *   Digita \"1\"         → R$ 0,01\r\n *   Digita \"5\"         → R$ 0,15\r\n *   Digita \"0\"         → R$ 1,50\r\n *   Digita \"0\"         → R$ 15,00\r\n *   Digita \"0\"         → R$ 150,00\r\n *   Backspace          → R$ 15,00\r\n *\r\n * Usuário nunca digita separador — digita só os números e o campo monta\r\n * da direita pra esquerda (tipo calculadora).\r\n *\r\n * Implementa ControlValueAccessor. O valor emitido é o **número em unidades**\r\n * (ex.: 150.50), não centavos. Se seu backend espera cents integer, converta\r\n * antes do submit.\r\n *\r\n * **Zero é um valor declarado, não ausência de valor.** Digitar \"0\" emite `0`\r\n * e renderiza \"R$ 0,00\"; um control inicializado com `0` exibe \"R$ 0,00\". Para\r\n * dizer \"sem valor\" use `null` — `null`, `undefined` e `''` renderizam vazio e\r\n * emitem `null`. Importa em todo campo onde zero é um fato e não um erro:\r\n * conferência de caixa, desconto, juros, multa, taxa, ajuste de saldo.\r\n *\r\n *   <input matchaMoney />                    // default BRL (R$)\r\n *   <input matchaMoney=\"eur\" />              // EUR (€)\r\n *   <input matchaMoney=\"usd\" formControlName=\"price\" />\r\n *\r\n * Tokens: MatchaCurrencyMasks define prefix/thousand/decimal por moeda.\r\n */\r\n@Directive({\r\n    selector: 'input[matchaMoney]',\r\n    standalone: true,\r\n    providers: [{\r\n        provide: NG_VALUE_ACCESSOR,\r\n        useExisting: forwardRef(() => MatchaMoneyDirective),\r\n        multi: true\r\n    }]\r\n})\r\nexport class MatchaMoneyDirective implements ControlValueAccessor {\r\n    /**\r\n     * Moeda ativa. Aceita:\r\n     *   - MatchaCurrencyId: 'brl' | 'eur' | 'usd'\r\n     *   - string vazia (default 'brl')\r\n     */\r\n    currencyAttr = input<MatchaCurrencyId | '' | string>('', { alias: 'matchaMoney' });\r\n\r\n    private spec: MatchaCurrencySpec = MatchaCurrencyMasks['brl'];\r\n    /**\r\n     * Cents como string (ex.: \"15000\" = R$ 150,00).\r\n     *\r\n     * Duas sentinelas **distintas** — não colapsar em falsy:\r\n     *   `''`  → campo vazio  → emite `null`\r\n     *   `'0'` → zero contado → emite `0` e renderiza \"R$ 0,00\"\r\n     */\r\n    private cents: string = '';\r\n\r\n    private onChange: (v: any) => void = () => {};\r\n    private onTouched: () => void = () => {};\r\n\r\n    private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n    private renderer = inject(Renderer2);\r\n\r\n    constructor() {\r\n        // Re-render reativo quando currency muda — substitui ngOnChanges\r\n        effect(() => {\r\n            const id = (this.currencyAttr() || 'brl') as MatchaCurrencyId;\r\n            this.spec = MatchaCurrencyMasks[id] ?? MatchaCurrencyMasks['brl'];\r\n            this.render();\r\n        });\r\n    }\r\n\r\n    // ── Events ──────────────────────────────────────────────────────────────\r\n    @HostListener('input', ['$event'])\r\n    onInput(event: Event): void {\r\n        const input = event.target as HTMLInputElement;\r\n        // Extrai APENAS dígitos do valor atual (o browser já inseriu/removeu o char)\r\n        const digits = input.value.replace(/\\D/g, '');\r\n        // Remove zeros à esquerda, mas zero digitado é valor: \"000\" → \"0\", \"\" → \"\"\r\n        this.cents = digits === '' ? '' : (digits.replace(/^0+/, '') || '0');\r\n        this.render();\r\n        this.emit();\r\n        // Força cursor pro fim (UX de calculadora)\r\n        this.moveCursorToEnd();\r\n    }\r\n\r\n    @HostListener('keydown', ['$event'])\r\n    onKeyDown(event: KeyboardEvent): void {\r\n        const allowed = ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'];\r\n        if (allowed.includes(event.key)) return;\r\n        if (event.ctrlKey || event.metaKey) return;   // Ctrl+A/C/V/X etc.\r\n        if (!/\\d/.test(event.key)) event.preventDefault();\r\n    }\r\n\r\n    @HostListener('focus')\r\n    onFocus(): void {\r\n        // Sempre posiciona cursor no fim ao focar (cents-first UX)\r\n        setTimeout(() => this.moveCursorToEnd(), 0);\r\n    }\r\n\r\n    @HostListener('blur')\r\n    onBlur(): void {\r\n        this.onTouched();\r\n    }\r\n\r\n    // ── CVA ─────────────────────────────────────────────────────────────────\r\n    writeValue(value: any): void {\r\n        if (value === null || value === undefined || value === '') {\r\n            this.cents = '';\r\n        } else {\r\n            const num = Number(value);\r\n            if (!Number.isFinite(num)) {\r\n                this.cents = '';\r\n            } else {\r\n                // Converte pra centavos inteiros (anti-FP: usa toFixed antes de parse)\r\n                const centsInt = Math.round(Math.abs(num) * 100);\r\n                this.cents = String(centsInt);\r\n            }\r\n        }\r\n        this.render();\r\n    }\r\n\r\n    registerOnChange(fn: any): void { this.onChange = fn; }\r\n    registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.renderer.setProperty(this.el.nativeElement, 'disabled', isDisabled);\r\n    }\r\n\r\n    // ── Internal ────────────────────────────────────────────────────────────\r\n    private render(): void {\r\n        const el = this.el.nativeElement;\r\n\r\n        if (this.cents === '') {\r\n            // Vazio: deixa input vazio (placeholder aparece). Zero NÃO cai aqui —\r\n            // o padStart(3, '0') abaixo já formata '0' como \"R$ 0,00\".\r\n            this.renderer.setProperty(el, 'value', '');\r\n            return;\r\n        }\r\n\r\n        const { prefix, thousandSeparator, decimalMarker } = this.spec;\r\n\r\n        // Pad pra garantir ao menos 3 dígitos (0,01 precisa de \"001\")\r\n        const padded = this.cents.padStart(3, '0');\r\n        const integerPart = padded.slice(0, -2);\r\n        const decimalPart = padded.slice(-2);\r\n\r\n        // Formata milhares (regex clássico funcional em qualquer browser)\r\n        const integerFormatted = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\r\n\r\n        this.renderer.setProperty(el, 'value', `${prefix}${integerFormatted}${decimalMarker}${decimalPart}`);\r\n    }\r\n\r\n    private emit(): void {\r\n        if (this.cents === '') {\r\n            this.onChange(null);\r\n            return;\r\n        }\r\n        // Converte pra unidades (150 cents → 1.50)\r\n        const units = Number(this.cents) / 100;\r\n        this.onChange(units);\r\n    }\r\n\r\n    private moveCursorToEnd(): void {\r\n        const el = this.el.nativeElement;\r\n        if (document.activeElement !== el) return;\r\n        const len = el.value.length;\r\n        try { el.setSelectionRange(len, len); } catch { /* type=number não suporta */ }\r\n    }\r\n}\r\n","import { Directive, ElementRef, OnInit, OnDestroy, Renderer2, input, inject } from '@angular/core';\r\n\r\n/**\r\n * matchaQuantityStepper — Injeta botões `−` e `+` ao lado de `<input type=\"number\">`.\r\n *\r\n * Explicit opt-in via atributo (diferente do matchaPasswordToggle que é auto):\r\n * nem todo number input é quantidade. Use em quantidades, estoque, carrinho.\r\n *\r\n * Visual: Figma matcha/field/quantity (ícones 16px constante, cor #9AA0A6).\r\n * Respeita `min` e `max` do input nativo. Dispara `input` event pra disparar\r\n * change detection / validators do Angular.\r\n *\r\n *   <input type=\"number\" min=\"0\" max=\"99\" matchaQuantityStepper />\r\n */\r\n@Directive({\r\n    selector: 'input[type=\"number\"][matchaQuantityStepper]',\r\n    standalone: true\r\n})\r\nexport class MatchaQuantityStepperDirective implements OnInit, OnDestroy {\r\n    /** Passo do incremento/decremento (default: 1). Aceita string ou number via transform. */\r\n    step = input(1, {\r\n        transform: (v: number | string): number => {\r\n            const n = typeof v === 'number' ? v : parseFloat(v);\r\n            return Number.isFinite(n) && n > 0 ? n : 1;\r\n        },\r\n    });\r\n\r\n    private wrapper: HTMLDivElement | null = null;\r\n    private minusBtn: HTMLButtonElement | null = null;\r\n    private plusBtn: HTMLButtonElement | null = null;\r\n    private minusHandler: (() => void) | null = null;\r\n    private plusHandler: (() => void) | null = null;\r\n    private inputHandler: (() => void) | null = null;\r\n    private attrObserver: MutationObserver | null = null;\r\n\r\n    private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n    private renderer = inject(Renderer2);\r\n\r\n    ngOnInit(): void {\r\n        const input = this.el.nativeElement;\r\n        const parent = input.parentElement;\r\n        if (!parent) return;\r\n\r\n        // Wrapper flex-row com gap 4 (Figma)\r\n        const wrapper = this.renderer.createElement('div') as HTMLDivElement;\r\n        this.renderer.addClass(wrapper, 'matcha-quantity-stepper');\r\n\r\n        // Minus\r\n        const minus = this.createButton('Diminuir', 'i-matcha-minus');\r\n        this.renderer.appendChild(wrapper, minus);\r\n\r\n        // Plus\r\n        const plus = this.createButton('Aumentar', 'i-matcha-plus');\r\n        this.renderer.appendChild(wrapper, plus);\r\n\r\n        // Insere logo após o input\r\n        const next = input.nextSibling;\r\n        if (next) this.renderer.insertBefore(parent, wrapper, next);\r\n        else this.renderer.appendChild(parent, wrapper);\r\n\r\n        this.wrapper = wrapper;\r\n        this.minusBtn = minus;\r\n        this.plusBtn = plus;\r\n\r\n        this.minusHandler = () => this.step$(-this.step());\r\n        this.plusHandler  = () => this.step$(this.step());\r\n        minus.addEventListener('click', this.minusHandler);\r\n        plus.addEventListener('click', this.plusHandler);\r\n\r\n        // Re-sync sempre que o value mudar (digitação, step$, paste).\r\n        this.inputHandler = () => this.syncButtonsState();\r\n        input.addEventListener('input', this.inputHandler);\r\n\r\n        // Observa mudanças em `disabled`, `min` e `max` do input — reagem a binding\r\n        // dinâmico (ex: `[disabled]=\"...\"` que o Angular aplica como atributo).\r\n        this.attrObserver = new MutationObserver(() => this.syncButtonsState());\r\n        this.attrObserver.observe(input, { attributes: true, attributeFilter: ['disabled', 'min', 'max'] });\r\n\r\n        // Sincroniza estado inicial (disabled + limits).\r\n        this.syncButtonsState();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        const input = this.el.nativeElement;\r\n        if (this.minusBtn && this.minusHandler) this.minusBtn.removeEventListener('click', this.minusHandler);\r\n        if (this.plusBtn && this.plusHandler)   this.plusBtn.removeEventListener('click', this.plusHandler);\r\n        if (this.inputHandler)                  input.removeEventListener('input', this.inputHandler);\r\n        if (this.attrObserver)                  { this.attrObserver.disconnect(); this.attrObserver = null; }\r\n        if (this.wrapper?.parentElement) {\r\n            this.renderer.removeChild(this.wrapper.parentElement, this.wrapper);\r\n        }\r\n        this.wrapper = this.minusBtn = this.plusBtn = null;\r\n        this.minusHandler = this.plusHandler = this.inputHandler = null;\r\n    }\r\n\r\n    private createButton(aria: string, iconClass: string): HTMLButtonElement {\r\n        const btn = this.renderer.createElement('button') as HTMLButtonElement;\r\n        this.renderer.setAttribute(btn, 'type', 'button');\r\n        this.renderer.setAttribute(btn, 'tabindex', '0');\r\n        this.renderer.setAttribute(btn, 'aria-label', aria);\r\n        this.renderer.addClass(btn, 'matcha-quantity-stepper-button');\r\n        const icon = this.renderer.createElement('span') as HTMLSpanElement;\r\n        this.renderer.addClass(icon, iconClass);\r\n        this.renderer.setAttribute(icon, 'aria-hidden', 'true');\r\n        this.renderer.appendChild(btn, icon);\r\n        return btn;\r\n    }\r\n\r\n    private step$(delta: number): void {\r\n        const input = this.el.nativeElement;\r\n        if (input.disabled) return;\r\n\r\n        const current = Number.isFinite(input.valueAsNumber) ? input.valueAsNumber : 0;\r\n        let next = current + delta;\r\n\r\n        // Clamp por min/max\r\n        const min = input.min !== '' ? +input.min : -Infinity;\r\n        const max = input.max !== '' ? +input.max : Infinity;\r\n        next = Math.max(min, Math.min(max, next));\r\n\r\n        if (next === current) return;\r\n\r\n        input.value = String(next);\r\n        // Dispara events nativos pra Angular Forms / listeners reagirem\r\n        input.dispatchEvent(new Event('input', { bubbles: true }));\r\n        input.dispatchEvent(new Event('change', { bubbles: true }));\r\n    }\r\n\r\n    /** Sincroniza `disabled` dos botões combinando:\r\n     *   - input disabled → ambos desativados\r\n     *   - value <= min  → `-` desativado\r\n     *   - value >= max  → `+` desativado\r\n     *  Idempotente: set/remove attr conforme o estado desejado. */\r\n    private syncButtonsState(): void {\r\n        if (!this.minusBtn || !this.plusBtn) return;\r\n        const input = this.el.nativeElement;\r\n\r\n        const inputDisabled = input.disabled;\r\n        const current = Number.isFinite(input.valueAsNumber) ? input.valueAsNumber : NaN;\r\n        const min = input.min !== '' ? +input.min : -Infinity;\r\n        const max = input.max !== '' ? +input.max : Infinity;\r\n\r\n        const minusDisabled = inputDisabled || (Number.isFinite(current) && current <= min);\r\n        const plusDisabled  = inputDisabled || (Number.isFinite(current) && current >= max);\r\n\r\n        this.setDisabled(this.minusBtn, minusDisabled);\r\n        this.setDisabled(this.plusBtn,  plusDisabled);\r\n    }\r\n\r\n    private setDisabled(btn: HTMLButtonElement, disabled: boolean): void {\r\n        if (disabled) this.renderer.setAttribute(btn, 'disabled', '');\r\n        else          this.renderer.removeAttribute(btn, 'disabled');\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nimport ptBR from './locales/pt-BR.json';\r\nimport en from './locales/en.json';\r\nimport es from './locales/es.json';\r\n\r\nexport type MatchaLocale = 'pt-BR' | 'en' | 'es';\r\n\r\nconst LOCALES: Record<MatchaLocale, any> = {\r\n  'pt-BR': ptBR,\r\n  'en': en,\r\n  'es': es,\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MatchaI18nService {\r\n  private currentLocale: MatchaLocale = 'pt-BR';\r\n  private locale$ = new BehaviorSubject<MatchaLocale>('pt-BR');\r\n\r\n  /** Observable that emits when locale changes */\r\n  get localeChange(): Observable<MatchaLocale> {\r\n    return this.locale$.asObservable();\r\n  }\r\n\r\n  /** Get current locale code */\r\n  get locale(): MatchaLocale {\r\n    return this.currentLocale;\r\n  }\r\n\r\n  /** Set locale and notify subscribers */\r\n  setLocale(locale: MatchaLocale): void {\r\n    if (!LOCALES[locale]) {\r\n      console.warn(`[MatchaI18n] Locale \"${locale}\" not found. Available: ${Object.keys(LOCALES).join(', ')}`);\r\n      return;\r\n    }\r\n    this.currentLocale = locale;\r\n    this.locale$.next(locale);\r\n  }\r\n\r\n  /**\r\n   * Get translated string by dot-path key.\r\n   * Supports interpolation: translate('validation.minLength', { min: 3 }) → \"Mínimo de 3 caracteres\"\r\n   */\r\n  translate(key: string, params?: Record<string, string | number>): string {\r\n    const translations = LOCALES[this.currentLocale];\r\n    const value = this.resolve(translations, key);\r\n\r\n    if (value === undefined) {\r\n      console.warn(`[MatchaI18n] Missing key \"${key}\" for locale \"${this.currentLocale}\"`);\r\n      return key;\r\n    }\r\n\r\n    if (typeof value !== 'string') return String(value);\r\n\r\n    // Interpolate {param} placeholders\r\n    if (!params) return value;\r\n    return value.replace(/\\{(\\w+)\\}/g, (_, k) => String(params[k] ?? `{${k}}`));\r\n  }\r\n\r\n  /**\r\n   * Get translated array (e.g., calendar.months)\r\n   */\r\n  translateArray(key: string): string[] {\r\n    const translations = LOCALES[this.currentLocale];\r\n    const value = this.resolve(translations, key);\r\n    return Array.isArray(value) ? value : [];\r\n  }\r\n\r\n  /** Get all available locales */\r\n  getAvailableLocales(): { code: MatchaLocale; name: string }[] {\r\n    return Object.entries(LOCALES).map(([code, data]) => ({\r\n      code: code as MatchaLocale,\r\n      name: data.name,\r\n    }));\r\n  }\r\n\r\n  /** Resolve dot-path key in nested object */\r\n  private resolve(obj: any, path: string): any {\r\n    return path.split('.').reduce((acc, part) => acc?.[part], obj);\r\n  }\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ElementRef,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    computed,\r\n    effect,\r\n    forwardRef,\r\n    inject,\r\n    input,\r\n    model,\r\n    numberAttribute,\r\n    output,\r\n    signal,\r\n    untracked,\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaI18nService } from '../../matcha-i18n/matcha-i18n.service';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type CalendarView = 'month' | 'year' | 'decade';\r\n\r\nexport interface CalendarDay {\r\n    date: Date;\r\n    day: number;\r\n    isToday: boolean;\r\n    isSelected: boolean;\r\n    isRangeStart: boolean;\r\n    isRangeEnd: boolean;\r\n    isInRange: boolean;\r\n    isOtherMonth: boolean;\r\n    isDisabled: boolean;\r\n    /** true quando `dateMarker()` retorna uma contagem > 0 pra esse dia. */\r\n    isMarked: boolean;\r\n    /** Contagem crua retornada por `dateMarker()`. null/0 ⇒ isMarked = false. */\r\n    markerCount: number | null;\r\n}\r\n\r\nexport interface CalendarRange {\r\n    start: Date;\r\n    end: Date;\r\n}\r\n\r\n/**\r\n * matcha-calendar — widget inline de seleção de data (Figma DSV3 14734:2289).\r\n *\r\n * Modernidade Angular 17+:\r\n *   • Signals API: input()/output()/model()/signal()/computed()/effect()\r\n *   • Host config (sem @HostBinding/@HostListener)\r\n *   • booleanAttribute / numberAttribute pra coerção\r\n *   • CVA implementado — funciona com [(ngModel)] / [formControl] direto no host\r\n *   • Sem ChangeDetectorRef manual — change detection automática via signals\r\n *   • Sem ngOnInit/ngOnChanges — effect() reativo\r\n *\r\n * API:\r\n *   • Single mode: [(selected)] OU [formControl] (CVA)\r\n *   • Range mode: [rangeStart]+[rangeEnd]+(rangeChange) — emite quando completa\r\n *   • Marcador de dia: [dateMarker]=\"(date) => count|null\" + [dayTooltip]=\"(day) => string|null\"\r\n *     — DS não conhece semântica (evento/aniversário/etc), só conta e desenha o dot.\r\n *     IMPORTANTE: nova referência de função a cada mudança de dado (mesmo contrato de computed()).\r\n *   • Navegação: (visibleMonthChange) emite o 1º dia do mês visível (init + a cada troca)\r\n *   • Imperativo: focus() / goToDate(date)\r\n *\r\n * A11y: WAI-ARIA Date Picker pattern completo. ArrowKeys + PageUp/Down +\r\n * Shift+PageUp/Down (ano) + Home/End (semana) + Enter/Space + Esc.\r\n *\r\n * **Out of scope (debt conhecida):**\r\n *   • Bundle size — 500+ LOC eager-loaded. Pra apps onde o picker raramente\r\n *     é usado, lazy-load via dynamic import resolveria. Não implementado pq\r\n *     adiciona complexidade tooling.\r\n *   • DateAdapter pattern — Material expõe DateAdapter pra Luxon/DayJS/native.\r\n *     Aqui usamos Date nativo direto. Pra apps com lib de datas próprio,\r\n *     refactor pra abstração seria recomendado.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-calendar',\r\n    templateUrl: './matcha-calendar.component.html',\r\n    styleUrls: ['./matcha-calendar.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MatchaCalendarComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n    host: {\r\n        'role': 'dialog',\r\n        'tabindex': '0',\r\n        '[attr.aria-label]': 'resolvedDialogLabel()',\r\n        '[class.matcha-calendar]': 'true',\r\n        '[class.is-dual]': 'dualMonth() && currentView() === \"month\"',\r\n        '(keydown)': 'onKeydown($event)',\r\n    },\r\n})\r\nexport class MatchaCalendarComponent implements ControlValueAccessor {\r\n    // ── Inputs (signals) ───────────────────────────────────────────────\r\n    /** Data selecionada single mode. Two-way via [(selected)] OU [formControl] (CVA). */\r\n    readonly selected = model<Date | null>(null);\r\n\r\n    /** Início do range. */\r\n    readonly rangeStart = input<Date | null>(null);\r\n\r\n    /** Fim do range. */\r\n    readonly rangeEnd = input<Date | null>(null);\r\n\r\n    /** Data mínima permitida. */\r\n    readonly min = input<Date | null>(null);\r\n\r\n    /** Data máxima permitida. */\r\n    readonly max = input<Date | null>(null);\r\n\r\n    /** 0 = domingo (pt-BR default), 1 = segunda (locales europeus/latinos). */\r\n    readonly startOfWeek = input(0, { transform: numberAttribute });\r\n\r\n    /** Botão \"Hoje\" no footer. */\r\n    readonly showTodayButton = input(true, { transform: booleanAttribute });\r\n\r\n    /** 2 meses lado a lado (útil em range pickers). */\r\n    readonly dualMonth = input(false, { transform: booleanAttribute });\r\n\r\n    /**\r\n     * Timezone IANA (ex: 'America/Sao_Paulo'). Quando setado, \"today\" é computado\r\n     * no fuso especificado em vez do local. Usar pra apps multi-região.\r\n     * Default null = local timezone.\r\n     */\r\n    readonly timezone = input<string | null>(null);\r\n\r\n    // ── i18n inputs — overrides opcionais ───────────────────────────────\r\n    // Defaults vêm de MatchaI18nService (pt-BR | en | es) e reagem a setLocale().\r\n    // Passe @Input pra hard-override sem depender do service.\r\n    readonly todayLabel = input<string | undefined>(undefined);\r\n    readonly dialogLabel = input<string | undefined>(undefined);\r\n    readonly prevLabel = input<string | undefined>(undefined);\r\n    readonly nextLabel = input<string | undefined>(undefined);\r\n    readonly monthNames = input<string[] | undefined>(undefined);\r\n    readonly weekdayNames = input<string[] | undefined>(undefined);\r\n\r\n    // ── Marcador de dia (evento/aniversário/etc — DS não conhece semântica) ──\r\n    /**\r\n     * Fn opcional: (date) => contagem de itens marcados nesse dia, ou null/0 = sem marcador.\r\n     * IMPORTANTE: para o dia recalcular, passe uma NOVA referência de função sempre que os\r\n     * dados de origem mudarem — mutar o que a closure lê sem trocar a referência não dispara\r\n     * recomputo (mesma disciplina de `computed()` do Angular).\r\n     */\r\n    readonly dateMarker = input<((date: Date) => number | null) | null>(null);\r\n\r\n    /** Formatter opcional pra tooltip/aria-label do dia. DS não decide o texto. */\r\n    readonly dayTooltip = input<((day: CalendarDay) => string | null) | null>(null);\r\n\r\n    // ── Outputs ─────────────────────────────────────────────────────────\r\n    /** Emitido em qualquer click válido (single OR range — qualquer click). */\r\n    readonly dateSelected = output<Date>();\r\n\r\n    /** Emitido APENAS quando o range completa (2nd valid click). Payload {start, end}. */\r\n    readonly rangeChange = output<CalendarRange>();\r\n\r\n    /** Esc no calendar. Consumer fecha popup. */\r\n    readonly closed = output<void>();\r\n\r\n    /**\r\n     * Emitido quando o mês/ano exibido muda (navegação, sem necessariamente selecionar um\r\n     * dia) — payload é o 1º dia do mês visível. Deduplicado por ano+mês; também emite UMA vez\r\n     * na inicialização com o mês visível inicial.\r\n     */\r\n    readonly visibleMonthChange = output<Date>();\r\n\r\n    // ── Internal state (signals) ────────────────────────────────────────\r\n    readonly currentView = signal<CalendarView>('month');\r\n    readonly viewDate = signal<Date>(new Date());\r\n    private readonly _hoveredDate = signal<Date | null>(null);\r\n    /** Range phase: 'start' aguarda 1st click; 'end' aguarda 2nd click. */\r\n    private readonly _rangePhase = signal<'start' | 'end'>('start');\r\n\r\n    // ── i18n service (reativo a setLocale) ──────────────────────────────\r\n    private readonly i18n = inject(MatchaI18nService);\r\n    private readonly _locale = toSignal(this.i18n.localeChange, { initialValue: this.i18n.locale });\r\n\r\n    /** Labels resolvidos — @Input override > service translation. */\r\n    readonly resolvedTodayLabel = computed<string>(() => {\r\n        this._locale();\r\n        return this.todayLabel() ?? this.i18n.translate('calendar.today');\r\n    });\r\n\r\n    readonly resolvedDialogLabel = computed<string>(() => {\r\n        this._locale();\r\n        return this.dialogLabel() ?? this.i18n.translate('calendar.selectDate');\r\n    });\r\n\r\n    readonly resolvedPrevLabel = computed<string>(() => {\r\n        this._locale();\r\n        return this.prevLabel() ?? this.i18n.translate('common.previous');\r\n    });\r\n\r\n    readonly resolvedNextLabel = computed<string>(() => {\r\n        this._locale();\r\n        return this.nextLabel() ?? this.i18n.translate('common.next');\r\n    });\r\n\r\n    readonly resolvedMonthNames = computed<string[]>(() => {\r\n        this._locale();\r\n        const override = this.monthNames();\r\n        if (override?.length === 12) return override;\r\n        return this.i18n.translateArray('calendar.months');\r\n    });\r\n\r\n    readonly resolvedWeekdayNames = computed<string[]>(() => {\r\n        this._locale();\r\n        const override = this.weekdayNames();\r\n        if (override?.length === 7) return override;\r\n        return this.i18n.translateArray('calendar.weekdaysShort');\r\n    });\r\n\r\n    // ── Computeds ───────────────────────────────────────────────────────\r\n    readonly weekDayLabels = computed<string[]>(() => {\r\n        const labels = [...this.resolvedWeekdayNames()];\r\n        if (this.startOfWeek() === 1) labels.push(labels.shift()!);\r\n        return labels;\r\n    });\r\n\r\n    readonly weeks = computed<CalendarDay[][]>(() => this.buildWeeksFor(this.viewDate()));\r\n\r\n    readonly weeksRight = computed<CalendarDay[][]>(() => {\r\n        if (!this.dualMonth()) return [];\r\n        const vd = this.viewDate();\r\n        return this.buildWeeksFor(new Date(vd.getFullYear(), vd.getMonth() + 1, 1));\r\n    });\r\n\r\n    readonly years = computed<number[]>(() => {\r\n        // 12 anos por página (3 colunas × 4 linhas fechadas) — 10 anos deixava a\r\n        // última linha do grid com célula órfã (IN-40407 no painel).\r\n        const pageStart = Math.floor(this.viewDate().getFullYear() / 12) * 12;\r\n        return Array.from({ length: 12 }, (_, i) => pageStart + i);\r\n    });\r\n\r\n    readonly headerLabel = computed<string>(() => {\r\n        const view = this.currentView();\r\n        const vd = this.viewDate();\r\n        const months = this.resolvedMonthNames();\r\n\r\n        if (view === 'month') {\r\n            if (this.dualMonth()) {\r\n                const next = new Date(vd.getFullYear(), vd.getMonth() + 1, 1);\r\n                return `${months[vd.getMonth()]} ${vd.getFullYear()} — ${months[next.getMonth()]} ${next.getFullYear()}`;\r\n            }\r\n            return `${months[vd.getMonth()]} ${vd.getFullYear()}`;\r\n        }\r\n        if (view === 'year') return `${vd.getFullYear()}`;\r\n        const pageStart = Math.floor(vd.getFullYear() / 12) * 12;\r\n        return `${pageStart}–${pageStart + 11}`;\r\n    });\r\n\r\n    readonly leftMonthLabel = computed<string>(() => {\r\n        const vd = this.viewDate();\r\n        return `${this.resolvedMonthNames()[vd.getMonth()]} ${vd.getFullYear()}`;\r\n    });\r\n\r\n    readonly rightMonthLabel = computed<string>(() => {\r\n        const vd = this.viewDate();\r\n        const next = new Date(vd.getFullYear(), vd.getMonth() + 1, 1);\r\n        return `${this.resolvedMonthNames()[next.getMonth()]} ${next.getFullYear()}`;\r\n    });\r\n\r\n    readonly canNavigatePrev = computed<boolean>(() => {\r\n        const min = this.min();\r\n        if (!min) return true;\r\n        const vd = this.viewDate();\r\n        const view = this.currentView();\r\n        const y = vd.getFullYear(); const m = vd.getMonth();\r\n        if (view === 'month') return new Date(y, m, 1) > min;\r\n        if (view === 'year') return min.getFullYear() < y;\r\n        const pageStart = Math.floor(y / 12) * 12;\r\n        return min.getFullYear() < pageStart;\r\n    });\r\n\r\n    readonly canNavigateNext = computed<boolean>(() => {\r\n        const max = this.max();\r\n        if (!max) return true;\r\n        const vd = this.viewDate();\r\n        const view = this.currentView();\r\n        const y = vd.getFullYear(); const m = vd.getMonth();\r\n        if (view === 'month') return new Date(y, m + 1, 0) < max;\r\n        if (view === 'year') return max.getFullYear() > y;\r\n        const pageEnd = Math.floor(y / 12) * 12 + 11;\r\n        return max.getFullYear() > pageEnd;\r\n    });\r\n\r\n    readonly isTodayDisabled = computed<boolean>(() => {\r\n        const today = this.getToday();\r\n        const min = this.min(); const max = this.max();\r\n        if (min && today < min) return true;\r\n        if (max && today > max) return true;\r\n        return false;\r\n    });\r\n\r\n    // ── DI ───────────────────────────────────────────────────────────────\r\n    private readonly elRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n    // CVA fns\r\n    private cvaChange: (v: Date | null) => void = () => {};\r\n    private cvaTouched: () => void = () => {};\r\n\r\n    /** Último ano+mês emitido em `visibleMonthChange` — dedupe. */\r\n    private _lastEmittedMonth: string | null = null;\r\n\r\n    constructor() {\r\n        // Sync viewDate quando selected/range muda externamente. untracked() lê viewDate\r\n        // sem criar dep. A escrita é SÍNCRONA (Angular 20 permite write-during-effect):\r\n        // com o queueMicrotask que existia aqui, a correção caía FORA do change detection,\r\n        // o effect de emissão abaixo ficava agendado e nunca era executado, e o mês\r\n        // corrigido nunca era emitido -- o consumidor recebia o mês de `new Date()` (o\r\n        // default de viewDate) e o dedupe `_lastEmittedMonth` ficava preso nele. Navegar\r\n        // de volta pra esse mês então casava com a chave obsoleta e não emitia nada.\r\n        // Síncrono, effect1 corrige antes de effect2 ler: emite só o mês certo.\r\n        effect(() => {\r\n            const focus = this.selected() ?? this.rangeEnd() ?? this.rangeStart();\r\n            if (!focus) return;\r\n            const vd = untracked(() => this.viewDate());\r\n            const sameMonth = focus.getMonth() === vd.getMonth() && focus.getFullYear() === vd.getFullYear();\r\n            if (!sameMonth) {\r\n                this.viewDate.set(new Date(focus));\r\n            }\r\n        });\r\n\r\n        // Emite visibleMonthChange quando o mês/ano exibido muda, deduplicado.\r\n        effect(() => {\r\n            const vd = this.viewDate();\r\n            const key = `${vd.getFullYear()}-${vd.getMonth()}`;\r\n            if (key === this._lastEmittedMonth) return;\r\n            this._lastEmittedMonth = key;\r\n            this.visibleMonthChange.emit(new Date(vd.getFullYear(), vd.getMonth(), 1));\r\n        });\r\n    }\r\n\r\n    // ── Public API (imperativa) ─────────────────────────────────────────\r\n    /** Foca o root pra habilitar keyboard nav (chamado por consumers que abrem popup). */\r\n    focus(): void {\r\n        this.elRef.nativeElement.focus({ preventScroll: true });\r\n    }\r\n\r\n    /** Navega pra mês/ano da data e seta view='month'. Útil pra \"ir pra hoje + 90 dias\". */\r\n    goToDate(date: Date): void {\r\n        this.viewDate.set(new Date(date));\r\n        this.currentView.set('month');\r\n    }\r\n\r\n    // ── ControlValueAccessor ────────────────────────────────────────────\r\n    writeValue(value: Date | string | null): void {\r\n        if (typeof value === 'string') {\r\n            const d = new Date(value + 'T00:00:00');\r\n            this.selected.set(isNaN(d.getTime()) ? null : d);\r\n        } else {\r\n            this.selected.set(value);\r\n        }\r\n    }\r\n    registerOnChange(fn: (v: Date | null) => void): void { this.cvaChange = fn; }\r\n    registerOnTouched(fn: () => void): void { this.cvaTouched = fn; }\r\n\r\n    // ── Today button ────────────────────────────────────────────────────\r\n    onTodayClick(): void {\r\n        if (this.isTodayDisabled()) return;\r\n        const today = this.getToday();\r\n        this.viewDate.set(new Date(today));\r\n        this.currentView.set('month');\r\n        this.selected.set(today);\r\n        this.cvaChange(today);\r\n        this.cvaTouched();\r\n        this.dateSelected.emit(today);\r\n    }\r\n\r\n    // ── Header ──────────────────────────────────────────────────────────\r\n    onHeaderClick(): void {\r\n        const view = this.currentView();\r\n        if (view === 'month') this.currentView.set('year');\r\n        else if (view === 'year') this.currentView.set('decade');\r\n    }\r\n\r\n    navigatePrev(): void {\r\n        if (!this.canNavigatePrev()) return;\r\n        const d = new Date(this.viewDate());\r\n        const view = this.currentView();\r\n        if (view === 'month') d.setMonth(d.getMonth() - 1);\r\n        else if (view === 'year') d.setFullYear(d.getFullYear() - 1);\r\n        else d.setFullYear(d.getFullYear() - 12);\r\n        this.viewDate.set(d);\r\n    }\r\n\r\n    navigateNext(): void {\r\n        if (!this.canNavigateNext()) return;\r\n        const d = new Date(this.viewDate());\r\n        const view = this.currentView();\r\n        if (view === 'month') d.setMonth(d.getMonth() + 1);\r\n        else if (view === 'year') d.setFullYear(d.getFullYear() + 1);\r\n        else d.setFullYear(d.getFullYear() + 12);\r\n        this.viewDate.set(d);\r\n    }\r\n\r\n    // ── Day click ──────────────────────────────────────────────────────\r\n    onDayClick(day: CalendarDay): void {\r\n        if (day.isDisabled) return;\r\n\r\n        // Range mode: tem rangeStart input? Gerencia internamente.\r\n        const rs = this.rangeStart();\r\n        const re = this.rangeEnd();\r\n\r\n        if (rs != null) {\r\n            // 2nd click — range pode ser completado OU resetado.\r\n            if (re == null && this._rangePhase() === 'end') {\r\n                // Same date as start → single-day range.\r\n                // Before start → swap (start ↔ end).\r\n                let start = rs, end = day.date;\r\n                if (this.isSameDay(day.date, rs)) {\r\n                    end = day.date;\r\n                } else if (day.date < rs) {\r\n                    start = day.date; end = rs;\r\n                }\r\n                this._rangePhase.set('start');\r\n                this.dateSelected.emit(day.date);\r\n                this.rangeChange.emit({ start, end });\r\n                return;\r\n            }\r\n            // Range já completo OU 1st click novo após reset\r\n            this._rangePhase.set('end');\r\n            this.dateSelected.emit(day.date);\r\n            return;\r\n        }\r\n\r\n        // Single mode (sem rangeStart).\r\n        this.selected.set(day.date);\r\n        this.cvaChange(day.date);\r\n        this.cvaTouched();\r\n        this.dateSelected.emit(day.date);\r\n    }\r\n\r\n    onDayHover(day: CalendarDay): void {\r\n        if (day.isDisabled) return;\r\n        this._hoveredDate.set(day.date);\r\n    }\r\n\r\n    onDayLeave(): void {\r\n        this._hoveredDate.set(null);\r\n    }\r\n\r\n    // ── Year/Decade views ──────────────────────────────────────────────\r\n    onMonthClick(monthIndex: number): void {\r\n        const vd = this.viewDate();\r\n        this.viewDate.set(new Date(vd.getFullYear(), monthIndex, 1));\r\n        this.currentView.set('month');\r\n    }\r\n\r\n    isMonthSelected(monthIndex: number): boolean {\r\n        const sel = this.selected();\r\n        return sel != null\r\n            && sel.getMonth() === monthIndex\r\n            && sel.getFullYear() === this.viewDate().getFullYear();\r\n    }\r\n\r\n    isMonthToday(monthIndex: number): boolean {\r\n        const today = this.getToday();\r\n        return today.getMonth() === monthIndex\r\n            && today.getFullYear() === this.viewDate().getFullYear();\r\n    }\r\n\r\n    isMonthDisabled(monthIndex: number): boolean {\r\n        const min = this.min(); const max = this.max();\r\n        const vd = this.viewDate();\r\n        const monthEnd = new Date(vd.getFullYear(), monthIndex + 1, 0);\r\n        if (min && monthEnd < min) return true;\r\n        if (max && new Date(vd.getFullYear(), monthIndex, 1) > max) return true;\r\n        return false;\r\n    }\r\n\r\n    onYearClick(year: number): void {\r\n        const vd = this.viewDate();\r\n        this.viewDate.set(new Date(year, vd.getMonth(), 1));\r\n        this.currentView.set('year');\r\n    }\r\n\r\n    isYearSelected(year: number): boolean {\r\n        const sel = this.selected();\r\n        return sel != null && sel.getFullYear() === year;\r\n    }\r\n\r\n    isYearToday(year: number): boolean {\r\n        return this.getToday().getFullYear() === year;\r\n    }\r\n\r\n    isYearDisabled(year: number): boolean {\r\n        const min = this.min(); const max = this.max();\r\n        if (max && year > max.getFullYear()) return true;\r\n        if (min && year < min.getFullYear()) return true;\r\n        return false;\r\n    }\r\n\r\n    // ── Keyboard nav (WAI-ARIA Date Picker pattern) ────────────────────\r\n    onKeydown(event: KeyboardEvent): void {\r\n        if (this.currentView() !== 'month') return;\r\n\r\n        const sel = this.selected() ?? this.viewDate();\r\n        const d = new Date(sel);\r\n        let handled = true;\r\n\r\n        switch (event.key) {\r\n            case 'ArrowLeft':  d.setDate(d.getDate() - 1); break;\r\n            case 'ArrowRight': d.setDate(d.getDate() + 1); break;\r\n            case 'ArrowUp':    d.setDate(d.getDate() - 7); break;\r\n            case 'ArrowDown':  d.setDate(d.getDate() + 7); break;\r\n            case 'PageUp':\r\n                if (event.shiftKey) d.setFullYear(d.getFullYear() - 1);\r\n                else d.setMonth(d.getMonth() - 1);\r\n                break;\r\n            case 'PageDown':\r\n                if (event.shiftKey) d.setFullYear(d.getFullYear() + 1);\r\n                else d.setMonth(d.getMonth() + 1);\r\n                break;\r\n            case 'Home': d.setDate(d.getDate() - d.getDay()); break;\r\n            case 'End':  d.setDate(d.getDate() + (6 - d.getDay())); break;\r\n            case 'Enter':\r\n            case ' ': {\r\n                const current = this.selected();\r\n                if (current && !this.isDateDisabled(current)) {\r\n                    this.cvaChange(current);\r\n                    this.cvaTouched();\r\n                    this.dateSelected.emit(current);\r\n                }\r\n                event.preventDefault();\r\n                return;\r\n            }\r\n            case 'Escape':\r\n                this.closed.emit();\r\n                return;\r\n            default:\r\n                handled = false;\r\n        }\r\n\r\n        if (handled) {\r\n            event.preventDefault();\r\n            if (!this.isDateDisabled(d)) {\r\n                this.selected.set(d);\r\n                if (d.getMonth() !== this.viewDate().getMonth()) {\r\n                    this.viewDate.set(new Date(d));\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    // ── Helpers privados ───────────────────────────────────────────────\r\n    /** \"Hoje\" respeitando timezone input (ou local se null). Date com 00:00:00. */\r\n    private getToday(): Date {\r\n        const tz = this.timezone();\r\n        if (!tz) {\r\n            const t = new Date();\r\n            t.setHours(0, 0, 0, 0);\r\n            return t;\r\n        }\r\n        try {\r\n            const fmt = new Intl.DateTimeFormat('en-CA', {\r\n                timeZone: tz, year: 'numeric', month: '2-digit', day: '2-digit',\r\n            });\r\n            const parts = fmt.formatToParts(new Date());\r\n            const y = +parts.find(p => p.type === 'year')!.value;\r\n            const m = +parts.find(p => p.type === 'month')!.value - 1;\r\n            const d = +parts.find(p => p.type === 'day')!.value;\r\n            return new Date(y, m, d);\r\n        } catch {\r\n            const t = new Date();\r\n            t.setHours(0, 0, 0, 0);\r\n            return t;\r\n        }\r\n    }\r\n\r\n    private buildWeeksFor(ref: Date): CalendarDay[][] {\r\n        const year = ref.getFullYear();\r\n        const month = ref.getMonth();\r\n        const today = this.getToday();\r\n        const marker = this.dateMarker();\r\n\r\n        const startOfWeek = this.startOfWeek();\r\n        const firstDay = new Date(year, month, 1);\r\n        let startDay = firstDay.getDay() - startOfWeek;\r\n        if (startDay < 0) startDay += 7;\r\n\r\n        const startDate = new Date(firstDay);\r\n        startDate.setDate(startDate.getDate() - startDay);\r\n\r\n        const weeks: CalendarDay[][] = [];\r\n        const current = new Date(startDate);\r\n\r\n        for (let w = 0; w < 6; w++) {\r\n            const week: CalendarDay[] = [];\r\n            for (let dIdx = 0; dIdx < 7; dIdx++) {\r\n                const date = new Date(current);\r\n                date.setHours(0, 0, 0, 0);\r\n\r\n                const rawCount = marker ? marker(date) : null;\r\n                const markerCount = rawCount != null && rawCount > 0 ? rawCount : null;\r\n\r\n                week.push({\r\n                    date,\r\n                    day: date.getDate(),\r\n                    isToday: this.isSameDay(date, today),\r\n                    isSelected: this.isDateSelected(date),\r\n                    isRangeStart: this.isSameDay(date, this.rangeStart()),\r\n                    isRangeEnd: this.isSameDay(date, this.rangeEnd()),\r\n                    isInRange: this.isDateInRange(date),\r\n                    isOtherMonth: date.getMonth() !== month,\r\n                    isDisabled: this.isDateDisabled(date),\r\n                    isMarked: markerCount != null,\r\n                    markerCount,\r\n                });\r\n                current.setDate(current.getDate() + 1);\r\n            }\r\n            if (w === 5 && week.every(d => d.isOtherMonth)) break;\r\n            weeks.push(week);\r\n        }\r\n        return weeks;\r\n    }\r\n\r\n    private isSameDay(a: Date | null, b: Date | null): boolean {\r\n        if (!a || !b) return false;\r\n        return a.getFullYear() === b.getFullYear()\r\n            && a.getMonth() === b.getMonth()\r\n            && a.getDate() === b.getDate();\r\n    }\r\n\r\n    private isDateSelected(date: Date): boolean {\r\n        return this.isSameDay(date, this.selected())\r\n            || this.isSameDay(date, this.rangeStart())\r\n            || this.isSameDay(date, this.rangeEnd());\r\n    }\r\n\r\n    private isDateInRange(date: Date): boolean {\r\n        const start = this.rangeStart();\r\n        if (!start) return false;\r\n        const end = this.rangeEnd() ?? this._hoveredDate();\r\n        if (!end) return false;\r\n        const min = start < end ? start : end;\r\n        const max = start < end ? end : start;\r\n        return date > min && date < max;\r\n    }\r\n\r\n    private isDateDisabled(date: Date): boolean {\r\n        const min = this.min(); const max = this.max();\r\n        if (min && date < min) return true;\r\n        if (max && date > max) return true;\r\n        return false;\r\n    }\r\n\r\n    // ── Tooltip / aria-label do marcador ────────────────────────────────\r\n    /** Resolve o texto do tooltip pra esse dia via `dayTooltip()`. null = sem tooltip. */\r\n    resolveDayTooltip(day: CalendarDay): string | null {\r\n        const fn = this.dayTooltip();\r\n        return fn ? fn(day) : null;\r\n    }\r\n\r\n    /** aria-label do dia — inclui o tooltip resolvido quando existir. */\r\n    dayAriaLabel(day: CalendarDay): string {\r\n        const base = day.date.toLocaleDateString();\r\n        const tooltip = this.resolveDayTooltip(day);\r\n        return tooltip ? `${base}, ${tooltip}` : base;\r\n    }\r\n\r\n    // trackBy (mantido pra back-compat em consumers que ainda usam *ngFor com trackBy)\r\n    trackByWeek(_: number, week: CalendarDay[]): string { return week[0].date.toISOString(); }\r\n    trackByDay(_: number, day: CalendarDay): string { return day.date.toISOString(); }\r\n    trackByIndex(index: number): number { return index; }\r\n}\r\n","<!-- Aria description (hidden) — apontada pelos dias disabled -->\r\n<span class=\"matcha-calendar-sr-only\" id=\"matcha-cal-disabled-desc\" aria-hidden=\"true\">\r\n    Data fora do período permitido\r\n</span>\r\n\r\n<!-- Header -->\r\n<div class=\"matcha-calendar-header\">\r\n    <button type=\"button\" class=\"matcha-calendar-header-label\"\r\n            (click)=\"onHeaderClick()\"\r\n            [attr.aria-label]=\"headerLabel()\" aria-live=\"polite\">\r\n        {{ headerLabel() }}\r\n    </button>\r\n    <div class=\"matcha-calendar-nav\">\r\n        <button type=\"button\" class=\"matcha-calendar-nav-btn\"\r\n                [class.is-disabled]=\"!canNavigatePrev()\"\r\n                [disabled]=\"!canNavigatePrev()\"\r\n                (click)=\"navigatePrev()\" [attr.aria-label]=\"resolvedPrevLabel()\">\r\n            <span class=\"i-matcha-chevron-left\"></span>\r\n        </button>\r\n        <button type=\"button\" class=\"matcha-calendar-nav-btn\"\r\n                [class.is-disabled]=\"!canNavigateNext()\"\r\n                [disabled]=\"!canNavigateNext()\"\r\n                (click)=\"navigateNext()\" [attr.aria-label]=\"resolvedNextLabel()\">\r\n            <span class=\"i-matcha-chevron-right\"></span>\r\n        </button>\r\n    </div>\r\n</div>\r\n\r\n<!-- Month View (single ou dual) -->\r\n<ng-container *ngIf=\"currentView() === 'month'\">\r\n    <div class=\"matcha-calendar-months\">\r\n        <!-- Mês 1 -->\r\n        <div class=\"matcha-calendar-month\">\r\n            <div class=\"matcha-calendar-submonth-label\" *ngIf=\"dualMonth()\">{{ leftMonthLabel() }}</div>\r\n            <div class=\"matcha-calendar-weekdays\">\r\n                <span *ngFor=\"let label of weekDayLabels(); trackBy: trackByIndex\" class=\"matcha-calendar-weekday\">{{ label }}</span>\r\n            </div>\r\n            <div class=\"matcha-calendar-divider\"></div>\r\n            <div class=\"matcha-calendar-body\">\r\n                <div *ngFor=\"let week of weeks(); trackBy: trackByWeek\" class=\"matcha-calendar-row\">\r\n                    <button\r\n                        *ngFor=\"let day of week; trackBy: trackByDay\"\r\n                        type=\"button\"\r\n                        class=\"matcha-calendar-cell\"\r\n                        [class.is-today]=\"day.isToday\"\r\n                        [class.is-selected]=\"day.isSelected\"\r\n                        [class.is-range-start]=\"day.isRangeStart\"\r\n                        [class.is-range-end]=\"day.isRangeEnd\"\r\n                        [class.is-in-range]=\"day.isInRange\"\r\n                        [class.is-other-month]=\"day.isOtherMonth\"\r\n                        [class.is-disabled]=\"day.isDisabled\"\r\n                        [class.is-marked]=\"day.isMarked\"\r\n                        [disabled]=\"day.isDisabled\"\r\n                        [attr.aria-label]=\"dayAriaLabel(day)\"\r\n                        [attr.title]=\"resolveDayTooltip(day)\"\r\n                        [attr.aria-pressed]=\"day.isSelected || day.isRangeStart || day.isRangeEnd\"\r\n                        [attr.aria-disabled]=\"day.isDisabled || null\"\r\n                        [attr.aria-describedby]=\"day.isDisabled ? 'matcha-cal-disabled-desc' : null\"\r\n                        (click)=\"onDayClick(day)\"\r\n                        (mouseenter)=\"onDayHover(day)\"\r\n                        (mouseleave)=\"onDayLeave()\">\r\n                        {{ day.day }}\r\n                    </button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <!-- Mês 2 (dual) -->\r\n        <div class=\"matcha-calendar-month\" *ngIf=\"dualMonth()\">\r\n            <div class=\"matcha-calendar-submonth-label\">{{ rightMonthLabel() }}</div>\r\n            <div class=\"matcha-calendar-weekdays\">\r\n                <span *ngFor=\"let label of weekDayLabels(); trackBy: trackByIndex\" class=\"matcha-calendar-weekday\">{{ label }}</span>\r\n            </div>\r\n            <div class=\"matcha-calendar-divider\"></div>\r\n            <div class=\"matcha-calendar-body\">\r\n                <div *ngFor=\"let week of weeksRight(); trackBy: trackByWeek\" class=\"matcha-calendar-row\">\r\n                    <button\r\n                        *ngFor=\"let day of week; trackBy: trackByDay\"\r\n                        type=\"button\"\r\n                        class=\"matcha-calendar-cell\"\r\n                        [class.is-today]=\"day.isToday\"\r\n                        [class.is-selected]=\"day.isSelected\"\r\n                        [class.is-range-start]=\"day.isRangeStart\"\r\n                        [class.is-range-end]=\"day.isRangeEnd\"\r\n                        [class.is-in-range]=\"day.isInRange\"\r\n                        [class.is-other-month]=\"day.isOtherMonth\"\r\n                        [class.is-disabled]=\"day.isDisabled\"\r\n                        [class.is-marked]=\"day.isMarked\"\r\n                        [disabled]=\"day.isDisabled\"\r\n                        [attr.aria-label]=\"dayAriaLabel(day)\"\r\n                        [attr.title]=\"resolveDayTooltip(day)\"\r\n                        [attr.aria-pressed]=\"day.isSelected || day.isRangeStart || day.isRangeEnd\"\r\n                        [attr.aria-disabled]=\"day.isDisabled || null\"\r\n                        [attr.aria-describedby]=\"day.isDisabled ? 'matcha-cal-disabled-desc' : null\"\r\n                        (click)=\"onDayClick(day)\"\r\n                        (mouseenter)=\"onDayHover(day)\"\r\n                        (mouseleave)=\"onDayLeave()\">\r\n                        {{ day.day }}\r\n                    </button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n\r\n<!-- Year View (12 months — 3 cols) -->\r\n<ng-container *ngIf=\"currentView() === 'year'\">\r\n    <div class=\"matcha-calendar-grid matcha-calendar-grid--months\">\r\n        <button\r\n            *ngFor=\"let month of resolvedMonthNames(); let i = index; trackBy: trackByIndex\"\r\n            type=\"button\"\r\n            class=\"matcha-calendar-grid-cell\"\r\n            [class.is-today]=\"isMonthToday(i)\"\r\n            [class.is-selected]=\"isMonthSelected(i)\"\r\n            [class.is-disabled]=\"isMonthDisabled(i)\"\r\n            [disabled]=\"isMonthDisabled(i)\"\r\n            (click)=\"onMonthClick(i)\">\r\n            {{ month }}\r\n        </button>\r\n    </div>\r\n</ng-container>\r\n\r\n<!-- Decade View (10 years — 3 cols) -->\r\n<ng-container *ngIf=\"currentView() === 'decade'\">\r\n    <div class=\"matcha-calendar-grid matcha-calendar-grid--years\">\r\n        <button\r\n            *ngFor=\"let year of years(); trackBy: trackByIndex\"\r\n            type=\"button\"\r\n            class=\"matcha-calendar-grid-cell\"\r\n            [class.is-today]=\"isYearToday(year)\"\r\n            [class.is-selected]=\"isYearSelected(year)\"\r\n            [class.is-disabled]=\"isYearDisabled(year)\"\r\n            [disabled]=\"isYearDisabled(year)\"\r\n            (click)=\"onYearClick(year)\">\r\n            {{ year }}\r\n        </button>\r\n    </div>\r\n</ng-container>\r\n\r\n<!-- Footer: quick action \"Hoje\" -->\r\n<div class=\"matcha-calendar-footer\" *ngIf=\"showTodayButton()\">\r\n    <button type=\"button\"\r\n            class=\"matcha-calendar-today-btn\"\r\n            [disabled]=\"isTodayDisabled()\"\r\n            [class.is-disabled]=\"isTodayDisabled()\"\r\n            (click)=\"onTodayClick()\">\r\n        {{ resolvedTodayLabel() }}\r\n    </button>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation, booleanAttribute, forwardRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport { MatchaValidators } from '../../matcha-validators/matcha-validators';\r\nimport { MatchaCalendarComponent } from '../../matcha-calendar/calendar/matcha-calendar.component';\r\nimport { MatchaPanelComponent } from '../../matcha-panel/matcha-panel.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-date',\r\n  templateUrl: './matcha-date.component.html',\r\n  styleUrls: ['./matcha-date.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaCalendarComponent, MatchaPanelComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MatchaDateComponent),\r\n      multi: true\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: forwardRef(() => MatchaDateComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class MatchaDateComponent implements ControlValueAccessor, Validator {\r\n  /** Reflete no host para o tema e para a inferencia do matcha-form-field. */\r\n  @HostBinding('attr.readonly') get readonlyAttr() { return this.readonly ? '' : null; }\r\n\r\n  @Input() placeholder: string = '__/__/____';\r\n  @Input() min: string = '';\r\n  @Input() max: string = '';\r\n  @Input() disabled: boolean = false;\r\n\r\n  /**\r\n   * Somente leitura: a data continua LEGIVEL e o campo focavel, mas nao aceita digitacao nem\r\n   * abre o calendario.\r\n   *\r\n   * Nao e sinonimo de `disabled` — este apaga o contraste, tira o campo da ordem de tabulacao e\r\n   * o esconde do leitor de tela. Use `disabled` para ACAO INDISPONIVEL e `readonly` para\r\n   * CONTEUDO QUE SE LE.\r\n   *\r\n   * Aqui o `readonly` nativo do `<input>` faz metade do trabalho (bloqueia a digitacao mantendo\r\n   * foco e leitura); a outra metade e nao abrir o picker, no `togglePicker`.\r\n   *\r\n   * Tambem REFLETE o atributo no host, o que o `disabled` deste componente nao faz — e a divida\r\n   * que o proprio `matcha-form-field` documenta: sem reflexao ele nao consegue inferir o estado\r\n   * dos filhos projetados.\r\n   */\r\n  @Input() readonly: boolean = false;\r\n\r\n  @Input() showPicker: boolean = true;\r\n\r\n  /**\r\n   * Não dispara o evento global que fecha os outros painéis ao abrir o calendário.\r\n   * Ligue quando o matcha-date vive DENTRO de outro painel (ex.: o editor de\r\n   * período personalizado do matcha-period) — sem isso, abrir o calendário\r\n   * fecharia o painel que contém o próprio campo.\r\n   */\r\n  @Input({ transform: booleanAttribute }) suppressPanelGlobalClose: boolean = false;\r\n\r\n  /**\r\n   * Emite o pane do calendário quando ele abre. O par do input acima: o painel\r\n   * de fora registra esse elemento em `ignoreClickOutsideElements` pra que\r\n   * clicar num dia não conte como clique fora.\r\n   */\r\n  @Output() calendarPanelOpened = new EventEmitter<HTMLElement>();\r\n\r\n  @ViewChild('textInput') textInput!: ElementRef<HTMLInputElement>;\r\n  @ViewChild('container', { static: true }) container!: ElementRef<HTMLElement>;\r\n  @ViewChild('pickerButton') pickerButton?: ElementRef<HTMLButtonElement>;\r\n  @ViewChild(MatchaPanelComponent) panel?: MatchaPanelComponent;\r\n  @ViewChild(MatchaCalendarComponent) calendar?: MatchaCalendarComponent;\r\n\r\n  value: string = '';\r\n  displayValue: string = '';\r\n  isDisabled: boolean = false;\r\n  panelOpen: boolean = false;\r\n  selectedDate: Date | null = null;\r\n  /** True quando formato `DD/MM/YYYY` está completo mas a data é impossível\r\n   *  (ex: 31/02/2024). Usado em `aria-invalid` pra screen readers. */\r\n  isDateInvalid: boolean = false;\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n  private onChange = (value: any) => {};\r\n  private onTouched = () => {};\r\n\r\n  writeValue(value: any): void {\r\n    if (value) {\r\n      // Se for um objeto Date, converter para YYYY-MM-DD (usando componentes locais)\r\n      if (value instanceof Date && !isNaN(value.getTime())) {\r\n        const year = value.getFullYear();\r\n        const month = String(value.getMonth() + 1).padStart(2, '0');\r\n        const day = String(value.getDate()).padStart(2, '0');\r\n        value = `${year}-${month}-${day}`;\r\n      }\r\n\r\n      // Se o valor vem como YYYY-MM-DD (do FormControl ou convertido acima)\r\n      if (this.isValidDateFormat(value, 'YYYY-MM-DD')) {\r\n        this.value = value;\r\n        this.displayValue = this.formatDateForDisplay(value);\r\n      } else if (this.isValidDateFormat(value, 'DD/MM/YYYY')) {\r\n        this.displayValue = value;\r\n        this.value = this.convertToYYYYMMDD(value);\r\n      } else {\r\n        this.value = value;\r\n        this.displayValue = value || '';\r\n      }\r\n      this.selectedDate = this.isoToDate(this.value);\r\n      if (this.textInput?.nativeElement) {\r\n        setTimeout(() => {\r\n          if (this.textInput?.nativeElement) {\r\n            this.textInput.nativeElement.value = this.displayValue;\r\n          }\r\n        }, 0);\r\n      }\r\n    } else {\r\n      this.value = '';\r\n      this.displayValue = '';\r\n      this.selectedDate = null;\r\n      if (this.textInput?.nativeElement) {\r\n        this.textInput.nativeElement.value = '';\r\n      }\r\n    }\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  onInputChange(event: Event): void {\r\n    const input = event.target as HTMLInputElement;\r\n    let inputValue = input.value;\r\n\r\n    // Aplicar máscara DD/MM/YYYY manualmente (permite zeros)\r\n    inputValue = this.applyDateMask(inputValue);\r\n\r\n    // Atualizar o valor do input se a máscara foi aplicada\r\n    if (input.value !== inputValue) {\r\n      input.value = inputValue;\r\n    }\r\n\r\n    this.displayValue = inputValue;\r\n\r\n    // Apenas converter para YYYY-MM-DD se a data estiver completa e válida\r\n    if (inputValue && inputValue.length === 10 && this.isValidDateFormat(inputValue, 'DD/MM/YYYY')) {\r\n      const yyyyMMdd = this.convertToYYYYMMDD(inputValue);\r\n      if (this.isValidDate(yyyyMMdd)) {\r\n        this.value = yyyyMMdd;\r\n        this.selectedDate = this.isoToDate(yyyyMMdd);\r\n        this.isDateInvalid = false;\r\n        this.onChange(yyyyMMdd);\r\n      } else {\r\n        // Data inválida (ex: 31/02/2024) - não limpar, apenas não converter\r\n        this.isDateInvalid = true;\r\n        this.onChange(null);\r\n      }\r\n    } else if (!inputValue || inputValue.length === 0) {\r\n      // Campo vazio\r\n      this.value = '';\r\n      this.selectedDate = null;\r\n      this.isDateInvalid = false;\r\n      this.onChange(null);\r\n    } else {\r\n      // Data incompleta - emitir null para indicar que ainda não está completa\r\n      this.isDateInvalid = false;\r\n      this.onChange(null);\r\n    }\r\n  }\r\n\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    // ↓ com picker fechado: abre (paridade com <input type=\"date\"> + Alt+↓ nativo).\r\n    if (event.key === 'ArrowDown' && !this.panelOpen && !this.disabled && !this.isDisabled && !this.readonly && this.showPicker) {\r\n      event.preventDefault();\r\n      this.togglePicker();\r\n      return;\r\n    }\r\n    // Esc com picker aberto: fecha + mantém foco no input.\r\n    if (event.key === 'Escape' && this.panelOpen) {\r\n      event.preventDefault();\r\n      this.panelOpen = false;\r\n      this.textInput?.nativeElement?.focus();\r\n      return;\r\n    }\r\n\r\n    // Permitir Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X, Backspace, Delete, Tab, Arrow keys\r\n    const allowedKeys = ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\r\n    const isCtrl = event.ctrlKey || event.metaKey;\r\n    const isAllowedCtrl = isCtrl && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase());\r\n\r\n    if (allowedKeys.includes(event.key) || isAllowedCtrl) {\r\n      return; // Permitir\r\n    }\r\n\r\n    // Permitir apenas números e barras\r\n    if (!/[0-9\\/]/.test(event.key)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  private applyDateMask(value: string): string {\r\n    // Remove tudo que não é número\r\n    const numbers = value.replace(/\\D/g, '');\r\n\r\n    // Limita a 8 dígitos (DDMMYYYY)\r\n    const limitedNumbers = numbers.slice(0, 8);\r\n\r\n    // Aplica máscara DD/MM/YYYY\r\n    if (limitedNumbers.length <= 2) {\r\n      return limitedNumbers;\r\n    } else if (limitedNumbers.length <= 4) {\r\n      return `${limitedNumbers.slice(0, 2)}/${limitedNumbers.slice(2)}`;\r\n    } else {\r\n      return `${limitedNumbers.slice(0, 2)}/${limitedNumbers.slice(2, 4)}/${limitedNumbers.slice(4, 8)}`;\r\n    }\r\n  }\r\n\r\n  onBlur(): void {\r\n    this.onTouched();\r\n\r\n    // Obter o valor atual do input\r\n    const currentInputValue = this.textInput?.nativeElement?.value || this.displayValue;\r\n\r\n    // Se já temos um valor válido e a data digitada é a mesma, não fazer nada\r\n    if (this.value && currentInputValue && currentInputValue.length === 10) {\r\n      const yyyyMMdd = this.convertToYYYYMMDD(currentInputValue);\r\n      if (this.value === yyyyMMdd) {\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Apenas tentar converter se a data estiver completa\r\n    // Não limpar nada - deixa o matcha-error mostrar erros de validação\r\n    if (currentInputValue && currentInputValue.length === 10) {\r\n      if (this.isValidDateFormat(currentInputValue, 'DD/MM/YYYY')) {\r\n        const yyyyMMdd = this.convertToYYYYMMDD(currentInputValue);\r\n        if (this.isValidDate(yyyyMMdd)) {\r\n          // Data válida, atualizar valores\r\n          this.value = yyyyMMdd;\r\n          this.displayValue = currentInputValue;\r\n          this.selectedDate = this.isoToDate(yyyyMMdd);\r\n          this.onChange(yyyyMMdd);\r\n        } else {\r\n          // Data inválida - não limpar, apenas não converter\r\n          this.onChange(null);\r\n        }\r\n      } else {\r\n        // Formato inválido - não limpar, apenas não converter\r\n        this.onChange(null);\r\n      }\r\n    } else if (currentInputValue && currentInputValue.length > 0) {\r\n      // Data incompleta - manter o que foi digitado\r\n      this.displayValue = currentInputValue;\r\n      this.onChange(null);\r\n    } else {\r\n      // Campo vazio\r\n      this.displayValue = '';\r\n      this.value = '';\r\n      this.selectedDate = null;\r\n      this.onChange(null);\r\n    }\r\n  }\r\n\r\n  togglePicker(): void {\r\n    if (this.disabled || this.isDisabled || this.readonly || !this.panel) return;\r\n    if (this.panelOpen) {\r\n      this.panel.closePanel();\r\n      return;\r\n    }\r\n    this.panel.attachTo(this.container.nativeElement);\r\n    this.panel.openPanel();\r\n  }\r\n\r\n  onPanelOpened(): void {\r\n    this.panelOpen = true;\r\n    this.cdr.markForCheck();\r\n    const pane = this.panel?.paneElement;\r\n    if (pane) {\r\n      this.calendarPanelOpened.emit(pane);\r\n    }\r\n    // Focar o calendar pra habilitar navegação por teclado\r\n    queueMicrotask(() => this.calendar?.focus());\r\n  }\r\n\r\n  onPanelClosed(): void {\r\n    this.panelOpen = false;\r\n    this.onTouched();\r\n    this.cdr.markForCheck();\r\n    // Devolver foco ao botão que abriu o picker\r\n    this.pickerButton?.nativeElement?.focus();\r\n  }\r\n\r\n  onCalendarClosed(): void {\r\n    // Emitido pelo calendar em Esc\r\n    this.panel?.closePanel();\r\n  }\r\n\r\n  onCalendarDateSelected(date: Date): void {\r\n    const iso = this.dateToIso(date);\r\n    this.value = iso;\r\n    this.displayValue = this.formatDateForDisplay(iso);\r\n    this.selectedDate = date;\r\n    if (this.textInput?.nativeElement) {\r\n      this.textInput.nativeElement.value = this.displayValue;\r\n    }\r\n    this.onChange(iso);\r\n    this.cdr.markForCheck();\r\n    // Delay curto para o usuário ver o feedback de seleção antes do popover fechar.\r\n    setTimeout(() => this.panel?.closePanel(), 180);\r\n  }\r\n\r\n  get minDate(): Date | null {\r\n    return this.min ? this.isoToDate(this.min) : null;\r\n  }\r\n\r\n  get maxDate(): Date | null {\r\n    return this.max ? this.isoToDate(this.max) : null;\r\n  }\r\n\r\n  private isoToDate(iso: string): Date | null {\r\n    if (!iso || !this.isValidDateFormat(iso, 'YYYY-MM-DD')) return null;\r\n    const [y, m, d] = iso.split('-').map(Number);\r\n    return new Date(y, m - 1, d);\r\n  }\r\n\r\n  private dateToIso(date: Date): string {\r\n    const y = date.getFullYear();\r\n    const m = String(date.getMonth() + 1).padStart(2, '0');\r\n    const d = String(date.getDate()).padStart(2, '0');\r\n    return `${y}-${m}-${d}`;\r\n  }\r\n\r\n  private isValidDateFormat(date: string, format: 'DD/MM/YYYY' | 'YYYY-MM-DD'): boolean {\r\n    if (format === 'DD/MM/YYYY') {\r\n      return /^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(date);\r\n    } else {\r\n      return /^\\d{4}-\\d{2}-\\d{2}$/.test(date);\r\n    }\r\n  }\r\n\r\n  private isValidDate(dateString: string): boolean {\r\n    if (!this.isValidDateFormat(dateString, 'YYYY-MM-DD')) {\r\n      return false;\r\n    }\r\n\r\n    // Usar Date constructor com componentes separados para evitar problemas de fuso horário\r\n    const [year, month, day] = dateString.split('-').map(Number);\r\n\r\n    // Criar data usando componentes locais (não UTC)\r\n    const date = new Date(year, month - 1, day);\r\n\r\n    // Verificar se a data é válida e corresponde ao que foi digitado\r\n    // Isso evita que 31/02/2024 seja aceito (seria convertido para 03/03/2024)\r\n    return date.getFullYear() === year &&\r\n           date.getMonth() + 1 === month &&\r\n           date.getDate() === day;\r\n  }\r\n\r\n  private convertToYYYYMMDD(ddMMyyyy: string): string {\r\n    const [day, month, year] = ddMMyyyy.split('/');\r\n    return `${year}-${month}-${day}`;\r\n  }\r\n\r\n  private formatDateForDisplay(yyyyMMdd: string): string {\r\n    const [year, month, day] = yyyyMMdd.split('-');\r\n    return `${day}/${month}/${year}`;\r\n  }\r\n\r\n  // ── Validator interface ─────────────────────────────────────────────────\r\n  // Valida formato dd/mm/aaaa + data real + respeita min/max se definidos.\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const display = this.displayValue || '';\r\n    if (!display) return null; // required é responsabilidade de quem declarar\r\n\r\n    const base = MatchaValidators.date({ value: display } as AbstractControl);\r\n    if (base) return base;\r\n\r\n    if (this.min) {\r\n        const minErr = MatchaValidators.minDate(this.formatDateForDisplay(this.min))({ value: display } as AbstractControl);\r\n        if (minErr) return minErr;\r\n    }\r\n    if (this.max) {\r\n        const maxErr = MatchaValidators.maxDate(this.formatDateForDisplay(this.max))({ value: display } as AbstractControl);\r\n        if (maxErr) return maxErr;\r\n    }\r\n    return null;\r\n  }\r\n}\r\n","<div #container class=\"matcha-date-container\">\r\n  <input\r\n    #textInput\r\n    type=\"text\"\r\n    class=\"matcha-date-input\"\r\n    inputmode=\"numeric\"\r\n    autocomplete=\"off\"\r\n    spellcheck=\"false\"\r\n    [value]=\"displayValue\"\r\n    [placeholder]=\"placeholder\"\r\n    [disabled]=\"disabled || isDisabled\"\r\n    [attr.readonly]=\"readonly ? '' : null\"\r\n    [attr.aria-invalid]=\"isDateInvalid ? 'true' : null\"\r\n    maxlength=\"10\"\r\n    (input)=\"onInputChange($event)\"\r\n    (blur)=\"onBlur()\"\r\n    (keydown)=\"onKeyDown($event)\"\r\n  />\r\n\r\n  <!-- Escondido em modo leitura: `readonly` nao e atributo valido em <button>, e um botao\r\n       visivel que nao abre nada e pior que botao ausente. Nao ha picker para abrir. -->\r\n  <button\r\n    *ngIf=\"showPicker && !readonly\"\r\n    #pickerButton\r\n    type=\"button\"\r\n    class=\"matcha-date-picker-button\"\r\n    (click)=\"togglePicker()\"\r\n    [disabled]=\"disabled || isDisabled\"\r\n    [attr.aria-expanded]=\"panelOpen\"\r\n    aria-haspopup=\"dialog\"\r\n    aria-label=\"Abrir seletor de data\"\r\n    tabindex=\"0\"\r\n  >\r\n    <span class=\"i-matcha-calendar\"></span>\r\n  </button>\r\n\r\n  <matcha-panel\r\n    [minWidth]=\"296\"\r\n    [maxHeight]=\"400\"\r\n    widthMode=\"max-content\"\r\n    placement=\"auto\"\r\n    [portalToBody]=\"true\"\r\n    [suppressGlobalClose]=\"suppressPanelGlobalClose\"\r\n    (opened)=\"onPanelOpened()\"\r\n    (closed)=\"onPanelClosed()\"\r\n  >\r\n    <matcha-calendar\r\n      [selected]=\"selectedDate\"\r\n      [min]=\"minDate\"\r\n      [max]=\"maxDate\"\r\n      (dateSelected)=\"onCalendarDateSelected($event)\"\r\n      (closed)=\"onCalendarClosed()\"\r\n    ></matcha-calendar>\r\n  </matcha-panel>\r\n</div>\r\n","import {\r\n    AfterViewInit,\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostBinding,\r\n    HostListener,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild,\r\n    ViewEncapsulation\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaTimePanelMode = 'auto' | 'digital' | 'scroll';\r\nexport type MatchaTimeHourFormat = '24' | '12';\r\n\r\n/**\r\n * matcha-time-panel — painel popup do timepicker.\r\n *\r\n * Modos:\r\n *   • `mode=\"auto\"` (default): digital em desktop, scroll em touch.\r\n *   • `mode=\"digital\"` / `mode=\"scroll\"`: força modo.\r\n *\r\n * Props:\r\n *   • `value` — HH:mm em 24h (valor interno canônico).\r\n *   • `min`/`max` — restrições HH:mm; horários fora do range ficam dim e\r\n *     não clicáveis; OK fica disabled se `value` cai fora.\r\n *   • `hourFormat` — '24' (default) ou '12' (AM/PM). Em 12h, o painel mostra\r\n *     hours 1-12 + toggle AM/PM, mas o emit continua em 24h (canônico).\r\n *   • `presets` — lista HH:mm, renderiza seção opcional.\r\n *   • `minuteStep` — step de minutos nas rodas/stepper.\r\n *\r\n * Emite `timeSelected` (HH:mm 24h) e `closed`.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-time-panel',\r\n    templateUrl: './time-panel.component.html',\r\n    styleUrls: ['./time-panel.component.scss'],\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaTimePanelComponent implements OnChanges, AfterViewInit, OnDestroy {\r\n    /** Valor atual no formato HH:mm (24h). */\r\n    @Input() value: string = '';\r\n\r\n    /** Modo de exibição. Nota: end-users nunca alternam; é decisão de device/dev. */\r\n    @Input() mode: MatchaTimePanelMode = 'auto';\r\n\r\n    /** Formato de hora exibido. Emit sempre em 24h (canônico). */\r\n    @Input() hourFormat: MatchaTimeHourFormat = '24';\r\n\r\n    /** Limite inferior (HH:mm). Vazio = sem limite. */\r\n    @Input() min: string = '';\r\n\r\n    /** Limite superior (HH:mm). Vazio = sem limite. */\r\n    @Input() max: string = '';\r\n\r\n    /** Step de minutos (stepper e scroll wheel). */\r\n    @Input() minuteStep: number = 1;\r\n\r\n    /** Lista de presets (HH:mm). Undefined/[] → seção não é renderizada. */\r\n    @Input() presets?: string[];\r\n\r\n    /** Exibe botão \"Agora\" nas actions. */\r\n    @Input() showNow: boolean = true;\r\n\r\n    /** Label do título do painel. */\r\n    @Input() title: string = 'Informe o horário';\r\n\r\n    @Output() timeSelected = new EventEmitter<string>();\r\n    @Output() closed = new EventEmitter<void>();\r\n\r\n    @HostBinding('attr.role') readonly role = 'dialog';\r\n    @HostBinding('attr.aria-modal') readonly ariaModal = 'true';\r\n\r\n    @ViewChild('hourWheel') hourWheelRef?: ElementRef<HTMLElement>;\r\n    @ViewChild('minuteWheel') minuteWheelRef?: ElementRef<HTMLElement>;\r\n    @ViewChild('primaryAction') primaryActionRef?: ElementRef<HTMLButtonElement>;\r\n\r\n    /** Hora canônica 0-23. */\r\n    hour = 20;\r\n    /** Minuto canônico 0-59. */\r\n    minute = 0;\r\n\r\n    /** Detecta coarse pointer (touch). Sincronizado em tempo real. */\r\n    private isCoarsePointer = typeof window !== 'undefined'\r\n        && typeof window.matchMedia === 'function'\r\n        && window.matchMedia('(pointer: coarse)').matches;\r\n\r\n    private mediaQuery?: MediaQueryList;\r\n    private mediaListener = (e: MediaQueryListEvent) => {\r\n        this.isCoarsePointer = e.matches;\r\n        this.cdr.markForCheck();\r\n    };\r\n\r\n    constructor(private cdr: ChangeDetectorRef) {\r\n        if (typeof window !== 'undefined' && window.matchMedia) {\r\n            this.mediaQuery = window.matchMedia('(pointer: coarse)');\r\n            this.mediaQuery.addEventListener?.('change', this.mediaListener);\r\n        }\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes['value']) {\r\n            this.syncFromValue();\r\n            setTimeout(() => this.scrollWheelsToSelection(false), 0);\r\n        }\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this.scrollWheelsToSelection(false);\r\n        queueMicrotask(() => this.primaryActionRef?.nativeElement.focus({ preventScroll: true }));\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.mediaQuery?.removeEventListener?.('change', this.mediaListener);\r\n        clearTimeout(this.hourScrollTimer);\r\n        clearTimeout(this.minuteScrollTimer);\r\n    }\r\n\r\n    private syncFromValue(): void {\r\n        const [h, m] = this.parseTime(this.value);\r\n        this.hour = h;\r\n        this.minute = m;\r\n    }\r\n\r\n    /**\r\n     * Re-sincroniza hour/minute a partir do `value` atual. Chamar sempre que\r\n     * o painel abrir pra que, quando `value` estiver vazio, o default seja o\r\n     * horário atual na hora da abertura (não o horário em que o component foi\r\n     * instanciado).\r\n     */\r\n    resync(): void {\r\n        this.syncFromValue();\r\n        this.cdr.markForCheck();\r\n        setTimeout(() => this.scrollWheelsToSelection(false), 0);\r\n    }\r\n\r\n    private parseTime(raw: string): [number, number] {\r\n        const match = /^(\\d{1,2}):(\\d{2})$/.exec(raw || '');\r\n        if (!match) {\r\n            const now = new Date();\r\n            const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n            return [now.getHours(), Math.round(now.getMinutes() / step) * step % 60];\r\n        }\r\n        const h = Math.max(0, Math.min(23, parseInt(match[1], 10)));\r\n        const m = Math.max(0, Math.min(59, parseInt(match[2], 10)));\r\n        return [h, m];\r\n    }\r\n\r\n    private parseRange(v: string): [number, number] | null {\r\n        if (!/^\\d{1,2}:\\d{2}$/.test(v || '')) return null;\r\n        const [h, m] = v.split(':').map(Number);\r\n        return [h, m];\r\n    }\r\n\r\n    pad(n: number): string {\r\n        return n < 10 ? `0${n}` : String(n);\r\n    }\r\n\r\n    // ── Mode resolution ────────────────────────────────────────────────────\r\n    get effectiveMode(): 'digital' | 'scroll' {\r\n        if (this.mode === 'digital' || this.mode === 'scroll') return this.mode;\r\n        return this.isCoarsePointer ? 'scroll' : 'digital';\r\n    }\r\n\r\n    get hasPresets(): boolean {\r\n        return Array.isArray(this.presets) && this.presets.length > 0;\r\n    }\r\n\r\n    get is12h(): boolean {\r\n        return this.hourFormat === '12';\r\n    }\r\n\r\n    // ── min/max checks ─────────────────────────────────────────────────────\r\n    isTimeAllowed(h: number, m: number): boolean {\r\n        const minR = this.parseRange(this.min);\r\n        const maxR = this.parseRange(this.max);\r\n        const total = h * 60 + m;\r\n        if (minR && total < minR[0] * 60 + minR[1]) return false;\r\n        if (maxR && total > maxR[0] * 60 + maxR[1]) return false;\r\n        return true;\r\n    }\r\n\r\n    isHourAllowed(h: number): boolean {\r\n        // hora permitida se existe algum minuto válido (passo respeitado) dentro do range\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        for (let m = 0; m < 60; m += step) {\r\n            if (this.isTimeAllowed(h, m)) return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    isMinuteAllowed(m: number, forHour: number = this.hour): boolean {\r\n        return this.isTimeAllowed(forHour, m);\r\n    }\r\n\r\n    get canConfirm(): boolean {\r\n        return this.isTimeAllowed(this.hour, this.minute);\r\n    }\r\n\r\n    // ── AM/PM ──────────────────────────────────────────────────────────────\r\n    get period(): 'AM' | 'PM' {\r\n        return this.hour < 12 ? 'AM' : 'PM';\r\n    }\r\n\r\n    /** Hora exibida: em 24h = 0-23; em 12h = 1-12 (sem período). */\r\n    get displayHour(): number {\r\n        if (!this.is12h) return this.hour;\r\n        const h12 = this.hour % 12;\r\n        return h12 === 0 ? 12 : h12;\r\n    }\r\n\r\n    setPeriod(p: 'AM' | 'PM'): void {\r\n        const isAM = p === 'AM';\r\n        const currentIsAM = this.hour < 12;\r\n        if (isAM === currentIsAM) return;\r\n        this.hour = (this.hour + 12) % 24;\r\n        // Se fica fora do range após flip, encontrar hora válida mais próxima.\r\n        if (!this.isHourAllowed(this.hour)) {\r\n            this.hour = this.findNextAllowedHour(this.hour, 1) ?? this.hour;\r\n        }\r\n        if (!this.isMinuteAllowed(this.minute)) {\r\n            this.minute = this.clampMinuteToRange(this.hour);\r\n        }\r\n        setTimeout(() => this.scrollWheelsToSelection(true), 0);\r\n    }\r\n\r\n    // ── Digital steppers ───────────────────────────────────────────────────\r\n    stepHour(delta: number): void {\r\n        const next = this.findNextAllowedHour(this.hour, delta);\r\n        if (next == null) return;\r\n        this.hour = next;\r\n        if (!this.isMinuteAllowed(this.minute)) {\r\n            this.minute = this.clampMinuteToRange(this.hour);\r\n        }\r\n        setTimeout(() => this.scrollWheelsToSelection(true), 0);\r\n    }\r\n\r\n    stepMinute(delta: number): void {\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        const total = Math.ceil(60 / step);\r\n        let minuteIndex = Math.round(this.minute / step) % total;\r\n        for (let i = 0; i < total; i++) {\r\n            minuteIndex = (minuteIndex + delta + total) % total;\r\n            const candidate = minuteIndex * step;\r\n            if (this.isMinuteAllowed(candidate)) {\r\n                this.minute = candidate;\r\n                setTimeout(() => this.scrollWheelsToSelection(true), 0);\r\n                return;\r\n            }\r\n        }\r\n    }\r\n\r\n    private findNextAllowedHour(from: number, delta: number): number | null {\r\n        const direction = delta >= 0 ? 1 : -1;\r\n        for (let i = 1; i <= 24; i++) {\r\n            const candidate = (from + direction * i + 24) % 24;\r\n            if (this.isHourAllowed(candidate)) return candidate;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private clampMinuteToRange(hour: number): number {\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        const total = Math.ceil(60 / step);\r\n        for (let i = 0; i < total; i++) {\r\n            const candidate = i * step;\r\n            if (this.isMinuteAllowed(candidate, hour)) return candidate;\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    // ── Scroll wheels ──────────────────────────────────────────────────────\r\n    readonly itemHeight = 36;\r\n\r\n    get hours(): number[] {\r\n        if (this.is12h) {\r\n            // 1..12 para o período atual\r\n            const base = this.period === 'AM' ? 0 : 12;\r\n            return Array.from({ length: 12 }, (_, i) => base + ((i + 1) % 12));\r\n            // → AM: [1,2,...,11,0]; PM: [13,14,...,23,12]\r\n            // Reordenamos abaixo pra sequência visual 1..12.\r\n        }\r\n        return Array.from({ length: 24 }, (_, i) => i);\r\n    }\r\n\r\n    /** Para o display das rodas 12h, 1..12 na ordem certa. */\r\n    get hourLabels(): { value: number; label: number }[] {\r\n        if (this.is12h) {\r\n            const isAM = this.period === 'AM';\r\n            return Array.from({ length: 12 }, (_, i) => {\r\n                const displayH = i + 1; // 1..12\r\n                const canonical = displayH === 12 ? (isAM ? 0 : 12) : (isAM ? displayH : displayH + 12);\r\n                return { value: canonical, label: displayH };\r\n            });\r\n        }\r\n        return Array.from({ length: 24 }, (_, i) => ({ value: i, label: i }));\r\n    }\r\n\r\n    get minutes(): number[] {\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        return Array.from({ length: Math.ceil(60 / step) }, (_, i) => i * step);\r\n    }\r\n\r\n    private scrollWheelsToSelection(smooth: boolean): void {\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        const minuteIndex = Math.round(this.minute / step) % Math.ceil(60 / step);\r\n\r\n        const hourIndex = this.is12h\r\n            ? this.hourLabels.findIndex(h => h.value === this.hour)\r\n            : this.hour;\r\n\r\n        this.scrollWheelTo(this.hourWheelRef?.nativeElement, Math.max(0, hourIndex), smooth);\r\n        this.scrollWheelTo(this.minuteWheelRef?.nativeElement, minuteIndex, smooth);\r\n    }\r\n\r\n    private scrollWheelTo(el: HTMLElement | undefined, index: number, smooth: boolean): void {\r\n        if (!el) return;\r\n        const top = index * this.itemHeight;\r\n        el.scrollTo({ top, behavior: smooth ? 'smooth' : 'auto' });\r\n    }\r\n\r\n    private hourScrollTimer?: ReturnType<typeof setTimeout>;\r\n    private minuteScrollTimer?: ReturnType<typeof setTimeout>;\r\n\r\n    onHourScroll(event: Event): void {\r\n        const el = event.target as HTMLElement;\r\n        const idx = Math.round(el.scrollTop / this.itemHeight);\r\n        if (this.is12h) {\r\n            const labels = this.hourLabels;\r\n            const clampedIdx = Math.max(0, Math.min(labels.length - 1, idx));\r\n            const nextHour = labels[clampedIdx].value;\r\n            if (nextHour !== this.hour) {\r\n                this.hour = nextHour;\r\n                this.cdr.markForCheck();\r\n            }\r\n        } else {\r\n            const clamped = Math.max(0, Math.min(23, idx));\r\n            if (clamped !== this.hour) {\r\n                this.hour = clamped;\r\n                this.cdr.markForCheck();\r\n            }\r\n        }\r\n\r\n        // Se settar em hora inválida (min/max), snap pra próxima válida após scroll parar\r\n        clearTimeout(this.hourScrollTimer);\r\n        this.hourScrollTimer = setTimeout(() => {\r\n            if (!this.isHourAllowed(this.hour)) {\r\n                const valid = this.findNearestAllowedHour(this.hour);\r\n                if (valid != null) {\r\n                    this.hour = valid;\r\n                    if (!this.isMinuteAllowed(this.minute)) {\r\n                        this.minute = this.clampMinuteToRange(valid);\r\n                    }\r\n                    const index = this.is12h\r\n                        ? this.hourLabels.findIndex(h => h.value === valid)\r\n                        : valid;\r\n                    this.scrollWheelTo(el, Math.max(0, index), true);\r\n                    this.cdr.markForCheck();\r\n                }\r\n            }\r\n        }, 150);\r\n    }\r\n\r\n    onMinuteScroll(event: Event): void {\r\n        const el = event.target as HTMLElement;\r\n        const idx = Math.round(el.scrollTop / this.itemHeight);\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        const max = Math.ceil(60 / step) - 1;\r\n        const clampedIdx = Math.max(0, Math.min(max, idx));\r\n        const minuteValue = clampedIdx * step;\r\n        if (minuteValue !== this.minute) {\r\n            this.minute = minuteValue;\r\n            this.cdr.markForCheck();\r\n        }\r\n\r\n        // Se settar em minuto inválido (min/max), snap pro próximo válido após scroll parar\r\n        clearTimeout(this.minuteScrollTimer);\r\n        this.minuteScrollTimer = setTimeout(() => {\r\n            if (!this.isMinuteAllowed(this.minute)) {\r\n                const valid = this.findNearestAllowedMinute(this.minute);\r\n                if (valid != null) {\r\n                    this.minute = valid;\r\n                    this.scrollWheelTo(el, Math.round(valid / step), true);\r\n                    this.cdr.markForCheck();\r\n                }\r\n            }\r\n        }, 150);\r\n    }\r\n\r\n    private findNearestAllowedHour(from: number): number | null {\r\n        for (let d = 1; d <= 12; d++) {\r\n            const up = (from + d) % 24;\r\n            if (this.isHourAllowed(up)) return up;\r\n            const down = (from - d + 24) % 24;\r\n            if (this.isHourAllowed(down)) return down;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private findNearestAllowedMinute(from: number): number | null {\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        const total = Math.ceil(60 / step);\r\n        for (let d = 1; d < total; d++) {\r\n            const up = (from + d * step) % 60;\r\n            if (this.isMinuteAllowed(up)) return up;\r\n            const down = (from - d * step + 60) % 60;\r\n            if (this.isMinuteAllowed(down)) return down;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    onHourItemClick(hour: number): void {\r\n        if (!this.isHourAllowed(hour)) return;\r\n        this.hour = hour;\r\n        if (!this.isMinuteAllowed(this.minute)) {\r\n            this.minute = this.clampMinuteToRange(hour);\r\n        }\r\n        const index = this.is12h\r\n            ? this.hourLabels.findIndex(h => h.value === hour)\r\n            : hour;\r\n        this.scrollWheelTo(this.hourWheelRef?.nativeElement, Math.max(0, index), true);\r\n    }\r\n\r\n    onMinuteItemClick(minute: number): void {\r\n        if (!this.isMinuteAllowed(minute)) return;\r\n        this.minute = minute;\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        const index = Math.round(minute / step);\r\n        this.scrollWheelTo(this.minuteWheelRef?.nativeElement, index, true);\r\n    }\r\n\r\n    // ── Presets ────────────────────────────────────────────────────────────\r\n    isPresetSelected(preset: string): boolean {\r\n        return preset === this.currentValue;\r\n    }\r\n\r\n    isPresetAllowed(preset: string): boolean {\r\n        const r = this.parseRange(preset);\r\n        if (!r) return false;\r\n        return this.isTimeAllowed(r[0], r[1]);\r\n    }\r\n\r\n    // Preset e \"Agora\" apenas PRÉ-PREENCHEM os steppers — OK é o único caminho\r\n    // de confirmação. Antes, esses atalhos emitiam `timeSelected` e fechavam o\r\n    // panel, o que confundia o usuário (\"qual é o botão que confirma?\").\r\n\r\n    selectPreset(preset: string): void {\r\n        if (!this.isPresetAllowed(preset)) return;\r\n        const [h, m] = this.parseTime(preset);\r\n        this.hour = h;\r\n        this.minute = m;\r\n    }\r\n\r\n    // ── Now shortcut ──────────────────────────────────────────────────────\r\n    setToNow(): void {\r\n        const now = new Date();\r\n        const step = this.minuteStep > 0 ? this.minuteStep : 1;\r\n        let h = now.getHours();\r\n        let m = Math.round(now.getMinutes() / step) * step % 60;\r\n        // Se \"agora\" cai fora do range, snap pro limite mais próximo permitido.\r\n        if (!this.isTimeAllowed(h, m)) {\r\n            const minR = this.parseRange(this.min);\r\n            const maxR = this.parseRange(this.max);\r\n            const total = h * 60 + m;\r\n            if (minR && total < minR[0] * 60 + minR[1]) { h = minR[0]; m = minR[1]; }\r\n            else if (maxR && total > maxR[0] * 60 + maxR[1]) { h = maxR[0]; m = maxR[1]; }\r\n        }\r\n        this.hour = h;\r\n        this.minute = m;\r\n    }\r\n\r\n    // ── Actions ────────────────────────────────────────────────────────────\r\n    get currentValue(): string {\r\n        return `${this.pad(this.hour)}:${this.pad(this.minute)}`;\r\n    }\r\n\r\n    cancel(): void {\r\n        this.closed.emit();\r\n    }\r\n\r\n    confirm(): void {\r\n        if (!this.canConfirm) return;\r\n        this.emitSelection();\r\n    }\r\n\r\n    private emitSelection(): void {\r\n        this.timeSelected.emit(this.currentValue);\r\n    }\r\n\r\n    // ── Keyboard ───────────────────────────────────────────────────────────\r\n    @HostListener('keydown', ['$event'])\r\n    onKeydown(event: KeyboardEvent): void {\r\n        if (event.key === 'Escape') {\r\n            event.preventDefault();\r\n            this.cancel();\r\n            return;\r\n        }\r\n        if (event.key === 'Enter') {\r\n            const target = event.target as HTMLElement;\r\n            if (target?.tagName === 'BUTTON') return;\r\n            event.preventDefault();\r\n            this.confirm();\r\n        }\r\n    }\r\n\r\n    onStepperKeydown(event: KeyboardEvent, axis: 'hour' | 'minute'): void {\r\n        if (event.key === 'ArrowUp') {\r\n            event.preventDefault();\r\n            axis === 'hour' ? this.stepHour(1) : this.stepMinute(1);\r\n        } else if (event.key === 'ArrowDown') {\r\n            event.preventDefault();\r\n            axis === 'hour' ? this.stepHour(-1) : this.stepMinute(-1);\r\n        }\r\n    }\r\n}\r\n","<div class=\"matcha-time-panel\" [attr.data-mode]=\"effectiveMode\">\r\n  <!-- Header: título -->\r\n  <div class=\"matcha-time-panel__header\">\r\n    <div class=\"matcha-time-panel__title\">{{ title }}</div>\r\n  </div>\r\n\r\n  <!-- ── Digital (steppers) ───────────────────────────────────────────── -->\r\n  <div *ngIf=\"effectiveMode === 'digital'\" class=\"matcha-time-panel__row\">\r\n    <div class=\"matcha-time-panel__col\">\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__stepper\"\r\n              (click)=\"stepHour(1)\"\r\n              aria-label=\"Aumentar hora\"\r\n              tabindex=\"-1\">▲</button>\r\n      <div class=\"matcha-time-panel__display matcha-time-panel__display--primary\"\r\n           tabindex=\"0\"\r\n           role=\"spinbutton\"\r\n           aria-label=\"Hora\"\r\n           [attr.aria-valuenow]=\"displayHour\"\r\n           [attr.aria-valuemin]=\"is12h ? 1 : 0\"\r\n           [attr.aria-valuemax]=\"is12h ? 12 : 23\"\r\n           (keydown)=\"onStepperKeydown($event, 'hour')\">\r\n        <span>{{ pad(displayHour) }}</span>\r\n      </div>\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__stepper\"\r\n              (click)=\"stepHour(-1)\"\r\n              aria-label=\"Diminuir hora\"\r\n              tabindex=\"-1\">▼</button>\r\n    </div>\r\n\r\n    <span class=\"matcha-time-panel__sep\" aria-hidden=\"true\">:</span>\r\n\r\n    <div class=\"matcha-time-panel__col\">\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__stepper\"\r\n              (click)=\"stepMinute(1)\"\r\n              aria-label=\"Aumentar minuto\"\r\n              tabindex=\"-1\">▲</button>\r\n      <div class=\"matcha-time-panel__display matcha-time-panel__display--secondary\"\r\n           tabindex=\"0\"\r\n           role=\"spinbutton\"\r\n           aria-label=\"Minuto\"\r\n           [attr.aria-valuenow]=\"minute\"\r\n           aria-valuemin=\"0\"\r\n           aria-valuemax=\"59\"\r\n           (keydown)=\"onStepperKeydown($event, 'minute')\">\r\n        <span>{{ pad(minute) }}</span>\r\n      </div>\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__stepper\"\r\n              (click)=\"stepMinute(-1)\"\r\n              aria-label=\"Diminuir minuto\"\r\n              tabindex=\"-1\">▼</button>\r\n    </div>\r\n\r\n    <!-- AM/PM pill (apenas 12h) -->\r\n    <div *ngIf=\"is12h\" class=\"matcha-time-panel__period\" role=\"group\" aria-label=\"Período\">\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__period-btn\"\r\n              [class.matcha-time-panel__period-btn--active]=\"period === 'AM'\"\r\n              (click)=\"setPeriod('AM')\"\r\n              [attr.aria-pressed]=\"period === 'AM'\">AM</button>\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__period-btn\"\r\n              [class.matcha-time-panel__period-btn--active]=\"period === 'PM'\"\r\n              (click)=\"setPeriod('PM')\"\r\n              [attr.aria-pressed]=\"period === 'PM'\">PM</button>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- ── Scroll (rodas com scroll-snap nativo) ────────────────────────── -->\r\n  <div *ngIf=\"effectiveMode === 'scroll'\" class=\"matcha-time-panel__wheels\">\r\n    <div class=\"matcha-time-panel__wheel\"\r\n         #hourWheel\r\n         role=\"listbox\"\r\n         aria-label=\"Hora\"\r\n         tabindex=\"0\"\r\n         (scroll)=\"onHourScroll($event)\">\r\n      <div class=\"matcha-time-panel__wheel-spacer\"></div>\r\n      <button type=\"button\"\r\n              *ngFor=\"let h of hourLabels\"\r\n              class=\"matcha-time-panel__wheel-item\"\r\n              [class.matcha-time-panel__wheel-item--selected]=\"h.value === hour\"\r\n              [class.matcha-time-panel__wheel-item--disabled]=\"!isHourAllowed(h.value)\"\r\n              [disabled]=\"!isHourAllowed(h.value)\"\r\n              role=\"option\"\r\n              [attr.aria-selected]=\"h.value === hour\"\r\n              [attr.aria-disabled]=\"!isHourAllowed(h.value) ? 'true' : null\"\r\n              (click)=\"onHourItemClick(h.value)\">\r\n        {{ pad(h.label) }}\r\n      </button>\r\n      <div class=\"matcha-time-panel__wheel-spacer\"></div>\r\n    </div>\r\n\r\n    <span class=\"matcha-time-panel__sep\" aria-hidden=\"true\">:</span>\r\n\r\n    <div class=\"matcha-time-panel__wheel\"\r\n         #minuteWheel\r\n         role=\"listbox\"\r\n         aria-label=\"Minuto\"\r\n         tabindex=\"0\"\r\n         (scroll)=\"onMinuteScroll($event)\">\r\n      <div class=\"matcha-time-panel__wheel-spacer\"></div>\r\n      <button type=\"button\"\r\n              *ngFor=\"let m of minutes\"\r\n              class=\"matcha-time-panel__wheel-item\"\r\n              [class.matcha-time-panel__wheel-item--selected]=\"m === minute\"\r\n              [class.matcha-time-panel__wheel-item--disabled]=\"!isMinuteAllowed(m)\"\r\n              [disabled]=\"!isMinuteAllowed(m)\"\r\n              role=\"option\"\r\n              [attr.aria-selected]=\"m === minute\"\r\n              [attr.aria-disabled]=\"!isMinuteAllowed(m) ? 'true' : null\"\r\n              (click)=\"onMinuteItemClick(m)\">\r\n        {{ pad(m) }}\r\n      </button>\r\n      <div class=\"matcha-time-panel__wheel-spacer\"></div>\r\n    </div>\r\n\r\n    <!-- AM/PM pill (apenas 12h) -->\r\n    <div *ngIf=\"is12h\" class=\"matcha-time-panel__period matcha-time-panel__period--stacked\" role=\"group\" aria-label=\"Período\">\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__period-btn\"\r\n              [class.matcha-time-panel__period-btn--active]=\"period === 'AM'\"\r\n              (click)=\"setPeriod('AM')\"\r\n              [attr.aria-pressed]=\"period === 'AM'\">AM</button>\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__period-btn\"\r\n              [class.matcha-time-panel__period-btn--active]=\"period === 'PM'\"\r\n              (click)=\"setPeriod('PM')\"\r\n              [attr.aria-pressed]=\"period === 'PM'\">PM</button>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- ── Presets (seção embutida opcional) ────────────────────────────── -->\r\n  <ng-container *ngIf=\"hasPresets\">\r\n    <div class=\"matcha-time-panel__divider\"></div>\r\n    <div class=\"matcha-time-panel__section-title\">Horários sugeridos</div>\r\n    <div class=\"matcha-time-panel__presets\">\r\n      <button type=\"button\"\r\n              *ngFor=\"let preset of presets\"\r\n              class=\"matcha-time-panel__preset\"\r\n              [class.matcha-time-panel__preset--selected]=\"isPresetSelected(preset)\"\r\n              [class.matcha-time-panel__preset--disabled]=\"!isPresetAllowed(preset)\"\r\n              [disabled]=\"!isPresetAllowed(preset)\"\r\n              [attr.aria-disabled]=\"!isPresetAllowed(preset) ? 'true' : null\"\r\n              (click)=\"selectPreset(preset)\">\r\n        {{ preset }}\r\n      </button>\r\n    </div>\r\n  </ng-container>\r\n\r\n  <!-- ── Actions ──────────────────────────────────────────────────────── -->\r\n  <div class=\"matcha-time-panel__divider\"></div>\r\n  <div class=\"matcha-time-panel__actions\">\r\n    <button *ngIf=\"showNow\"\r\n            type=\"button\"\r\n            class=\"matcha-time-panel__action matcha-time-panel__action--link\"\r\n            (click)=\"setToNow()\">Agora</button>\r\n\r\n    <div class=\"matcha-time-panel__actions-group\">\r\n      <button type=\"button\"\r\n              class=\"matcha-time-panel__action matcha-time-panel__action--ghost\"\r\n              (click)=\"cancel()\">Cancelar</button>\r\n      <button type=\"button\"\r\n              #primaryAction\r\n              class=\"matcha-time-panel__action matcha-time-panel__action--primary\"\r\n              [disabled]=\"!canConfirm\"\r\n              (click)=\"confirm()\">OK</button>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Input, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport { MatchaValidators } from '../../matcha-validators/matcha-validators';\r\nimport { MatchaPanelComponent } from '../../matcha-panel/matcha-panel.component';\r\nimport { MatchaTimePanelComponent, MatchaTimePanelMode, MatchaTimeHourFormat } from '../time-panel/time-panel.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/** Presets padrão — horários comuns de expediente. */\r\nexport const DEFAULT_TIME_PRESETS: string[] = [\r\n  '06:00', '07:00', '08:00',\r\n  '09:00', '10:00', '12:00',\r\n  '14:00', '18:00', '19:00',\r\n  '20:00', '21:00', '22:00',\r\n];\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-time',\r\n  templateUrl: './time.component.html',\r\n  styleUrls: ['./time.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaPanelComponent, MatchaTimePanelComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MatchaTimeComponent),\r\n      multi: true\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: forwardRef(() => MatchaTimeComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class MatchaTimeComponent implements ControlValueAccessor, Validator {\r\n  /** Reflete no host para o tema e para a inferencia do matcha-form-field. */\r\n  @HostBinding('attr.readonly') get readonlyAttr() { return this.readonly ? '' : null; }\r\n\r\n  @Input() placeholder: string = '__:__';\r\n  @Input() min: string = '';\r\n  @Input() max: string = '';\r\n  @Input() disabled: boolean = false;\r\n\r\n  /**\r\n   * Somente leitura: o horario continua LEGIVEL e o campo focavel, mas nao aceita digitacao nem\r\n   * abre o seletor.\r\n   *\r\n   * Nao e sinonimo de `disabled` — este apaga o contraste, tira o campo da ordem de tabulacao e\r\n   * o esconde do leitor de tela. `disabled` para ACAO INDISPONIVEL, `readonly` para CONTEUDO QUE\r\n   * SE LE. Mesmo tratamento do matcha-date.\r\n   */\r\n  @Input() readonly: boolean = false;\r\n\r\n  /** Exibe o botão do ícone de relógio que abre o picker. */\r\n  @Input() showPicker: boolean = true;\r\n\r\n  /**\r\n   * Quando true, o botão abre o `<input type=\"time\">` nativo do browser em vez\r\n   * do painel matcha. Mantido pra paridade com o comportamento anterior.\r\n   */\r\n  @Input() useNativePicker: boolean = false;\r\n\r\n  /**\r\n   * Modo do painel:\r\n   *   • 'auto' (default) — digital em desktop, scroll em touch\r\n   *   • 'digital' — força steppers (útil pra testar)\r\n   *   • 'scroll' — força rodas (útil pra preview mobile)\r\n   *\r\n   * Nota: end-users nunca alternam o modo; é decisão de device/dev.\r\n   */\r\n  @Input() panelMode: MatchaTimePanelMode = 'auto';\r\n\r\n  /** Formato de exibição do painel: '24' (default) ou '12' (AM/PM). Emit sempre 24h. */\r\n  @Input() hourFormat: MatchaTimeHourFormat = '24';\r\n\r\n  /** Step de minutos para steppers e rodas. */\r\n  @Input() minuteStep: number = 1;\r\n\r\n  /** Exibe botão \"Agora\" no painel. */\r\n  @Input() showNow: boolean = true;\r\n\r\n  /**\r\n   * Liga/desliga a seção \"Horários sugeridos\" no painel.\r\n   * Quando true e `presets` não for fornecido, usa a lista padrão.\r\n   */\r\n  @Input() showPresets: boolean = false;\r\n\r\n  /**\r\n   * Lista de presets (HH:mm). Se fornecida e não vazia, ativa a seção\r\n   * automaticamente (mesmo com showPresets=false). Se omitida e\r\n   * showPresets=true, usa `DEFAULT_TIME_PRESETS`.\r\n   */\r\n  @Input() presets?: string[];\r\n\r\n  get resolvedPresets(): string[] | undefined {\r\n    if (this.presets && this.presets.length > 0) return this.presets;\r\n    return this.showPresets ? DEFAULT_TIME_PRESETS : undefined;\r\n  }\r\n\r\n  /** Largura mínima do painel popup. */\r\n  @Input() panelMinWidth: number = 264;\r\n\r\n  /** @deprecated use `showPicker` + `useNativePicker=true`. */\r\n  @Input()\r\n  set showNativePicker(v: boolean) {\r\n    this.showPicker = v;\r\n    this.useNativePicker = true;\r\n  }\r\n\r\n  @ViewChild('textInput') textInput!: ElementRef<HTMLInputElement>;\r\n  @ViewChild('nativeTimeInput') nativeTimeInput!: ElementRef<HTMLInputElement>;\r\n  @ViewChild('container', { static: true }) container!: ElementRef<HTMLElement>;\r\n  @ViewChild(MatchaPanelComponent) panel?: MatchaPanelComponent;\r\n  @ViewChild(MatchaTimePanelComponent) timePanel?: MatchaTimePanelComponent;\r\n\r\n  value: string = '';         // formato interno HH:mm (nativo)\r\n  displayValue: string = '';  // formato exibido HH:mm (igual ao interno — mantido pra paridade com date)\r\n  isDisabled: boolean = false;\r\n  panelOpen: boolean = false;\r\n  /** True quando formato `HH:mm` completo mas horário impossível (ex: 25:99).\r\n   *  Usado em `aria-invalid` pra screen readers. */\r\n  isTimeInvalid: boolean = false;\r\n\r\n  private onChange = (_: any) => {};\r\n  private onTouched = () => {};\r\n  private onValidatorChange = () => {};\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n  writeValue(value: any): void {\r\n    if (value && this.isValidTimeFormat(value)) {\r\n      this.value = value;\r\n      this.displayValue = value;\r\n      if (this.nativeTimeInput?.nativeElement) {\r\n        this.nativeTimeInput.nativeElement.value = value;\r\n      }\r\n      if (this.textInput?.nativeElement) {\r\n        setTimeout(() => {\r\n          if (this.textInput?.nativeElement) {\r\n            this.textInput.nativeElement.value = this.displayValue;\r\n          }\r\n        }, 0);\r\n      }\r\n    } else {\r\n      this.value = '';\r\n      this.displayValue = '';\r\n      if (this.nativeTimeInput?.nativeElement) {\r\n        this.nativeTimeInput.nativeElement.value = '';\r\n      }\r\n      if (this.textInput?.nativeElement) {\r\n        this.textInput.nativeElement.value = '';\r\n      }\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  registerOnValidatorChange(fn: () => void): void {\r\n    this.onValidatorChange = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  onInputChange(event: Event): void {\r\n    const input = event.target as HTMLInputElement;\r\n    let inputValue = input.value;\r\n\r\n    inputValue = this.applyTimeMask(inputValue);\r\n\r\n    if (input.value !== inputValue) {\r\n      input.value = inputValue;\r\n    }\r\n\r\n    this.displayValue = inputValue;\r\n\r\n    if (inputValue && inputValue.length === 5 && this.isValidTimeFormat(inputValue) && this.isValidTime(inputValue)) {\r\n      this.value = inputValue;\r\n      this.isTimeInvalid = false;\r\n      this.onChange(inputValue);\r\n      if (this.nativeTimeInput?.nativeElement) {\r\n        this.nativeTimeInput.nativeElement.value = inputValue;\r\n      }\r\n    } else if (!inputValue || inputValue.length === 0) {\r\n      this.value = '';\r\n      this.isTimeInvalid = false;\r\n      this.onChange(null);\r\n      if (this.nativeTimeInput?.nativeElement) {\r\n        this.nativeTimeInput.nativeElement.value = '';\r\n      }\r\n    } else {\r\n      // Formato completo mas inválido (ex: 25:99) → sinaliza; incompletos (ex: \"12:\") → false\r\n      this.isTimeInvalid = inputValue.length === 5;\r\n      this.onChange(null);\r\n    }\r\n  }\r\n\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    // ↓ com picker fechado: abre (paridade com date + <input type=\"time\"> nativo).\r\n    if (event.key === 'ArrowDown' && !this.panelOpen && !this.disabled && !this.isDisabled && this.showPicker) {\r\n      event.preventDefault();\r\n      this.openPicker();\r\n      return;\r\n    }\r\n    // Esc com picker aberto: fecha + mantém foco no input.\r\n    if (event.key === 'Escape' && this.panelOpen) {\r\n      event.preventDefault();\r\n      this.panel?.closePanel();\r\n      this.textInput?.nativeElement?.focus();\r\n      return;\r\n    }\r\n\r\n    const allowedKeys = ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\r\n    const isCtrl = event.ctrlKey || event.metaKey;\r\n    const isAllowedCtrl = isCtrl && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase());\r\n\r\n    if (allowedKeys.includes(event.key) || isAllowedCtrl) {\r\n      return;\r\n    }\r\n\r\n    if (!/[0-9:]/.test(event.key)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  private applyTimeMask(value: string): string {\r\n    const numbers = value.replace(/\\D/g, '');\r\n    const limited = numbers.slice(0, 4);\r\n\r\n    if (limited.length <= 2) {\r\n      return limited;\r\n    }\r\n    return `${limited.slice(0, 2)}:${limited.slice(2, 4)}`;\r\n  }\r\n\r\n  onNativeTimeChange(event: Event): void {\r\n    const input = event.target as HTMLInputElement;\r\n    const v = input.value;\r\n\r\n    if (v) {\r\n      this.value = v;\r\n      this.displayValue = v;\r\n      if (this.textInput?.nativeElement) {\r\n        this.textInput.nativeElement.value = v;\r\n      }\r\n      this.onChange(v);\r\n    } else {\r\n      this.value = '';\r\n      this.displayValue = '';\r\n      if (this.textInput?.nativeElement) {\r\n        this.textInput.nativeElement.value = '';\r\n      }\r\n      this.onChange(null);\r\n    }\r\n  }\r\n\r\n  onBlur(): void {\r\n    this.onTouched();\r\n\r\n    const currentInputValue = this.textInput?.nativeElement?.value || this.displayValue;\r\n\r\n    if (this.value && currentInputValue && currentInputValue.length === 5) {\r\n      if (this.value === currentInputValue) {\r\n        return;\r\n      }\r\n    }\r\n\r\n    if (currentInputValue && currentInputValue.length === 5) {\r\n      if (this.isValidTimeFormat(currentInputValue) && this.isValidTime(currentInputValue)) {\r\n        this.value = currentInputValue;\r\n        this.displayValue = currentInputValue;\r\n        this.onChange(currentInputValue);\r\n        if (this.nativeTimeInput?.nativeElement) {\r\n          this.nativeTimeInput.nativeElement.value = currentInputValue;\r\n        }\r\n      } else {\r\n        this.onChange(null);\r\n      }\r\n    } else if (currentInputValue && currentInputValue.length > 0) {\r\n      this.displayValue = currentInputValue;\r\n      this.onChange(null);\r\n    } else {\r\n      this.displayValue = '';\r\n      this.value = '';\r\n      this.onChange(null);\r\n    }\r\n  }\r\n\r\n  // ── Picker lifecycle ─────────────────────────────────────────────────\r\n  openPicker(): void {\r\n    if (this.disabled || this.isDisabled || this.readonly) return;\r\n\r\n    if (this.useNativePicker) {\r\n      this.openNativeTimePicker();\r\n      return;\r\n    }\r\n\r\n    if (!this.panel) return;\r\n\r\n    if (this.panelOpen) {\r\n      this.panel.closePanel();\r\n      return;\r\n    }\r\n\r\n    this.panel.attachTo(this.container.nativeElement);\r\n    this.panel.openPanel();\r\n  }\r\n\r\n  onPanelOpened(): void {\r\n    this.panelOpen = true;\r\n    // Re-sincroniza pro horário atual (se value vazio) a cada abertura —\r\n    // senão o \"now\" fica congelado no momento em que o painel foi instanciado.\r\n    this.timePanel?.resync();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  onPanelClosed(): void {\r\n    this.panelOpen = false;\r\n    this.onTouched();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  onTimePanelSelected(time: string): void {\r\n    if (!this.isValidTimeFormat(time) || !this.isValidTime(time)) return;\r\n\r\n    this.value = time;\r\n    this.displayValue = time;\r\n    if (this.textInput?.nativeElement) {\r\n      this.textInput.nativeElement.value = time;\r\n    }\r\n    if (this.nativeTimeInput?.nativeElement) {\r\n      this.nativeTimeInput.nativeElement.value = time;\r\n    }\r\n    this.onChange(time);\r\n    this.panel?.closePanel();\r\n  }\r\n\r\n  onTimePanelCancel(): void {\r\n    this.panel?.closePanel();\r\n  }\r\n\r\n  openNativeTimePicker(): void {\r\n    if (this.nativeTimeInput?.nativeElement && !this.disabled && !this.isDisabled) {\r\n      if (typeof this.nativeTimeInput.nativeElement.showPicker === 'function') {\r\n        this.nativeTimeInput.nativeElement.showPicker();\r\n      } else {\r\n        this.nativeTimeInput.nativeElement.focus();\r\n        this.nativeTimeInput.nativeElement.click();\r\n      }\r\n    }\r\n  }\r\n\r\n  private isValidTimeFormat(time: string): boolean {\r\n    return /^\\d{2}:\\d{2}$/.test(time);\r\n  }\r\n\r\n  private isValidTime(time: string): boolean {\r\n    if (!this.isValidTimeFormat(time)) return false;\r\n    const [h, m] = time.split(':').map(Number);\r\n    return h >= 0 && h <= 23 && m >= 0 && m <= 59;\r\n  }\r\n\r\n  // ── Validator ──────────────────────────────────────────────────────────\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const display = this.displayValue || '';\r\n    if (!display) return null;\r\n\r\n    const base = MatchaValidators.time({ value: display } as AbstractControl);\r\n    if (base) return base;\r\n\r\n    if (this.min && this.isValidTimeFormat(this.min)) {\r\n      if (display < this.min) return { minTime: { min: this.min, actual: display } };\r\n    }\r\n    if (this.max && this.isValidTimeFormat(this.max)) {\r\n      if (display > this.max) return { maxTime: { max: this.max, actual: display } };\r\n    }\r\n    return null;\r\n  }\r\n}\r\n","<div #container class=\"matcha-time-container\">\r\n  <input\r\n    #textInput\r\n    type=\"text\"\r\n    class=\"matcha-time-input\"\r\n    inputmode=\"numeric\"\r\n    autocomplete=\"off\"\r\n    spellcheck=\"false\"\r\n    [value]=\"displayValue\"\r\n    [placeholder]=\"placeholder\"\r\n    [disabled]=\"disabled || isDisabled\"\r\n    [attr.readonly]=\"readonly ? '' : null\"\r\n    [attr.aria-invalid]=\"isTimeInvalid ? 'true' : null\"\r\n    maxlength=\"5\"\r\n    (input)=\"onInputChange($event)\"\r\n    (blur)=\"onBlur()\"\r\n    (keydown)=\"onKeyDown($event)\"\r\n  />\r\n\r\n  <!-- Input nativo de hora (hidden) — apenas usado quando useNativePicker=true -->\r\n  <input\r\n    #nativeTimeInput\r\n    type=\"time\"\r\n    class=\"matcha-time-native-input\"\r\n    [value]=\"value\"\r\n    [min]=\"min\"\r\n    [max]=\"max\"\r\n    [disabled]=\"disabled || isDisabled\"\r\n    (change)=\"onNativeTimeChange($event)\"\r\n    tabindex=\"-1\"\r\n  />\r\n\r\n  <!-- Botão para abrir timepicker (custom panel ou nativo) -->\r\n  <!-- Escondido em leitura: `readonly` nao e atributo valido em <button>, e um botao que nao\r\n       abre nada e pior que botao ausente. -->\r\n  <button\r\n    *ngIf=\"showPicker && !readonly\"\r\n    type=\"button\"\r\n    class=\"matcha-time-picker-button\"\r\n    (click)=\"openPicker()\"\r\n    [disabled]=\"disabled || isDisabled\"\r\n    [attr.aria-expanded]=\"panelOpen\"\r\n    aria-haspopup=\"dialog\"\r\n    aria-label=\"Abrir seletor de horário\"\r\n    tabindex=\"0\"\r\n  >\r\n    <span class=\"i-matcha-clock\"></span>\r\n  </button>\r\n\r\n  <!-- Custom panel (oculto quando useNativePicker=true) -->\r\n  <matcha-panel\r\n    *ngIf=\"!useNativePicker\"\r\n    [minWidth]=\"panelMinWidth\"\r\n    [maxHeight]=\"400\"\r\n    placement=\"auto\"\r\n    [portalToBody]=\"true\"\r\n    (opened)=\"onPanelOpened()\"\r\n    (closed)=\"onPanelClosed()\">\r\n    <matcha-time-panel\r\n      [value]=\"value\"\r\n      [mode]=\"panelMode\"\r\n      [hourFormat]=\"hourFormat\"\r\n      [min]=\"min\"\r\n      [max]=\"max\"\r\n      [presets]=\"resolvedPresets\"\r\n      [minuteStep]=\"minuteStep\"\r\n      [showNow]=\"showNow\"\r\n      (timeSelected)=\"onTimePanelSelected($event)\"\r\n      (closed)=\"onTimePanelCancel()\">\r\n    </matcha-time-panel>\r\n  </matcha-panel>\r\n</div>\r\n","import {\r\n  Component, Input, forwardRef, ViewEncapsulation, ViewChild, ElementRef,\r\n  ChangeDetectionStrategy, ChangeDetectorRef, inject\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR,\r\n  ValidationErrors, Validator\r\n} from '@angular/forms';\r\nimport { MatchaValidators } from '../../matcha-validators/matcha-validators';\r\nimport {\r\n  MatchaCurrencyId, MatchaCurrencyMasks, MatchaCurrencySpec\r\n} from '../../matcha-validators/matcha-currency-masks';\r\nimport { MatchaCalendarComponent } from '../../matcha-calendar/calendar/matcha-calendar.component';\r\nimport { MatchaPanelComponent } from '../../matcha-panel/matcha-panel.component';\r\nimport { MatchaTimePanelComponent } from '../../matcha-time/time-panel/time-panel.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaFieldRangeType = 'date' | 'time' | 'number' | 'money';\r\n\r\nexport interface FieldRangeValue<T = string | number> {\r\n  start: T | null;\r\n  end: T | null;\r\n}\r\n\r\n/**\r\n * matcha-field-range — range genérico que aceita `rangeType` pra swap do tipo\r\n * interno sem duplicar o shell (2 halves + separator).\r\n *\r\n *   <matcha-field-range rangeType=\"date\"   formControlName=\"period\" />\r\n *   <matcha-field-range rangeType=\"time\"   formControlName=\"shift\" />\r\n *   <matcha-field-range rangeType=\"number\" formControlName=\"qty\" />\r\n *   <matcha-field-range rangeType=\"money\"  formControlName=\"price\" currency=\"brl\" />\r\n *\r\n * Valor emitido:\r\n *   date  → { start: 'YYYY-MM-DD' | null, end: 'YYYY-MM-DD' | null }\r\n *   time  → { start: 'HH:mm' | null,      end: 'HH:mm' | null }\r\n *   number/money → { start: number | null, end: number | null }\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-field-range',\r\n  templateUrl: './field-range.component.html',\r\n  styleUrls: ['./field-range.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaCalendarComponent, MatchaPanelComponent, MatchaTimePanelComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MatchaFieldRangeComponent), multi: true },\r\n    { provide: NG_VALIDATORS,     useExisting: forwardRef(() => MatchaFieldRangeComponent), multi: true },\r\n  ]\r\n})\r\nexport class MatchaFieldRangeComponent implements ControlValueAccessor, Validator {\r\n  @Input() rangeType: MatchaFieldRangeType = 'date';\r\n  @Input() startPlaceholder: string = '';\r\n  @Input() endPlaceholder: string = '';\r\n  @Input() separatorLabel: string = 'até';\r\n  @Input() min: string | number | null = null;\r\n  @Input() max: string | number | null = null;\r\n  @Input() disabled: boolean = false;\r\n  @Input() showPicker: boolean = true;\r\n  @Input() currency: MatchaCurrencyId = 'brl';\r\n\r\n  @ViewChild('startText') startText!: ElementRef<HTMLInputElement>;\r\n  @ViewChild('endText')   endText!:   ElementRef<HTMLInputElement>;\r\n  @ViewChild('container', { static: true }) container!: ElementRef<HTMLElement>;\r\n  @ViewChild(MatchaPanelComponent) panel?: MatchaPanelComponent;\r\n\r\n  // Valores canônicos: string ISO pra date (YYYY-MM-DD) e time (HH:mm); number pra number/money\r\n  startValue: string | number | null = null;\r\n  endValue:   string | number | null = null;\r\n  // Display strings (formatadas por tipo) — alimentam [value] dos inputs\r\n  startDisplay: string = '';\r\n  endDisplay:   string = '';\r\n  // Estado do calendar (usado só em rangeType='date')\r\n  startDate: Date | null = null;\r\n  endDate:   Date | null = null;\r\n  panelOpen: boolean = false;\r\n\r\n  // ── A11y: aria-invalid por lado ────────────────────────────────────────\r\n  // True quando o display está completo pro tipo mas o value é null (valor impossível)\r\n  // OU quando há inversão start > end (sinaliza os DOIS lados como inconsistentes).\r\n  get isStartInvalid(): boolean {\r\n    return (this.hasCompleteDisplay('start') && this.startValue === null) || this.hasOrderMismatch();\r\n  }\r\n  get isEndInvalid(): boolean {\r\n    return (this.hasCompleteDisplay('end') && this.endValue === null) || this.hasOrderMismatch();\r\n  }\r\n\r\n  private hasCompleteDisplay(side: 'start' | 'end'): boolean {\r\n    const display = side === 'start' ? this.startDisplay : this.endDisplay;\r\n    if (!display) return false;\r\n    switch (this.rangeType) {\r\n      case 'date':   return display.length === 10;\r\n      case 'time':   return display.length === 5;\r\n      case 'number':\r\n      case 'money':  return display.length > 0;\r\n    }\r\n  }\r\n\r\n  private hasOrderMismatch(): boolean {\r\n    if (this.startValue == null || this.endValue == null) return false;\r\n    // ISO date/time strings ordenam lexicograficamente; numbers numericamente.\r\n    return (this.startValue as any) > (this.endValue as any);\r\n  }\r\n  // public pra template ler no [value]/[title] do matcha-time-panel\r\n  nextPick: 'start' | 'end' = 'start';\r\n  // Money: cents-first UX (como matchaMoney directive)\r\n  private moneyStartCents: string = '';\r\n  private moneyEndCents:   string = '';\r\n\r\n  isDisabled: boolean = false;\r\n  private cdr = inject(ChangeDetectorRef);\r\n\r\n  private onChange = (_: any) => {};\r\n  private onTouched = () => {};\r\n\r\n  // ── CVA ──────────────────────────────────────────────────────────────────\r\n  writeValue(value: any): void {\r\n    if (value && typeof value === 'object') {\r\n      this.setStart(value.start ?? null);\r\n      this.setEnd(value.end ?? null);\r\n    } else {\r\n      this.setStart(null);\r\n      this.setEnd(null);\r\n    }\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  registerOnChange(fn: any):  void { this.onChange = fn; }\r\n  registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  // ── Getters derivados ───────────────────────────────────────────────────\r\n  get showPickerButton(): boolean {\r\n    return this.showPicker && (this.rangeType === 'date' || this.rangeType === 'time');\r\n  }\r\n\r\n  /** Mostra o panel em date OU time (ambos têm picker). */\r\n  get showPanel(): boolean {\r\n    return this.rangeType === 'date' || this.rangeType === 'time';\r\n  }\r\n\r\n  /** minWidth do panel varia por tipo (calendar é mais largo que time-panel). */\r\n  get panelMinWidth(): number {\r\n    return this.rangeType === 'time' ? 260 : 296;\r\n  }\r\n\r\n  /** Valor passado pro matcha-time-panel — sempre string (HH:mm ou ''). Evita\r\n   *  type mismatch do template strict-check (startValue/endValue são\r\n   *  `string | number | null`). */\r\n  get timePanelValue(): string {\r\n    const v = this.nextPick === 'start' ? this.startValue : this.endValue;\r\n    return typeof v === 'string' ? v : '';\r\n  }\r\n\r\n  get timePanelTitle(): string {\r\n    return this.nextPick === 'start' ? 'Horário inicial' : 'Horário final';\r\n  }\r\n\r\n  get iconClass(): string {\r\n    return this.rangeType === 'date' ? 'i-matcha-calendar' : 'i-matcha-clock';\r\n  }\r\n\r\n  get maxlength(): number | null {\r\n    if (this.rangeType === 'date') return 10;\r\n    if (this.rangeType === 'time') return 5;\r\n    return null;\r\n  }\r\n\r\n  get resolvedStartPlaceholder(): string {\r\n    if (this.startPlaceholder) return this.startPlaceholder;\r\n    return this.defaultPlaceholder();\r\n  }\r\n\r\n  get resolvedEndPlaceholder(): string {\r\n    if (this.endPlaceholder) return this.endPlaceholder;\r\n    return this.defaultPlaceholder();\r\n  }\r\n\r\n  private defaultPlaceholder(): string {\r\n    switch (this.rangeType) {\r\n      case 'date':   return '__/__/____';\r\n      case 'time':   return '__:__';\r\n      case 'number': return '0';\r\n      case 'money':  return this.currencySpec.placeholder;\r\n    }\r\n  }\r\n\r\n  private get currencySpec(): MatchaCurrencySpec {\r\n    return MatchaCurrencyMasks[this.currency] ?? MatchaCurrencyMasks['brl'];\r\n  }\r\n\r\n  // ── Handlers: inputs ────────────────────────────────────────────────────\r\n  onStartInput(event: Event): void { this.handleInput('start', event); }\r\n  onEndInput(event: Event):   void { this.handleInput('end',   event); }\r\n\r\n  private handleInput(side: 'start' | 'end', event: Event): void {\r\n    const input = event.target as HTMLInputElement;\r\n    const raw = input.value;\r\n\r\n    switch (this.rangeType) {\r\n      case 'date':   this.handleDateInput(side, input, raw);   break;\r\n      case 'time':   this.handleTimeInput(side, input, raw);   break;\r\n      case 'number': this.handleNumberInput(side, input, raw); break;\r\n      case 'money':  this.handleMoneyInput(side, input, raw);  break;\r\n    }\r\n    this.emit();\r\n  }\r\n\r\n  private handleDateInput(side: 'start' | 'end', input: HTMLInputElement, raw: string): void {\r\n    const masked = this.applyDateMask(raw);\r\n    if (raw !== masked) input.value = masked;\r\n\r\n    let iso: string | null = null;\r\n    let date: Date | null = null;\r\n    if (masked.length === 10 && this.isValidDateDisplay(masked)) {\r\n      const candidate = this.toISO(masked);\r\n      if (this.isValidDateIso(candidate)) {\r\n        iso = candidate;\r\n        date = this.isoToDate(candidate);\r\n      }\r\n    }\r\n    if (side === 'start') {\r\n      this.startDisplay = masked;\r\n      this.startValue = iso;\r\n      this.startDate = date;\r\n    } else {\r\n      this.endDisplay = masked;\r\n      this.endValue = iso;\r\n      this.endDate = date;\r\n    }\r\n  }\r\n\r\n  private handleTimeInput(side: 'start' | 'end', input: HTMLInputElement, raw: string): void {\r\n    const masked = this.applyTimeMask(raw);\r\n    if (raw !== masked) input.value = masked;\r\n    const valid = this.isValidTime(masked) ? masked : null;\r\n    if (side === 'start') { this.startDisplay = masked; this.startValue = valid; }\r\n    else                  { this.endDisplay   = masked; this.endValue   = valid; }\r\n  }\r\n\r\n  private handleNumberInput(side: 'start' | 'end', input: HTMLInputElement, raw: string): void {\r\n    const cleaned = raw.replace(/[^\\d.\\-]/g, '');\r\n    if (raw !== cleaned) input.value = cleaned;\r\n    const parsed = cleaned === '' || cleaned === '-' ? null : Number(cleaned);\r\n    const valid = parsed != null && Number.isFinite(parsed) ? parsed : null;\r\n    if (side === 'start') { this.startDisplay = cleaned; this.startValue = valid; }\r\n    else                  { this.endDisplay   = cleaned; this.endValue   = valid; }\r\n  }\r\n\r\n  private handleMoneyInput(side: 'start' | 'end', input: HTMLInputElement, raw: string): void {\r\n    const digits = raw.replace(/\\D/g, '').replace(/^0+/, '');\r\n    const formatted = this.formatMoney(digits);\r\n    const units = digits ? Number(digits) / 100 : null;\r\n    if (side === 'start') {\r\n      this.moneyStartCents = digits;\r\n      this.startDisplay = formatted;\r\n      this.startValue = units;\r\n    } else {\r\n      this.moneyEndCents = digits;\r\n      this.endDisplay = formatted;\r\n      this.endValue = units;\r\n    }\r\n    input.value = formatted;\r\n    // Cursor no fim (UX de calculadora)\r\n    setTimeout(() => this.moveCursorToEnd(input), 0);\r\n  }\r\n\r\n  onInputBlur(): void { this.onTouched(); }\r\n\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    // ↓ com picker fechado abre o seletor do lado focado (date e time).\r\n    if (event.key === 'ArrowDown' && !this.panelOpen && this.showPickerButton &&\r\n        !this.disabled && !this.isDisabled && (this.rangeType === 'date' || this.rangeType === 'time')) {\r\n      const side: 'start' | 'end' = event.target === this.endText?.nativeElement ? 'end' : 'start';\r\n      event.preventDefault();\r\n      this.openPickerFor(side);\r\n      return;\r\n    }\r\n    // Esc com picker aberto: fecha + mantém foco no input.\r\n    if (event.key === 'Escape' && this.panelOpen) {\r\n      event.preventDefault();\r\n      this.panel?.closePanel();\r\n      (event.target as HTMLInputElement)?.focus();\r\n      return;\r\n    }\r\n\r\n    const navKeys = ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\r\n    const isCtrl = event.ctrlKey || event.metaKey;\r\n    const isCtrlCombo = isCtrl && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase());\r\n    if (navKeys.includes(event.key) || isCtrlCombo) return;\r\n\r\n    const allowed: Record<MatchaFieldRangeType, RegExp> = {\r\n      date:   /[0-9\\/]/,\r\n      time:   /[0-9:]/,\r\n      number: /[0-9.\\-]/,\r\n      money:  /\\d/,\r\n    };\r\n    if (!allowed[this.rangeType].test(event.key)) event.preventDefault();\r\n  }\r\n\r\n  // ── Picker (date → calendar, time → time-panel) ─────────────────────────\r\n  openPickerFor(side: 'start' | 'end'): void {\r\n    if (this.rangeType !== 'date' && this.rangeType !== 'time') return;\r\n    if (this.disabled || this.isDisabled || !this.panel) return;\r\n    this.nextPick = side;\r\n    if (this.panelOpen) { this.panel.closePanel(); return; }\r\n    this.panel.attachTo(this.container.nativeElement);\r\n    this.panel.openPanel();\r\n  }\r\n\r\n  onPanelOpened(): void { this.panelOpen = true;  this.cdr.markForCheck(); }\r\n  onPanelClosed(): void { this.panelOpen = false; this.onTouched(); this.cdr.markForCheck(); }\r\n\r\n  onCalendarDateSelected(date: Date): void {\r\n    const iso = this.dateToIso(date);\r\n    if (this.nextPick === 'start') {\r\n      this.setStart(iso);\r\n      if (this.endValue && (this.endValue as string) < iso) this.setEnd(null);\r\n      this.nextPick = 'end';\r\n      this.emit();\r\n    } else {\r\n      if (this.startValue && iso < (this.startValue as string)) {\r\n        this.setStart(iso);\r\n        this.setEnd(null);\r\n        this.nextPick = 'end';\r\n        this.emit();\r\n      } else {\r\n        this.setEnd(iso);\r\n        this.nextPick = 'start';\r\n        this.emit();\r\n        this.panel?.closePanel();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Espelha `onCalendarDateSelected` pra rangeType='time' — compara strings\r\n   * HH:mm (ordenação lexicográfica é equivalente à temporal nesse formato).\r\n   */\r\n  onTimePanelSelected(hhmm: string): void {\r\n    if (!hhmm) return;\r\n    if (this.nextPick === 'start') {\r\n      this.setStart(hhmm);\r\n      if (this.endValue && (this.endValue as string) < hhmm) this.setEnd(null);\r\n      this.nextPick = 'end';\r\n      this.emit();\r\n      // Em time, fecha após o primeiro pick (UX diferente do date range onde\r\n      // faz sentido seguir pro 2º no mesmo panel) — o user re-abre no botão end.\r\n      this.panel?.closePanel();\r\n    } else {\r\n      if (this.startValue && hhmm < (this.startValue as string)) {\r\n        // Invertido: trata como novo start\r\n        this.setStart(hhmm);\r\n        this.setEnd(null);\r\n        this.nextPick = 'end';\r\n        this.emit();\r\n      } else {\r\n        this.setEnd(hhmm);\r\n        this.nextPick = 'start';\r\n        this.emit();\r\n        this.panel?.closePanel();\r\n      }\r\n    }\r\n  }\r\n\r\n  // ── Setters programáticos (usados por writeValue + calendar) ────────────\r\n  private setStart(value: string | number | null): void { this.applyValue('start', value); }\r\n  private setEnd(value: string | number | null):   void { this.applyValue('end',   value); }\r\n\r\n  private applyValue(side: 'start' | 'end', value: string | number | null): void {\r\n    if (value === null || value === undefined || value === '') {\r\n      this.clearSide(side);\r\n      this.syncInputDom(side);\r\n      return;\r\n    }\r\n    switch (this.rangeType) {\r\n      case 'date':   this.applyDateValue(side, value);   break;\r\n      case 'time':   this.applyTimeValue(side, value);   break;\r\n      case 'number': this.applyNumberValue(side, value); break;\r\n      case 'money':  this.applyMoneyValue(side, value);  break;\r\n    }\r\n    this.syncInputDom(side);\r\n  }\r\n\r\n  private clearSide(side: 'start' | 'end'): void {\r\n    if (side === 'start') {\r\n      this.startValue = null; this.startDisplay = ''; this.startDate = null; this.moneyStartCents = '';\r\n    } else {\r\n      this.endValue = null;   this.endDisplay = '';   this.endDate = null;   this.moneyEndCents = '';\r\n    }\r\n  }\r\n\r\n  private applyDateValue(side: 'start' | 'end', value: string | number): void {\r\n    let iso = String(value);\r\n    if (this.isValidDateDisplay(iso)) iso = this.toISO(iso);\r\n    if (!this.isValidDateIso(iso)) { this.clearSide(side); return; }\r\n    const display = this.toDisplay(iso);\r\n    const date = this.isoToDate(iso);\r\n    if (side === 'start') { this.startValue = iso; this.startDisplay = display; this.startDate = date; }\r\n    else                  { this.endValue = iso;   this.endDisplay   = display; this.endDate   = date; }\r\n  }\r\n\r\n  private applyTimeValue(side: 'start' | 'end', value: string | number): void {\r\n    const s = String(value);\r\n    if (!this.isValidTime(s)) { this.clearSide(side); return; }\r\n    if (side === 'start') { this.startValue = s; this.startDisplay = s; }\r\n    else                  { this.endValue   = s; this.endDisplay   = s; }\r\n  }\r\n\r\n  private applyNumberValue(side: 'start' | 'end', value: string | number): void {\r\n    const n = Number(value);\r\n    if (!Number.isFinite(n)) { this.clearSide(side); return; }\r\n    if (side === 'start') { this.startValue = n; this.startDisplay = String(n); }\r\n    else                  { this.endValue   = n; this.endDisplay   = String(n); }\r\n  }\r\n\r\n  private applyMoneyValue(side: 'start' | 'end', value: string | number): void {\r\n    const n = Number(value);\r\n    if (!Number.isFinite(n)) { this.clearSide(side); return; }\r\n    const cents = n === 0 ? '' : String(Math.round(Math.abs(n) * 100));\r\n    const display = this.formatMoney(cents);\r\n    if (side === 'start') { this.startValue = n; this.moneyStartCents = cents; this.startDisplay = display; }\r\n    else                  { this.endValue   = n; this.moneyEndCents   = cents; this.endDisplay   = display; }\r\n  }\r\n\r\n  private syncInputDom(side: 'start' | 'end'): void {\r\n    // setTimeout evita race com binding [value]\r\n    setTimeout(() => {\r\n      if (side === 'start' && this.startText?.nativeElement) this.startText.nativeElement.value = this.startDisplay;\r\n      if (side === 'end'   && this.endText?.nativeElement)   this.endText.nativeElement.value   = this.endDisplay;\r\n    });\r\n  }\r\n\r\n  private emit(): void {\r\n    if (this.startValue == null && this.endValue == null) {\r\n      this.onChange(null);\r\n    } else {\r\n      this.onChange({\r\n        start: this.startValue ?? null,\r\n        end:   this.endValue ?? null,\r\n      });\r\n    }\r\n  }\r\n\r\n  // ── Helpers: date ───────────────────────────────────────────────────────\r\n  private applyDateMask(value: string): string {\r\n    const digits = value.replace(/\\D/g, '').slice(0, 8);\r\n    if (digits.length <= 2) return digits;\r\n    if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\r\n    return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4, 8)}`;\r\n  }\r\n\r\n  private isValidDateDisplay(s: string): boolean { return /^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(s); }\r\n\r\n  private isValidDateIso(s: string): boolean {\r\n    if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(s)) return false;\r\n    const [y, m, d] = s.split('-').map(Number);\r\n    const dt = new Date(y, m - 1, d);\r\n    return dt.getFullYear() === y && dt.getMonth() + 1 === m && dt.getDate() === d;\r\n  }\r\n\r\n  private toISO(dd_mm_yyyy: string): string {\r\n    const [d, m, y] = dd_mm_yyyy.split('/'); return `${y}-${m}-${d}`;\r\n  }\r\n\r\n  private toDisplay(iso: string): string {\r\n    const [y, m, d] = iso.split('-'); return `${d}/${m}/${y}`;\r\n  }\r\n\r\n  private isoToDate(iso: string): Date | null {\r\n    if (!this.isValidDateIso(iso)) return null;\r\n    const [y, m, d] = iso.split('-').map(Number);\r\n    return new Date(y, m - 1, d);\r\n  }\r\n\r\n  private dateToIso(date: Date): string {\r\n    const y = date.getFullYear();\r\n    const m = String(date.getMonth() + 1).padStart(2, '0');\r\n    const d = String(date.getDate()).padStart(2, '0');\r\n    return `${y}-${m}-${d}`;\r\n  }\r\n\r\n  // ── Helpers: time ───────────────────────────────────────────────────────\r\n  private applyTimeMask(value: string): string {\r\n    const digits = value.replace(/\\D/g, '').slice(0, 4);\r\n    if (digits.length <= 2) return digits;\r\n    return `${digits.slice(0, 2)}:${digits.slice(2, 4)}`;\r\n  }\r\n\r\n  private isValidTime(s: string): boolean {\r\n    if (!/^\\d{2}:\\d{2}$/.test(s)) return false;\r\n    const [h, m] = s.split(':').map(Number);\r\n    return h >= 0 && h <= 23 && m >= 0 && m <= 59;\r\n  }\r\n\r\n  // ── Helpers: money ──────────────────────────────────────────────────────\r\n  private formatMoney(cents: string): string {\r\n    if (!cents) return '';\r\n    const { prefix, thousandSeparator, decimalMarker } = this.currencySpec;\r\n    const padded = cents.padStart(3, '0');\r\n    const integerPart = padded.slice(0, -2);\r\n    const decimalPart = padded.slice(-2);\r\n    const integerFormatted = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\r\n    return `${prefix}${integerFormatted}${decimalMarker}${decimalPart}`;\r\n  }\r\n\r\n  private moveCursorToEnd(el: HTMLInputElement): void {\r\n    if (document.activeElement !== el) return;\r\n    try { const len = el.value.length; el.setSelectionRange(len, len); } catch { /* no-op */ }\r\n  }\r\n\r\n  // ── Getters pra matcha-calendar ────────────────────────────────────────\r\n  get minDate(): Date | null {\r\n    return typeof this.min === 'string' && this.min ? this.isoToDate(this.min) : null;\r\n  }\r\n  get maxDate(): Date | null {\r\n    return typeof this.max === 'string' && this.max ? this.isoToDate(this.max) : null;\r\n  }\r\n\r\n  // ── Validator ───────────────────────────────────────────────────────────\r\n  validate(_control: AbstractControl): ValidationErrors | null {\r\n    const errors: ValidationErrors = {};\r\n\r\n    if (this.rangeType === 'date') {\r\n      if (this.startDisplay) {\r\n        const e = MatchaValidators.date({ value: this.startDisplay } as AbstractControl);\r\n        if (e) errors['startDate'] = true;\r\n      }\r\n      if (this.endDisplay) {\r\n        const e = MatchaValidators.date({ value: this.endDisplay } as AbstractControl);\r\n        if (e) errors['endDate'] = true;\r\n      }\r\n    }\r\n\r\n    // Ordem do range (funciona pra string ISO comparável e pra number)\r\n    if (this.startValue != null && this.endValue != null) {\r\n      if ((this.startValue as any) > (this.endValue as any)) {\r\n        errors['range'] = true;\r\n      }\r\n    }\r\n\r\n    return Object.keys(errors).length ? errors : null;\r\n  }\r\n}\r\n","<div #container class=\"matcha-field-range-container\" [attr.data-range-type]=\"rangeType\">\r\n  <!-- ═══ Start box ═══ -->\r\n  <div class=\"matcha-field-range-half\">\r\n    <input\r\n      #startText\r\n      type=\"text\"\r\n      class=\"matcha-field-range-input\"\r\n      inputmode=\"numeric\"\r\n      autocomplete=\"off\"\r\n      spellcheck=\"false\"\r\n      [value]=\"startDisplay\"\r\n      [placeholder]=\"resolvedStartPlaceholder\"\r\n      [disabled]=\"disabled || isDisabled\"\r\n      [attr.aria-invalid]=\"isStartInvalid ? 'true' : null\"\r\n      [attr.maxlength]=\"maxlength\"\r\n      (input)=\"onStartInput($event)\"\r\n      (blur)=\"onInputBlur()\"\r\n      (keydown)=\"onKeyDown($event)\"\r\n    />\r\n\r\n    <button\r\n      *ngIf=\"showPickerButton\"\r\n      type=\"button\"\r\n      class=\"matcha-field-range-button\"\r\n      (click)=\"openPickerFor('start')\"\r\n      [disabled]=\"disabled || isDisabled\"\r\n      [attr.aria-expanded]=\"panelOpen\"\r\n      aria-haspopup=\"dialog\"\r\n      aria-label=\"Abrir seletor inicial\"\r\n      tabindex=\"0\"\r\n    >\r\n      <span [class]=\"iconClass\"></span>\r\n    </button>\r\n  </div>\r\n\r\n  <!-- ═══ Separator ═══ -->\r\n  <span class=\"matcha-field-range-separator\">{{ separatorLabel }}</span>\r\n\r\n  <!-- ═══ End box ═══ -->\r\n  <div class=\"matcha-field-range-half\">\r\n    <input\r\n      #endText\r\n      type=\"text\"\r\n      class=\"matcha-field-range-input\"\r\n      inputmode=\"numeric\"\r\n      autocomplete=\"off\"\r\n      spellcheck=\"false\"\r\n      [value]=\"endDisplay\"\r\n      [placeholder]=\"resolvedEndPlaceholder\"\r\n      [disabled]=\"disabled || isDisabled\"\r\n      [attr.aria-invalid]=\"isEndInvalid ? 'true' : null\"\r\n      [attr.maxlength]=\"maxlength\"\r\n      (input)=\"onEndInput($event)\"\r\n      (blur)=\"onInputBlur()\"\r\n      (keydown)=\"onKeyDown($event)\"\r\n    />\r\n\r\n    <button\r\n      *ngIf=\"showPickerButton\"\r\n      type=\"button\"\r\n      class=\"matcha-field-range-button\"\r\n      (click)=\"openPickerFor('end')\"\r\n      [disabled]=\"disabled || isDisabled\"\r\n      [attr.aria-expanded]=\"panelOpen\"\r\n      aria-haspopup=\"dialog\"\r\n      aria-label=\"Abrir seletor final\"\r\n      tabindex=\"0\"\r\n    >\r\n      <span [class]=\"iconClass\"></span>\r\n    </button>\r\n  </div>\r\n\r\n  <!-- Picker panel — date renderiza calendar, time renderiza time-panel. -->\r\n  <matcha-panel\r\n    *ngIf=\"showPanel\"\r\n    [minWidth]=\"panelMinWidth\"\r\n    [maxHeight]=\"400\"\r\n    placement=\"auto\"\r\n    [portalToBody]=\"true\"\r\n    (opened)=\"onPanelOpened()\"\r\n    (closed)=\"onPanelClosed()\"\r\n  >\r\n    <matcha-calendar\r\n      *ngIf=\"rangeType === 'date'\"\r\n      [rangeStart]=\"startDate\"\r\n      [rangeEnd]=\"endDate\"\r\n      [min]=\"minDate\"\r\n      [max]=\"maxDate\"\r\n      (dateSelected)=\"onCalendarDateSelected($event)\"\r\n    ></matcha-calendar>\r\n\r\n    <matcha-time-panel\r\n      *ngIf=\"rangeType === 'time'\"\r\n      [value]=\"timePanelValue\"\r\n      [title]=\"timePanelTitle\"\r\n      (timeSelected)=\"onTimePanelSelected($event)\"\r\n    ></matcha-time-panel>\r\n  </matcha-panel>\r\n</div>\r\n","/**\r\n * Matcha A11y Utilities\r\n * Common accessibility helpers for all DS components.\r\n */\r\n\r\nlet idCounter = 0;\r\n\r\n/** Generate unique ID for aria-describedby linkage */\r\nexport function matchaUniqueId(prefix = 'matcha'): string {\r\n  return `${prefix}-${++idCounter}`;\r\n}\r\n\r\n/** Announce message to screen readers via aria-live region */\r\nexport function matchaAnnounce(message: string, politeness: 'polite' | 'assertive' = 'polite'): void {\r\n  let announcer = document.getElementById('matcha-live-announcer');\r\n  if (!announcer) {\r\n    announcer = document.createElement('div');\r\n    announcer.id = 'matcha-live-announcer';\r\n    announcer.setAttribute('aria-live', politeness);\r\n    announcer.setAttribute('aria-atomic', 'true');\r\n    announcer.setAttribute('role', 'status');\r\n    announcer.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\r\n    document.body.appendChild(announcer);\r\n  }\r\n  announcer.setAttribute('aria-live', politeness);\r\n  // Clear then set to trigger announcement\r\n  announcer.textContent = '';\r\n  setTimeout(() => { announcer!.textContent = message; }, 100);\r\n}\r\n\r\n/**\r\n * Trap focus within an element (for modals/dialogs).\r\n *\r\n * Pattern WAI-ARIA APG Dialog. ESC + inert siblings + body scroll lock são\r\n * responsabilidade do overlay/modal service (não desse utility).\r\n *\r\n * @example Basic — auto-focus no first focusable\r\n *   const trap = new MatchaFocusTrap(modalEl);\r\n *   trap.activate();\r\n *   // ... user closes modal ...\r\n *   trap.deactivate();  // restaura previousFocus\r\n *\r\n * @example Confirmation dialog — focar no Cancel (least destructive)\r\n *   const trap = new MatchaFocusTrap(modalEl, { initialFocus: '.cancel-btn' });\r\n *   trap.activate();\r\n */\r\nexport interface MatchaFocusTrapOptions {\r\n  /**\r\n   * Onde focar quando activate() é chamado. Aceita:\r\n   *   - HTMLElement direto (referência)\r\n   *   - string CSS selector (procura dentro do container)\r\n   *   - null/undefined (default): primeiro focusable do container\r\n   */\r\n  initialFocus?: HTMLElement | string | null;\r\n}\r\n\r\nexport class MatchaFocusTrap {\r\n  private firstFocusable: HTMLElement | null = null;\r\n  private lastFocusable: HTMLElement | null = null;\r\n  private previousFocus: HTMLElement | null = null;\r\n  private boundHandler: ((e: KeyboardEvent) => void) | null = null;\r\n\r\n  constructor(\r\n    private container: HTMLElement,\r\n    private options: MatchaFocusTrapOptions = {},\r\n  ) {}\r\n\r\n  activate(): void {\r\n    this.previousFocus = document.activeElement as HTMLElement;\r\n    this.update();\r\n\r\n    this.boundHandler = (e: KeyboardEvent) => {\r\n      if (e.key !== 'Tab') return;\r\n\r\n      this.update(); // Refresh in case DOM changed\r\n\r\n      if (!this.firstFocusable || !this.lastFocusable) return;\r\n\r\n      if (e.shiftKey) {\r\n        if (document.activeElement === this.firstFocusable) {\r\n          e.preventDefault();\r\n          this.lastFocusable.focus();\r\n        }\r\n      } else {\r\n        if (document.activeElement === this.lastFocusable) {\r\n          e.preventDefault();\r\n          this.firstFocusable.focus();\r\n        }\r\n      }\r\n    };\r\n\r\n    this.container.addEventListener('keydown', this.boundHandler);\r\n\r\n    // Resolve initial focus target — explicit > first focusable\r\n    const target = this.resolveInitialFocus();\r\n    if (target) {\r\n      target.focus();\r\n    } else if (this.firstFocusable) {\r\n      this.firstFocusable.focus();\r\n    }\r\n  }\r\n\r\n  deactivate(): void {\r\n    if (this.boundHandler) {\r\n      this.container.removeEventListener('keydown', this.boundHandler);\r\n      this.boundHandler = null;\r\n    }\r\n\r\n    // Restore previous focus — check DOM existence first (element might've been\r\n    // removed during modal lifetime, ex: dynamic UI). Without check, `.focus()`\r\n    // pode throw em element órfão.\r\n    if (\r\n      this.previousFocus &&\r\n      typeof this.previousFocus.focus === 'function' &&\r\n      document.contains(this.previousFocus)\r\n    ) {\r\n      this.previousFocus.focus();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Resolve o `initialFocus` configurado pra um HTMLElement válido (focusable),\r\n   * ou null se inválido. Quando null, caller usa `firstFocusable` como fallback.\r\n   */\r\n  private resolveInitialFocus(): HTMLElement | null {\r\n    const init = this.options.initialFocus;\r\n    if (!init) return null;\r\n    if (init instanceof HTMLElement) {\r\n      return this.container.contains(init) ? init : null;\r\n    }\r\n    if (typeof init === 'string') {\r\n      return this.container.querySelector<HTMLElement>(init);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  private update(): void {\r\n    const focusable = this.container.querySelectorAll<HTMLElement>(\r\n      'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\r\n    );\r\n    this.firstFocusable = focusable[0] || null;\r\n    this.lastFocusable = focusable[focusable.length - 1] || null;\r\n  }\r\n}\r\n\r\n/** Check if prefers-reduced-motion is enabled */\r\nexport function matchaPrefersReducedMotion(): boolean {\r\n  return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n}\r\n\r\n/** Get readable label for screen readers from element */\r\nexport function matchaGetAccessibleName(element: HTMLElement): string {\r\n  return element.getAttribute('aria-label')\r\n    || element.getAttribute('aria-labelledby')\r\n    || element.getAttribute('title')\r\n    || element.textContent?.trim()\r\n    || '';\r\n}\r\n","import {\r\n    Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, forwardRef,\r\n    booleanAttribute, numberAttribute, computed, effect, signal, input, output, inject,\r\n    viewChild, viewChildren, ElementRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { MatchaPanelComponent, PanelPlacement } from '../matcha-panel/matcha-panel.component';\r\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\r\nimport { MATCHA_OPTION_PARENT, MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\r\nimport { MatchaDividerComponent } from '../matcha-divider/divider/divider.component';\r\nimport { MatchaFormFieldComponent } from '../matcha-form-field/matcha-form-field/matcha-form-field.component';\r\nimport { MatchaLabelComponent } from '../matcha-form-field/matcha-label/matcha-label.component';\r\nimport { MatchaDateComponent } from '../matcha-date/date/matcha-date.component';\r\nimport { MatchaButtonComponent } from '../matcha-button/button/button.component';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaI18nService } from '../matcha-i18n/matcha-i18n.service';\r\nimport { matchaUniqueId } from '../matcha-a11y/matcha-a11y.utils';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\nimport {\r\n    MatchaPeriodDisplayFormat, MatchaPeriodPreset, MatchaPeriodValue,\r\n} from './matcha-period.types';\r\n\r\n/**\r\n * matcha-period — seletor de período com presets + intervalo personalizado.\r\n *\r\n * O gatilho mostra o intervalo escolhido (`início - fim`) e abre um painel com\r\n * a lista de presets do consumidor. \"Período personalizado\" revela dois campos\r\n * de data (com calendário próprio cada) + \"Aplicar\".\r\n *\r\n *   <matcha-field type=\"period\" label=\"Período\"\r\n *                 formControlName=\"period\"\r\n *                 [periodPresets]=\"presets\" />\r\n *\r\n * Uso direto (sem o matcha-field) é possível, mas o caminho canônico no DSV3 é\r\n * `<matcha-field type=\"period\">` — é ele que resolve label/erro/hint/tamanho.\r\n *\r\n * Valor emitido: `{ start: Date, end: Date, presetKey: string | null }`.\r\n * `presetKey` é `null` quando o intervalo veio do modo personalizado. Datas são\r\n * `Date` (e não ISO como no matcha-field-range) porque é o que `getRange()` dos\r\n * presets produz — normalizar pra string na saída e voltar pra Date na entrada\r\n * só adicionaria conversão sem ganho pro consumidor.\r\n *\r\n * A11y: gatilho é `combobox` (aria-expanded/-controls/-haspopup); presets são\r\n * `matcha-option` (role=option, Enter/Espaço ativam) dentro de um `listbox`;\r\n * setas e ESC são responsabilidade do matcha-panel.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-period',\r\n    templateUrl: './matcha-period.component.html',\r\n    styleUrls: ['./matcha-period.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: true,\r\n    imports: [\r\n        FormsModule,\r\n        MatchaPanelComponent,\r\n        MatchaOptionComponent,\r\n        MatchaDividerComponent,\r\n        MatchaFormFieldComponent,\r\n        MatchaLabelComponent,\r\n        MatchaDateComponent,\r\n        MatchaButtonComponent,\r\n        MatchaIconComponent,\r\n    ],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [\r\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MatchaPeriodComponent), multi: true },\r\n        // Absorve o auto-registro das matcha-option do painel. Sem isso o registro\r\n        // borbulha (CustomEvent) até o matcha-field, que repassaria as options do\r\n        // período pro select/autocomplete interno de OUTRO type.\r\n        { provide: MATCHA_OPTION_PARENT, useExisting: forwardRef(() => MatchaPeriodComponent) },\r\n    ],\r\n})\r\nexport class MatchaPeriodComponent implements ControlValueAccessor, MatchaOptionParent {\r\n    // ── Inputs ────────────────────────────────────────────────────────────\r\n    /** Presets exibidos na lista. Cada um calcula o próprio range em `getRange()`. */\r\n    presets = input<MatchaPeriodPreset[]>([]);\r\n\r\n    /** Habilita a seção \"Período personalizado\" (dois campos de data + Aplicar). */\r\n    allowCustom = input(true, { transform: booleanAttribute });\r\n\r\n    /** Texto do gatilho quando não há valor. Vazio = tradução do matcha-i18n. */\r\n    placeholder = input<string>('');\r\n\r\n    /** Rótulo do atalho que abre o período personalizado. Vazio = matcha-i18n. */\r\n    customLabel = input<string>('');\r\n\r\n    /** Rótulo do botão que confirma o período personalizado. Vazio = matcha-i18n. */\r\n    applyLabel = input<string>('');\r\n\r\n    /** Rótulo do campo de data inicial. Vazio = matcha-i18n. */\r\n    startLabel = input<string>('');\r\n\r\n    /** Rótulo do campo de data final. Vazio = matcha-i18n. */\r\n    endLabel = input<string>('');\r\n\r\n    /** Formato do intervalo exibido no gatilho. */\r\n    displayFormat = input<MatchaPeriodDisplayFormat>('dd/MM/yyyy');\r\n\r\n    /** Data mínima selecionável no período personalizado (yyyy-MM-dd). */\r\n    min = input<string>('');\r\n\r\n    /** Data máxima selecionável no período personalizado (yyyy-MM-dd). */\r\n    max = input<string>('');\r\n\r\n    disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /** Nome acessível do combobox quando não há label visível (o matcha-field repassa). */\r\n    ariaLabel = input<string>('');\r\n\r\n    // Repasse pro matcha-panel\r\n    placement = input<PanelPlacement>('auto');\r\n    maxHeight = input(360, { transform: numberAttribute });\r\n    minWidth = input(240, { transform: numberAttribute });\r\n\r\n    // ── Outputs ───────────────────────────────────────────────────────────\r\n    /** Emitido a cada intervalo definido (preset escolhido ou \"Aplicar\" do custom). */\r\n    periodChange = output<MatchaPeriodValue>();\r\n    opened = output<void>();\r\n    closed = output<void>();\r\n\r\n    // ── Estado interno ────────────────────────────────────────────────────\r\n    protected readonly value = signal<MatchaPeriodValue | null>(null);\r\n    protected readonly open = signal(false);\r\n    protected readonly showingCustom = signal(false);\r\n    /** Datas do editor personalizado no formato do matcha-date ('yyyy-MM-dd'). */\r\n    protected readonly customStart = signal<string | null>(null);\r\n    protected readonly customEnd = signal<string | null>(null);\r\n    protected readonly customError = signal<string>('');\r\n    private readonly cvaDisabled = signal(false);\r\n\r\n    /**\r\n     * Panes dos calendários aninhados, repassados ao painel via\r\n     * `ignoreClickOutsideElements` — clicar num dia não pode fechar o período.\r\n     *\r\n     * Panes NÃO são removidos quando o calendário fecha: selecionar um dia fecha\r\n     * o calendário no MESMO clique que ainda propaga até o click-outside do\r\n     * período, e o `composedPath()` desse clique já contém o pane. Pane fechado\r\n     * na lista é inofensivo (nunca casa com clique futuro) e a lista zera a cada\r\n     * abertura/fechamento do período.\r\n     */\r\n    protected readonly calendarPanes = signal<HTMLElement[]>([]);\r\n\r\n    private readonly panel = viewChild(MatchaPanelComponent);\r\n    private readonly customEditorRef = viewChild<ElementRef<HTMLElement>>('customEditor');\r\n    private readonly presetOptions = viewChildren(MatchaOptionComponent);\r\n\r\n    /** Id do listbox de presets — alvo do `aria-controls` do gatilho. */\r\n    protected readonly listboxId = matchaUniqueId('matcha-period-listbox');\r\n    /** Id do rótulo do editor personalizado — nomeia o grupo dos dois campos. */\r\n    protected readonly customGroupId = matchaUniqueId('matcha-period-custom');\r\n\r\n    private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n    private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n    // i18n reativo a setLocale() — mesmo padrão do matcha-calendar.\r\n    private readonly i18n = inject(MatchaI18nService);\r\n    private readonly locale = toSignal(this.i18n.localeChange, { initialValue: this.i18n.locale });\r\n\r\n    private cvaChange: (value: MatchaPeriodValue | null) => void = () => {};\r\n    private cvaTouched: () => void = () => {};\r\n\r\n    constructor() {\r\n        // `selected` da matcha-option é controlado imperativamente pelo parent (não\r\n        // é @Input — mesmo contrato que matcha-select usa). As options são\r\n        // declaradas NESTE template, então os host bindings delas são avaliados na\r\n        // view do período: markForCheck aqui é o que faz o aria-selected=\"true\"\r\n        // (e o tint accent que o tema pendura nele) aparecer.\r\n        effect(() => {\r\n            const value = this.value();\r\n            const presets = this.presets();\r\n            this.presetOptions().forEach((option, index) => {\r\n                const preset = presets[index];\r\n                option.selected = !!preset && value?.presetKey === preset.key;\r\n            });\r\n            this.cdr.markForCheck();\r\n        });\r\n    }\r\n\r\n    // ── Derivados ─────────────────────────────────────────────────────────\r\n    protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\r\n\r\n    protected readonly hasValue = computed(() => this.value() !== null);\r\n\r\n    /** Texto do gatilho: intervalo formatado ou placeholder. */\r\n    protected readonly triggerLabel = computed<string>(() => {\r\n        const v = this.value();\r\n        if (!v) return this.effectivePlaceholder();\r\n        return `${this.formatDate(v.start)} - ${this.formatDate(v.end)}`;\r\n    });\r\n\r\n    protected readonly effectivePlaceholder = computed(() =>\r\n        this.placeholder() || this.translate('period.placeholder'));\r\n    protected readonly effectiveCustomLabel = computed(() =>\r\n        this.customLabel() || this.translate('period.custom'));\r\n    protected readonly effectiveApplyLabel = computed(() =>\r\n        this.applyLabel() || this.translate('period.apply'));\r\n    protected readonly effectiveStartLabel = computed(() =>\r\n        this.startLabel() || this.translate('period.startDate'));\r\n    protected readonly effectiveEndLabel = computed(() =>\r\n        this.endLabel() || this.translate('period.endDate'));\r\n\r\n    /** True quando o valor atual veio do modo personalizado (presetKey null). */\r\n    protected readonly isCustomSelected = computed(() => this.value()?.presetKey === null);\r\n\r\n    /**\r\n     * Limites recíprocos do editor: início não passa do fim e fim não é anterior\r\n     * ao início. Cai nos limites globais (`min`/`max`) quando o outro lado está\r\n     * vazio — desabilita a data inválida no próprio calendário.\r\n     */\r\n    protected readonly customStartMax = computed(() => this.customEnd() || this.max());\r\n    protected readonly customEndMin = computed(() => this.customStart() || this.min());\r\n\r\n    // ── Exibição ──────────────────────────────────────────────────────────\r\n    protected isPresetSelected(preset: MatchaPeriodPreset): boolean {\r\n        return this.value()?.presetKey === preset.key;\r\n    }\r\n\r\n    private formatDate(date: Date): string {\r\n        const day = String(date.getDate()).padStart(2, '0');\r\n        const month = String(date.getMonth() + 1).padStart(2, '0');\r\n        const year = date.getFullYear();\r\n        return this.displayFormat() === 'dd/MM/yy'\r\n            ? `${day}/${month}/${String(year).slice(-2)}`\r\n            : `${day}/${month}/${year}`;\r\n    }\r\n\r\n    /** Lê a tradução no locale atual — `locale()` deixa o computed reativo a setLocale(). */\r\n    private translate(key: string): string {\r\n        this.locale();\r\n        return this.i18n.translate(key);\r\n    }\r\n\r\n    // ── Abertura / fechamento ─────────────────────────────────────────────\r\n    protected onTriggerClick(): void {\r\n        if (this.isDisabled()) return;\r\n        this.open() ? this.closePanel() : this.openPanel();\r\n    }\r\n\r\n    /** Abre o painel. Reabre já no editor quando o valor atual é personalizado. */\r\n    openPanel(): void {\r\n        if (this.isDisabled() || this.open()) return;\r\n\r\n        this.calendarPanes.set([]);\r\n        this.showingCustom.set(this.allowCustom() && this.isCustomSelected());\r\n        this.customError.set('');\r\n        this.syncCustomFromValue();\r\n        this.open.set(true);\r\n\r\n        const panel = this.panel();\r\n        if (panel) {\r\n            panel.attachTo(this.anchorElement());\r\n            panel.openPanel();\r\n        }\r\n        if (this.showingCustom()) this.scrollCustomIntoView();\r\n        this.opened.emit();\r\n    }\r\n\r\n    closePanel(): void {\r\n        if (!this.open()) return;\r\n        this.open.set(false);\r\n        this.calendarPanes.set([]);\r\n        this.panel()?.closePanel();\r\n        this.cvaTouched();\r\n        this.closed.emit();\r\n    }\r\n\r\n    /** Fechamento vindo do próprio painel (ESC, click-outside). */\r\n    protected onPanelClosed(): void {\r\n        this.closePanel();\r\n    }\r\n\r\n    /**\r\n     * Âncora do painel: o `matcha-form-field` em volta, quando existe (é ele que\r\n     * desenha a borda do campo), senão o próprio host.\r\n     */\r\n    private anchorElement(): HTMLElement {\r\n        const host = this.hostRef.nativeElement;\r\n        return (host.closest('matcha-form-field') as HTMLElement | null) ?? host;\r\n    }\r\n\r\n    protected onTriggerKeyDown(event: KeyboardEvent): void {\r\n        if (this.isDisabled()) return;\r\n        switch (event.key) {\r\n            case 'ArrowDown':\r\n            case 'Enter':\r\n            case ' ':\r\n                if (!this.open()) {\r\n                    event.preventDefault();\r\n                    this.openPanel();\r\n                }\r\n                break;\r\n            case 'Escape':\r\n                if (this.open()) {\r\n                    event.preventDefault();\r\n                    this.closePanel();\r\n                }\r\n                break;\r\n        }\r\n    }\r\n\r\n    // ── Seleção ───────────────────────────────────────────────────────────\r\n    protected selectPreset(preset: MatchaPeriodPreset): void {\r\n        const range = preset.getRange();\r\n        this.commitValue({ start: range.start, end: range.end, presetKey: preset.key });\r\n        this.showingCustom.set(false);\r\n        this.customError.set('');\r\n        this.closePanel();\r\n    }\r\n\r\n    /** Revela o editor personalizado mantendo o painel aberto. */\r\n    protected toggleCustom(): void {\r\n        this.showingCustom.set(true);\r\n        this.customError.set('');\r\n        this.syncCustomFromValue();\r\n        this.scrollCustomIntoView();\r\n    }\r\n\r\n    protected applyCustom(): void {\r\n        const start = this.parseIso(this.customStart());\r\n        const end = this.parseIso(this.customEnd());\r\n\r\n        if (!start || !end) {\r\n            this.customError.set(this.translate('period.invalidDates'));\r\n            return;\r\n        }\r\n        if (start.getTime() > end.getTime()) {\r\n            this.customError.set(this.translate('period.invalidOrder'));\r\n            return;\r\n        }\r\n\r\n        this.customError.set('');\r\n        this.commitValue({ start, end, presetKey: null });\r\n        this.closePanel();\r\n    }\r\n\r\n    protected onCustomStartChange(iso: string | null): void {\r\n        this.customStart.set(iso || null);\r\n        if (this.customError()) this.customError.set('');\r\n    }\r\n\r\n    protected onCustomEndChange(iso: string | null): void {\r\n        this.customEnd.set(iso || null);\r\n        if (this.customError()) this.customError.set('');\r\n    }\r\n\r\n    /**\r\n     * Registra o pane de um calendário aninhado (ao abrir) pra ele contar como\r\n     * \"dentro\" do painel no click-outside.\r\n     */\r\n    protected registerCalendarPane(el: HTMLElement | null | undefined): void {\r\n        if (!el) return;\r\n        this.calendarPanes.update(list => list.includes(el) ? list : [...list, el]);\r\n    }\r\n\r\n    /**\r\n     * Rola o editor pra dentro da área visível do painel.\r\n     *\r\n     * O painel tem scroll interno limitado por `maxHeight`; o editor entra no fim\r\n     * da lista e pode nascer abaixo da dobra. `block: 'nearest'` faz o mínimo de\r\n     * rolagem e não mexe no scroll da página. rAF pra rodar depois do render do\r\n     * `@if` e do reposicionamento do painel (ResizeObserver).\r\n     */\r\n    private scrollCustomIntoView(): void {\r\n        if (typeof requestAnimationFrame === 'undefined') return;\r\n        requestAnimationFrame(() => {\r\n            this.customEditorRef()?.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n        });\r\n    }\r\n\r\n    private commitValue(value: MatchaPeriodValue): void {\r\n        this.value.set(value);\r\n        // FormControl ANTES do output: handler de (periodChange) que lê o form\r\n        // precisa já ver o valor novo.\r\n        this.cvaChange(value);\r\n        this.cvaTouched();\r\n        this.periodChange.emit(value);\r\n    }\r\n\r\n    private syncCustomFromValue(): void {\r\n        const v = this.value();\r\n        if (!v) return;\r\n        this.customStart.set(this.toIso(v.start));\r\n        this.customEnd.set(this.toIso(v.end));\r\n    }\r\n\r\n    // ── Conversões ────────────────────────────────────────────────────────\r\n    /** 'yyyy-MM-dd' → Date local; null quando o formato/dia é impossível (31/02). */\r\n    private parseIso(value: string | null): Date | null {\r\n        if (!value || !/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) return null;\r\n        const [year, month, day] = value.split('-').map(Number);\r\n        const date = new Date(year, month - 1, day);\r\n        if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\r\n            return null;\r\n        }\r\n        return date;\r\n    }\r\n\r\n    private toIso(date: Date): string {\r\n        const year = date.getFullYear();\r\n        const month = String(date.getMonth() + 1).padStart(2, '0');\r\n        const day = String(date.getDate()).padStart(2, '0');\r\n        return `${year}-${month}-${day}`;\r\n    }\r\n\r\n    /** Aceita Date ou string ISO no valor escrito de fora (patchValue/reset/backend). */\r\n    private normalizeValue(value: MatchaPeriodValue | null | undefined): MatchaPeriodValue | null {\r\n        if (!value || value.start == null || value.end == null) return null;\r\n        const start = value.start instanceof Date ? value.start : new Date(value.start);\r\n        const end = value.end instanceof Date ? value.end : new Date(value.end);\r\n        if (isNaN(start.getTime()) || isNaN(end.getTime())) return null;\r\n        return { start, end, presetKey: value.presetKey ?? null };\r\n    }\r\n\r\n    // ── MatchaOptionParent ────────────────────────────────────────────────\r\n    /** Seleção é resolvida por `(optionClick)` no template — nada a fazer aqui. */\r\n    selectOption(): void {}\r\n    /** Presets são renderizados pelo próprio template: não há registro a manter. */\r\n    registerOption(): void {}\r\n    unregisterOption(): void {}\r\n\r\n    // ── ControlValueAccessor ──────────────────────────────────────────────\r\n    writeValue(value: MatchaPeriodValue | null): void {\r\n        this.value.set(this.normalizeValue(value));\r\n        this.showingCustom.set(this.allowCustom() && this.isCustomSelected());\r\n        this.syncCustomFromValue();\r\n    }\r\n\r\n    registerOnChange(fn: (value: MatchaPeriodValue | null) => void): void { this.cvaChange = fn; }\r\n    registerOnTouched(fn: () => void): void { this.cvaTouched = fn; }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.cvaDisabled.set(isDisabled);\r\n        if (isDisabled) this.closePanel();\r\n    }\r\n}\r\n","<div class=\"matcha-period-container\">\r\n    <!-- Gatilho: mostra \"início - fim\" (ou o placeholder) + caret. É o combobox\r\n         do padrão ARIA; setas/ESC dentro do painel são do matcha-panel. -->\r\n    <div class=\"matcha-period-trigger\"\r\n         [class.matcha-period-open]=\"open()\"\r\n         [class.matcha-period-disabled]=\"isDisabled()\"\r\n         (click)=\"onTriggerClick()\"\r\n         (keydown)=\"onTriggerKeyDown($event)\"\r\n         [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n         role=\"combobox\"\r\n         [attr.aria-label]=\"ariaLabel() || null\"\r\n         [attr.aria-expanded]=\"open()\"\r\n         aria-haspopup=\"listbox\"\r\n         [attr.aria-controls]=\"open() ? listboxId : null\"\r\n         [attr.aria-disabled]=\"isDisabled()\">\r\n\r\n        <span class=\"matcha-period-value\" [class.matcha-period-placeholder]=\"!hasValue()\">\r\n            {{ triggerLabel() }}\r\n        </span>\r\n\r\n        <span class=\"matcha-period-arrow\" [class.matcha-period-arrow-open]=\"open()\" aria-hidden=\"true\">\r\n            <matcha-icon name=\"chevron-down\" size=\"sm\"></matcha-icon>\r\n        </span>\r\n    </div>\r\n\r\n    <matcha-panel [placement]=\"placement()\"\r\n                  [maxHeight]=\"maxHeight()\"\r\n                  [minWidth]=\"minWidth()\"\r\n                  [portalToBody]=\"true\"\r\n                  role=\"none\"\r\n                  [ignoreClickOutsideElements]=\"calendarPanes()\"\r\n                  (closed)=\"onPanelClosed()\">\r\n\r\n        <div class=\"matcha-period-panel\">\r\n            <!-- Lista de presets (atalhos do consumidor) -->\r\n            <div class=\"matcha-period-presets\"\r\n                 [attr.id]=\"listboxId\"\r\n                 role=\"listbox\"\r\n                 [attr.aria-label]=\"ariaLabel() || effectivePlaceholder()\">\r\n                @for (preset of presets(); track preset.key) {\r\n                    <matcha-option [value]=\"preset.key\" (optionClick)=\"selectPreset(preset)\">\r\n                        {{ preset.label }}\r\n                    </matcha-option>\r\n                }\r\n            </div>\r\n\r\n            @if (allowCustom()) {\r\n                <matcha-divider decorative></matcha-divider>\r\n\r\n                <!-- Atalho que revela o editor. É <button> de verdade: Enter/Espaço\r\n                     e foco visível saem de graça, e o painel já o considera focável. -->\r\n                <button type=\"button\"\r\n                        matcha-button\r\n                        variant=\"ghost\"\r\n                        color=\"accent\"\r\n                        size=\"small\"\r\n                        class=\"matcha-period-custom-toggle\"\r\n                        [attr.aria-expanded]=\"showingCustom()\"\r\n                        [attr.aria-controls]=\"customGroupId\"\r\n                        (click)=\"toggleCustom()\">\r\n                    {{ effectiveCustomLabel() }}\r\n                </button>\r\n\r\n                @if (showingCustom()) {\r\n                    <div #customEditor\r\n                         class=\"matcha-period-custom\"\r\n                         role=\"group\"\r\n                         [attr.id]=\"customGroupId\"\r\n                         [attr.aria-label]=\"effectiveCustomLabel()\">\r\n\r\n                        <!-- Dois campos de data; quebram em duas linhas quando o\r\n                             painel fica estreito (grid auto-fit no SCSS). -->\r\n                        <div class=\"matcha-period-custom-fields\">\r\n                            <matcha-form-field size=\"small\">\r\n                                <matcha-label>{{ effectiveStartLabel() }}</matcha-label>\r\n                                <matcha-date [ngModel]=\"customStart()\"\r\n                                             (ngModelChange)=\"onCustomStartChange($event)\"\r\n                                             [ngModelOptions]=\"{ standalone: true }\"\r\n                                             [min]=\"min()\"\r\n                                             [max]=\"customStartMax()\"\r\n                                             [disabled]=\"isDisabled()\"\r\n                                             [suppressPanelGlobalClose]=\"true\"\r\n                                             (calendarPanelOpened)=\"registerCalendarPane($event)\"></matcha-date>\r\n                            </matcha-form-field>\r\n\r\n                            <matcha-form-field size=\"small\">\r\n                                <matcha-label>{{ effectiveEndLabel() }}</matcha-label>\r\n                                <matcha-date [ngModel]=\"customEnd()\"\r\n                                             (ngModelChange)=\"onCustomEndChange($event)\"\r\n                                             [ngModelOptions]=\"{ standalone: true }\"\r\n                                             [min]=\"customEndMin()\"\r\n                                             [max]=\"max()\"\r\n                                             [disabled]=\"isDisabled()\"\r\n                                             [suppressPanelGlobalClose]=\"true\"\r\n                                             (calendarPanelOpened)=\"registerCalendarPane($event)\"></matcha-date>\r\n                            </matcha-form-field>\r\n                        </div>\r\n\r\n                        @if (customError()) {\r\n                            <p class=\"matcha-period-error\" role=\"alert\">{{ customError() }}</p>\r\n                        }\r\n\r\n                        <button type=\"button\"\r\n                                matcha-button\r\n                                color=\"accent\"\r\n                                size=\"small\"\r\n                                class=\"matcha-period-apply\"\r\n                                (click)=\"applyCustom()\">\r\n                            {{ effectiveApplyLabel() }}\r\n                        </button>\r\n                    </div>\r\n                }\r\n            }\r\n        </div>\r\n    </matcha-panel>\r\n</div>\r\n","/**\r\n * MatchaPhoneMasks — registro de máscaras de telefone por país.\r\n * Irmão de MatchaDocumentMasks / MatchaPostalCodeMasks — mesma convenção.\r\n *\r\n * Usado internamente por `matcha-phone` pra exibir flag + DDI + máscara\r\n * coerente com o país selecionado. Lista os principais mercados do Matcha DS.\r\n * Pra lista completa de 200+ países, veja `all-countries.ts`.\r\n *\r\n * Flag URL: https://flagcdn.com/{16|20|24}x{12|15|18}/{iso2}.png\r\n */\r\n\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { MatchaValidators } from './matcha-validators';\r\n\r\n/**\r\n * IDs dos países CURADOS — união fechada, mantém autocomplete no editor e\r\n * garante em tempo de compilação que `MatchaPhoneMasks` cobre exatamente esses.\r\n */\r\nexport type MatchaCuratedPhoneId =\r\n    | 'br' | 'us' | 'ca' | 'pt' | 'es' | 'mx' | 'ar' | 'cl' | 'fr' | 'de' | 'uk';\r\n\r\n/**\r\n * ID de país aceito por `matcha-phone`/`matcha-field type=\"phone\"`.\r\n * Alarga `MatchaCuratedPhoneId` com `string` (mesmo idioma de MatchaFlagSize):\r\n * autocomplete continua sugerindo os 11 curados, mas qualquer iso2 da camada\r\n * genérica (`MatchaPhoneAllCountries`) também é aceito sem cast.\r\n */\r\nexport type MatchaPhoneId = MatchaCuratedPhoneId | (string & {});\r\n\r\nexport interface MatchaPhoneSpec {\r\n    /** ISO 3166-1 alpha-2 (lowercase) */\r\n    iso2: string;\r\n    /** Nome nativo/local */\r\n    name: string;\r\n    /** Código de discagem internacional (sem o `+`) */\r\n    ddi: string;\r\n    /** Máscara matchaMask. Pode ter variações por prefixo (DDD). */\r\n    mask: string;\r\n    /** Placeholder do input */\r\n    placeholder: string;\r\n    /** Nome do validator em MatchaValidators; `'phoneGeneric'` pra camada genérica. */\r\n    validator: string;\r\n    /** `'curated'` = máscara+validator precisos; `'generic'` = derivado, aproximado. */\r\n    tier?: 'curated' | 'generic';\r\n    /** Desempate quando vários países compartilham o mesmo DDI (ex: NANP `1`). Menor vence. */\r\n    priority?: number;\r\n    /** Faixa [min, max] de dígitos nacionais aceitos — usado pelo validator genérico. */\r\n    nsnRange?: [number, number];\r\n    /**\r\n     * Formatos alternativos ordenados por quantidade CRESCENTE de dígitos. Quando\r\n     * um país tem números de tamanhos diferentes (BR: fixo 8 díg. vs celular 9 díg.),\r\n     * o componente escolhe a menor variante que ainda comporta os dígitos digitados.\r\n     * Ausente = usa `mask` fixo.\r\n     */\r\n    maskVariants?: string[];\r\n}\r\n\r\nexport const MatchaPhoneMasks: Record<MatchaCuratedPhoneId, MatchaPhoneSpec> = {\r\n    'br': { iso2: 'br', name: 'Brasil',         ddi: '55',  mask: '(00) 00000-0000',  placeholder: '(11) 99999-9999', validator: 'phoneBr', tier: 'curated', maskVariants: ['(00) 0000-0000', '(00) 00000-0000'] },\r\n    'us': { iso2: 'us', name: 'United States',  ddi: '1',   mask: '(000) 000-0000',   placeholder: '(415) 555-1234',  validator: 'phoneUs', tier: 'curated', priority: 0 },\r\n    'ca': { iso2: 'ca', name: 'Canada',         ddi: '1',   mask: '(000) 000-0000',   placeholder: '(416) 555-0199',  validator: 'phoneCa', tier: 'curated', priority: 1 },\r\n    'pt': { iso2: 'pt', name: 'Portugal',       ddi: '351', mask: '000 000 000',      placeholder: '912 345 678',     validator: 'phonePt', tier: 'curated' },\r\n    'es': { iso2: 'es', name: 'España',         ddi: '34',  mask: '000 000 000',      placeholder: '612 345 678',     validator: 'phoneEs', tier: 'curated' },\r\n    'mx': { iso2: 'mx', name: 'México',         ddi: '52',  mask: '00 0000 0000',     placeholder: '55 1234 5678',    validator: 'phoneMx', tier: 'curated' },\r\n    'ar': { iso2: 'ar', name: 'Argentina',      ddi: '54',  mask: '(00) 0000-0000',   placeholder: '(11) 1234-5678',  validator: 'phoneAr', tier: 'curated' },\r\n    'cl': { iso2: 'cl', name: 'Chile',          ddi: '56',  mask: '0 0000 0000',      placeholder: '9 1234 5678',     validator: 'phoneCl', tier: 'curated' },\r\n    'fr': { iso2: 'fr', name: 'France',         ddi: '33',  mask: '00 00 00 00 00',   placeholder: '06 12 34 56 78',  validator: 'phoneFr', tier: 'curated' },\r\n    'de': { iso2: 'de', name: 'Deutschland',    ddi: '49',  mask: '0000 0000000',     placeholder: '0151 12345678',   validator: 'phoneDe', tier: 'curated' },\r\n    'uk': { iso2: 'gb', name: 'United Kingdom', ddi: '44',  mask: '00000 000000',     placeholder: '07123 456789',    validator: 'phoneUk', tier: 'curated' },\r\n};\r\n\r\n/** Lista ordenada pronta pra dropdowns — só os 11 países curados. */\r\nexport const MatchaPhoneList: Array<{ id: MatchaCuratedPhoneId } & MatchaPhoneSpec> =\r\n    (Object.entries(MatchaPhoneMasks) as [MatchaCuratedPhoneId, MatchaPhoneSpec][])\r\n        .map(([id, spec]) => ({ id, ...spec }));\r\n\r\n/** Entrada de país como consumida pelos componentes (id + spec). */\r\nexport type MatchaPhoneCountry = { id: MatchaPhoneId } & MatchaPhoneSpec;\r\n\r\n/**\r\n * Conta quantas posições de dígito (`0`) uma máscara tem. `'(00) 0000-0000'` → 10.\r\n */\r\nexport function countMaskDigits(mask: string): number {\r\n    let n = 0;\r\n    for (const ch of mask) if (ch === '0') n++;\r\n    return n;\r\n}\r\n\r\n/**\r\n * Resolve o país a partir de um número colado sem o `+` (ex: `5511999998888`).\r\n * Determinístico e independente da ordem de exibição da lista:\r\n *  1. considera só países cujo DDI é prefixo do número;\r\n *  2. prefere o DDI mais longo (evita `1` ganhar de um DDI de 3 díg. que comece com 1);\r\n *  3. entre empates, país curado vence genérico;\r\n *  4. persistindo empate (ex: NANP us/ca), menor `priority` vence.\r\n * Retorna `undefined` quando nada casa.\r\n */\r\nexport function resolveCountryByDialPrefix(\r\n    withoutPlus: string,\r\n    countries: readonly MatchaPhoneCountry[],\r\n): MatchaPhoneCountry | undefined {\r\n    const matches = countries.filter(c => withoutPlus.startsWith(c.ddi));\r\n    if (matches.length === 0) return undefined;\r\n    return matches.reduce((best, c) => {\r\n        if (c.ddi.length !== best.ddi.length) return c.ddi.length > best.ddi.length ? c : best;\r\n        const cCurated = c.tier !== 'generic';\r\n        const bestCurated = best.tier !== 'generic';\r\n        if (cCurated !== bestCurated) return cCurated ? c : best;\r\n        return (c.priority ?? 0) < (best.priority ?? 0) ? c : best;\r\n    });\r\n}\r\n\r\n/** Acha a spec de um país por id na lista dada (fallback pro registro curado). */\r\nexport function resolvePhoneSpec(\r\n    id: MatchaPhoneId,\r\n    countries: readonly MatchaPhoneCountry[],\r\n): MatchaPhoneSpec | undefined {\r\n    return countries.find(c => c.id === id) ?? MatchaPhoneMasks[id as MatchaCuratedPhoneId];\r\n}\r\n\r\n/**\r\n * Ponto único de validação de telefone — usado por `matcha-phone` E `matcha-field`\r\n * (elimina a lógica duplicada de despacho que existia nos dois).\r\n * `localDigits` = dígitos nacionais, JÁ sem o `+ddi` (cada chamador tira o prefixo).\r\n * País curado → validator nomeado (`phoneBr` etc.); genérico → `phoneGeneric` com a\r\n * faixa `nsnRange` da própria spec.\r\n */\r\nexport function validatePhoneDigits(\r\n    spec: MatchaPhoneSpec | undefined,\r\n    localDigits: string,\r\n): ValidationErrors | null {\r\n    if (!spec) return null;\r\n    const control = { value: localDigits } as AbstractControl;\r\n    if (spec.validator === 'phoneGeneric') {\r\n        const [min, max] = spec.nsnRange ?? [4, 15];\r\n        return MatchaValidators.phoneGeneric(min, max)(control);\r\n    }\r\n    const fn = (MatchaValidators as unknown as Record<string, unknown>)[spec.validator];\r\n    return typeof fn === 'function'\r\n        ? (fn as (c: AbstractControl) => ValidationErrors | null)(control)\r\n        : null;\r\n}\r\n","// Array of country objects for the flag dropdown.\r\n\r\n// Here is the criteria for the plugin to support a given country/territory\r\n// - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\r\n// - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\r\n// - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\r\n// - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\r\n\r\n// Each country array has the following information:\r\n// [\r\n//    Country name,\r\n//    iso2 code,\r\n//    International dial code,\r\n//    Order (if >1 country with same dial code),\r\n//    Area codes\r\n// ]\r\nvar allCountries = [\r\n    [\r\n        \"Afghanistan (‫افغانستان‬‎)\",\r\n        \"af\",\r\n        \"93\"\r\n    ],\r\n    [\r\n        \"Albania (Shqipëri)\",\r\n        \"al\",\r\n        \"355\"\r\n    ],\r\n    [\r\n        \"Algeria (‫الجزائر‬‎)\",\r\n        \"dz\",\r\n        \"213\"\r\n    ],\r\n    [\r\n        \"American Samoa\",\r\n        \"as\",\r\n        \"1\",\r\n        5,\r\n        [\"684\"]\r\n    ],\r\n    [\r\n        \"Andorra\",\r\n        \"ad\",\r\n        \"376\"\r\n    ],\r\n    [\r\n        \"Angola\",\r\n        \"ao\",\r\n        \"244\"\r\n    ],\r\n    [\r\n        \"Anguilla\",\r\n        \"ai\",\r\n        \"1\",\r\n        6,\r\n        [\"264\"]\r\n    ],\r\n    [\r\n        \"Antigua and Barbuda\",\r\n        \"ag\",\r\n        \"1\",\r\n        7,\r\n        [\"268\"]\r\n    ],\r\n    [\r\n        \"Argentina\",\r\n        \"ar\",\r\n        \"54\",\r\n    ],\r\n    [\r\n        \"Armenia (Հայաստան)\",\r\n        \"am\",\r\n        \"374\"\r\n    ],\r\n    [\r\n        \"Aruba\",\r\n        \"aw\",\r\n        \"297\"\r\n    ],\r\n    [\r\n        \"Australia\",\r\n        \"au\",\r\n        \"61\",\r\n        0\r\n    ],\r\n    [\r\n        \"Austria (Österreich)\",\r\n        \"at\",\r\n        \"43\"\r\n    ],\r\n    [\r\n        \"Azerbaijan (Azərbaycan)\",\r\n        \"az\",\r\n        \"994\"\r\n    ],\r\n    [\r\n        \"Bahamas\",\r\n        \"bs\",\r\n        \"1\",\r\n        8,\r\n        [\"242\"]\r\n    ],\r\n    [\r\n        \"Bahrain (‫البحرين‬‎)\",\r\n        \"bh\",\r\n        \"973\"\r\n    ],\r\n    [\r\n        \"Bangladesh (বাংলাদেশ)\",\r\n        \"bd\",\r\n        \"880\"\r\n    ],\r\n    [\r\n        \"Barbados\",\r\n        \"bb\",\r\n        \"1\",\r\n        9,\r\n        [\"246\"]\r\n    ],\r\n    [\r\n        \"Belarus (Беларусь)\",\r\n        \"by\",\r\n        \"375\"\r\n    ],\r\n    [\r\n        \"Belgium (België)\",\r\n        \"be\",\r\n        \"32\"\r\n    ],\r\n    [\r\n        \"Belize\",\r\n        \"bz\",\r\n        \"501\"\r\n    ],\r\n    [\r\n        \"Benin (Bénin)\",\r\n        \"bj\",\r\n        \"229\"\r\n    ],\r\n    [\r\n        \"Bermuda\",\r\n        \"bm\",\r\n        \"1\",\r\n        10,\r\n        [\"441\"]\r\n    ],\r\n    [\r\n        \"Bhutan (འབྲུག)\",\r\n        \"bt\",\r\n        \"975\"\r\n    ],\r\n    [\r\n        \"Bolivia\",\r\n        \"bo\",\r\n        \"591\"\r\n    ],\r\n    [\r\n        \"Bosnia and Herzegovina (Босна и Херцеговина)\",\r\n        \"ba\",\r\n        \"387\"\r\n    ],\r\n    [\r\n        \"Botswana\",\r\n        \"bw\",\r\n        \"267\"\r\n    ],\r\n    [\r\n        \"Brazil (Brasil)\",\r\n        \"br\",\r\n        \"55\"\r\n    ],\r\n    [\r\n        \"British Indian Ocean Territory\",\r\n        \"io\",\r\n        \"246\"\r\n    ],\r\n    [\r\n        \"British Virgin Islands\",\r\n        \"vg\",\r\n        \"1\",\r\n        11,\r\n        [\"284\"]\r\n    ],\r\n    [\r\n        \"Brunei\",\r\n        \"bn\",\r\n        \"673\"\r\n    ],\r\n    [\r\n        \"Bulgaria (България)\",\r\n        \"bg\",\r\n        \"359\"\r\n    ],\r\n    [\r\n        \"Burkina Faso\",\r\n        \"bf\",\r\n        \"226\"\r\n    ],\r\n    [\r\n        \"Burundi (Uburundi)\",\r\n        \"bi\",\r\n        \"257\"\r\n    ],\r\n    [\r\n        \"Cambodia (កម្ពុជា)\",\r\n        \"kh\",\r\n        \"855\"\r\n    ],\r\n    [\r\n        \"Cameroon (Cameroun)\",\r\n        \"cm\",\r\n        \"237\"\r\n    ],\r\n    [\r\n        \"Canada\",\r\n        \"ca\",\r\n        \"1\",\r\n        1,\r\n        [\"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\"]\r\n    ],\r\n    [\r\n        \"Cape Verde (Kabu Verdi)\",\r\n        \"cv\",\r\n        \"238\"\r\n    ],\r\n    [\r\n        \"Caribbean Netherlands\",\r\n        \"bq\",\r\n        \"599\",\r\n        1,\r\n        [\"3\", \"4\", \"7\"]\r\n    ],\r\n    [\r\n        \"Cayman Islands\",\r\n        \"ky\",\r\n        \"1\",\r\n        12,\r\n        [\"345\"]\r\n    ],\r\n    [\r\n        \"Central African Republic (République centrafricaine)\",\r\n        \"cf\",\r\n        \"236\"\r\n    ],\r\n    [\r\n        \"Chad (Tchad)\",\r\n        \"td\",\r\n        \"235\"\r\n    ],\r\n    [\r\n        \"Chile\",\r\n        \"cl\",\r\n        \"56\"\r\n    ],\r\n    [\r\n        \"China (中国)\",\r\n        \"cn\",\r\n        \"86\"\r\n    ],\r\n    [\r\n        \"Christmas Island\",\r\n        \"cx\",\r\n        \"61\",\r\n        2\r\n    ],\r\n    [\r\n        \"Cocos (Keeling) Islands\",\r\n        \"cc\",\r\n        \"61\",\r\n        1\r\n    ],\r\n    [\r\n        \"Colombia\",\r\n        \"co\",\r\n        \"57\"\r\n    ],\r\n    [\r\n        \"Comoros (‫جزر القمر‬‎)\",\r\n        \"km\",\r\n        \"269\"\r\n    ],\r\n    [\r\n        \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\",\r\n        \"cd\",\r\n        \"243\"\r\n    ],\r\n    [\r\n        \"Congo (Republic) (Congo-Brazzaville)\",\r\n        \"cg\",\r\n        \"242\"\r\n    ],\r\n    [\r\n        \"Cook Islands\",\r\n        \"ck\",\r\n        \"682\"\r\n    ],\r\n    [\r\n        \"Costa Rica\",\r\n        \"cr\",\r\n        \"506\"\r\n    ],\r\n    [\r\n        \"Côte d’Ivoire\",\r\n        \"ci\",\r\n        \"225\"\r\n    ],\r\n    [\r\n        \"Croatia (Hrvatska)\",\r\n        \"hr\",\r\n        \"385\"\r\n    ],\r\n    [\r\n        \"Cuba\",\r\n        \"cu\",\r\n        \"53\"\r\n    ],\r\n    [\r\n        \"Curaçao\",\r\n        \"cw\",\r\n        \"599\",\r\n        0\r\n    ],\r\n    [\r\n        \"Cyprus (Κύπρος)\",\r\n        \"cy\",\r\n        \"357\"\r\n    ],\r\n    [\r\n        \"Czech Republic (Česká republika)\",\r\n        \"cz\",\r\n        \"420\"\r\n    ],\r\n    [\r\n        \"Denmark (Danmark)\",\r\n        \"dk\",\r\n        \"45\"\r\n    ],\r\n    [\r\n        \"Djibouti\",\r\n        \"dj\",\r\n        \"253\"\r\n    ],\r\n    [\r\n        \"Dominica\",\r\n        \"dm\",\r\n        \"1\",\r\n        13,\r\n        [\"767\"]\r\n    ],\r\n    [\r\n        \"Dominican Republic (República Dominicana)\",\r\n        \"do\",\r\n        \"1\",\r\n        2,\r\n        [\"809\", \"829\", \"849\"]\r\n    ],\r\n    [\r\n        \"Ecuador\",\r\n        \"ec\",\r\n        \"593\"\r\n    ],\r\n    [\r\n        \"Egypt (‫مصر‬‎)\",\r\n        \"eg\",\r\n        \"20\"\r\n    ],\r\n    [\r\n        \"El Salvador\",\r\n        \"sv\",\r\n        \"503\"\r\n    ],\r\n    [\r\n        \"Equatorial Guinea (Guinea Ecuatorial)\",\r\n        \"gq\",\r\n        \"240\"\r\n    ],\r\n    [\r\n        \"Eritrea\",\r\n        \"er\",\r\n        \"291\"\r\n    ],\r\n    [\r\n        \"Estonia (Eesti)\",\r\n        \"ee\",\r\n        \"372\"\r\n    ],\r\n    [\r\n        \"Ethiopia\",\r\n        \"et\",\r\n        \"251\"\r\n    ],\r\n    [\r\n        \"Falkland Islands (Islas Malvinas)\",\r\n        \"fk\",\r\n        \"500\"\r\n    ],\r\n    [\r\n        \"Faroe Islands (Føroyar)\",\r\n        \"fo\",\r\n        \"298\"\r\n    ],\r\n    [\r\n        \"Fiji\",\r\n        \"fj\",\r\n        \"679\"\r\n    ],\r\n    [\r\n        \"Finland (Suomi)\",\r\n        \"fi\",\r\n        \"358\",\r\n        0\r\n    ],\r\n    [\r\n        \"France\",\r\n        \"fr\",\r\n        \"33\"\r\n    ],\r\n    [\r\n        \"French Guiana (Guyane française)\",\r\n        \"gf\",\r\n        \"594\"\r\n    ],\r\n    [\r\n        \"French Polynesia (Polynésie française)\",\r\n        \"pf\",\r\n        \"689\"\r\n    ],\r\n    [\r\n        \"Gabon\",\r\n        \"ga\",\r\n        \"241\"\r\n    ],\r\n    [\r\n        \"Gambia\",\r\n        \"gm\",\r\n        \"220\"\r\n    ],\r\n    [\r\n        \"Georgia (საქართველო)\",\r\n        \"ge\",\r\n        \"995\"\r\n    ],\r\n    [\r\n        \"Germany (Deutschland)\",\r\n        \"de\",\r\n        \"49\"\r\n    ],\r\n    [\r\n        \"Ghana (Gaana)\",\r\n        \"gh\",\r\n        \"233\"\r\n    ],\r\n    [\r\n        \"Gibraltar\",\r\n        \"gi\",\r\n        \"350\"\r\n    ],\r\n    [\r\n        \"Greece (Ελλάδα)\",\r\n        \"gr\",\r\n        \"30\"\r\n    ],\r\n    [\r\n        \"Greenland (Kalaallit Nunaat)\",\r\n        \"gl\",\r\n        \"299\"\r\n    ],\r\n    [\r\n        \"Grenada\",\r\n        \"gd\",\r\n        \"1\",\r\n        14,\r\n        [\"473\"]\r\n    ],\r\n    [\r\n        \"Guadeloupe\",\r\n        \"gp\",\r\n        \"590\",\r\n        0\r\n    ],\r\n    [\r\n        \"Guam\",\r\n        \"gu\",\r\n        \"1\",\r\n        15,\r\n        [\"671\"]\r\n    ],\r\n    [\r\n        \"Guatemala\",\r\n        \"gt\",\r\n        \"502\"\r\n    ],\r\n    [\r\n        \"Guernsey\",\r\n        \"gg\",\r\n        \"44\",\r\n        1,\r\n        [\"1481\", \"7781\", \"7839\", \"7911\"]\r\n    ],\r\n    [\r\n        \"Guinea (Guinée)\",\r\n        \"gn\",\r\n        \"224\"\r\n    ],\r\n    [\r\n        \"Guinea-Bissau (Guiné Bissau)\",\r\n        \"gw\",\r\n        \"245\"\r\n    ],\r\n    [\r\n        \"Guyana\",\r\n        \"gy\",\r\n        \"592\"\r\n    ],\r\n    [\r\n        \"Haiti\",\r\n        \"ht\",\r\n        \"509\"\r\n    ],\r\n    [\r\n        \"Honduras\",\r\n        \"hn\",\r\n        \"504\"\r\n    ],\r\n    [\r\n        \"Hong Kong (香港)\",\r\n        \"hk\",\r\n        \"852\"\r\n    ],\r\n    [\r\n        \"Hungary (Magyarország)\",\r\n        \"hu\",\r\n        \"36\"\r\n    ],\r\n    [\r\n        \"Iceland (Ísland)\",\r\n        \"is\",\r\n        \"354\"\r\n    ],\r\n    [\r\n        \"India (भारत)\",\r\n        \"in\",\r\n        \"91\"\r\n    ],\r\n    [\r\n        \"Indonesia\",\r\n        \"id\",\r\n        \"62\"\r\n    ],\r\n    [\r\n        \"Iran (‫ایران‬‎)\",\r\n        \"ir\",\r\n        \"98\"\r\n    ],\r\n    [\r\n        \"Iraq (‫العراق‬‎)\",\r\n        \"iq\",\r\n        \"964\"\r\n    ],\r\n    [\r\n        \"Ireland\",\r\n        \"ie\",\r\n        \"353\"\r\n    ],\r\n    [\r\n        \"Isle of Man\",\r\n        \"im\",\r\n        \"44\",\r\n        2,\r\n        [\"1624\", \"74576\", \"7524\", \"7924\", \"7624\"]\r\n    ],\r\n    [\r\n        \"Israel (‫ישראל‬‎)\",\r\n        \"il\",\r\n        \"972\"\r\n    ],\r\n    [\r\n        \"Italy (Italia)\",\r\n        \"it\",\r\n        \"39\",\r\n        0\r\n    ],\r\n    [\r\n        \"Jamaica\",\r\n        \"jm\",\r\n        \"1\",\r\n        4,\r\n        [\"876\", \"658\"]\r\n    ],\r\n    [\r\n        \"Japan (日本)\",\r\n        \"jp\",\r\n        \"81\"\r\n    ],\r\n    [\r\n        \"Jersey\",\r\n        \"je\",\r\n        \"44\",\r\n        3,\r\n        [\"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\"]\r\n    ],\r\n    [\r\n        \"Jordan (‫الأردن‬‎)\",\r\n        \"jo\",\r\n        \"962\"\r\n    ],\r\n    [\r\n        \"Kazakhstan (Казахстан)\",\r\n        \"kz\",\r\n        \"7\",\r\n        1,\r\n        [\"33\", \"7\"]\r\n    ],\r\n    [\r\n        \"Kenya\",\r\n        \"ke\",\r\n        \"254\"\r\n    ],\r\n    [\r\n        \"Kiribati\",\r\n        \"ki\",\r\n        \"686\"\r\n    ],\r\n    [\r\n        \"Kosovo\",\r\n        \"xk\",\r\n        \"383\"\r\n    ],\r\n    [\r\n        \"Kuwait (‫الكويت‬‎)\",\r\n        \"kw\",\r\n        \"965\"\r\n    ],\r\n    [\r\n        \"Kyrgyzstan (Кыргызстан)\",\r\n        \"kg\",\r\n        \"996\"\r\n    ],\r\n    [\r\n        \"Laos (ລາວ)\",\r\n        \"la\",\r\n        \"856\"\r\n    ],\r\n    [\r\n        \"Latvia (Latvija)\",\r\n        \"lv\",\r\n        \"371\"\r\n    ],\r\n    [\r\n        \"Lebanon (‫لبنان‬‎)\",\r\n        \"lb\",\r\n        \"961\"\r\n    ],\r\n    [\r\n        \"Lesotho\",\r\n        \"ls\",\r\n        \"266\"\r\n    ],\r\n    [\r\n        \"Liberia\",\r\n        \"lr\",\r\n        \"231\"\r\n    ],\r\n    [\r\n        \"Libya (‫ليبيا‬‎)\",\r\n        \"ly\",\r\n        \"218\"\r\n    ],\r\n    [\r\n        \"Liechtenstein\",\r\n        \"li\",\r\n        \"423\"\r\n    ],\r\n    [\r\n        \"Lithuania (Lietuva)\",\r\n        \"lt\",\r\n        \"370\"\r\n    ],\r\n    [\r\n        \"Luxembourg\",\r\n        \"lu\",\r\n        \"352\"\r\n    ],\r\n    [\r\n        \"Macau (澳門)\",\r\n        \"mo\",\r\n        \"853\"\r\n    ],\r\n    [\r\n        \"Macedonia (FYROM) (Македонија)\",\r\n        \"mk\",\r\n        \"389\"\r\n    ],\r\n    [\r\n        \"Madagascar (Madagasikara)\",\r\n        \"mg\",\r\n        \"261\"\r\n    ],\r\n    [\r\n        \"Malawi\",\r\n        \"mw\",\r\n        \"265\"\r\n    ],\r\n    [\r\n        \"Malaysia\",\r\n        \"my\",\r\n        \"60\"\r\n    ],\r\n    [\r\n        \"Maldives\",\r\n        \"mv\",\r\n        \"960\"\r\n    ],\r\n    [\r\n        \"Mali\",\r\n        \"ml\",\r\n        \"223\"\r\n    ],\r\n    [\r\n        \"Malta\",\r\n        \"mt\",\r\n        \"356\"\r\n    ],\r\n    [\r\n        \"Marshall Islands\",\r\n        \"mh\",\r\n        \"692\"\r\n    ],\r\n    [\r\n        \"Martinique\",\r\n        \"mq\",\r\n        \"596\"\r\n    ],\r\n    [\r\n        \"Mauritania (‫موريتانيا‬‎)\",\r\n        \"mr\",\r\n        \"222\"\r\n    ],\r\n    [\r\n        \"Mauritius (Moris)\",\r\n        \"mu\",\r\n        \"230\"\r\n    ],\r\n    [\r\n        \"Mayotte\",\r\n        \"yt\",\r\n        \"262\",\r\n        1,\r\n        [\"269\", \"639\"]\r\n    ],\r\n    [\r\n        \"Mexico (México)\",\r\n        \"mx\",\r\n        \"52\"\r\n    ],\r\n    [\r\n        \"Micronesia\",\r\n        \"fm\",\r\n        \"691\"\r\n    ],\r\n    [\r\n        \"Moldova (Republica Moldova)\",\r\n        \"md\",\r\n        \"373\"\r\n    ],\r\n    [\r\n        \"Monaco\",\r\n        \"mc\",\r\n        \"377\"\r\n    ],\r\n    [\r\n        \"Mongolia (Монгол)\",\r\n        \"mn\",\r\n        \"976\"\r\n    ],\r\n    [\r\n        \"Montenegro (Crna Gora)\",\r\n        \"me\",\r\n        \"382\"\r\n    ],\r\n    [\r\n        \"Montserrat\",\r\n        \"ms\",\r\n        \"1\",\r\n        16,\r\n        [\"664\"]\r\n    ],\r\n    [\r\n        \"Morocco (‫المغرب‬‎)\",\r\n        \"ma\",\r\n        \"212\",\r\n        0\r\n    ],\r\n    [\r\n        \"Mozambique (Moçambique)\",\r\n        \"mz\",\r\n        \"258\"\r\n    ],\r\n    [\r\n        \"Myanmar (Burma) (မြန်မာ)\",\r\n        \"mm\",\r\n        \"95\"\r\n    ],\r\n    [\r\n        \"Namibia (Namibië)\",\r\n        \"na\",\r\n        \"264\"\r\n    ],\r\n    [\r\n        \"Nauru\",\r\n        \"nr\",\r\n        \"674\"\r\n    ],\r\n    [\r\n        \"Nepal (नेपाल)\",\r\n        \"np\",\r\n        \"977\"\r\n    ],\r\n    [\r\n        \"Netherlands (Nederland)\",\r\n        \"nl\",\r\n        \"31\"\r\n    ],\r\n    [\r\n        \"New Caledonia (Nouvelle-Calédonie)\",\r\n        \"nc\",\r\n        \"687\"\r\n    ],\r\n    [\r\n        \"New Zealand\",\r\n        \"nz\",\r\n        \"64\"\r\n    ],\r\n    [\r\n        \"Nicaragua\",\r\n        \"ni\",\r\n        \"505\"\r\n    ],\r\n    [\r\n        \"Niger (Nijar)\",\r\n        \"ne\",\r\n        \"227\"\r\n    ],\r\n    [\r\n        \"Nigeria\",\r\n        \"ng\",\r\n        \"234\"\r\n    ],\r\n    [\r\n        \"Niue\",\r\n        \"nu\",\r\n        \"683\"\r\n    ],\r\n    [\r\n        \"Norfolk Island\",\r\n        \"nf\",\r\n        \"672\"\r\n    ],\r\n    [\r\n        \"North Korea (조선 민주주의 인민 공화국)\",\r\n        \"kp\",\r\n        \"850\"\r\n    ],\r\n    [\r\n        \"Northern Mariana Islands\",\r\n        \"mp\",\r\n        \"1\",\r\n        17,\r\n        [\"670\"]\r\n    ],\r\n    [\r\n        \"Norway (Norge)\",\r\n        \"no\",\r\n        \"47\",\r\n        0\r\n    ],\r\n    [\r\n        \"Oman (‫عُمان‬‎)\",\r\n        \"om\",\r\n        \"968\"\r\n    ],\r\n    [\r\n        \"Pakistan (‫پاکستان‬‎)\",\r\n        \"pk\",\r\n        \"92\"\r\n    ],\r\n    [\r\n        \"Palau\",\r\n        \"pw\",\r\n        \"680\"\r\n    ],\r\n    [\r\n        \"Palestine (‫فلسطين‬‎)\",\r\n        \"ps\",\r\n        \"970\"\r\n    ],\r\n    [\r\n        \"Panama (Panamá)\",\r\n        \"pa\",\r\n        \"507\"\r\n    ],\r\n    [\r\n        \"Papua New Guinea\",\r\n        \"pg\",\r\n        \"675\"\r\n    ],\r\n    [\r\n        \"Paraguay\",\r\n        \"py\",\r\n        \"595\"\r\n    ],\r\n    [\r\n        \"Peru (Perú)\",\r\n        \"pe\",\r\n        \"51\"\r\n    ],\r\n    [\r\n        \"Philippines\",\r\n        \"ph\",\r\n        \"63\"\r\n    ],\r\n    [\r\n        \"Poland (Polska)\",\r\n        \"pl\",\r\n        \"48\"\r\n    ],\r\n    [\r\n        \"Portugal\",\r\n        \"pt\",\r\n        \"351\"\r\n    ],\r\n    [\r\n        \"Puerto Rico\",\r\n        \"pr\",\r\n        \"1\",\r\n        3,\r\n        [\"787\", \"939\"]\r\n    ],\r\n    [\r\n        \"Qatar (‫قطر‬‎)\",\r\n        \"qa\",\r\n        \"974\"\r\n    ],\r\n    [\r\n        \"Réunion (La Réunion)\",\r\n        \"re\",\r\n        \"262\",\r\n        0\r\n    ],\r\n    [\r\n        \"Romania (România)\",\r\n        \"ro\",\r\n        \"40\"\r\n    ],\r\n    [\r\n        \"Russia (Россия)\",\r\n        \"ru\",\r\n        \"7\",\r\n        0\r\n    ],\r\n    [\r\n        \"Rwanda\",\r\n        \"rw\",\r\n        \"250\"\r\n    ],\r\n    [\r\n        \"Saint Barthélemy\",\r\n        \"bl\",\r\n        \"590\",\r\n        1\r\n    ],\r\n    [\r\n        \"Saint Helena\",\r\n        \"sh\",\r\n        \"290\"\r\n    ],\r\n    [\r\n        \"Saint Kitts and Nevis\",\r\n        \"kn\",\r\n        \"1\",\r\n        18,\r\n        [\"869\"]\r\n    ],\r\n    [\r\n        \"Saint Lucia\",\r\n        \"lc\",\r\n        \"1\",\r\n        19,\r\n        [\"758\"]\r\n    ],\r\n    [\r\n        \"Saint Martin (Saint-Martin (partie française))\",\r\n        \"mf\",\r\n        \"590\",\r\n        2\r\n    ],\r\n    [\r\n        \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\",\r\n        \"pm\",\r\n        \"508\"\r\n    ],\r\n    [\r\n        \"Saint Vincent and the Grenadines\",\r\n        \"vc\",\r\n        \"1\",\r\n        20,\r\n        [\"784\"]\r\n    ],\r\n    [\r\n        \"Samoa\",\r\n        \"ws\",\r\n        \"685\"\r\n    ],\r\n    [\r\n        \"San Marino\",\r\n        \"sm\",\r\n        \"378\"\r\n    ],\r\n    [\r\n        \"São Tomé and Príncipe (São Tomé e Príncipe)\",\r\n        \"st\",\r\n        \"239\"\r\n    ],\r\n    [\r\n        \"Saudi Arabia (‫المملكة العربية السعودية‬‎)\",\r\n        \"sa\",\r\n        \"966\"\r\n    ],\r\n    [\r\n        \"Senegal (Sénégal)\",\r\n        \"sn\",\r\n        \"221\"\r\n    ],\r\n    [\r\n        \"Serbia (Србија)\",\r\n        \"rs\",\r\n        \"381\"\r\n    ],\r\n    [\r\n        \"Seychelles\",\r\n        \"sc\",\r\n        \"248\"\r\n    ],\r\n    [\r\n        \"Sierra Leone\",\r\n        \"sl\",\r\n        \"232\"\r\n    ],\r\n    [\r\n        \"Singapore\",\r\n        \"sg\",\r\n        \"65\"\r\n    ],\r\n    [\r\n        \"Sint Maarten\",\r\n        \"sx\",\r\n        \"1\",\r\n        21,\r\n        [\"721\"]\r\n    ],\r\n    [\r\n        \"Slovakia (Slovensko)\",\r\n        \"sk\",\r\n        \"421\"\r\n    ],\r\n    [\r\n        \"Slovenia (Slovenija)\",\r\n        \"si\",\r\n        \"386\"\r\n    ],\r\n    [\r\n        \"Solomon Islands\",\r\n        \"sb\",\r\n        \"677\"\r\n    ],\r\n    [\r\n        \"Somalia (Soomaaliya)\",\r\n        \"so\",\r\n        \"252\"\r\n    ],\r\n    [\r\n        \"South Africa\",\r\n        \"za\",\r\n        \"27\"\r\n    ],\r\n    [\r\n        \"South Korea (대한민국)\",\r\n        \"kr\",\r\n        \"82\"\r\n    ],\r\n    [\r\n        \"South Sudan (‫جنوب السودان‬‎)\",\r\n        \"ss\",\r\n        \"211\"\r\n    ],\r\n    [\r\n        \"Spain (España)\",\r\n        \"es\",\r\n        \"34\"\r\n    ],\r\n    [\r\n        \"Sri Lanka (ශ්‍රී ලංකාව)\",\r\n        \"lk\",\r\n        \"94\"\r\n    ],\r\n    [\r\n        \"Sudan (‫السودان‬‎)\",\r\n        \"sd\",\r\n        \"249\"\r\n    ],\r\n    [\r\n        \"Suriname\",\r\n        \"sr\",\r\n        \"597\"\r\n    ],\r\n    [\r\n        \"Svalbard and Jan Mayen\",\r\n        \"sj\",\r\n        \"47\",\r\n        1,\r\n        [\"79\"]\r\n    ],\r\n    [\r\n        \"Swaziland\",\r\n        \"sz\",\r\n        \"268\"\r\n    ],\r\n    [\r\n        \"Sweden (Sverige)\",\r\n        \"se\",\r\n        \"46\"\r\n    ],\r\n    [\r\n        \"Switzerland (Schweiz)\",\r\n        \"ch\",\r\n        \"41\"\r\n    ],\r\n    [\r\n        \"Syria (‫سوريا‬‎)\",\r\n        \"sy\",\r\n        \"963\"\r\n    ],\r\n    [\r\n        \"Taiwan (台灣)\",\r\n        \"tw\",\r\n        \"886\"\r\n    ],\r\n    [\r\n        \"Tajikistan\",\r\n        \"tj\",\r\n        \"992\"\r\n    ],\r\n    [\r\n        \"Tanzania\",\r\n        \"tz\",\r\n        \"255\"\r\n    ],\r\n    [\r\n        \"Thailand (ไทย)\",\r\n        \"th\",\r\n        \"66\"\r\n    ],\r\n    [\r\n        \"Timor-Leste\",\r\n        \"tl\",\r\n        \"670\"\r\n    ],\r\n    [\r\n        \"Togo\",\r\n        \"tg\",\r\n        \"228\"\r\n    ],\r\n    [\r\n        \"Tokelau\",\r\n        \"tk\",\r\n        \"690\"\r\n    ],\r\n    [\r\n        \"Tonga\",\r\n        \"to\",\r\n        \"676\"\r\n    ],\r\n    [\r\n        \"Trinidad and Tobago\",\r\n        \"tt\",\r\n        \"1\",\r\n        22,\r\n        [\"868\"]\r\n    ],\r\n    [\r\n        \"Tunisia (‫تونس‬‎)\",\r\n        \"tn\",\r\n        \"216\"\r\n    ],\r\n    [\r\n        \"Turkey (Türkiye)\",\r\n        \"tr\",\r\n        \"90\"\r\n    ],\r\n    [\r\n        \"Turkmenistan\",\r\n        \"tm\",\r\n        \"993\"\r\n    ],\r\n    [\r\n        \"Turks and Caicos Islands\",\r\n        \"tc\",\r\n        \"1\",\r\n        23,\r\n        [\"649\"]\r\n    ],\r\n    [\r\n        \"Tuvalu\",\r\n        \"tv\",\r\n        \"688\"\r\n    ],\r\n    [\r\n        \"U.S. Virgin Islands\",\r\n        \"vi\",\r\n        \"1\",\r\n        24,\r\n        [\"340\"]\r\n    ],\r\n    [\r\n        \"Uganda\",\r\n        \"ug\",\r\n        \"256\"\r\n    ],\r\n    [\r\n        \"Ukraine (Україна)\",\r\n        \"ua\",\r\n        \"380\"\r\n    ],\r\n    [\r\n        \"United Arab Emirates (‫الإمارات العربية المتحدة‬‎)\",\r\n        \"ae\",\r\n        \"971\"\r\n    ],\r\n    [\r\n        \"United Kingdom\",\r\n        \"gb\",\r\n        \"44\",\r\n        0\r\n    ],\r\n    [\r\n        \"United States\",\r\n        \"us\",\r\n        \"1\",\r\n        0\r\n    ],\r\n    [\r\n        \"Uruguay\",\r\n        \"uy\",\r\n        \"598\"\r\n    ],\r\n    [\r\n        \"Uzbekistan (Oʻzbekiston)\",\r\n        \"uz\",\r\n        \"998\"\r\n    ],\r\n    [\r\n        \"Vanuatu\",\r\n        \"vu\",\r\n        \"678\"\r\n    ],\r\n    [\r\n        \"Vatican City (Città del Vaticano)\",\r\n        \"va\",\r\n        \"39\",\r\n        1,\r\n        [\"06698\"]\r\n    ],\r\n    [\r\n        \"Venezuela\",\r\n        \"ve\",\r\n        \"58\"\r\n    ],\r\n    [\r\n        \"Vietnam (Việt Nam)\",\r\n        \"vn\",\r\n        \"84\"\r\n    ],\r\n    [\r\n        \"Wallis and Futuna (Wallis-et-Futuna)\",\r\n        \"wf\",\r\n        \"681\"\r\n    ],\r\n    [\r\n        \"Western Sahara (‫الصحراء الغربية‬‎)\",\r\n        \"eh\",\r\n        \"212\",\r\n        1,\r\n        [\"5288\", \"5289\"]\r\n    ],\r\n    [\r\n        \"Yemen (‫اليمن‬‎)\",\r\n        \"ye\",\r\n        \"967\"\r\n    ],\r\n    [\r\n        \"Zambia\",\r\n        \"zm\",\r\n        \"260\"\r\n    ],\r\n    [\r\n        \"Zimbabwe\",\r\n        \"zw\",\r\n        \"263\"\r\n    ],\r\n    [\r\n        \"Åland Islands\",\r\n        \"ax\",\r\n        \"358\",\r\n        1,\r\n        [\"18\"]\r\n    ]\r\n];\r\n\r\n// loop over all of the countries above, restructuring the data to be objects with named keys\r\n\r\nexport function getCountryISO2() {\r\n    let countries: { name: string; iso2: string; dialCode: string; priority: number; areaCodes: string[] | null, mask: string | string[] }[] = [];\r\n    for (var i = 0; i < allCountries.length; i++) {\r\n        var c = allCountries[i];\r\n        // Garante que o array tenha pelo menos 3 elementos\r\n        const safeCountry: [string, string, string, number?, string[]?] = [\r\n            c[0] as string,\r\n            c[1] as string,\r\n            c[2] as string,\r\n            c[3] as number || 0,\r\n            c[4] as string[] || null\r\n        ];\r\n        countries[i] = {\r\n            name: c[0] as string,\r\n            iso2: c[1] as string,\r\n            dialCode: c[2] as string,\r\n            priority: c[3] as number || 0,\r\n            areaCodes: c[4] as string[] || null,\r\n            mask: applyPhoneMask(safeCountry)\r\n        };\r\n    }\r\n    return countries;\r\n}\r\n\r\nfunction applyPhoneMask(country: [string, string, string, number?, string[]?]) {\r\n    const countryCode = country[2];\r\n    const areaCodes = country[4] || [countryCode];\r\n    const masks = areaCodes.map((areaCode: string) => {\r\n\r\n        if (countryCode === \"1\") {\r\n            // North American Numbering Plan (NANP)\r\n            return `000 000 0000`;\r\n        } else if (countryCode === \"44\" && areaCode.length === 4) {\r\n            // UK\r\n            return `000 0000 0000`;\r\n        } else if (countryCode === \"55\") {\r\n            // Brazil\r\n            return `00 0000 0000`;\r\n        } else {\r\n            // General international format\r\n            return `000 0000 0000`;\r\n        }\r\n    });\r\n    return masks;\r\n}\r\n\r\n\r\n","/**\n * matcha-phone-countries — camada GENÉRICA de países (cobertura internacional).\n *\n * Colhe nome/iso2/DDI de `all-countries.ts` (~240 países) e monta specs no formato\n * `MatchaPhoneSpec`, com máscara/placeholder/faixa de dígitos DERIVADOS (não vindos\n * do campo `mask` de all-countries.ts, que é uma máscara única e imprecisa pra quase\n * todos). Concatena com os 11 países CURADOS (máscara+validator precisos) e expõe\n * `MatchaPhoneAllCountries` — o default do picker do `matcha-phone`.\n *\n * Precisão é honesta e explícita via `tier`: 'curated' (11, verificados à mão) vs\n * 'generic' (~230, validação só por faixa de tamanho). Ver `matcha-phone-masks.ts`.\n */\n\nimport { getCountryISO2 } from './all-countries';\nimport {\n    MatchaPhoneList,\n    MatchaPhoneMasks,\n    MatchaPhoneCountry,\n    MatchaPhoneSpec,\n} from '../matcha-validators/matcha-phone-masks';\n\n/** iso2 dos países já curados — pra não duplicar na camada genérica.\n *  Atenção: o id curado `'uk'` tem iso2 `'gb'`, então dedupe é por ISO2, não por id. */\nconst CURATED_ISO2 = new Set(MatchaPhoneList.map(c => c.iso2));\n\n/** Limpa o sufixo em script nativo entre parênteses: \"Japan (日本)\" → \"Japan\". */\nfunction cleanCountryName(raw: string): string {\n    const idx = raw.indexOf(' (');\n    return idx > 0 ? raw.slice(0, idx).trim() : raw.trim();\n}\n\n/**\n * Constrói uma máscara genérica de `digits` posições, agrupadas de 3 em 3 separadas\n * por espaço (o último grupo absorve o resto). Ex: 10 → \"000 000 0000\".\n * O mask walker do componente consome só até quantos dígitos foram digitados e apara\n * separadores sobrando, então uma máscara generosa nunca força o usuário a preencher.\n */\nfunction buildGenericMask(digits: number): string {\n    if (digits <= 0) return '';\n    const groups: string[] = [];\n    let remaining = digits;\n    while (remaining > 4) {\n        groups.push('000');\n        remaining -= 3;\n    }\n    groups.push('0'.repeat(remaining));\n    return groups.join(' ');\n}\n\n/** Placeholder derivado da máscara: cada '0' vira '9'. \"000 000\" → \"999 999\". */\nfunction maskToPlaceholder(mask: string): string {\n    return mask.replace(/0/g, '9');\n}\n\n/** Constrói a camada genérica (só países fora do conjunto curado). */\nfunction buildGenericTier(): MatchaPhoneCountry[] {\n    const raw = getCountryISO2();\n    const seen = new Set<string>();\n    const out: MatchaPhoneCountry[] = [];\n\n    for (const c of raw) {\n        const iso2 = c.iso2;\n        if (CURATED_ISO2.has(iso2)) continue; // já coberto pela camada curada\n        if (seen.has(iso2)) continue;         // all-countries pode repetir iso2 por área\n        seen.add(iso2);\n\n        // Faixa de dígitos nacionais: mínimo conservador fixo (4), máximo = teto E.164\n        // (15 dígitos totais) menos o tamanho do DDI. Evita rejeição falsa por ser\n        // permissivo demais em vez de apertado e errado.\n        const maxNsn = Math.max(4, 15 - c.dialCode.length);\n        const mask = buildGenericMask(maxNsn);\n\n        out.push({\n            id: iso2,\n            iso2,\n            name: cleanCountryName(c.name),\n            ddi: c.dialCode,\n            mask,\n            placeholder: maskToPlaceholder(mask),\n            validator: 'phoneGeneric',\n            tier: 'generic',\n            priority: c.priority ?? 0,\n            nsnRange: [4, maxNsn],\n        } as MatchaPhoneCountry);\n    }\n\n    return out;\n}\n\n/** Camada genérica isolada (~230 países), ordenada por nome. */\nexport const MatchaPhoneGenericList: MatchaPhoneCountry[] = buildGenericTier()\n    .sort((a, b) => a.name.localeCompare(b.name));\n\n/**\n * Lista COMPLETA pro picker: 11 curados + ~230 genéricos, ordenada por nome.\n * Este é o default de `matcha-phone` / `matcha-field type=\"phone\"`.\n */\nexport const MatchaPhoneAllCountries: MatchaPhoneCountry[] = [\n    ...MatchaPhoneList,\n    ...MatchaPhoneGenericList,\n].sort((a, b) => a.name.localeCompare(b.name));\n\n/** Mapa id→spec da lista completa (conveniência pra lookup O(1)). */\nexport const MatchaPhoneMasksFull: Record<string, MatchaPhoneSpec> =\n    MatchaPhoneAllCountries.reduce((acc, c) => {\n        const { id, ...spec } = c;\n        acc[id] = spec;\n        return acc;\n    }, { ...MatchaPhoneMasks } as Record<string, MatchaPhoneSpec>);\n","import {\r\n  Component, Input, Output, EventEmitter, forwardRef, ViewEncapsulation, ViewChild, ViewChildren, QueryList, ElementRef,\r\n  ChangeDetectionStrategy, ChangeDetectorRef, HostBinding, OnInit, OnChanges, SimpleChanges\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR,\r\n  ValidationErrors, Validator\r\n} from '@angular/forms';\r\nimport {\r\n  MatchaPhoneId, MatchaPhoneMasks, MatchaPhoneSpec, MatchaPhoneCountry,\r\n  countMaskDigits, resolveCountryByDialPrefix, resolvePhoneSpec, validatePhoneDigits,\r\n} from '../matcha-validators/matcha-phone-masks';\r\nimport { MatchaPhoneAllCountries } from './matcha-phone-countries';\r\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\r\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-phone — Campo de telefone com seletor de país inline.\r\n *\r\n * Estrutura (Figma matcha/field/phone):\r\n *   [flag] [+DDI] [input mascarado]\r\n *\r\n * Click no flag/DDI → abre matcha-panel com lista de países (matcha-option).\r\n * Mudar o país troca a máscara e o validator automaticamente.\r\n *\r\n * Implementa ControlValueAccessor + Validator — funciona com Reactive Forms\r\n * e Template-driven out of the box.\r\n *\r\n *   <matcha-form-field>\r\n *     <matcha-label>Telefone</matcha-label>\r\n *     <matcha-phone formControlName=\"phone\"></matcha-phone>\r\n *   </matcha-form-field>\r\n *\r\n * O valor emitido é o número completo com DDI (`+5511999999999`).\r\n *\r\n * O panel canônico fornece: open/close, click-outside, ESC, focus trap,\r\n * keyboard nav (ArrowUp/Down/Home/End/Enter), aria-controls/expanded.\r\n * Apenas type-ahead (digitar letras pra filtrar) é implementado localmente.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-phone',\r\n  templateUrl: './phone.component.html',\r\n  styleUrls: ['./phone.component.scss'],\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaPanelComponent, MatchaOptionComponent],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MatchaPhoneComponent), multi: true },\r\n    { provide: NG_VALIDATORS,     useExisting: forwardRef(() => MatchaPhoneComponent), multi: true }\r\n  ]\r\n})\r\nexport class MatchaPhoneComponent implements ControlValueAccessor, Validator, OnInit, OnChanges {\r\n  @Input() country: MatchaPhoneId = 'br';\r\n  @Input() disabled: boolean = false;\r\n  /** Lista de países disponíveis no painel (default = cobertura internacional completa,\r\n   *  ~240 países). Passe `MatchaPhoneList` pra restringir aos 11 curados. */\r\n  @Input() countries: MatchaPhoneCountry[] = MatchaPhoneAllCountries;\r\n  /** Campo de busca no painel: `'auto'` liga acima de 8 países (default), ou force com boolean. */\r\n  @Input() searchable: boolean | 'auto' = 'auto';\r\n\r\n  /** @deprecated Use formControlName/ngModel com CVA. Mantido pra compatibilidade. */\r\n  @Input() value?: string;\r\n  /** @deprecated Use (ngModelChange)/valueChanges. Mantido pra compatibilidade. */\r\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n  @Output() onChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n  @ViewChild('textInput') textInput!: ElementRef<HTMLInputElement>;\r\n  @ViewChild('wrapper') wrapper!: ElementRef<HTMLElement>;\r\n  @ViewChild('panel') panel!: MatchaPanelComponent;\r\n  @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\r\n  @ViewChildren(MatchaOptionComponent) optionRefs!: QueryList<MatchaOptionComponent>;\r\n\r\n  @HostBinding('attr.disabled') get disabledAttr() {\r\n    return (this.disabled || this.isDisabled) ? 'true' : null;\r\n  }\r\n\r\n  spec: MatchaPhoneSpec = MatchaPhoneMasks['br'];\r\n  displayValue: string = '';        // valor formatado exibido (com máscara)\r\n  rawDigits: string = '';           // só dígitos do número (sem DDI)\r\n  isDisabled: boolean = false;\r\n  searchQuery: string = '';         // filtro do painel de países\r\n\r\n  /** Máscara ATIVA — resolve `maskVariants` (fixo/celular) pela quantidade de dígitos\r\n   *  já digitados: menor variante que ainda comporta `rawDigits`, promovendo quando\r\n   *  estoura. Sem variantes, usa `spec.mask` reto. */\r\n  get activeMask(): string {\r\n    const variants = this.spec.maskVariants;\r\n    if (!variants || variants.length === 0) return this.spec.mask;\r\n    const len = this.rawDigits.length;\r\n    for (const v of variants) {          // variantes em ordem crescente de dígitos\r\n      if (countMaskDigits(v) >= len) return v;\r\n    }\r\n    return variants[variants.length - 1]; // estourou a maior → usa a maior\r\n  }\r\n\r\n  /** Teto de dígitos do país — a MAIOR variante de máscara (ou a máscara única).\r\n   *\r\n   *  É este o limite da entrada, NÃO o teto E.164 global de 15: aceitar mais dígitos\r\n   *  do que a máscara consegue exibir deixa o control com dígitos invisíveis, que\r\n   *  reprovam no validator do país e travam o form sem nada mudar na tela.\r\n   *\r\n   *  Seguro em todos os países: nos curados a máscara sempre comporta o máximo que o\r\n   *  validator aceita; nos genéricos ela é derivada de `15 - ddi.length`, que é o\r\n   *  próprio teto do `nsnRange`. */\r\n  get maxDigits(): number {\r\n    const variants = this.spec.maskVariants;\r\n    const fromMask = variants?.length\r\n      ? Math.max(...variants.map(countMaskDigits))\r\n      : countMaskDigits(this.spec.mask);\r\n    // Spec sem máscara zeraria a entrada — cai no teto E.164.\r\n    return fromMask || 15;\r\n  }\r\n\r\n  /** Países filtrados pela busca (nome, iso2 ou DDI). Vazio = lista completa. */\r\n  get filteredCountries(): MatchaPhoneCountry[] {\r\n    const q = this.searchQuery.trim().toLowerCase();\r\n    if (!q) return this.countries;\r\n    return this.countries.filter(c =>\r\n      c.name.toLowerCase().includes(q) || c.iso2.includes(q) || c.ddi.includes(q)\r\n    );\r\n  }\r\n\r\n  /** Liga a busca conforme `searchable` (mesmo limiar do matcha-field: >8 opções). */\r\n  get effectiveSearchable(): boolean {\r\n    if (this.searchable === true) return true;\r\n    if (this.searchable === false) return false;\r\n    return this.countries.length > 8;\r\n  }\r\n\r\n  /** True quando user preencheu a quantidade mínima de dígitos esperada\r\n   *  mas o validator do país rejeita o número. Usado em `aria-invalid`. */\r\n  get isPhoneInvalid(): boolean {\r\n    if (!this.rawDigits) return false;\r\n    // Threshold = menor formato aceito (menor variante, ou a máscara única).\r\n    const variants = this.spec.maskVariants;\r\n    const needed = variants && variants.length\r\n      ? Math.min(...variants.map(countMaskDigits))\r\n      : countMaskDigits(this.spec.mask);\r\n    if (this.rawDigits.length < needed) return false;\r\n    // rawDigits NÃO inclui o DDI — os validators por país esperam só DDD+local.\r\n    return validatePhoneDigits(this.spec, this.rawDigits) !== null;\r\n  }\r\n\r\n  private cvaChange: (v: any) => void = () => {};\r\n  private cvaTouched: () => void = () => {};\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n  ngOnInit(): void {\r\n    this.spec = resolvePhoneSpec(this.country, this.countries) ?? MatchaPhoneMasks['br'];\r\n    if (this.value) this.writeValue(this.value);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['value'] && !changes['value'].firstChange) {\r\n      this.writeValue(changes['value'].currentValue);\r\n    }\r\n    if (changes['country'] && !changes['country'].firstChange) {\r\n      this.spec = resolvePhoneSpec(this.country, this.countries) ?? MatchaPhoneMasks['br'];\r\n      this.displayValue = this.applyMask(this.rawDigits);\r\n      this.cdr.markForCheck();\r\n    }\r\n  }\r\n\r\n  // ── CVA ─────────────────────────────────────────────────────────────────\r\n  writeValue(value: any): void {\r\n    if (!value) {\r\n      this.rawDigits = '';\r\n      this.displayValue = '';\r\n      if (this.textInput?.nativeElement) this.textInput.nativeElement.value = '';\r\n      this.cdr.markForCheck();\r\n      return;\r\n    }\r\n    const str = value.toString();\r\n    // Detecta DDI no começo (`+5511...`) pra setar country correto\r\n    if (str.startsWith('+')) {\r\n      const withoutPlus = str.slice(1);\r\n      const matched = resolveCountryByDialPrefix(withoutPlus, this.countries);\r\n      if (matched) {\r\n        this.country = matched.id;\r\n        this.spec = matched;\r\n        this.rawDigits = withoutPlus.slice(matched.ddi.length).replace(/\\D/g, '');\r\n      } else {\r\n        this.rawDigits = withoutPlus.replace(/\\D/g, '');\r\n      }\r\n    } else {\r\n      this.rawDigits = str.replace(/\\D/g, '');\r\n    }\r\n    this.displayValue = this.applyMask(this.rawDigits);\r\n    if (this.textInput?.nativeElement) {\r\n      setTimeout(() => {\r\n        if (this.textInput?.nativeElement) this.textInput.nativeElement.value = this.displayValue;\r\n      }, 0);\r\n    }\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  registerOnChange(fn: any): void { this.cvaChange = fn; }\r\n  registerOnTouched(fn: any): void { this.cvaTouched = fn; }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n    this.disabled = isDisabled;\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // ── Handlers ────────────────────────────────────────────────────────────\r\n  onInputChange(event: Event): void {\r\n    const input = event.target as HTMLInputElement;\r\n    const raw = input.value ?? '';\r\n\r\n    // Paste E.164 (ex.: autofill Chrome \"+5512981869797\") — detecta DDI e troca país\r\n    // onKeyDown bloqueia \"+\" na digitação, então \"+\" só chega aqui via paste/autofill\r\n    if (raw.startsWith('+')) {\r\n      const withoutPlus = raw.slice(1);\r\n      const matched = resolveCountryByDialPrefix(withoutPlus, this.countries);\r\n      if (matched) {\r\n        this.country = matched.id;\r\n        this.spec = matched;\r\n        this.rawDigits = withoutPlus.slice(matched.ddi.length).replace(/\\D/g, '').slice(0, this.maxDigits);\r\n      } else {\r\n        this.rawDigits = withoutPlus.replace(/\\D/g, '').slice(0, this.maxDigits);\r\n      }\r\n    } else {\r\n      this.rawDigits = raw.replace(/\\D/g, '').slice(0, this.maxDigits);\r\n    }\r\n\r\n    this.displayValue = this.applyMask(this.rawDigits);\r\n    const needsReflow = input.value !== this.displayValue;\r\n    if (needsReflow) input.value = this.displayValue;\r\n    // Paste mantém a seleção do browser sobre o texto reformatado — desseleciona\r\n    // movendo caret pro fim (UX de digitação natural).\r\n    if (raw.startsWith('+') || needsReflow) {\r\n      const len = this.displayValue.length;\r\n      try { input.setSelectionRange(len, len); } catch { /* noop */ }\r\n    }\r\n    this.emit();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    const allowed = ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'];\r\n    if (allowed.includes(event.key)) return;\r\n    if (event.ctrlKey || event.metaKey) return;\r\n    if (!/\\d/.test(event.key)) event.preventDefault();\r\n  }\r\n\r\n  onBlur(): void {\r\n    this.cvaTouched();\r\n  }\r\n\r\n  // ── Country selector ────────────────────────────────────────────────────\r\n  selectCountry(c: MatchaPhoneSpec & { id: MatchaPhoneId }): void {\r\n    this.country = c.id;\r\n    this.spec = c;\r\n    // A máscara do novo país pode ser MENOR que a do anterior (br 11 → cl 9): sem\r\n    // re-clampar, os dígitos que sobram somem da tela mas continuam no valor emitido.\r\n    this.rawDigits = this.rawDigits.slice(0, this.maxDigits);\r\n    // Re-aplica máscara pros dígitos já digitados (se algum)\r\n    this.displayValue = this.applyMask(this.rawDigits);\r\n    this.panel?.closePanel();\r\n    this.emit();\r\n    // Devolve foco pro input\r\n    setTimeout(() => this.textInput?.nativeElement?.focus(), 0);\r\n  }\r\n\r\n  getFlagUrl(iso2: string, size: number = 20): string {\r\n    return `https://flagcdn.com/${size}x${Math.round(size * 0.75)}/${iso2}.png`;\r\n  }\r\n\r\n  trackByCountry(_: number, item: MatchaPhoneSpec): string { return item.iso2; }\r\n\r\n  // ── Validator ───────────────────────────────────────────────────────────\r\n  validate(_control: AbstractControl): ValidationErrors | null {\r\n    if (!this.rawDigits) return null;\r\n    // rawDigits = DDD+local, sem DDI (validators por país esperam esse formato).\r\n    return validatePhoneDigits(this.spec, this.rawDigits);\r\n  }\r\n\r\n  // ── Type-ahead (não-coberto pelo matcha-panel) ──────────────────────────\r\n  // matcha-panel já gerencia ArrowUp/Down/Home/End/Escape/Enter via keyboard nav.\r\n  // Aqui só interceptamos teclas alfanuméricas pra navegar pelo nome do país.\r\n  private typeaheadBuffer = '';\r\n  private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n  onPanelKeydown(event: KeyboardEvent): void {\r\n    // Com busca ligada, o campo de busca é quem filtra — não intercepta type-ahead\r\n    // (evita as duas mecânicas brigarem quando o foco está no input de busca).\r\n    const target = event.target as HTMLElement | null;\r\n    if (this.effectiveSearchable || target?.classList.contains('matcha-phone-search-input')) return;\r\n    // Apenas teclas únicas alfabéticas — panel já trata as demais\r\n    if (event.key.length !== 1 || event.ctrlKey || event.metaKey || event.altKey) return;\r\n    if (event.key === ' ' || /\\d/.test(event.key)) return;\r\n    this.handleTypeahead(event.key);\r\n  }\r\n\r\n  private handleTypeahead(char: string): void {\r\n    if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\r\n    this.typeaheadBuffer += char.toLowerCase();\r\n    this.typeaheadTimer = setTimeout(() => { this.typeaheadBuffer = ''; }, 800);\r\n\r\n    // Alinha índice com o que está REALMENTE renderizado (filteredCountries).\r\n    const matchIdx = this.filteredCountries.findIndex(c =>\r\n      c.name.toLowerCase().startsWith(this.typeaheadBuffer)\r\n    );\r\n    if (matchIdx < 0) return;\r\n\r\n    const option = this.optionRefs?.toArray()[matchIdx];\r\n    option?.nativeElement?.focus();\r\n  }\r\n\r\n  // ── Busca no painel ──────────────────────────────────────────────────────\r\n  onSearchInput(event: Event): void {\r\n    this.searchQuery = (event.target as HTMLInputElement).value;\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  clearSearch(): void {\r\n    this.searchQuery = '';\r\n    this.searchInput?.nativeElement?.focus();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  /** Reseta a busca sempre que o painel abre — reabrir começa da lista completa. */\r\n  onPanelOpened(): void {\r\n    this.searchQuery = '';\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // ── Internal ────────────────────────────────────────────────────────────\r\n  private emit(): void {\r\n    if (!this.rawDigits) {\r\n      this.cvaChange(null);\r\n      this.onChange.emit('');\r\n      return;\r\n    }\r\n    const full = `+${this.spec.ddi}${this.rawDigits}`;\r\n    this.cvaChange(full);\r\n    this.onChange.emit(full);\r\n  }\r\n\r\n  /** Aplica a máscara ATIVA do país atual aos dígitos (respeita maskVariants). */\r\n  private applyMask(digits: string): string {\r\n    if (!digits) return '';\r\n    const mask = this.activeMask;\r\n    let out = '';\r\n    let di = 0;\r\n    for (let i = 0; i < mask.length && di < digits.length; i++) {\r\n      if (mask[i] === '0') { out += digits[di]; di++; }\r\n      else out += mask[i];\r\n    }\r\n    // Remove trailing separators não preenchidos\r\n    return out.replace(/[^0-9)]+$/, '').replace(/\\s+$/, '');\r\n  }\r\n}\r\n","<div class=\"matcha-phone\" #wrapper>\r\n  <!-- Flag + DDI (click abre matcha-panel) -->\r\n  <button\r\n    #trigger\r\n    type=\"button\"\r\n    class=\"matcha-phone-country\"\r\n    [disabled]=\"disabled || isDisabled\"\r\n    [attr.aria-expanded]=\"panel?.open ?? false\"\r\n    aria-haspopup=\"listbox\"\r\n    [attr.aria-controls]=\"panel?.panelId\"\r\n    [attr.aria-label]=\"'País: ' + spec.name + ', +' + spec.ddi\"\r\n    (click)=\"panel.togglePanel()\"\r\n    tabindex=\"0\"\r\n  >\r\n    <img\r\n      class=\"matcha-phone-flag\"\r\n      [src]=\"getFlagUrl(spec.iso2, 20)\"\r\n      [alt]=\"spec.name\"\r\n      loading=\"lazy\"\r\n      width=\"20\"\r\n      height=\"15\"\r\n    />\r\n    <span class=\"matcha-phone-drop i-matcha-action_arrow_down\" aria-hidden=\"true\"></span>\r\n    <span class=\"matcha-phone-ddi\">+{{ spec.ddi }}</span>\r\n  </button>\r\n\r\n  <!-- Input mascarado -->\r\n  <input\r\n    #textInput\r\n    type=\"tel\"\r\n    class=\"matcha-phone-input\"\r\n    inputmode=\"numeric\"\r\n    autocomplete=\"tel\"\r\n    [value]=\"displayValue\"\r\n    [placeholder]=\"spec.placeholder\"\r\n    [disabled]=\"disabled || isDisabled\"\r\n    [attr.aria-invalid]=\"isPhoneInvalid ? 'true' : null\"\r\n    (input)=\"onInputChange($event)\"\r\n    (keydown)=\"onKeyDown($event)\"\r\n    (blur)=\"onBlur()\"\r\n  />\r\n\r\n  <!-- Painel de países: matcha-panel + matcha-option -->\r\n  <matcha-panel\r\n    #panel\r\n    [triggerElement]=\"trigger\"\r\n    role=\"listbox\"\r\n    [maxHeight]=\"320\"\r\n    [minWidth]=\"280\"\r\n    widthMode=\"max-content\"\r\n    [portalToBody]=\"true\"\r\n    (opened)=\"onPanelOpened()\"\r\n    (keydown)=\"onPanelKeydown($event)\"\r\n  >\r\n    <!-- Busca (primeiro filho = recebe autofocus do matcha-panel automaticamente) -->\r\n    <div class=\"matcha-phone-search\" *ngIf=\"effectiveSearchable\">\r\n      <input\r\n        #searchInput\r\n        type=\"text\"\r\n        class=\"matcha-phone-search-input\"\r\n        placeholder=\"Buscar país...\"\r\n        aria-label=\"Buscar país\"\r\n        autocomplete=\"off\"\r\n        [value]=\"searchQuery\"\r\n        (input)=\"onSearchInput($event)\"\r\n        (click)=\"$event.stopPropagation()\"\r\n      />\r\n      <button\r\n        *ngIf=\"searchQuery\"\r\n        type=\"button\"\r\n        class=\"matcha-phone-search-clear i-matcha-action_close\"\r\n        aria-label=\"Limpar busca\"\r\n        (click)=\"clearSearch(); $event.stopPropagation()\"\r\n      ></button>\r\n    </div>\r\n\r\n    <matcha-option\r\n      *ngFor=\"let c of filteredCountries; let i = index; trackBy: trackByCountry\"\r\n      [value]=\"c.id\"\r\n      [class.aria-selected-demo]=\"c.id === country\"\r\n      [attr.aria-selected]=\"c.id === country\"\r\n      (optionClick)=\"selectCountry(c)\"\r\n    >\r\n      <img\r\n        class=\"matcha-phone-flag\"\r\n        [src]=\"getFlagUrl(c.iso2, 20)\"\r\n        [alt]=\"c.name\"\r\n        loading=\"lazy\"\r\n        width=\"20\"\r\n        height=\"15\"\r\n      />\r\n      <span class=\"matcha-phone-country-name\">{{ c.name }}</span>\r\n      <span class=\"matcha-phone-country-ddi\">+{{ c.ddi }}</span>\r\n    </matcha-option>\r\n\r\n    <matcha-option *ngIf=\"filteredCountries.length === 0\" disabled class=\"matcha-phone-empty\">\r\n      Nenhum país encontrado\r\n    </matcha-option>\r\n  </matcha-panel>\r\n</div>\r\n","// =============================================================================\r\n// figma-brands.ts — AUTO-GENERATED. DO NOT EDIT BY HAND.\r\n// =============================================================================\r\n// Source: Figma DSV3 file (i04CyWczuVctwRjE5VbJh7), página `Marcas` (5594:11368)\r\n// Generated at: 2026-04-28T20:41:40.086Z\r\n// Total: 4 sets · 24 assets · 43 SVG variants\r\n//\r\n// To regenerate: FIGMA_TOKEN=fig_xxx node scripts/matcha-brand/extract-figma-brands.js\r\n// =============================================================================\r\n\r\nexport type FigmaBrandSet = 'social' | 'bank' | 'app-store' | 'inchurch';\r\nexport type FigmaBrandColor = 'brand' | 'primary' | 'default';\r\n\r\nexport interface FigmaBrandColors {\r\n    brand?: string;\r\n    primary?: string;\r\n    default?: string;\r\n}\r\n\r\nexport interface FigmaBrandAsset {\r\n    viewBox: string;\r\n    colors: FigmaBrandColors;\r\n}\r\n\r\nexport type FigmaBrandRegistry = Record<FigmaBrandSet, Record<string, FigmaBrandAsset>>;\r\n\r\nexport const FIGMA_BRANDS: FigmaBrandRegistry = {\r\n    social: {\r\n        copy: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                default: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM4.5 12L9 16.5L10.0498 15.4502L6.59961 12L10.0498 8.5498L9 7.5L4.5 12ZM13.9502 8.5498L17.4004 12L13.9502 15.4502L15 16.5L19.5 12L15 7.5L13.9502 8.5498Z\" fill=\"#6E747A\"/>`,\r\n            },\r\n        },\r\n        email: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM6 6C5.175 6 4.50781 6.675 4.50781 7.5L4.5 16.5C4.5 17.325 5.175 18 6 18H18C18.825 18 19.5 17.325 19.5 16.5V7.5C19.5 6.675 18.825 6 18 6H6ZM18 9L12 12.75L6 9V7.5L12 11.25L18 7.5V9Z\" fill=\"#CE4437\"/>`,\r\n                primary: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM6 6C5.175 6 4.50781 6.675 4.50781 7.5L4.5 16.5C4.5 17.325 5.175 18 6 18H18C18.825 18 19.5 17.325 19.5 16.5V7.5C19.5 6.675 18.825 6 18 6H6ZM18 9L12 12.75L6 9V7.5L12 11.25L18 7.5V9Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        facebook: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.38323 0 0 5.38323 0 12C0 18.6163 5.38323 24 12 24C18.6163 24 24 18.6163 24 12C24 5.38323 18.6173 0 12 0ZM14.9837 12.4224H13.0314C13.0314 15.5416 13.0314 19.381 13.0314 19.381H10.1385C10.1385 19.381 10.1385 15.5788 10.1385 12.4224H8.76329V9.96309H10.1385V8.37234C10.1385 7.23305 10.6798 5.45282 13.058 5.45282L15.2017 5.46103V7.84837C15.2017 7.84837 13.899 7.84837 13.6458 7.84837C13.3925 7.84837 13.0324 7.97501 13.0324 8.51831V9.96357H15.2365L14.9837 12.4224Z\" fill=\"#1877F2\"/>`,\r\n                primary: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.38323 0 0 5.38323 0 12C0 18.6163 5.38323 24 12 24C18.6163 24 24 18.6163 24 12C24 5.38323 18.6173 0 12 0ZM14.9837 12.4224H13.0314C13.0314 15.5416 13.0314 19.381 13.0314 19.381H10.1385C10.1385 19.381 10.1385 15.5788 10.1385 12.4224H8.76329V9.96309H10.1385V8.37234C10.1385 7.23305 10.6798 5.45282 13.058 5.45282L15.2017 5.46103V7.84837C15.2017 7.84837 13.899 7.84837 13.6458 7.84837C13.3925 7.84837 13.0324 7.97501 13.0324 8.51831V9.96357H15.2365L14.9837 12.4224Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        flickr: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<g clip-path=\"url(#clip0_3861_14040)\"><rect x=\"3\" y=\"7\" width=\"9\" height=\"9\" fill=\"#1C66D8\"/><rect x=\"12\" y=\"7\" width=\"9\" height=\"9\" fill=\"#FB0D84\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 0V24H24V0H0ZM7.41621 15.6923C5.35917 15.6923 3.69231 14.0391 3.69231 12.0009C3.69231 9.9609 5.35917 8.30764 7.41621 8.30764C9.47235 8.30764 11.1392 9.9609 11.1392 12.0009C11.1392 14.0391 9.4724 15.6923 7.41621 15.6923ZM16.5838 15.6923C14.5276 15.6923 12.8608 14.0391 12.8608 12.0009C12.8608 9.9609 14.5276 8.30764 16.5838 8.30764C18.6409 8.30764 20.3077 9.9609 20.3077 12.0009C20.3077 14.0391 18.6408 15.6923 16.5838 15.6923Z\" fill=\"white\"/></g><defs><clipPath id=\"clip0_3861_14040\"><rect width=\"24\" height=\"24\" rx=\"12\" fill=\"white\"/></clipPath></defs>`,\r\n                primary: `<g clip-path=\"url(#clip0_3861_14054)\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 0V24H24V0H0ZM7.41621 15.6923C5.35917 15.6923 3.69231 14.0391 3.69231 12.0009C3.69231 9.9609 5.35917 8.30764 7.41621 8.30764C9.47235 8.30764 11.1392 9.9609 11.1392 12.0009C11.1392 14.0391 9.4724 15.6923 7.41621 15.6923ZM16.5838 15.6923C14.5276 15.6923 12.8608 14.0391 12.8608 12.0009C12.8608 9.9609 14.5276 8.30764 16.5838 8.30764C18.6409 8.30764 20.3077 9.9609 20.3077 12.0009C20.3077 14.0391 18.6408 15.6923 16.5838 15.6923Z\" fill=\"currentColor\"/></g><defs><clipPath id=\"clip0_3861_14054\"><rect width=\"24\" height=\"24\" rx=\"12\" fill=\"white\"/></clipPath></defs>`,\r\n            },\r\n        },\r\n        instagram: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C18.6264 0 24 5.3736 24 12C24 18.6264 18.6264 24 12 24C5.3736 24 0 18.6264 0 12C0 5.3736 5.3736 0 12 0ZM12 5.10938C10.1287 5.10938 9.89395 5.11786 9.15918 5.15137C8.42566 5.18488 7.92468 5.30139 7.48633 5.47168C7.02666 5.64472 6.60961 5.91505 6.26562 6.26562C5.91498 6.60968 5.64374 7.02655 5.4707 7.48633C5.30042 7.92468 5.18469 8.42566 5.15137 9.15918C5.11768 9.89395 5.10938 10.1287 5.10938 12C5.10938 13.8711 5.1175 14.106 5.15137 14.8408C5.18469 15.5742 5.30139 16.0755 5.47168 16.5137C5.64472 16.9734 5.91522 17.3904 6.26562 17.7344C6.60984 18.085 7.02641 18.3563 7.48633 18.5293C7.9245 18.6996 8.42584 18.8151 9.15918 18.8486C9.89411 18.8821 10.1287 18.8906 12 18.8906C13.8711 18.8906 14.1062 18.8821 14.8408 18.8486C15.5741 18.8151 16.0755 18.6996 16.5137 18.5293C17.4393 18.1713 18.1713 17.4393 18.5293 16.5137C18.6996 16.0753 18.8153 15.5743 18.8486 14.8408C18.8823 14.1061 18.8906 13.8713 18.8906 12C18.8906 10.1287 18.8831 9.89392 18.8496 9.15918C18.8161 8.42569 18.6998 7.92467 18.5293 7.48633C18.3564 7.02655 18.0848 6.60986 17.7344 6.26562C17.3902 5.91503 16.9734 5.64372 16.5137 5.4707C16.0753 5.3006 15.5743 5.18469 14.8408 5.15137C14.1061 5.11768 13.8713 5.10938 12 5.10938ZM12 6.35059C13.8396 6.35059 14.0577 6.35847 14.7842 6.3916C15.4559 6.42217 15.8207 6.53462 16.0635 6.62891C16.3629 6.73932 16.6342 6.91468 16.8564 7.14355C17.0853 7.36584 17.2617 7.63733 17.3721 7.93652C17.4665 8.17932 17.5788 8.54445 17.6094 9.21582C17.6425 9.94224 17.6494 10.1603 17.6494 12C17.6494 13.8398 17.6425 14.0584 17.6094 14.7852C17.5786 15.4567 17.4663 15.8217 17.3721 16.0645C17.1402 16.6653 16.6644 17.1403 16.0635 17.3721C15.8207 17.4665 15.4556 17.5788 14.7842 17.6094C14.0579 17.6425 13.8399 17.6494 12 17.6494C10.1602 17.6494 9.94213 17.6425 9.21582 17.6094C8.54401 17.5788 8.17834 17.4666 7.93555 17.3721C7.63628 17.2617 7.36578 17.0853 7.14355 16.8564C6.91474 16.6342 6.73853 16.3637 6.62793 16.0645C6.53365 15.8217 6.42221 15.4566 6.3916 14.7852C6.35846 14.0584 6.35059 13.8398 6.35059 12C6.35059 10.1602 6.35846 9.94228 6.3916 9.21582C6.42216 8.54439 6.53366 8.17932 6.62793 7.93652C6.73852 7.63715 6.91468 7.36584 7.14355 7.14355C7.36566 6.91468 7.63715 6.73932 7.93652 6.62891C8.17914 6.53462 8.54415 6.42236 9.21582 6.3916C9.94216 6.35847 10.1602 6.35059 12 6.35059ZM12 8.46191C10.0457 8.46191 8.46191 10.0457 8.46191 12C8.46191 13.9543 10.0457 15.5381 12 15.5381C13.9541 15.5381 15.5381 13.9543 15.5381 12C15.5381 10.0457 13.9541 8.46191 12 8.46191ZM12 9.70312C13.2686 9.70312 14.2969 10.7314 14.2969 12C14.2969 13.2686 13.2686 14.2969 12 14.2969C10.7314 14.2969 9.70312 13.2686 9.70312 12C9.70312 10.7314 10.7314 9.70312 12 9.70312ZM15.6787 7.49512C15.222 7.49512 14.8516 7.8656 14.8516 8.32227C14.8518 8.77871 15.2222 9.14844 15.6787 9.14844C16.135 9.14817 16.5044 8.77854 16.5049 8.32227C16.5049 7.86576 16.1352 7.49538 15.6787 7.49512Z\" fill=\"url(#paint0_linear_3205_13460)\"/><defs><linearGradient id=\"paint0_linear_3205_13460\" x1=\"11.7249\" y1=\"-5.8387\" x2=\"-5.54602\" y2=\"12.5972\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#5057DD\"/><stop offset=\"0.258472\" stop-color=\"#A417C6\"/><stop offset=\"0.52737\" stop-color=\"#E90077\"/><stop offset=\"0.764728\" stop-color=\"#FF7600\"/><stop offset=\"1\" stop-color=\"#FFDA61\"/></linearGradient></defs>`,\r\n                primary: `<path d=\"M12 0C18.6264 0 24 5.3736 24 12C24 18.6264 18.6264 24 12 24C5.3736 24 0 18.6264 0 12C0 5.3736 5.3736 0 12 0ZM12 5.10938C10.1287 5.10938 9.89395 5.11786 9.15918 5.15137C8.42566 5.18488 7.92468 5.30139 7.48633 5.47168C7.02666 5.64472 6.60961 5.91505 6.26562 6.26562C5.91498 6.60968 5.64374 7.02655 5.4707 7.48633C5.30042 7.92468 5.18469 8.42566 5.15137 9.15918C5.11768 9.89395 5.10938 10.1287 5.10938 12C5.10938 13.8711 5.1175 14.106 5.15137 14.8408C5.18469 15.5742 5.30139 16.0755 5.47168 16.5137C5.64472 16.9734 5.91522 17.3904 6.26562 17.7344C6.60984 18.085 7.02641 18.3563 7.48633 18.5293C7.9245 18.6996 8.42584 18.8151 9.15918 18.8486C9.89411 18.8821 10.1287 18.8906 12 18.8906C13.8711 18.8906 14.1062 18.8821 14.8408 18.8486C15.5741 18.8151 16.0755 18.6996 16.5137 18.5293C17.4393 18.1713 18.1713 17.4393 18.5293 16.5137C18.6996 16.0753 18.8153 15.5743 18.8486 14.8408C18.8823 14.1061 18.8906 13.8713 18.8906 12C18.8906 10.1287 18.8831 9.89392 18.8496 9.15918C18.8161 8.42569 18.6998 7.92467 18.5293 7.48633C18.3564 7.02655 18.0848 6.60986 17.7344 6.26562C17.3902 5.91503 16.9734 5.64372 16.5137 5.4707C16.0753 5.3006 15.5743 5.18469 14.8408 5.15137C14.1061 5.11768 13.8713 5.10938 12 5.10938ZM12 6.35059C13.8396 6.35059 14.0575 6.35846 14.7842 6.3916C15.456 6.42218 15.8207 6.53461 16.0635 6.62891C16.3627 6.73926 16.6333 6.91487 16.8555 7.14355C17.0844 7.36584 17.2607 7.63733 17.3711 7.93652C17.4656 8.17932 17.5778 8.54422 17.6084 9.21582C17.6415 9.94227 17.6484 10.1602 17.6484 12C17.6484 13.8398 17.6415 14.0584 17.6084 14.7852C17.5776 15.4567 17.4654 15.8217 17.3711 16.0645C17.1392 16.6652 16.6643 17.1403 16.0635 17.3721C15.8207 17.4665 15.4557 17.5788 14.7842 17.6094C14.0579 17.6425 13.8398 17.6494 12 17.6494C10.16 17.6494 9.94141 17.6425 9.21484 17.6094C8.54329 17.5788 8.1783 17.4665 7.93555 17.3721C7.63625 17.2617 7.36581 17.0853 7.14355 16.8564C6.91476 16.6342 6.73853 16.3637 6.62793 16.0645C6.53365 15.8217 6.42124 15.4567 6.39062 14.7852C6.35748 14.0584 6.35059 13.8398 6.35059 12C6.35059 10.1603 6.35749 9.94225 6.39062 9.21582C6.42119 8.54432 6.53366 8.17932 6.62793 7.93652C6.73853 7.63715 6.91467 7.36584 7.14355 7.14355C7.36552 6.91486 7.63642 6.73931 7.93555 6.62891C8.17811 6.53463 8.54332 6.42239 9.21484 6.3916C9.94141 6.35846 10.16 6.35059 12 6.35059ZM12 8.46191C10.0458 8.46201 8.46191 10.0458 8.46191 12C8.46191 13.9542 10.0458 15.538 12 15.5381C13.9541 15.5381 15.5381 13.9543 15.5381 12C15.5381 10.0457 13.9541 8.46191 12 8.46191ZM12 9.70312C13.2686 9.70312 14.2969 10.7314 14.2969 12C14.2969 13.2686 13.2686 14.2969 12 14.2969C10.7314 14.2969 9.70312 13.2686 9.70312 12C9.70312 10.7314 10.7314 9.70312 12 9.70312ZM15.6777 7.49512C15.2211 7.49512 14.8506 7.8656 14.8506 8.32227C14.8509 8.77871 15.2212 9.14844 15.6777 9.14844C16.1341 9.14831 16.5044 8.77863 16.5049 8.32227C16.5049 7.86568 16.1343 7.49525 15.6777 7.49512Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        share: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                default: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM15 5.33301C13.8933 5.33301 13 6.23069 13 7.3418C13 7.50214 13.0263 7.6559 13.0596 7.80957L8.36035 10.5605C8.00035 10.2259 7.52667 10.0186 7 10.0186C5.89347 10.0186 5.00021 10.9154 5 12.0264C5 13.1375 5.89333 14.0352 7 14.0352C7.52667 14.0352 8.00035 13.8269 8.36035 13.4922L13.1064 16.2773C13.0732 16.4177 13.0537 16.5648 13.0537 16.7119C13.0537 17.7896 13.9267 18.667 15 18.667C16.0733 18.667 16.9463 17.7896 16.9463 16.7119C16.9461 15.6344 16.0732 14.7578 15 14.7578C14.4933 14.7578 14.04 14.9588 13.6934 15.2734L8.94043 12.4951C8.97374 12.3413 9 12.1869 9 12.0264C8.99996 11.866 8.97369 11.7123 8.94043 11.5586L13.6396 8.80762C13.9996 9.14228 14.4733 9.34961 15 9.34961C16.1065 9.34961 16.9998 8.4527 17 7.3418C17 6.23069 16.1067 5.33301 15 5.33301Z\" fill=\"#6E747A\"/>`,\r\n            },\r\n        },\r\n        soundcloud: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM5.24512 11.6318V16.8994L5.31738 16.9082H6.36719V11.624H5.31738L5.24512 11.6318ZM8.6123 9.1084C8.1914 9.23969 7.81135 9.47866 7.48926 9.79199V16.9082H8.6123V9.1084ZM9.73438 16.9082H10.8564V9.45215C10.521 9.22126 10.1411 9.06959 9.73438 9.01074V16.9082ZM14.5859 7C13.5445 7 12.6165 7.529 11.9795 8.35742V16.9082H18.6406C19.9195 16.9082 20.958 15.725 20.958 14.2646C20.9579 12.8058 19.9195 11.624 18.6406 11.624H18.0098C18.0417 11.4086 18.0615 11.1898 18.0615 10.9639C18.0615 8.77468 16.5056 7.0001 14.5859 7ZM4.12207 12.0127C3.45227 12.4759 3.00012 13.3075 3 14.2646C3 15.2238 3.45227 16.0556 4.12207 16.5195V12.0127Z\" fill=\"#F77814\"/>`,\r\n                primary: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM5.24512 11.6318V16.8994L5.31738 16.9082H6.36719V11.624H5.31738L5.24512 11.6318ZM8.6123 9.1084C8.19143 9.23968 7.81231 9.47869 7.49023 9.79199V16.9082H8.6123V9.1084ZM9.73535 16.9082H10.8574V9.45215C10.522 9.22123 10.142 9.06964 9.73535 9.01074V16.9082ZM14.5869 7C13.5454 7 12.6165 7.52885 11.9795 8.35742V16.9082H18.6416C19.9205 16.9082 20.959 15.725 20.959 14.2646C20.9588 12.8058 19.9204 11.624 18.6416 11.624H18.0107C18.0427 11.4086 18.0625 11.1898 18.0625 10.9639C18.0625 8.77473 16.5065 7.00019 14.5869 7ZM4.12207 12.0127C3.45227 12.4759 3.00012 13.3075 3 14.2646C3 15.2238 3.45227 16.0556 4.12207 16.5195V12.0127Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        spotify: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37257 0 0 5.37261 0 12C0 18.6274 5.37257 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37261 18.6274 0 12 0ZM16.9026 17.1727C16.7298 17.4634 16.3635 17.5807 16.0503 17.4417C15.9874 17.4141 15.9284 17.3767 15.8689 17.3412C14.7067 16.6515 13.4526 16.224 12.1199 16.0197C11.3019 15.8941 10.4793 15.8508 9.65351 15.8833C8.58508 15.9252 7.53006 16.0734 6.48643 16.3047C6.38099 16.3284 6.27233 16.35 6.16509 16.351C5.84207 16.354 5.56917 16.1246 5.51231 15.8134C5.45235 15.4838 5.61534 15.1749 5.91729 15.0532C5.98104 15.0276 6.04886 15.0113 6.11613 14.9961C6.96973 14.8045 7.83167 14.6586 8.7035 14.5847C9.19054 14.5433 9.679 14.5276 10.1671 14.5C11.611 14.5153 13.0233 14.7109 14.3939 15.1739C15.1499 15.4291 15.872 15.7597 16.5577 16.1688C16.6169 16.2042 16.6774 16.2392 16.732 16.2811C17.0089 16.4915 17.0809 16.8722 16.9026 17.1727ZM18.3784 14.1109C18.1324 14.4931 17.6216 14.6121 17.1968 14.3854C16.9573 14.257 16.7205 14.1241 16.4756 14.0056C15.3529 13.4631 14.1622 13.1114 12.9268 12.89C11.9756 12.7191 11.0157 12.636 9.99532 12.6317C8.72492 12.6369 7.42338 12.7861 6.15185 13.1435C5.94467 13.202 5.73666 13.2058 5.53396 13.128C5.20368 13.0014 4.98874 12.6874 5.00046 12.3558C5.01234 12.0092 5.23533 11.708 5.58743 11.6061C5.94589 11.5021 6.30974 11.4124 6.6756 11.335C7.57618 11.1452 8.48921 11.0452 9.41148 11.0121C11.3957 10.9408 13.3342 11.184 15.2253 11.7586C16.1817 12.0489 17.0965 12.4292 17.9605 12.9165C18.0033 12.9406 18.0459 12.9655 18.089 12.9901C18.5393 13.2507 18.5932 13.7762 18.3784 14.1109ZM18.4268 10.8619C17.9415 10.5974 17.445 10.3576 16.9273 10.1578C15.8992 9.76075 14.8339 9.49385 13.7449 9.30884C12.987 9.18022 12.2234 9.09476 11.4553 9.05008C10.6569 9.004 9.85786 8.99861 9.05838 9.03845C8.14207 9.08407 7.23321 9.18116 6.33624 9.36756C6.00524 9.43652 5.67838 9.52342 5.35086 9.60735C5.15004 9.65976 4.95225 9.66562 4.75243 9.60931C4.31505 9.48604 4.01325 9.10834 4.00043 8.66661C3.98753 8.23681 4.26294 7.83776 4.69534 7.70041C5.0118 7.59993 5.33655 7.52083 5.66156 7.44844C6.46606 7.26933 7.28162 7.1582 8.10401 7.08636C8.97732 7.00964 9.85191 6.9849 10.7272 7.00871C12.8839 7.06837 14.9984 7.37181 17.0448 8.05231C17.879 8.32999 18.6823 8.67438 19.4455 9.10342C19.7176 9.25588 19.9003 9.4714 19.9698 9.76992C19.9864 9.84082 19.9902 9.9141 20 9.98688C19.9968 10.7711 19.1424 11.2517 18.4268 10.8619Z\" fill=\"#1AB26B\"/>`,\r\n                primary: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37257 0 0 5.37261 0 12C0 18.6274 5.37257 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37261 18.6274 0 12 0ZM16.902 17.1728C16.7291 17.4634 16.3629 17.5807 16.0496 17.4417C15.9868 17.4141 15.9277 17.3767 15.8682 17.3412C14.7061 16.6515 13.452 16.224 12.1193 16.0198C11.3013 15.8941 10.4787 15.8508 9.65286 15.8833C8.58443 15.9252 7.52941 16.0735 6.48578 16.3048C6.38034 16.3284 6.27168 16.3501 6.16444 16.3511C5.84142 16.354 5.56852 16.1247 5.51166 15.8134C5.45169 15.4838 5.61469 15.1749 5.91664 15.0533C5.98039 15.0276 6.04821 15.0114 6.11548 14.9961C6.96908 14.8045 7.83102 14.6587 8.70285 14.5847C9.18989 14.5433 9.67835 14.5276 10.1664 14.5C11.6103 14.5153 13.0227 14.7109 14.3933 15.1739C15.1493 15.4291 15.8714 15.7597 16.5571 16.1688C16.6162 16.2043 16.6768 16.2393 16.7314 16.2811C17.0082 16.4915 17.0802 16.8723 16.902 17.1728ZM18.379 14.1109C18.133 14.4931 17.6222 14.6121 17.1975 14.3854C16.9579 14.257 16.7211 14.1241 16.4763 14.0056C15.3536 13.4631 14.1628 13.1114 12.9275 12.89C11.9763 12.7191 11.0163 12.636 9.99597 12.6317C8.72557 12.6369 7.42403 12.7861 6.1525 13.1435C5.94532 13.202 5.73731 13.2058 5.53461 13.1279C5.20433 13.0014 4.98939 12.6874 5.00111 12.3557C5.01299 12.0092 5.23598 11.708 5.58808 11.606C5.94654 11.5021 6.31039 11.4124 6.67625 11.335C7.57683 11.1452 8.48986 11.0451 9.41213 11.0121C11.3964 10.9408 13.3348 11.1839 15.2259 11.7585C16.1823 12.0489 17.0972 12.4292 17.9611 12.9165C18.004 12.9406 18.0466 12.9655 18.0897 12.9901C18.54 13.2506 18.5938 13.7762 18.379 14.1109ZM18.4262 10.8619C17.9409 10.5974 17.4443 10.3576 16.9267 10.1579C15.8985 9.76077 14.8332 9.49387 13.7443 9.30886C12.9864 9.18024 12.2227 9.09478 11.4547 9.0501C10.6562 9.00402 9.85721 8.99863 9.05773 9.03847C8.14142 9.08409 7.23256 9.18118 6.33559 9.36758C6.00459 9.43654 5.67773 9.52344 5.35021 9.60737C5.14938 9.65978 4.9516 9.66563 4.75178 9.60933C4.3144 9.48606 4.0126 9.10836 3.99978 8.66663C3.98688 8.23682 4.26228 7.83778 4.69469 7.70043C5.01115 7.59995 5.3359 7.52085 5.66091 7.44846C6.46541 7.26935 7.28097 7.15822 8.10336 7.08638C8.97667 7.00966 9.85126 6.98492 10.7265 7.00873C12.8833 7.06839 14.9977 7.37183 17.0441 8.05233C17.8784 8.33001 18.6817 8.6744 19.4448 9.10344C19.7169 9.2559 19.8996 9.47142 19.9691 9.76994C19.9857 9.84084 19.9895 9.91412 19.9993 9.9869C19.9961 10.7711 19.1417 11.2517 18.4262 10.8619Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        telegram: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<rect x=\"3.5\" y=\"4.5\" width=\"15.5\" height=\"14.5\" fill=\"white\"/><path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM17.8926 8.22168C18.0665 7.40982 17.5975 7.08531 17.0605 7.2793L5.49121 11.7402C4.69821 12.0502 4.71247 12.4894 5.35547 12.6934L8.31738 13.6172L15.1885 9.29102C15.5074 9.07929 15.8025 9.19918 15.5605 9.41211L10.001 14.4346L9.78809 17.4883C10.0978 17.4883 10.2328 17.3532 10.3926 17.1934L11.8398 15.7988L14.8398 18.0098C15.3868 18.3198 15.7778 18.1599 15.9238 17.502L17.8936 8.2207L17.8926 8.22168Z\" fill=\"#2BA3D7\"/>`,\r\n                primary: `<rect x=\"3.5\" y=\"4.5\" width=\"15.5\" height=\"14.5\" fill=\"currentColor\"/><path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM17.8926 8.22168C18.0665 7.40982 17.5975 7.08531 17.0605 7.2793L5.49121 11.7402C4.69821 12.0502 4.71247 12.4894 5.35547 12.6934L8.31738 13.6172L15.1885 9.29102C15.5074 9.07929 15.8025 9.19918 15.5605 9.41211L10.001 14.4346L9.78809 17.4883C10.0978 17.4883 10.2328 17.3532 10.3926 17.1934L11.8398 15.7988L14.8398 18.0098C15.3868 18.3198 15.7778 18.1599 15.9238 17.502L17.8936 8.2207L17.8926 8.22168Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        tiktok: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37257 0 0 5.37261 0 12C0 18.6274 5.37257 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37261 18.6274 0 12 0ZM17.9936 8.66988C17.2129 8.66988 16.4925 8.41125 15.9141 7.97495C15.2507 7.47479 14.7741 6.74112 14.6057 5.8955C14.5641 5.68657 14.5416 5.47096 14.5395 5.25H12.3093V11.3438L12.3067 14.6817C12.3067 15.574 11.7256 16.3307 10.92 16.5968C10.6862 16.674 10.4338 16.7106 10.1708 16.6962C9.83527 16.6777 9.5208 16.5765 9.24748 16.413C8.66583 16.0651 8.27148 15.434 8.26079 14.7121C8.24396 13.5838 9.1561 12.6639 10.2836 12.6639C10.5062 12.6639 10.7199 12.7003 10.92 12.7663V11.1007V10.5019C10.7089 10.4707 10.4941 10.4544 10.2769 10.4544C9.04282 10.4544 7.88861 10.9673 7.06356 11.8915C6.43997 12.5899 6.06592 13.481 6.00821 14.4153C5.9326 15.6427 6.38173 16.8095 7.25273 17.6703C7.3807 17.7967 7.5151 17.914 7.65563 18.0222C8.40239 18.5969 9.31534 18.9084 10.2769 18.9084C10.4941 18.9084 10.7089 18.8924 10.92 18.8611C11.8183 18.7281 12.6471 18.3169 13.3011 17.6703C14.1048 16.876 14.5488 15.8214 14.5536 14.699L14.5421 9.71455C14.9255 10.0103 15.3448 10.255 15.7947 10.445C16.4944 10.7402 17.2364 10.8899 18 10.8896V9.27023V8.66935C18.0005 8.66988 17.9941 8.66988 17.9936 8.66988Z\" fill=\"black\"/>`,\r\n                primary: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37257 0 0 5.37261 0 12C0 18.6274 5.37257 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37261 18.6274 0 12 0ZM17.9936 8.66988C17.2129 8.66988 16.4925 8.41125 15.9141 7.97495C15.2507 7.47479 14.7741 6.74112 14.6057 5.8955C14.5641 5.68657 14.5416 5.47096 14.5395 5.25H12.3093V11.3438L12.3067 14.6817C12.3067 15.574 11.7256 16.3307 10.92 16.5968C10.6862 16.674 10.4338 16.7106 10.1708 16.6962C9.83527 16.6777 9.5208 16.5765 9.24748 16.413C8.66583 16.0651 8.27148 15.434 8.26079 14.7121C8.24396 13.5838 9.1561 12.6639 10.2836 12.6639C10.5062 12.6639 10.7199 12.7003 10.92 12.7663V11.1007V10.5019C10.7089 10.4707 10.4941 10.4544 10.2769 10.4544C9.04282 10.4544 7.88861 10.9673 7.06356 11.8915C6.43997 12.5899 6.06592 13.481 6.00821 14.4153C5.9326 15.6427 6.38173 16.8095 7.25273 17.6703C7.3807 17.7967 7.5151 17.914 7.65563 18.0222C8.40239 18.5969 9.31534 18.9084 10.2769 18.9084C10.4941 18.9084 10.7089 18.8924 10.92 18.8611C11.8183 18.7281 12.6471 18.3169 13.3011 17.6703C14.1048 16.876 14.5488 15.8214 14.5536 14.699L14.5421 9.71455C14.9255 10.0103 15.3448 10.255 15.7947 10.445C16.4944 10.7402 17.2364 10.8899 18 10.8896V9.27023V8.66935C18.0005 8.66988 17.9941 8.66988 17.9936 8.66988Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        twitter: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM6.05371 4.55762C5.89382 4.55769 5.73621 4.60115 5.59863 4.68262C5.46118 4.76408 5.34836 4.88141 5.27148 5.02148C5.19463 5.1616 5.15695 5.31976 5.16211 5.47949C5.16729 5.63925 5.215 5.79481 5.30078 5.92969L9.83789 13.0557L5.39258 17.9414C5.31221 18.0278 5.24988 18.1295 5.20898 18.2402C5.16809 18.351 5.14937 18.469 5.1543 18.5869C5.15926 18.7048 5.1873 18.8208 5.2373 18.9277C5.28734 19.0347 5.35889 19.1305 5.44629 19.21C5.53365 19.2893 5.63589 19.3511 5.74707 19.3906C5.85815 19.4301 5.97602 19.4467 6.09375 19.4404C6.21155 19.4341 6.32732 19.4047 6.43359 19.3535C6.53998 19.3022 6.63548 19.23 6.71387 19.1416L10.8281 14.6162L13.6309 19.0205C13.7114 19.1472 13.8235 19.2519 13.9551 19.3242C14.0865 19.3963 14.2339 19.4335 14.3838 19.4336H17.9541C18.1139 19.4335 18.2707 19.3909 18.4082 19.3096C18.5458 19.2281 18.6594 19.1109 18.7363 18.9707C18.8132 18.8306 18.8509 18.6724 18.8457 18.5127C18.8405 18.3529 18.7928 18.1974 18.707 18.0625L14.1699 10.9365L18.6113 6.05078C18.7672 5.87508 18.8476 5.64469 18.835 5.41016C18.8222 5.17578 18.7177 4.95572 18.5439 4.79785C18.3703 4.64015 18.1416 4.55673 17.9072 4.56641C17.6726 4.57621 17.451 4.67868 17.291 4.85059L13.1797 9.37598L10.376 4.97168C10.2954 4.84505 10.1843 4.74024 10.0527 4.66797C9.92136 4.59587 9.77388 4.55775 9.62402 4.55762H6.05371ZM16.3281 17.6494H14.874L7.67969 6.34277H9.13379L16.3281 17.6494Z\" fill=\"black\"/>`,\r\n                primary: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM6.05371 4.55762C5.89382 4.55769 5.73621 4.60115 5.59863 4.68262C5.46118 4.76408 5.34836 4.88141 5.27148 5.02148C5.19463 5.1616 5.15695 5.31976 5.16211 5.47949C5.16729 5.63925 5.215 5.79481 5.30078 5.92969L9.83789 13.0557L5.39258 17.9414C5.31221 18.0278 5.24988 18.1295 5.20898 18.2402C5.16809 18.351 5.14937 18.469 5.1543 18.5869C5.15926 18.7048 5.1873 18.8208 5.2373 18.9277C5.28734 19.0347 5.35889 19.1305 5.44629 19.21C5.53365 19.2893 5.63589 19.3511 5.74707 19.3906C5.85815 19.4301 5.97602 19.4467 6.09375 19.4404C6.21155 19.4341 6.32732 19.4047 6.43359 19.3535C6.53998 19.3022 6.63548 19.23 6.71387 19.1416L10.8281 14.6162L13.6309 19.0205C13.7114 19.1472 13.8235 19.2519 13.9551 19.3242C14.0865 19.3963 14.2339 19.4335 14.3838 19.4336H17.9541C18.1139 19.4335 18.2707 19.3909 18.4082 19.3096C18.5458 19.2281 18.6594 19.1109 18.7363 18.9707C18.8132 18.8306 18.8509 18.6724 18.8457 18.5127C18.8405 18.3529 18.7928 18.1974 18.707 18.0625L14.1699 10.9365L18.6113 6.05078C18.7672 5.87508 18.8476 5.64469 18.835 5.41016C18.8222 5.17578 18.7177 4.95572 18.5439 4.79785C18.3703 4.64015 18.1416 4.55673 17.9072 4.56641C17.6726 4.57621 17.451 4.67868 17.291 4.85059L13.1797 9.37598L10.376 4.97168C10.2954 4.84505 10.1843 4.74024 10.0527 4.66797C9.92136 4.59587 9.77388 4.55775 9.62402 4.55762H6.05371ZM16.3281 17.6494H14.874L7.67969 6.34277H9.13379L16.3281 17.6494Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        whatsapp: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM12.3955 4.40039C8.46264 4.40048 5.26152 7.6011 5.25977 11.5352C5.2593 12.7926 5.58853 14.0205 6.21289 15.1025L5.2002 18.8008L8.98242 17.8086C10.0245 18.3769 11.1985 18.6763 12.3926 18.6768H12.3955C16.3295 18.675 19.5294 15.4741 19.5312 11.541C19.532 9.63465 18.7903 7.8418 17.4434 6.49316C16.0962 5.14444 14.3043 4.40127 12.3955 4.40039ZM12.3984 5.60547C13.9822 5.60617 15.4712 6.22394 16.5908 7.34473C17.7104 8.46574 18.3268 9.95643 18.3262 11.541C18.3245 14.8109 15.6641 17.4716 12.3955 17.4717H12.3936C11.3295 17.4713 10.2855 17.1847 9.375 16.6445L9.1582 16.5166L6.91309 17.1055L7.5127 14.917L7.37109 14.6924C6.77756 13.7483 6.4645 12.6565 6.46484 11.5361C6.46614 8.26615 9.12703 5.60547 12.3984 5.60547ZM9.86914 8.24023C9.75028 8.2403 9.55684 8.28457 9.39355 8.46289C9.23003 8.64147 8.76953 9.07384 8.76953 9.95117C8.76994 10.8282 9.40865 11.6756 9.49805 11.7949C9.58927 11.9172 10.7572 13.7158 12.5439 14.4873C12.9691 14.6709 13.3017 14.7812 13.5605 14.8633C13.9873 14.9987 14.3766 14.9795 14.6836 14.9336C15.0263 14.8821 15.7378 14.502 15.8867 14.0859C16.0349 13.6703 16.0345 13.3137 15.9902 13.2383C15.9457 13.164 15.8265 13.1185 15.6484 13.0293C15.4691 12.9396 14.5948 12.5092 14.4307 12.4492C14.2673 12.3898 14.1481 12.3606 14.0293 12.5391C13.9102 12.7177 13.5688 13.1194 13.4648 13.2383C13.361 13.3568 13.2568 13.3711 13.0791 13.2822C12.9008 13.193 12.3254 13.0047 11.6445 12.3975C11.115 11.9251 10.7576 11.3411 10.6533 11.1621C10.5495 10.9838 10.6422 10.8877 10.7314 10.7988C10.8116 10.7189 10.9099 10.5904 10.999 10.4863C11.088 10.3824 11.1174 10.3072 11.1768 10.1885C11.2358 10.0699 11.2064 9.96595 11.1621 9.87695C11.1176 9.78775 10.761 8.91008 10.6123 8.55273C10.4677 8.20531 10.3203 8.25151 10.2109 8.24609C10.1072 8.24089 9.98784 8.24024 9.86914 8.24023Z\" fill=\"#1EAC7D\"/>`,\r\n                primary: `<path d=\"M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM12.3955 4.40039C8.46264 4.40048 5.26152 7.6011 5.25977 11.5352C5.2593 12.7926 5.58853 14.0205 6.21289 15.1025L5.2002 18.8008L8.98242 17.8086C10.0245 18.3769 11.1985 18.6763 12.3926 18.6768H12.3955C16.3295 18.675 19.5294 15.4741 19.5312 11.541C19.532 9.63465 18.7903 7.8418 17.4434 6.49316C16.0962 5.14444 14.3043 4.40127 12.3955 4.40039ZM12.3984 5.60547C13.9822 5.60617 15.4712 6.22394 16.5908 7.34473C17.7104 8.46574 18.3268 9.95643 18.3262 11.541C18.3245 14.8109 15.6641 17.4716 12.3955 17.4717H12.3936C11.3295 17.4713 10.2855 17.1847 9.375 16.6445L9.1582 16.5166L6.91309 17.1055L7.5127 14.917L7.37109 14.6924C6.77756 13.7483 6.4645 12.6565 6.46484 11.5361C6.46614 8.26615 9.12703 5.60547 12.3984 5.60547ZM9.86914 8.24023C9.75028 8.2403 9.55684 8.28457 9.39355 8.46289C9.23003 8.64147 8.76953 9.07384 8.76953 9.95117C8.76994 10.8282 9.40865 11.6756 9.49805 11.7949C9.58927 11.9172 10.7572 13.7158 12.5439 14.4873C12.9691 14.6709 13.3017 14.7812 13.5605 14.8633C13.9873 14.9987 14.3766 14.9795 14.6836 14.9336C15.0263 14.8821 15.7378 14.502 15.8867 14.0859C16.0349 13.6703 16.0345 13.3137 15.9902 13.2383C15.9457 13.164 15.8265 13.1185 15.6484 13.0293C15.4691 12.9396 14.5948 12.5092 14.4307 12.4492C14.2673 12.3898 14.1481 12.3606 14.0293 12.5391C13.9102 12.7177 13.5688 13.1194 13.4648 13.2383C13.361 13.3568 13.2568 13.3711 13.0791 13.2822C12.9008 13.193 12.3254 13.0047 11.6445 12.3975C11.115 11.9251 10.7576 11.3411 10.6533 11.1621C10.5495 10.9838 10.6422 10.8877 10.7314 10.7988C10.8116 10.7189 10.9099 10.5904 10.999 10.4863C11.088 10.3824 11.1174 10.3072 11.1768 10.1885C11.2358 10.0699 11.2064 9.96595 11.1621 9.87695C11.1176 9.78775 10.761 8.91008 10.6123 8.55273C10.4677 8.20531 10.3203 8.25151 10.2109 8.24609C10.1072 8.24089 9.98784 8.24024 9.86914 8.24023Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n        youtube: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C18.6264 0 24 5.3736 24 12C24 18.6264 18.6264 24 12 24C5.3736 24 0 18.6264 0 12C0 5.3736 5.3736 0 12 0ZM12 6.75C12 6.75 7.30713 6.74982 6.13281 7.05859C5.50288 7.23141 4.98351 7.75043 4.81055 8.39258C4.50165 9.5661 4.50195 12 4.50195 12C4.50195 12 4.50165 14.4464 4.81055 15.6074C4.98368 16.2496 5.49061 16.7559 6.13281 16.9287C7.3192 17.2498 12 17.25 12 17.25C12 17.25 16.6929 17.2502 17.8672 16.9414C18.5095 16.7686 19.0164 16.2615 19.1895 15.6191C19.4957 14.4545 19.498 12.0495 19.498 12.0127C19.498 12.0127 19.5106 9.5661 19.1895 8.39258C19.0163 7.75043 18.5094 7.2441 17.8672 7.07129C16.6931 6.75022 12 6.75 12 6.75ZM14.4092 12L10.5049 14.248V9.75195L14.4092 12Z\" fill=\"#FF0000\"/>`,\r\n                primary: `<path d=\"M12 0C18.6264 0 24 5.3736 24 12C24 18.6264 18.6264 24 12 24C5.3736 24 0 18.6264 0 12C0 5.3736 5.3736 0 12 0ZM12.001 6.75C12.001 6.75 7.30634 6.74969 6.13281 7.05859C5.50293 7.23141 4.98451 7.75049 4.81152 8.39258C4.50262 9.5661 4.50195 12 4.50195 12C4.50195 12 4.50262 14.4464 4.81152 15.6074C4.98467 16.2495 5.49072 16.7559 6.13281 16.9287C7.3186 17.2499 12.001 17.25 12.001 17.25C12.0522 17.25 16.701 17.2486 17.8682 16.9414C18.5105 16.7686 19.0174 16.2615 19.1904 15.6191C19.4967 14.4545 19.499 12.0495 19.499 12.0127C19.499 12.0127 19.5116 9.5661 19.1904 8.39258C19.0173 7.75039 18.5104 7.24412 17.8682 7.07129C16.7011 6.75189 12.0522 6.75001 12.001 6.75ZM14.4082 12L10.5049 14.248V9.75195L14.4082 12Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n    },\r\n    bank: {\r\n        bb: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"#FFEF38\"/><rect x=\"5\" y=\"5.05566\" width=\"14\" height=\"13.8884\" fill=\"url(#pattern0_4798_796)\"/><defs><pattern id=\"pattern0_4798_796\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4798_796\" transform=\"matrix(0.00200792 0 0 0.00202405 -0.303162 -0.107143)\"/></pattern><image id=\"image0_4798_796\" width=\"800\" height=\"600\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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5d0g+U9fSSCbCGzb9mT9gAHjng+Hc6vwnT4GPVgbcFx+9NGDHv3Tn36M5Xz5IgESIAESIAESIAGfCYwbt7T3iBGLPoGVrqi2+RwLVk8CqSSgv9fDh88bkMoyWRYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJohQLwwAAAWNJREFUkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMCeBP4/mARs9wzgCEYAAAAASUVORK5CYII=\"/></defs>`,\r\n                primary: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"currentColor\"/><mask id=\"mask0_4798_792\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"5\" y=\"5\" width=\"14\" height=\"14\"><rect x=\"5\" y=\"5.05566\" width=\"14\" height=\"13.8884\" fill=\"url(#pattern0_4798_792)\"/></mask><g mask=\"url(#mask0_4798_792)\"><rect x=\"3.34863\" y=\"4.3667\" width=\"17.3037\" height=\"15.2661\" fill=\"currentColor\"/></g><defs><pattern id=\"pattern0_4798_792\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4798_792\" transform=\"matrix(0.00200792 0 0 0.00202405 -0.303162 -0.107143)\"/></pattern><image id=\"image0_4798_792\" width=\"800\" height=\"600\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAKo2lDQ1BJQ0MgUHJvZmlsZQAASImVlwdUk8kWx+f70kNCS4iAlNCbIJ0AUkIPRZAONkISQigxBIKK2FlcwbUgIoIVXWkKrgWQtSCiWFgEC9g3yCKgrIsFGyrvCxyCu++8986750zmd27u3HtnzkzOPwCQ0WyRKA1WBiBdmCUO9/eix8bF03GDAAs0ARUYACKbkylihoUFA8Sm57/b+x4AyeY7lrJc//79fzUVLi+TAwAUhnAiN5OTjvBpZEg5InEWAKhixG+wPEsk4yaEqWKkQYQ7ZMyfYqmME6f43WRMZLg3AGg8AHgSmy3mA0CiIn56NoeP5CHZI2wt5AqECHMRdk9PX4bMpCMImyIxIoRl+RmJ3+Xh/y1nojwnm82X89ReJg3vI8gUpbFX/p/H8b8tPU0yXcMYGaRkcUC4rB5yZvdTlwXJWZg4P3SaBdypnmScLAmImmZOpnf8NHPZPkHytWnzg6c5SeDHkufJYkVOMy/TN2KaxcvC5bWSxN7MaWaLZ+pKUqPk/mQeS54/JzkyZpqzBdHzpzkzNSJoJsZb7hdLwuX984T+XjN1/eR7T8/8br8ClnxtVnJkgHzv7Jn+eULmTM7MWHlvXJ6P70xMlDxelOUlryVKC5PH89L85f7M7Aj52izkQs6sDZOfYQo7MGyagQCEADbgZPFWZMma914mWikW8JOz6EzkVfHoLCHHag7d1trWDgDZG526Am9pk28Pot2Y8WW0AOBcgDj5Mz62AQBnnwNAeT/jM3iDXJ/tAJzv4kjE2VM+tOwDA4hACXn9GkAH+QUwBZbAFjgCV+AJfEEgCAWRIA4sARyQDNKBGCwHuWA9yAeFYDvYBcrAAXAYVIHj4CRoBOfAJXAV3ARd4B54BKRgALwEo+A9GIcgCAeRIQqkAelCRpAFZAsxIHfIFwqGwqE4KAHiQ0JIAuVCG6FCqAgqgw5B1dAv0FnoEnQd6oYeQH3QMPQG+gyjYBJMhbVhY3guzICZcBAcCS+G+XAGnAPnwVvhUrgCPgY3wJfgm/A9WAq/hMdQAKWAoqH0UJYoBsobFYqKRyWhxKg1qAJUCaoCVYdqRrWj7qCkqBHUJzQWTUHT0ZZoV3QAOgrNQWeg16C3oMvQVegGdBv6DroPPYr+hiFjtDAWGBcMCxOL4WOWY/IxJZijmDOYK5h7mAHMeywWS8OaYJ2wAdg4bAp2FXYLdh+2HtuC7cb2Y8dwOJwGzgLnhgvFsXFZuHzcHtwx3EXcbdwA7iNeAa+Lt8X74ePxQvwGfAm+Bn8Bfxs/iB8nKBOMCC6EUAKXsJKwjXCE0Ey4RRggjBNViCZEN2IkMYW4nlhKrCNeIT4mvlVQUNBXcFZYoCBQWKdQqnBC4ZpCn8InkirJnORNWkSSkLaSKkktpAekt2Qy2ZjsSY4nZ5G3kqvJl8lPyR8VKYpWiixFruJaxXLFBsXbiq+UCEpGSkylJUo5SiVKp5RuKY0oE5SNlb2V2cprlMuVzyr3Ko+pUFRsVEJV0lW2qNSoXFcZUsWpGqv6qnJV81QPq15W7aegKAYUbwqHspFyhHKFMkDFUk2oLGoKtZB6nNpJHVVTVbNXi1ZboVaudl5NSkPRjGksWhptG+0krYf2eZb2LOYs3qzNs+pm3Z71QX22uqc6T71AvV79nvpnDbqGr0aqxg6NRo0nmmhNc80Fmss192te0RyZTZ3tOpszu2D2ydkPtWAtc61wrVVah7U6tMa0dbT9tUXae7Qva4/o0HQ8dVJ0inUu6AzrUnTddQW6xboXdV/Q1ehMehq9lN5GH9XT0gvQk+gd0uvUG9c30Y/S36Bfr//EgGjAMEgyKDZoNRg11DUMMcw1rDV8aEQwYhglG+02ajf6YGxiHGO8ybjReMhE3YRlkmNSa/LYlGzqYZphWmF61wxrxjBLNdtn1mUOmzuYJ5uXm9+ygC0cLQQW+yy652DmOM8RzqmY02tJsmRaZlvWWvZZ0ayCrTZYNVq9mms4N37ujrntc79ZO1inWR+xfmSjahNos8Gm2eaNrbktx7bc9q4d2c7Pbq1dk91rewt7nv1++/sOFIcQh00OrQ5fHZ0cxY51jsNOhk4JTnudehlURhhjC+OaM8bZy3mt8znnTy6OLlkuJ13+crV0TXWtcR2aZzKPN+/IvH43fTe22yE3qTvdPcH9oLvUQ8+D7VHh8czTwJPredRzkGnGTGEeY77ysvYSe53x+uDt4r3au8UH5ePvU+DT6avqG+Vb5vvUT9+P71frN+rv4L/KvyUAExAUsCOgl6XN4rCqWaOBToGrA9uCSEERQWVBz4LNg8XBzSFwSGDIzpDH843mC+c3hoJQVujO0CdhJmEZYb8uwC4IW1C+4Hm4TXhueHsEJWJpRE3E+0ivyG2Rj6JMoyRRrdFK0Yuiq6M/xPjEFMVIY+fGro69GacZJ4hrisfFR8cfjR9b6Ltw18KBRQ6L8hf1LDZZvGLx9SWaS9KWnF+qtJS99FQCJiEmoSbhCzuUXcEeS2Ql7k0c5XhzdnNecj25xdxhnhuviDeY5JZUlDTEd+Pv5A8neySXJI8IvAVlgtcpASkHUj6khqZWpk6kxaTVp+PTE9LPClWFqcK2ZTrLVizrFlmI8kXSDJeMXRmj4iDx0Uwoc3FmUxYVEUMdElPJD5K+bPfs8uyPy6OXn1qhskK4omOl+crNKwdz/HJ+XoVexVnVmquXuz63bzVz9aE10JrENa1rDdbmrR1Y57+uaj1xfer63zZYbyja8G5jzMbmPO28dXn9P/j/UJuvmC/O793kuunAj+gfBT92brbbvGfztwJuwY1C68KSwi9bOFtu/GTzU+lPE1uTtnZuc9y2fzt2u3B7zw6PHVVFKkU5Rf07Q3Y2FNOLC4rf7Vq663qJfcmB3cTdkt3S0uDSpj2Ge7bv+VKWXHav3Ku8fq/W3s17P+zj7ru933N/3QHtA4UHPh8UHLx/yP9QQ4VxRclh7OHsw8+PRB9p/5nxc/VRzaOFR79WCiulVeFVbdVO1dU1WjXbauFaSe3wsUXHuo77HG+qs6w7VE+rLzwBTkhOvPgl4Zeek0EnW08xTtWdNjq99wzlTEED1LCyYbQxuVHaFNfUfTbwbGuza/OZX61+rTynd678vNr5bReIF/IuTFzMuTjWImoZucS/1N+6tPXR5djLd9sWtHVeCbpy7arf1cvtzPaL19yunbvucv3sDcaNxpuONxs6HDrO/Obw25lOx86GW063mrqcu5q753VfuO1x+9IdnztX77Lu3rw3/153T1TP/d5FvdL73PtDD9IevH6Y/XD80brHmMcFT5SflDzVelrxu9nv9VJH6fk+n76OZxHPHvVz+l/+kfnHl4G85+TnJYO6g9VDtkPnhv2Gu14sfDHwUvRyfCT/T5U/974yfXX6L8+/OkZjRwdei19PvNnyVuNt5Tv7d61jYWNP36e/H/9Q8FHjY9Unxqf2zzGfB8eXf8F9Kf1q9rX5W9C3xxPpExMitpg9KQVQyICTkgB4UwkAOQ7RDl0AEBdOaehJg6Z0/ySB/8RTOnvSHAGo9AQgah0AwYhG2Y8MI4RJyCyTQZGeALazk49pvTupzWWGRf6lHFSVUYdObi74h03p9u/6/ucMZFll0v/v878AdMICvXjCdG0AAAA4ZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAAyCgAwAEAAAAAQAAAlgAAAAA4aKXrgAAQABJREFUeAHsnQl8VNW9x8+5dyYJZAN3NgVBbaUgyZBEwCquVfts+3wPX1/b57PVqnUJO7iRTIKWfXW3Wlu1tpXa2sVaW9tHF8QkTILQ2GpRUEDcitmAJDP3nvc7CVAEApNklnNnfvP5XMjcufec///7v3Pn/O/vLELwRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEC0BO9oDeRwJkAAJkAAJdBJQMhA45uQhQy48Zvv2CU1CrFYkQwIk4F0CkyY9Y2dnF514+ukTWrdsWe161xNa7hUC0iuG0k4SIAESIIHkE5g4MZjV3Jx3pZDiDliTqaRc1LY74+n6+ptbkm8dLSABEugugZKSlXkR17ke5xX7LPu6qqpSPFTgiwTiS8CKb/EsnQRIgARIIFUIBAILhzc35z+I5ONh+DQS2wip1PKsrLYnCguXjxZC8aFWqgSbfqQBAa1kLit0nMhTQql52E5JA6fpoiEE+GNhSCBoBgmQAAmYSmDEiJWZef3DX5JK3CWEPBN2HvzwSnfB2oIflKWZmeHvr1kzu9lUX2gXCZCAEIHA/HxhZX4TSUcpeAzZy6TKZ/suoQLCKyQRBJiAJIIy6yABEiABjxIoLl40zHHtO2H+Vdhyj+JGqxLyt0hUKkKhxvVCBNmX/CjA+DEJJJZA0CoszCmQllWBei/ClnlA/UxADoDBP+NLwBff4lk6CZAACZCAFwl0qh6RLzquVj06ulsdrHoczq0sKdQX0EVrTOHY3GVSzX88FLqt8XAHch8JkEBiCYwZs6yfbbs3CClvRs37VI/EGsHaSGAvgWh+UAiLBEiABEggjQgUFCw+JT8/ci+UjO/A7VHYuvtbcbIUcr6SGT8sKlpeBCWku+enEW26SgLxJhC09PfQ51M/RPJRidqYfMQbOcs/KgEqIEdFxANIgARIID0IjBwZzOjTJ/cKpeQcqBg9STwOBJWJPr6XucodFQjk3tfePu+RjRtv//jAA/g3CZBAfAmMGjWvf0ZWxo34Ht6EmgbHtzaWTgLRE+AYkOhZ8UgSIAESSFkCWvWwbesOjCb/MpzMi7Gj7ShvtXJVeW1tczXHhsSYLosjgUMIBK1AoF+RkK5WPCZiyzjkkEN3cAzIoUy4J04EqIDECSyLJQESIAEvENCqR1ZW/uVCqnIkH5hKt9vdraJxUzd+LsHA188EAnkPZmQsfWDt2mk7ozmRx5AACXSPQIfqkZF5M77T38KZA7t3No8mgcQQoAKSGM6shQRIgASMI1BUtGSIK6zbMRXnV2BcfoIMDKOevyhXlA8fPvjlVauuchJUL6shgRQnoMd65J7tKFmBxt25cDYa1eNAJlRADqTBv+NKgAlIXPGycBIgARIwj0DnWI+8y6B4lMO6s7AlY5D4e5gx62Gl1H2h0IyPzKNEi0jAOwTGjVt6TFtY3orv1A2wekAPLWcC0kNwPK37BJiAdJ8ZzyABEiABzxIoKVk52HHCt2G9jq/CiX5JdiSCBtPLyH/Khw0b9GeqIUmOBqv3IIGgNXZs/jghVAUeKGjVw98LJ5iA9AIeT+0eASYg3ePFo0mABEjAkwQCgYf9SrV8TtpWEF2uxsAJ2xhHpPhAuPKxcDiyfMOGmR8YYxcNIQGDCQQCi48TliwVSl4PM0+MgalMQGIAkUVER8CcH6Do7OVRJEACJEAC3SRw1rilgyy3vRKDwMuRfJyK05PR5epIVmdj2t/xmIVrwqCBF289/fTx72zZspqrqB+JGD9LWwKTJj1jZ2WNO0da8kEhpB6/FatZ67ZblvXk9u0vtKUtXDqeMAJUQBKGmhWRAAmQQGIJaNVDypaL0UjR3TMKULsXHjp9hCTpe8iRloZCU3cklhhrIwGzCRQUrDzetiNT8H2+FpbGQvU40GEqIAfS4N9xJcBpeOOKl4WTAAmQQHIIFBQswPSbu2YpaV2NBn3/5FjRo1qPw2rNU9Gn/bOFRUuD0s3+fSh0g545iy8SSFsCWvXYvHn7Z4UI42GCHA8QbL+l7dWQGo5TAUmNONILEiABEuggMHFi0NfSkn+xEiqIHQFsXlA9Omw/zD87hRJPRjLEolfXTtt+mM+5iwRSnsDo0YtO8Pt9U7Cux3Vw9vg4OkwFJI5wWfQnCTAB+SQPviMBEiABzxIIBJYNkFLMQvJxNZw4xrOOfNJwFz9Uta6rKqTMeZFqyCfh8F3qEtCqx6YtWydaWNcDXpZgi7fqwQQkdS8n4zxjAmJcSGgQCZAACXSPgFY9mpvzLsDQ8gooBkU428uqR1fON8C3py1Lza+pmb61q4O4nwRSgUBJyfITw44zTQr5DfhzXIJ8YgKSINCsBiMTCYEESIAESMC7BIqKFp7kCt8MNM6vgRfHeteTqCzXM2O9qiwxt21X0/P19cH2qM7iQSTgEQKdXShzzneFFUQDrRhmx1v1OJAME5ADafDvuBIwbSrGuDrLwkmABEggVQjo7hljxy6+WCnfT5F8TIFfqZ586NDp36wC6YrH+/TJu3fM2cuG6p18kUAqENAPE5p35c1Xwvohkg8ONE+FoNKHLglQAekSDT8gARIgATMJJKl7hmkwtBpSjy4qlQ0N9i83bSrl2gWmRYj2REXAoC6UVECiihgPigUBKiCxoMgySIAESCABBLTqUVC05MKI4z6Lhvc0VJmovuEJ8K7bVejfr1EYcP9Yv36RBwOBhcO7XQJPIIEkE9DTZWPWukXoEP9DKJlnw5xUHL+VZMqs3kQCVEBMjAptIgESIIGDCHRMxZnpm4Y1Pa7FR+mceBxEpuMt1mUTryEpuycnp/Fnq1cHWw93EPeRgCkEOhcJ3X2RYdNlUwEx5QJJAzuogKRBkOkiCZCAdwl0jvVYNtGfaf8Eycd0eMLk49Bw6odpI9GYe6SpJe+R4uIlp2MhQz5gO5QT9xhA4KxxSwcJa9diXK9PwRw90JyqhwFxoQmJJcAbdGJ5szYSIAESiJpAQcHK4207MgWP97+Jk+K5AFnUNnngQK2GvC6Fmuf3y1Vr107b4wGbaWIaENCqh1Itn7MsWY6LtAAum5Z4UAFJg+vQFBepgJgSCdpBAiRAAnsJaNWjqGjpebYd/gkaKrOwm8lH9FeHfrD2KSXkA21h8d3CwmWfphoSPTweGR8CJSUrByu5a6m05JP4To9FLaYlH/FxnKWSQBcEqIB0AYa7SYAESCAZBAKBxccJy5qMuq/HoNQTkmFDCtWJXi5ik5Ryfnt75McbNszclUK+0RUPEBg5MpiBKaMvQ9JRBnPPwmZy4kEFxAPXVKqYSAUkVSJJP0iABDxOIGgVFi79rJDWKjSaZzP5iEk4MS5dnIYs5F5/hv29sWNXfIZqSEy4spAoCAQCK07O6pu/HMnH93F4ITaTk48oPOIhJBA7AlRAYseSJZEACZBAjwgUF993rKPaJmPc9PUo4MQeFcKTjkYA7UD5FgbyL25tzXyqvv7mlqOdwM9JoCcEtOqRmZ33eSyYOQfna9XDKw97qYD0JOA8p0cEvPKl6JFzPIkESIAEzCYQtIqKlox3VPszSD5ug61MPuIXMDxwU8OhiCzLymp7oqB4CRqGnCkrfrjTs+SCgsWnoMvVvUg+HgcBPdCc7az0vBTo9VEIUAE5CiB+TAIkQALxIDBu3NJj2sLyVszWdCPKPykedbDMIxBQYouUYklmZvj7a9bMbj7CkfyIBI5KYMSIlZn9+jlXKKXuQpI7Cid4MfGgAnLUSPOAWBFgAhIrkiyHBEiABKIioFWP3LOVkpXoE3QuTvFHdRoPigeBVjQWX1KOG6ytbakTIujGoxKWmdoEiosXDXOUdQcEtavgaZ6HvWUC4uHgec10n9cMpr0kQAIk4FUCo0bN65+RkXmzq8RN8GGAV/1IIbuzMNj/36RljQ4EclcIMf+xUOi2xhTyj67EkYBWPfL6R77ouOIuVDMSmxdVjzgSYtEk0DUBKiBds+EnJEACJBAjAnqGq9xiNHQrMe7gPBSaEaOCWUzsCLTjB/EPKK583bqmdVRDYgc2FUsqKlp2qqPcOzHN2iT4l5siPlIBSZFAesENKiBeiBJtJAES8CwBrXpkZmbcpIQF1UMN9KwjqW94BrrEXQpFZFQgkHdfe/u8hzduvP3j1HebHnaHwMSJwazm5rwrXaXuQPKBRS6penSHH48lgX0EqIDsI8H/SYAESCCmBPRYj34BVzhz0Tf8fBRN1SOmfONaWDum7P2jJd1gTU3zK1RD4sraM4UHAguHY8gWBpmr/4TROZ4xPHpDqYBEz4pH9pIAFZBeAuTpJEACJHAwgTFjlvWzbXWjq9yb0ZAdfPDnfG88ASSL6mJXyc9ADXnAtu97sLr6ln8abzUNjAsBrXq0tORPwgxXtyH5+BQq4ViPuJBmoelEgApIOkWbvpIACcSZQKfqoZSrZ7i6AJVR9Ygz8QQUH0Ydf1GuKB8+fPDLq1Zd5SSgTlZhCIExJStOsxxnDhpLV8KkbEPMipcZVEDiRZblHkKACcghSLiDBEiABLpPIBCYn69kxvW4qZbibKoe3Udo+hnvY8re77gR38q6utIPTTeW9vWOANbp6RMOq0lKyNtR0hnY0qG9xASkd5cNz+4GAbsbx/JQEiABEiCBQwgoiRmuAtLy3YsWynX4+JhDDuGOVCCg+/yPl7Y7fuCAS7acccb4bVu2rOa6IakQ2U/4oOTYsf3PcJRagpxjOj7SE0ekQ/KhKWy3LOvJ7dtfaNNv+CKBeBJIly9VPBmybBIggTQloFUPYWV+UyilVY8haYohHd3+EE3Sx3yWtbyqasr76QggFX0OBB7uq6xd/yWVuA3+nYYt3dpIVEBS8cI21CcqIIYGhmaRAAmYTEA/Jc0rEFA9MG3rN2EpVQ+TwxV72/RYgHF4Sn7OoIEXbz399PHvUA2JPeTElahVzH6fllbbEkytOw31noQt3ZIPjZsKiKbAV0IIpOMXLCFgWQkJkEBqEpgwYUFuW5v/OgwynwwPT0lNL+lVNwh8hKbq991IeGld3ex3u3EeDzWAQKfq0fJV6cqZiOMImJTO7SIqIAZck+liAhWQdIk0/SQBEuglASWxrseY9oh9Lwq6AduxvSyQp6cGgb5wo0Ra9rmDBl66fcCAK9/eseNXHBtifGyVLCjJPVO6kWVQPSYj7TgRJqdz8qEjRgXE+Os2dQxM9y9b6kSSnpAACcSNgFY99rT5rkVDZQoqoeoRN9KeL3gnmrBP+Szfoqqq0m2e9yZFHRg9elG2329dLaSFQebqVLjJtlBnrKmApOg1b6JbVEBMjAptIgESMISA7hvef7TjypVIPm6EUccZYhjNMJNAH5hV5Ao1ccCgz+0YOODKzVRDTAqUHrt1zGcsWywXUt4Cy07AxuTjXyGiAvIvFvwrzgT4xYszYBZPAiTgTQIjR96fk5XV/nWsfDwVHgzzphe0OokEGjBBwdNC2AtCocnvJNEOVg0CHd/nvm1XIyZ6al39fWb759ArgwrIoUy4J04EqIDECSyLJQES8CqBzqekPl94JZooN8GL473qCe1OKoEsXD8BJLAXDBj8uQ+O6TfurQ8/XM1V1BMekk4V0++PrEDVN2PT32cmH4ePAxWQw3Ph3jgQ4JcwDlBZJAmQgDcJdPQNz7T/l09JvRk/g61uRCKyypbut6urZ2422M6UMk2P3Wptzbhmr4o5FM6xzXPkCFMBOTIffhpDAlRAYgiTRZEACXiVgJ7hKn+kZVvL4cGt2PiU1KuhNNPuLLR9xyhlXYhV1D/Kzv63N3fufIFqSNxi1TljXThiaRXzW/w+Rw2aCkjUqHhgbwnwaUBvCfJ8EiABTxPonBHH/h8MSp3BGXE8HUqvGN8slHxWKXVPbe20TV4x2it2lpSszHOcyLVcp6dHEaMC0iNsPKknBKiA9IQazyEBEkgBAp2rH9u2XIanpKVwiDPipEBUPeBCJq63s/D076KBAz/XcMYZ4/6BVdQjHrDbcBP12K28AiR29yL54Do9PYsWFZCeceNZPSBABaQH0HgKCZCAtwnsX/1YyVnwZDg23gu9HVKvWt+CC+85Iay7162b/AYuQ7Sd+eougUBgfr6wMr8plNLdJ0/u7vk8fj8BKiD7UfCPeBPgj268CbN8EiABowgUFi77tGWJciXUF2CYXreBLxJIJgGddLwhhfq2Ujk/CYVu2J1MY7xVd9AqLMwpkJZVAbsvwpbpLfuNs5YJiHEhSV2DfKnrGj0jARIggX8RGDduaZ9wWP43Eo/ZaPGdhk/4AOZfePhX8gjo6/AMJeQDUu6+vKBkcWVd1fS/UQ05ckDGjFnWz7bdGzB2S0+tO+TIR/NTEiAB0wjwB9i0iNAeEiCBmBMYO3b5GUq6ZZhe90sovG/MK2CBJBAbAsiPBQamy4XhcOSHGzbM3BWbYlOplKBVVNQvoJRbiQcJF8CzjFTyLsm+UAFJcgDSqXomIOkUbfpKAmlGQKsebRHxZfSsnw3XT8fGe16aXQMedXcP7H4eyUhlKDT1r1RDOqPYqXqoG/Et1qrHYI/G1mSzmYCYHJ0Us40/xikWULpDAiTQSWBMyYrTfI5Thqek/4492eRCAh4joMeGbMbA6sWtrVlP1tff3OIx+2NobtAKBPoVCelWotCJ2Kh6xJDuAUUxATkABv+MLwEmIPHly9JJgAQSTGDixGBWS0vuVehTfzuqPgMb73MJjgGriymBVpT2oiVlsKZmyqvppoaMGjWvf2Zmxk1KWDdhnZ6BMSXLwg4mwATkYCJ8HzcC/GGOG1oWTAIkkGgCWvWwHGcObmxXom6qHokOAOuLHwEltiD5WOrz2d+vqiptil9FppSsx3rknu0qK4jE4zxYRdUj/qFhAhJ/xqxhLwEmILwUSIAEPE9Aqx7NzXk66bgTesen8T/vbZ6PKh04DIE27HtJuW55bW1LnRBB9zDHeH4Xxm4d0xaWt2JqYr2g4ADPO+QdB5iAeCdWnrfU8rwHdIAESCCtCQQCC4c3N+c/iJTjYWxnAgaTj7S+IlLaeb3Oxeex7sXPAkX50zoW4Espd4PW2LHLJoTD4hkkH3fCNSYfKRVfOkMC/yLAdUD+xYJ/kQAJeIjAftVDijvQRUOrHnyg4qH40dReERiCwen3SJlxYSCwPBgKNdR4XQ0JBBYfJyxZqpT6Jsic1Cs6PJkESMB4ArbxFtJAEiABEjiIQHHxomF72rIWSClvw0d6Ok6qHgcx4tuUJ6B/v0cg+b5s4MBM/3HHTaz/4IPf6wHrnnpNmvSMnZU17hxpyQfxNf4KjM/3lAOpZex2y7Ke3L79Bd3Vjy8SiCsB/mjHFS8LJwESiCWBESNWZub1j3wR63rchXJHYqPqEUvALMurBML4Mf+TlKqspqb5Fa+oIQUFK4+XtjMZ3a2uA/gTvQo/hezmGJAUCqbprrALlukRon0kQAIdBLTq4biRO7E421XYkUssJEAC+wn4sWjIhUrJMwvH5j/ss+67r7r6ln/u/9SwP7Tq8dZbW8+VMhzEdNnjYR7bIobFiOaQQLwJ8Esfb8IsnwRIoFcERo4MZvTpk/8Fx1VlKIiqR69o8uQUJzAAasJdjts+saBoefmIoQPXrFp1lWOaz6+//vaxGRn2LCRNn4Vt7IlhRoCahJLP9+mzc7cZ5tCKVCfAMSCpHmH6RwIeJlBQsPiUjIyseWio6BlxTsbGxoqH40nTE0JAd0scikTk8o8bm/JOOvHzf33vvReMalS+//5vdw8evGYNGrx+fKX1zHVc4yMhl8ZhK8HtVbyqXHVLU5Pvydra2eHDHsWdJBBjAvwxjzFQFkcCJNB7Ap2qR+4V6FIyBynHKJTIsR69x8oS0o9ABA38V5QryvPyGv+0enUQ78156ZnsmnbnXSZdUQGrPoONbZLEhqdZCvmY4zjL6+pmvJ3YqllbuhPglz3drwD6TwKGEQgEVpyspHsHnuD+N0zLM8w8mkMCXiTwIZr2j1kisqKmZtZ7pjmg1/LBMJDZsFHPgpVtmn0paI9WPf6qLCSmfZteQGLqudnTUjAmaecSE5C0CzkdJgEzCWjVIysr/3KBmXxg4VnYqHqYF6oWmJSFjeMHzYvN0Sxy8INfrZQI5uY2/cE0NQSrn/dpi4grMMNdEI58ChvbJ0eLaM8+3yWkfAI318U1NVPf6lkRPIsEek+AY0B6z5AlkAAJ9JJAUdGSIba/zz1Y02AOihqKjY2PXjKN8el6IPOflGuVSku9g791d5k+Ma6DxcWXgE7oh+CbdXl7e9bxJ514AcaGvNQc3yqjL33bthcjO979zWtDBq/9HWbG0srnGdgwRoSvGBHQqsfflRRTM33i3qqqaR/GqFwWQwI9IsAf+R5h40kkQAKxIBAIPOyXsuUyNDjKUd4YbFQ9YgE2tmV8iJbL8ki78+iGDTM/0DFzrZZzpZKV+AE5mzGLLewElaYTyhC6OVYolfO7UOgGowYejx69KNvvt7+IZEnfF05PEJNUrmYPnHvase0F66tKN+H5jk5G+CKBpBJgApJU/KycBNKXQEnJysFhJzIbN6GvgUK/9CVhrOcuGoBrkBHOyc5uWnNwl51AYNkAYambsC7LTfDgGGO9oGFdE5DyY6Hcp3y2f2FVVem2rg9MxidKFhYu/5S01V24xq6EBbrrH1/dJ/AG+FVgaM1zSDSNmg2t+67wjFQiwAQklaJJX0jAAwT0E3SlWj5nWbIcj+EKYDK7gpoXt48wRepKn08+UlU15f2uzNOxFKLlHGHJCjRy9IJyjGVXsMzd78K09VoN2bOn+Tf19cF2k0wdOfL+nKystv/AuAV0z1QYrM5XlAQwsFw+I5QzLxSa/jpVjyip8bCEEWACkjDUrIgESOCscUsH+cIKs91YXxNK9ScR4wh0qB7oXlWmVN810XbNKSpaeJJS9o3oSncLPDrWOK9oUDQEGnDQj1zHnW/elKxKFhUtOxMXZznuG1+EnVw35IgRlW+C09xw2PkJuk3uOuKh/JAEkkSACUiSwLNaEkgnAp1jPXZfpIQKwu8ANj4pN+8C2IkEYqXflg8dSfXoymys6eBrack/R0lVSTWkK0rG73cRu43KkpVtuxt/ZZoagm6beZGIcxWUkDvRPXCo8TQTb2Ab1vV4Tko1t6am6W9CBLW6xRcJGEmACYiRYaFRJJA6BAoKFgy07YyZSD6uhlccK2BeaF10hXsFiUOZ5eb8KVrVoys3SkqWnxh21I3o0qPVkOO6Oo77jSbQBOtW2ZZzT3X1zM1mWRq0CopzR1kO1BApPg/bqIboACmxRUpxd2Zm+Jk1a2YbM7uZWdcOrTGJABMQk6JBW0gghQjoJ+JNu/IuwnwrFXCLqoeZsd2JROFeKZ2HYrlAnY59465+4y3l6th/FhsVLzPjfySr8PRcvYZpW+9u+tj/3KZNpW1HOjjRnwUC8/OFlfFVNLxvQ91DEl2/QfW14wHCL5Wl5tZVN2+k6mFQZGjKEQkwATkiHn5IAiTQEwJ6TIArfDPQOPg6zqfq0ROI8T3Hxc2/ypFqTixUj65MxXSqJ2A61evxpLoUxxzf1XHcbzSBZkxI8KxS6p7a2mmYwtWkV9AqLMwpkLYVxL3mc7As3dYN2YqxHvOECD8dCt3WaFJkaAsJHI0AE5CjEeLnJEACURPQT76bm/MuwGoeelakIpzIJ99R00vQgXrqVaHudyPhB+vqZr8b71o7lLCmvHHSEpWoi2pIvIHHp3w8ZNeL2Ml7Mn3qp2vXTtPrShjzGjVqXv+MjIz/weQWs3FtDzTGsPgZEkbj7TdKyWAo1Lieqkf8QLPk+BFgAhI/tiyZBNKKgO77H3HdmUg8roHjx6aV895wVg9IrUF8ylpbm1YneoCxVkN8GfZ16Kc+GTac4A1ktPIgAi1Qs34hlVW5bt3kN0ya2nXSpGfszZu36a6eFciWLsL/voNsT5G38l18f+Y7jnhy/fqpeuYyvkjAkwSYgHgybDSaBMwhoH/4N23ZOtFSWAuic2Vsqh7mhKfTEqgeSokHlNP+QCJUj67c72wkbj9770xZ5+K4FG0kdkUgJfZrNeQNxHC+dHOeMW1xu+Li+451VPjr6Jo0HXaelBLEO52IAPzvsDBocNiwwaFVq65yUsg3upKGBJiApGHQ6TIJxIpA54xHzjRM/fgNlMkZj2IFNnblYIYrFRKuPaetreH/Eq16dOVGQcHK4y0rci2epk/BMSd2dRz3G01gN773v3Rsp7KuajqmfMV0E4a8dKK7ZcvWEnRRqoRR58Esrye670H1WJyRIR5H97edhmCmGSTQKwJMQHqFjyeTQHoS0D/wb765/TxpYc0HIUqwef0HPhUD2YAG/kM+y3d/VVXpNtMc3KeGoM++7jKTCo1E0xAnwh6ETrwJNWRhpM192rRF73Sia9vh67G+zWTY6cVJEBw00lZjXY+yoUOHVFH1SMQlzToSRYAJSKJIsx4SSBECnU+vnal44HkdXPLij3qKRKJLNzpVDynL2nY3/cEU1aMrawOBxccpaX0dP0bTcEwqdZnpyuVU3L8H8XvBda2K2trJmArWHDVk35TQUrmVsPEcwPdKF9EPoXosFcJ9NBSa8VEqXjT0Kb0JMAFJ7/jTexKImsDeJ9aYxcjFE2s5HidS9YiaXsIObESXq4f9tv9eE1WPrijoa2vT29uLLVevGaPO57XVFSmj92s1ZAvGXizKyoo8ZdpieLq7qOM438K9Sy+QafIkGXph0D8jKS/Lz254efXqYMToqNM4EughASYgPQTH00ggnQh0dmWITMGiZNdxBiMjI492lawVrihvbLRfMm3RuGiJaTVEWPY1KTiAOFoEqXBcKy7G39pSlNfUTHnVNDWkqSn/XIFF+9D4ORuwMabbqNc/sebKinA48jC6s31glGU0hgRiTIAJSIyBsjgSSC0CeqGvvAn4mdY/2BPgG1UP8wLciAb7dyxLrKypmb7VPPO6Z1Hn+KKtRdIWQTTGLsDZ6ba4XPeAmXv02xiDtAxjkB6HGtdkkpmBwLIBsOdW3NduxHenvwG2adXjFeHKOVL2/TNmFgsbYBNNIIG4EmACEle8LJwEvEug82m0LEUj8Hp4wZmKzAul7vJSh/iUeVn16Aqrnk7VdduvxtP0GeiWlQ6Ly3WFwsv722D8S64lgnXVTbVCBPVaNEa8Ro4MZmRl5U1EkqQn0tCLpiZHDelYGNS9T7jWg6HQ1B1GwKERJJAAAkxAEgCZVZCAtwh0qh57V67WqgefQJsXwCZkH48px11RVzfjbfPMi41FneOO9i8udyGvxdhwTUIpW9FFcKUTFo+atnheScnKwZFIeDLs+ya45CeQjU7G1qFL65xkLAyaQD9ZFQkclgATkMNi4U4SSE8C48YtPSYcVqV46nwjCFD1MO8y0KrHq1Ko8oYG/4teHevRXayd16X4X6oh3SVn1PHtsGa1clV5bW1ztXlqSP7FmLxLqyFjsMVbDWmE8vJgxCfue3XttO1GRYnGkECCCDABSRBoVkMCZhMIWkVFuWfvXbhLr1BN1cO8gDVj4bfHMJPP8lRWPbrCrtWQLVveLXSVW45jLuE12hUpw/crsR2TWTyQ6RcPmbaoXiCw4mQhI+jyJ68Bxdw4kEQOLWsxJXDZnj3NL5k+RXYc/GeRJLCfABOQ/Sj4BwmkJwH9dLktLG/FU3WtenAdBvMuA616bMRYDz3D1Qvponp0FYZRo+b1z8jI+B80EmfhKfKgro7jfqMJhNH4+BNiWD5s2KBXTFpgD+uGZLW05F6iH8bg+hoNirFqJzXji/yoVPbyUGjyO0ZHh8aRQAIIxOqLlQBTWQUJkEBsCeixHrnFwpJ6hqvzUDZVj9gCjkVpLRiA/bhtucuqq2dujkWBqVFG0CoozivEuiFB+EM1xLtBfQ+SwEM+y39fdfUt/zTJjeLiRcMc154Fm5Dsiuxe2IalecQGvZp5OnWb7AUvnpomBJiApEmg6SYJHEhAP0XOzMy4SQnrJs4wdCAZY/7uUD0UZg/K69v0AhYjazXGMoMM6VRDsr6Gvvu6oTjYINNoSvQEIrjY1+h1Q4YOHfwXk9QQqMN9MCbuciRJFXDnTGzdbTO1wLfv+SxnKR8gRH9B8Mj0INDdL1N6UKGXJJCyBIJWINCvSEi3Ei5OxJaRsq5617Fd6A73Pctyl1RXz9iCNo9ORvjqkoC+pvPHYFxBObhdhsOo5HXJyuAPpPgA3Z6+E2mPrDRrET4lCwuXDcfihbdjDNaXQbBvFBT1d/Y1PVlETk7z83yAEAUxHpJ2BJiApF3I6XC6EhgzZlk/2+9+SyjrFqoeRl4FaLSoetyUg2y0dD8+nde3+gq6u9yGs4d0vwSeYQCBCBLuV1zpBvOzm/+Ihjvem/EKBB7uK+WuL+BLWg6LzsDWVftpN67BHwgRWRAKzXyLDxDMiB+tMI9AV18g8yylRSRAAj0koGe46hdQyq3Ej+cFKISqRw9JxvG0XZgd5wnhhpew0dIbyp9QQy7ltd4blkk990M0Tr4nZWRpTc2s95JqyScqV3Ls2BWnu8K9E/ZNwkdZn/hYiL9jf4XfL36OGb72HPQZ35IACRxAgAnIATD4JwmkGoGOp8I2ZreS4mb4xj7y5gUYOaHuqiGDfr96no2W2ARo73X/ZVz3Wg05JTalspQEE3DQQKl2XatCyj5/CIVuCCe4/i6rGz16UXZGhu9KpdQcXGOn4cA9sPVHlqXmV1dP+wdVjy7R8QMS2E+ACch+FPyDBFKJgJIFxcsC0hWV+JLrFaSpepgX3o6uGkqJhbW1U99koyXWAdLKX/5o11VlaCR+nt+BWPNNWHk7kaV/XznhxXV1s99NWK1HrUjJoqJlZ7qumIwZrv7S3u4+i7Eru456Gg8gARLoIMAEhBcCCaQYgUBgfr6SGdfjy30rXGNfePPiq1WPv2PQdDDTJ35J1SO+AdLfByn9X8ZMRrejJqoh8cUdr9IdzGWLBfysCowB/61JasjIkcGM+nqBsSpBN17Os1wSSEUCTEBSMar0KU0JKBkILC/ApEl6hquLsGWmKQiT3e5QPRyfvWh9Vekmqh6JCpVeNyR3lO3KMmR//4ZaqQgmCn0s65HyY3R7+oEt1cKamulbY1k0yyIBEkgsASYgieXN2kggLgRKSlbmRSKRb6KryWRUQNUjLpR7VahWPd7ADRdjPThAtVcke3GyVkOQl09Ckn4HihnWi6J4avIIaKVhPb5LlXv2NL1QXx9sT54prJkESKCnBOyensjzSIAETCCg+yH3G+O67r1IPq6HRceYYBVt+AQBPUD1KdtSN9fUTPvTtm3jjRlM+wkr0+DNjh0vte3YMW79wAGZv8f35Xi4PBybLw1cTyUX8XUSA7BdavuzTj7pxIs3vvfebxtTyUH6QgLpQEB/kfkiARLwIIEJExbk7mnzXYsZlKbAfPZtNzOGr2NNAHSJy34O/dZ3m2lielqlVUPHiUyCNHUnCAxLTwqe99rF92ujlPLuhgb7l5s2lbZ53iM6QAJpQoAJSJoEmm6mEgE9w9XS0dK1MMOV+hw841gP88LbMS2nENaCdesmv8GxHuYFqNMivW5I3kj8fRcUkS/if36XTA3Vke1qwserLCm/XVMzFYv/8UUCJGA6ASYgpkeI9pHAAQRGjrw/Jyur/etYMXsaGkxDD/iIf5pCQIl/KEtVRtrcn3FaTlOCcmQ7OtTEdt9/YJalu/Dd0t2y+PIeAT025G9o1Nydk9P0HFZRb/WeC7SYBNKHABOQ9Ik1PfU0ASULC1eMktINIvG4DK4cvAKvp71LEePR4JHPCOXMC4Wmv07Vw2tR7VzXQSk5B1O+fgnWUw3xWgg77W3Gd+9njm3dvb5qMhYF5IsESMBEAkxATIwKbSKBAwho1aNPn7Zr0Fd9GnYPxcbv7QF8jPgTqgf6oc9tb4/8lKqHERHpsRFUQ3qMzqQT9axzWGtHfTvTJ5/lWjsmhYa2kEAnATZkeCWQgLEElBw7duVIVzhBfFH1Ss5UPcyLVSvSwZ+6lntPXdX0v1H1MC9APbMI46xKlnzacq07Mcj5Sn73ekbRgLN24fv5c+G6c6lKGhANmkACBxBgAnIADP5JAqYQGD16Ubbfb10tpDUdfdJPhV38rpoSnP12yDeVdO9u2531k/r6m1v27+YfKUOgU31s/3csfjcH38DTUsax9HJEqyH/UFLMl272jzkbXXoFn96aS4CNGnNjQ8vSkkBnP3RXiSDc16pHn7TEYLbTHaqHJQRm3GmC6hHUg1/5SlkCevzV8k9h/NWdQsr/gJtUIr0Z691Qs35lWaISM2W9RrXSm0Gk1alDgAlI6sSSnnicQCDwcF9ltXxVKjkLruiZePj9NC+mm/EkdW7b7sxVVD3MC048LdJqSGbf1i/h+zkH9Wg1hN/PeAKPT9lQQ+RbUC4XYJa6pzleKz6QWSoJREOAN9BoKPEYEogrgX1PWFUQTZorUBVVj7jy7lHhe9By+blU4tuhUFM9VY8eMUyBk/S4rBWnY5asO9A1chIc4nfVm1HdAzXkN0pZwdrayRuRlOhuWnyRAAkkkAATkATCZlUkcDABqh4HEzHzPVonf5Qqcm0oNOtNMy2kVYkk0DlGy/4iHhiUod7TsfG3NJEBiF1dm5WQS/pktj+xZs1sTN/LFwmQQKII2ImqiPWQAAkcSEA/Se1/hpBtS6WQU/HJidjYiDkQkUF/IzADlbQKBw28dMvpp4/btmXLao77MCg+iTbl/fd/F96x4zd/HTSw+neoOx+bTkL8ibaD9fWaQH98ty8IO76zBg285PV33x3/gRCrqYb0GisLIIGjE2CD5+iMeAQJxJTAuHFL+7RFxJch+t+GgtmXPKZ041yYFB8IVz7m88kVVVVT3o9zbSzeAwS0GpKRYV+BVqtWQz6Fjb+rHojbYUx8B13rlvlt/3erqkqbDvM5d5EACcSQAG+UMYTJokjgaATGjl1+BgZAlqH/sV5pue/RjufnRhJwcOOsFsItz8lp+b/Vq4MRI62kUQkkoOSYkpUjfI5zOxKR/0LF/G4nkH4Mq2pD/P5gS6u8pqYhxLFeMSTLokjgIAJMQA4CwrckEA8CWvUIh9Uk9DfG4FX2GY8H4ySU+U887P6+67Qvqaub/W4S6meVhhHYO6brCunKMuggn4Z5/I01LEZRmrMNXWPvjUTEI+vXT22I8hweRgIk0A0CvDl2AxYPJYGeEBhTsuI0y3Hm4MumV1TO7kkZPMdYAg4sCwklK/HQ+7dY5CxsrKU0LEEEOtUQy4nchkasVkP4nU8Q+RhX047yVitXldfWNkPx5Ho/MebL4tKcABOQNL8A6H78CEycGMxqacmH6qFuRy3sGx4/1MkvWcqPsVr2D2ypFtbUTN+afINoQbIJaDVEyt2X4/sfhC1nYuPvbbKD0qP65btSuA/4/fLBtWun7exRETyJBEjgEAK8IR6ChDtIoPcEAoGFw4X0Y1Cq0isn8wlo75F6oQQ9M9arWg1pbW38dX19UD9B5SutCSgZCCw6VQjfbKQfXwEK3gu8eT2EEb8/C9ctP/XUk9euWnWVVj75IgES6AUBJiC9gMdTSeBgAlr1aG7O012t7sQPllY9rIOP4fuUJ9CIG+uPLcuZX109c3PKe0sHj0qgcwyY/LzCxAUQQkbiBP72HpWakQe8J4V6GGrnfaHQjI+MtJBGkYBHCPAm6JFA0UzzCXSoHsJ/FxbV/U9Ym2O+xbQwjgS0GlIvlJrb2Oj/xaZNpW1xrItFe4JApxoipW8WZlrSagjvEZ6I2yFGRpCEvIxnS+XDhg36M9WQQ/hwBwlERYAJSFSYeBAJdE1gxIiVmXn9w1+SSs7BUXrmG6oeXeNKt0+a0SXrWTwxvae2dtqmdHOe/h5KoGMdIEdcKl0RxKejsPF3+FBM5u/BmkBYy+nR9nZnxYYNMz8w32BaSAJmEeCNz6x40BqPESguXjTMce07YfZV2HI9Zj7NTQwBPPAWf1dS3pPpUz/FQNY9iamWtZhLQMmiouXDXKVmwsavYaMaYm6wjmSZHgvyiitVeX528x+5JtCRUPEzEvgkASYgn+TBdyQQFYFO1SPyRTwBuwsn6D7dVD2iIpfWB7XgWfcvMJB1big0/XU8+NaJCV9pTECPGWvanXcZ1RDPXwQfoTH1uJSRpTU1s97zvDd0gAQSQIAJSAIgs4rUIjDm7GVDbce9E11r9Bz/VD1SK7zx9kYnHf9QUsyXbvaPsW7I7nhXyPLNJ6CVVNe1pmOh0qthLe8p5ofscBY6eMBQgy94Bb7bv+eaQIdDxH0k8C8CTED+xYJ/kcARCYwcGczo0yf3CqXHesiOvttUPY5IjB8egcBuIeXzUlmV69aV1lMNOQKpNPmoc92g3EuQhFTA5bOw8ffZm7HfiQUonwj71eJX107b7k0XaDUJxJ8Ab3DxZ8waUoBAQcHiU2zbugNPt74Md/JSwCW6kHwCuJzkW5gpa3Fra+ZT9fU3tyTfJFqQbAJaYbUiajp+nP8XtlANSXZAela/g/jV4WFVUIi+v6Ua0jOIPCu1CTABSe340rteEtCqR2bf/H+Triqj6tFLmDy9KwIYlK5etKRVUVMz5VWqIV1hSp/9B6ghQXit1RCqrV4Mv5QfS+U+LaVYUFMzfasXXaDNJBAvAkxA4kWW5XqeQFHRkiGusG7HE2o9Z3++5x2iA2YTUGILko+lPp/9/aqq0iazjfWedZMmPWO/9tqHferrb9rllSQvEFhxshDONDz8+DqIU3n13mWnLdZrAr2KMYOVra2Nv66vD7Z70w1aTQKxJcAEJLY8WVoKENCqR1ZW/uWYpKgM7vDpYwrE1EMu6AULX3ItEayrbqoVIqgbL3z1kkAgMD9fyswblFCXoiG40ksNQT3jXn6+cxE0kAo8DCkACqohvbweknR6IxpcP4745Lz1r0zdkiQbWC0JGEOACYgxoaAhJhAoKVk5OBKJ3I4njl+FPVQ9TAhKetqwFYPUVzph8ej69VMb0hNBLLxWsrBwSaG0rAqUdhG2TGwNGOj9Y+U48+rqZrwdi1oSUYZWQ6R0pyKJ+gbqoxqSCOixr0M/UPgrBqnPbWiwf7lpU6l+4MAXCaQlASYgaRl2On0wgUDgYb+ydl2KH4ZyPmU8mA7fJ4mA7qqxWrmqvLa2uZpqSPeioFUPJTOux4/crThzyEFnu0KJjcoWFW27mp73SrcYrYb06xe+EK3YIO5VAfhENeSgwHrkbROuy2eVitwTCs160yM200wSiCkBJiAxxcnCvEhAqx5hJzIbXwa9InE/L/pAm1OZgHwXSfGDGRniAayivjOVPY2Nb0GrqKhfwFFuBb7TF6LMjCOU29EtxrKc+dXVMzcf4TijPuoYn+aKUqhk34RhVGqNik7UxmAWPPEartG7c3KansMq6q1Rn8kDSSAFCDABSYEg0oWeEdCqhxC7L5FSBfFLoPtW2z0riWeRQNwJhFHDX5QryocPH/zyqlVXOXGv0YMVjBmzrJ9tuzegYX4LzB8cpQu6W0w9FIVKL3WL6ZyhL+8CJKeVVEOijLSZh7Xg9+dnrm3PXV9VuskrEySYiZJWeYkAExAvRYu2xoxAQcGCgZblnyUsrDysVP+YFcyCSCC+BN7H+KTvuBHfyrq60g/jW5WXSu+W6tGVY3rmsVW25dzjJTWkc9xaeDKSrutgPxXcrqJr9n6thrwuhZrn98tVUDoxNTdfJJDaBJiApHZ86d1BBDC/vq+lJf9iDOQM4iPdh5qqx0GM+NZ4AhEkIWuVI4N5eY1/QteNiPEWx9HAHqoeXVkENUS9pqS4u+lj/3NeGSTcOXNf3kRcF5VwrAgbx4Z0FWGz92OKaPULrWqFQtNfpxpidrBoXe8IMAHpHT+e7SECgcCyAVgQahaSj6th9jEeMp2mksDhCHyIa/lxWzrLampmvXe4A1J7X6fqoZRbicfHF8DXI4316C6KZkzX+6wQ4bu9NEj4rHFLB/kiAt3P5A1UdrsbcmOOx9dabJJSzleq74+wivpuYyyjISQQQwJMQGIIk0WZSUCrHs3N6CvdMY9+x9NBqh5mhopWdZ+Ag6feNWiAV0g3+/dorOixIin/6lQ91I3w/WY4G+1Yj+5y0d1iPDdIWKshffrknKekVYmGbDF8oBrS3cibcbxOPH4thV2xbl1pPdUQM4JCK2JHgAlI7FiyJAMJFBUtPMkVvhn4Ib4G5h1roIk0iQRiQWAnBiI/Efarxa+unbY9FgWaWUZcVY+uXD5gkPDkf3R1kGn7O9SQdnkzFlS9AbZR8TUtQNHZgyRYviWFu2jPnqwf1Nff3BLdaTyKBMwnwATE/BjRwh4Q6BzrkXM+Hv5V4A6unwJS9egBR57iKQIObuh1rqsqpMx5MdXUkASpHl0FXKshf1dS3pOX3fisV6ZM1TP9uVbLuVJJzJQlzoYPVEO6irDZ+1vxEO0F11YVddXTNlANMTtYtC46AkxAouPEozxEoKRk+YmO405Hi+EbMJuqh4diR1NjQqABjZWnkXMvCIUmvxOTEpNaSFJUj648bsHYip9Lac9dt27yG15pCOrxb8JSN+G6uAmOUQ3pKrpm79djQ97GOMYlmZnh769ZM7vZbHNpHQkcmQATkCPz4aceIjBp0jP2pi1bJ1pKVsDsEmw+D5lPU0kglgT02hYblCUqvbTS98EAkqx6HGzOvvdaDXkDU6Z+20tTpu5TQ/beH7UaQlV4X0S99X8rxj69JFxZHgo1rhciqL/rfJGA5wgwAfFcyGjw4QiMHr3oBF+GNR394LXqcdzhjuE+EkhDAo14bPqsz3Lv9tLaFmhUdaxmHqcZrmJ1GXhyytTO2QDdG5ToWKyRCnGsrobEl/MOGnDLlWr/bih0W2Piq2eNJNA7AnwC0jt+PDvJBLTq0bfv+PMs23oIN+NJMCcnySaxehIwiUAWkvIByrXX7djx4t9NMqwrW7TqMWhQ5mQkTktwTCE2U3+nMO2v/AwWALxkwKBXWgYOuPKNHTt+ZfwsZLgOWk4/ffxf2tsyqrAQ66ngq2cRs7Dx5S0C+TB3opJ2YPCgy954992zMRX3aq3O8UUCniBABcQTYaKRhyNQULDyeMtypmKWF70C8PGHO4b7SCCNCehB6aulVGXZ2c3V5i9Y6AnVo6vLaTcSvV86tlNZVzX9b14ZG6JnCXSU/wZ0J7sVjlEN6Sq65u/fhrFJ97W3tz+ycePtH5tvLi0kAdwlCYEEvEZAqx5btmw7R2G1WHQjGA/7OdbDa0GkvfElIMUHwlVLsaryY6HQjI/iW1nvSzd0rEd3HetYQA4/qwvD4cgPN2yYiS5a5r86ZwzMP0cIFzMGygmw2FTFyXyYybWwHdfeH11LlNdVN1ZxbEhyg8Haj06ACcjRGfEIgwgEAouPE5Y1GSZdjxlBTjDINJpCAiYQcGDEn5UryvLymtZ6QfUIBPoVCcupwMrj58P2WK5mnqx47EHFz3ttATk9e2Ak4n4TjyVLYT8V5WRdPb2vdwd+Gx/IyBAPrF07bWfvi2MJJBAfAkxA4sOVpcacQNAqLMybIDGrD4rWT+n8Ma+CBZKAtwl8hIbHinDYeQRP3z8w3ZVRo+b1z8zMuEkJC1PDqoGm29tN+9AXX76lpLsg0uY+7SU1pHFXv/GWcivg72exUQ3pZuANOVyPRfoLHkSUDx8++OVVq67SDyb4IgGjCDABMSocNOZwBDpVD1mKJ6TX4/MTD3cM95FAGhPANJzyZdzM5yjVd435CxAGrQ7VQ7r6YcJEbKmgenR1+e1BXF5wXauitnbyRsTJE4OE9ayCfr99PdWQrsLqmf3v4aHEI67ru6+urvRDz1hNQ9OCABOQtAizV50MWmPH5o9Dx+q58AB9lKl6eDWStDtuBHZiAPG9UjoP1dTMwiw4Zr9SXPXoCr5OOjZjkPDi1tasJ+vrb27p6kCT9uuxIU1NeeOkLYJoxJ4L2zjWzqQARW9LBPeIl5USwdzc5j+b3y0zesd4pLcJMAHxdvxS1vpx45Ye0xaWt+LGeSOcPCllHaVjJNAzAi6eTldbQs5x3b5/pOrRM4gJPqsVDfkXXFtV1FVP2+AVNaRjtkFfGDMNyimwn+PuEnzRxLC6D9GL4FGfT66oqpryfgzLZVEk0CMCTEB6hI0nxY+Anooz92ylJGa46njqxrEe8YPNkr1JoAGzFd2vnPYH6upmv2u6C2mqenQdFiW2SCmWZGaGv79mzezmrg805xM98+DmzduxerrCTFniPFhGNcSc8HTHEgfxq7KEG8zJafk/qiHdQcdjY02ACUisibK8HhPQDZWMjKxb0E36WyhkQI8L4okkkJoEXHRHDGHhu7K23U1/qK8PYtpNk1964ojcYmnJClg5EVsqj/XobiBakUT+VjcE162btt5TaogVuRbq2xQ4zPF43Y26Ocdjwgr1Paw/uTQUmrrDHLNoSToRYAKSTtE21td9DRULg1KVfrrGhoqxsaJhSSLQiOTjYb/tv7eqqnRbkmyIulqqHlGjehuN+WU+y/c44toU9VlJPFCrIZve3l5suQKJpTofplANSWI8elG1nhlrnZIiKN3s35vfjbMXnvJUIwkwATEyLOljFBsq6RNretojAugxIerQd7ussdF+adOm0rYelZKwk/Y9TKDq0dDZK1AAAEAASURBVA3kOqYvKdctr61tqfPKAnJ6dkIlra+jETEN9nOcXjcCbtihO5EEPxXxiYWvrp223TDbaE4KE2ACksLBNds1PcNV3li0rvQMVxOxUfUwO2C0LvEEmvH9eFQqe3koNPmdxFffvRr5MKF7vA5z9Dv4QV6uVPt3Q6HbGg/zuXG7/qWGqCCMuwAb1RDjohSVQS6uvVr8Uwk15DdUQ6JixoN6SYAJSC8B8vTuExgzZlk/2+6Y3QrjPcSg7pfAM0ggpQmgt5XYIKUqa2jwv+gd1YNdKGNwVbYh6fyDLa3ympqGkJfUEGHZ12BcgVZDOH4vBhdCkopowL3naaw/ucALDz2SxIjVxogAE5AYgWQx0RDQM1z1Cyjl6hmu9NMyqh7RYOMx6UQAa0Sox23LXVZdPXOz6Y53ThyReTMGxmPiiJRbzTyZ+LeB6Qrhtn3HS2rIW2+9O1ZKN4j7+4WAxxkMk3kF9bxuLGwqNihLVLbtanre/Mkueu4oz0wuASYgyeWfNrVjZd1srKx7Kxym6pE2Uaej3SCANpuqR5/68rzsxl9jeszWbpybhEP3jfWg6hFH+O2YEfD/hGuXh0INNV5RQ/QaTu3t6hohrelMSuN4dcS/6CYkwT9ob229c+PG2z+Of3WsId0I2OnmMP1NDoGBA6/oJyz3esx/H4AFVnKsYK0kYCSBXbDqu0I5pbXrpq/dsuX8iJFW7jVKqx5DhmRPl5a1CA3MMdjN35H4BAxc5QgwvmzgwEz/ccdNrP/gg98bnpgKsW3bi3vOOee66oaGpj8hqx6Mp5xDeY3E5wKJc6k+dJH+wLb8L+zY8SKUWb5IILYEqIDElidLOwIBPfbD53P/C4sM3oYb29AjHMqPSCAdCKB9Jv6up8HM9Ilfrl07bY/ZTgetguL8kr3Tr54HW9mFMnEBw5ov8o+YKaustra52lNqSET8j3DFTI73S9zF0vua5LtKuIsy/fIJ3Jd29r48lkAChxJgAnIoE+6JK4GgFQjkjUQVd+EH6Qv4Pyuu1bFwEjCTwB6MNP+ha/vmr68q3WT6QnQd3Woi6D6pxI3AyUHGSbum5LtSuA/4/fJB7zQMdeKaV2gpUY7r5xKgY+KatOvnqBWH8VTkJXRRCA4bNji0atVVeq0QvkggLgSYgMQFKws9GoEJExbktrX5/h2rAd+JY0/DxmvxaND4eaoQeAMNsQohsp/DdJe7zXZKTxyRezZUSz1xxLmwlQOLkx8wBzfL3zmOe2Nd3Yy3k29OdBaMOXvZUDuivoujz4/uDB6VWALyXYw5WpjhE096J7lNLCHWFlsCnLM7tjxZWpQE1qyZ3Yy+zU+OHbuiSgh3Nho3V+HU7ChP52Ek4EUC6L8vn8FYj3mh0PTXvaJ6uFQ9TLvWPoBBv+3b1/FI1xgli4qWn+VGOtYKOds0mLRH7FU9VHDYUKoevB4SRwAPUvgigeQSCAQe7ivl7svRJaUMlnwGG6/L5IaEtcecgHwTayTMDYedn2zYMFMPOjf4RdXD0OBEcGN8CbaVe6V7zMiR9+dkZbV+A7f0qbirDzWUaxqbxbEeaRz8pLvOhl7SQ0ADOgkoWVy8eGjEtafhorwa+/JIhgRSgEAbGl7Pok/1t2tqmv5m+uBhPdajLSxvlULdAPYc62HOBfgeuu0tzsgQj3uje4yShYUrRuk1QXD9XwaMHOtnzrWkLeFYD7PikZbWMAFJy7Cb6/TEicGs5ub8C5V0y6WQnLLX3FDRsqMT2Iwb7D2ZmeFnOrscHv2E5B1B1SN57I9Ys56S+Q/KVeXDhw+p8cKgYL3mky/Ddw2SWKwDIoZiYzsDEMx5cayHObFIb0t4Y0jv+BvrfUnJysERN3IznvpdDyOPMdZQGkYChxLAlKniF7h2K0OhpnqqHocC4p6oCLyPheAW29L/eHX1Lf+M6oykHqTHeiw708EEC2hYfB6mUPVIajwOqTyMPb9DbCq80oXvEA+4I6UIMAFJqXCmljMYG+JXavdnpY3Bi0qMh3dc8Cy1QpyK3rytpPy237J/VFVV2mS2g1Q9DI2PnuVqNYSD8pycxqrVq4NGL0ypGWrVw++3rt67+vmp2MW2hQZjzKtT9WhvzXpi48abuKq5MXFJb0N4k0jv+HvC+5KS5Sc6jnMdGnalSERO8ITRNDLdCED1UL/GDbVy3brmVz2keuh1PU5Kt2AZ6y9WnhauWopr6bFQaMZHxtq53zA91mP5p6TEQyIprsDuPvs/4h8mEAgjLi9awqocOnRgrRe68JkAjTYkhgATkMRwZi29JDBp0jP2li1bS1wly1HU+di4HkEvmfL0mBHYhvVs5kvV9lQodFtjzEqNS0FUPeKCtfeF6gXf/qxcUZaX17TWC6qHnr1QWS1flUrOgu3DsbE90fvrIHYlKLEdIVnQ3t761MaNt1P1iB1ZlhQjArxhxAgki0kMgeLi+451VPvXoITMQI2DE1MrayGBwxLoeLqoHDc4fPjJ601/unjADFdUPQ4bzqTt/BDrIC2PtDuPYopmvcaH4S8lsX7T6Uo4eBgkvwRjqXqYFbGO+5IrRcWIUwbXmX5fMgsdrUkkASYgiaTNumJEIGgVFuYUSMuagwL1FI8ZMSqYxZBAlAT29aluQ59q058uUvWIMqiJPsyFZrAGUzTPyc5uWuMF1QNJbJ+2iPiyVOI2wDoNG9sQib5qjlQfVY8j0eFnhhHgzcOwgNCc6AkEAvPzleW/Cl0A9I+hHvjIFwnEm0BESPV74drlp546cJ3pTxepesT7cuhx+R8JJVf6fPKRqqop7/e4lASeWFy85HRHd4FVQqsefRNYNas6OgGqHkdnxCMMI8AExLCA0JzuEghaY8f2P9MVzp24mPUPI6d+7C5CHh8tgY7F4Gw743vmT4uqvxf54zCYuQLde86FgxwzFW2U43uci+LXCqWg3ub8JRS6QU+NavRLr83U0pJ7FcY53Q5Dz8DGdoNZEduGZHYhx3qYFRRac3QCvJEcnRGP8ACBkSPvz8nKavsCfhp1tyz+SHogZh4ysWNaVMz0UzZ06JAq01WPjnFSTnspvgt6DR3OcGXOhbYTi/PdK6XzUE3NrPfMMatrS8aUrDjNcpw5aChciaOyuz6SnySBAFWPJEBnlbEjwAQkdixZUtIJKDmmZOUI243MwhOh/4Y5/MFMekw8boCnpkXVY6PyJkhLVID6Odioephx+blQoV5RSGAtN+dPXlE9mpvzdNJxJxLZT+N/thXMuJb2WbENAVnQ1tb2A/PHoO0zmf+TwCcJ8KbySR58lwIEOgZKOuJS6Yhy/GyOhku8zlMgrgl2oWNaVFda5fnZDS+bPkA4EFh8nLD0OjlSqx4nJpgVq+uKgJSY/lTdL1z5QCg0dUdXh5m0PxBYiCl1/XdhrNN/wq4ck2yjLYKqBy+ClCHAhlnKhJKOHExgzNnLhtphNQXpxzX4LP/gz/meBLoggAHCYkU47Dxi/rSo+1WPSvgyARtVjy6CmuDdeqxHDa6jstbWptX19UEsVGn2a8SIlZl5/cNfwqQeuhurVj0wQRdfBhHoUD0iEfnU+vVTGwyyi6aQQI8IMAHpETae5BUC+ke1Xz/nAiUU5qwXRdj4o+qV4CXeTjQa5cu4Kc5Rqu8a07vKUPVI/AUSZY0NUKIedN32++rqZr8b5TlJPay4eNEwx7XvhBFXYctNqjGs/GACYdyTfuO6boUX1hs62Hi+J4GuCDAB6YoM96cUgbPGLR1kh+W3MAhUL8J2bEo5R2diQcBDA4SpesQi4HEoA2M9VEhIWda2u+kPXlA9Ro4MZmT2zYPqIe4Cj5HY+IAmDhdGL4qk6tELeDzVbAJMQMyOD62LIYFA4GG/lLsnuEIFceHrQbp2DItnUd4koBeDq7aEnOO6ff9I1cObQTTA6kYkHg/5LPu+qqrSbQbYc1QTCgoWn2Lb1h0YIP9lHJx31BN4QCIJUPVIJG3WlRQCTECSgp2VJpPA6NGLTvBnWteim8Rk2MEBu8kMRnLrbsDaBvcrp/0B87vKUPVI7qXSZe24hGStcEV5Y6P90qZNpW1dHmnIB1r16NMn9wqlx3pIMQpmUfUwJDZ7zaDqYVY8aE2cCDABiRNYFms2gUmTnrHffHNrkWXJcjwBvBDWcvCu2SGLpXWe6irDsR6xDH1My2rCgoKPWJZYWVMzfWtMS45TYYHAipOFdPSCgl/BRtUjTpx7WGw7GmQvcqxHD+nxNM8RYALiuZDR4FgSwJS9x7S3y69iysmZKHdILMtmWUYSaEQ//Yf9tv9e07vKdCbJ28ZjXY9KkOQMV+ZcTnhmIV5VrprT1OT/nVdUj6ys/MtxnyuD7Wdho+phzvWkLdkKNWq+E5ZPc4YrswJDa+JHgAlI/NiyZM8QCFpjx+aetbdLwudhdoZnTKeh0RLQjcY6dLsr80JXGaoe0YY14cc140J6VDnuirq6GW8nvPYeVFhSsnJwJBK5HQ3cr+J0TkfeA4ZxPEVPz/wC7kuVoVDjeiGCevpmvkggLQgwAUmLMNPJaAgEAvPzpcz8DzQw7sDiYcOjOYfHeIJAR6NRKnt5KDT5HZMtpuphbHQgnIkNEgpCQ4P/RS+oHnrSDaVaPidtK4iuYmNAlpNumHV5UfUwKx60JsEEmIAkGDirM52AkgUlSz5tReQdGFx6JaztY7rFtK9LAlr12IibHBqNvt+Y3mjsVD2syWjofhN2c3KELsOa8A9a8EDicdtyl1VXz9yc8Np7UKGedtwXVrOFtL6G5KN/D4rgKfEj0KF6YEr4inXrml+l6hE/0CzZbAJMQMyOD61LEgHMlJWdkWFjphihZ4rRqwLzu5KkWPSwWs80Gql69DDC8T9NJ7B/VZYoz+vb9MLq1cHW+FfZuxr2TjV+kSvcCilkIUqj6tE7pLE+eysSwnlChJ8OhW5rjHXhLI8EvESAjSovRYu2JpiAkoWFy4ZjlpuZaInoWWNyEmwAq+s+AYRK1ePGFszJaX7e9EYjVY/uBzhBZ+yCEvV9zJK3pKZm6lsJqrNX1RQULBho2xm4V6mrUdAxvSqMJ8eaAFQP9WvclyqpesQaLcvzKgEmIF6NHO1OGAHMlNUnHBaXoGVbjko5g0zCyHe7ot1YlOFJqcKLQqGZaDRifWdDX1r12LJl2zlKqUrYPA5mchpoM2Klr5nXoB4ggW38lekJrEY2cWLQ19TU70JpuRV4OxYbVQ8NxpwXVQ9zYkFLDCLABMSgYNAUswl0zqHvYvFC9Q1Y2s9sa9PKOt1o/LuSqiLTJ3+xdu20PSZ7X1Cw8njbjkxRUlyHp+wnmGxrmtm2Gz+ITykVWWh6ArsvLkVFC09yhW8GrqNrsO/Yffv5vxEEqHoYEQYaYSoBJiCmRoZ2GUlAryKclZU3UUoRRKu3GEbyaWNyI7UHXU5+6Nq++eurSjd5SPUYD2y+5KJj7XsJ7E1gRTDTJ35pegKrbdaqR0tLzvlYzqOC9yEjr2OqHkaGhUaZRIAJiEnRoC2eIRAILBsgpXsDus/cDKOP84zhqWXoG3jyWyFE9nOh0A27TXaNqoex0dmNa+gHjs9eZHoCu49gScnyE8OOMw3dxK7FPqoe+8CY8T9VDzPiQCs8QIAJiAeCRBPNJKCfQjbu6jfeUm4QFn4WG59oJyZUmI1IPiOUMy8Umv666arH5s3bcW24eFItqXok5vqIphateryBRnyFUn1/bnoCqx3qnC1t+3nSUpV4W4KN9xsNxpzXO5jhaj5nuDInILTEbAJMQMyOD63zAIHOp9vO19EVaArMHeABkz1sonwTP/Jzw2HnJxs2zNxlsiNUPYyNzh788P3IstT86upp/zA5gd1HUF9LluVMxbwKeo0YKq77wJjxP1UPM+JAKzxGgAmIxwJGc80koJ9Obt68LYDHqmWw8BJsnNUotqFqw+D/n1pS3lNT0/Q3zLLrxrb42JXWeS1Q9Ygd0RiWpMQ/FBQE6eb81CuqBxW0GMY/9kVR9Yg9U5aYJgSYgKRJoOlmYgiMGjWvf0ZW5n+jX/ls1HhyYmpN+Vo240Z1T2Zm+Jk1a2Y3m+zt/ifVlroW1wBnuDInWJ7ptrcPmV4jRkl7itSqB6+lfVhM+Z+qhymRoB2eJcAExLOho+HmEghaBcW5oyxX3gUbr8CWaa6tRluGH3nxC+Vac2trG/5K1cPoWJls3CYp1Nz2dvdZ07vtdUIMWoWFeROkJfRYjwnYqKaadXVR9TArHrTGowSYgHg0cDTbfAIlJSvzwm74SunKO4QUI2Axv2/Rh+0dhe5Wfsv+UVVVaVP0pyX+yP2qh1TXofbjE28Ba+yCQCu+cT91Lfeeuqrp6LZn7sKU++wvLr7vWEe1TRZKXo99J+7bz/+NINCOLra/RBe+uXXVzRtNfiBiBC0aQQJHIcAG0VEA8WMS6B0BJQOBJWcIad+OMQz/ibL69q68lD/bM10b9o31wAKIlegiMw6R4axE5lyebyEuc9t2Z/2kvv7mFnPM6sqSoFVUlHu2K+RcXEt6Rj2qHl2hSs7+t/FA5NteeCCSHDyslQS6T4AJSPeZ8QwS6DaB0aMXZfsy7c/jGawepH4mNn73DqW4DVPVzpeq7alQ6LbGQz82Zw9VD3NicZAlbZha9zks0Hf3unUfv+aFp9Tjxi09pi0sb0U3sRvhy0kH+cO3ySVA1SO5/Fl7ChNgIyiFg0vXTCOg1ZBFpwrLPx1TyX4N1uWaZmGS7AkjHXvRlaJixCmD61atuspJkh1HrZaqx1ERJfMAz0xW0AlJj/XILRaWnIsf4vOwj6pHMq+eQ+um6nEoE+4hgZgRYAISM5QsiASiI4AFDLOaduVdjCe15UhECnCWFd2ZqXiUfBdd8xe2t7Y9sXHj7R+b7CFVD2Oj0zFZAbouVYZCTfVeUD30bHmZmRk3KWHdhK6ZA40lm56GUfVIz7jT6wQTYAKSYOCsjgT2ESgqWjJEKXkr+hZfh0Sk/779afJ/BInH74Vrl5966sB1pqseb76JFahtFeRYD+OuTo89pQ5aY8fmjcVg5rkgORFbhnFE09sgj11P6R0seu9tAkxAvB0/Wu9xAiNHBjP69s0/11Vo3ApxNjbb4y5FY/57aMgvtu2M71VX3/LPaE5I1jEYu3OCP9M3DQnitbCBK1AnKxCH1tuOH69fOVhU0CszEo0Zs6yfbXeM87gFXQ4HHeoS9ySRAFWPJMJn1elJgAlIesadXhtGoKho4Umu8F2PhvktMC1Vp3J1cMNZjYXVyoYOHVLlCdUDDVzEowQbZ7gy5zuzFQnhPCHCT5s+WUEnMj3DVb+AUm4llI8LsI+qhznXkraEqodZ8aA1aUKACUiaBJpumk8AY0N8zc05Z0tpBdFQ0YNSU6nR+yEajUvQ3/2xUGjGRyZHo6Rk+Ylhx5mGMTrfgJ1UPcwJVhim/BqzRVWsW9f8qhfGegQC8/OVzLgeP7SlsH2wOShpCQhQ9eBlQAJJJMAEJInwWTUJHI5AILAYjV55tZDW9BQYoOogmfqLklZZfnbDy6tXByOH89mEfXqGq46xHlQ9TAjHwTZsw4/VgkhEPrV+/dSGgz80772e8W55AcY5aQXtImyZ5tmY1hZR9Ujr8NN5EwgwATEhCrSBBA4ioBvDm97eVmC7ogwN+M/hYy922/gIXcpWhMPOIxs2zPzgIBeNekvVw6hwHGiMZ6Zo3md0ScnKvEgkfJ2QcjL2nbxvP/83gkDHjGmupe72ytghI6jRCBKIAwEmIHGAyiJJIFYE9MBVn8/9L8yWdRsGrg6NVblxLseFgvMybi5zlOq7JhS6QXedMfLVkeht2TrRUrICBnKsh0lRUmI7rqMF7e2tT5k+RXMnNiWLipafBcmvAt3E9EMDqh4mXU8c62FWNGhN2hNgApL2lwABmE8gaAUCeSNh511IQr6A/7MMtnknGl/3Suk8VFMz6z2D7RRUPYyNTgSq3+8sDPIYNmxwyOTJCvYRnDBhQe6eNt+1GDc0BftO2bef/xtBgKqHEWGgESTwSQJMQD7Jg+9IwFgCupHT1pbxJSXUXTDyNGwmfX9dWFNtCTnHdfv+kaqHsZeR6YbtwPW9MNMvn1i7dtpO043FGC1ZWLhilLQcKGjyUthr8sMB83HG2kIltihLzvNb9o+qqkqbYl08yyMBEug5AZMaMD33gmeSQNoQUHLs2BWnC+HOxlPiq+B2tgGuNygh71dO+wN1dbPfNcCeLk2g6tElmmR/oCcn+INyVfnw4UNqvKB6jBx5f05WVvvXMdB8KmwflmyArP8TBNow/uznSln31NY2/NULM6Z9wnq+IYE0IMAEJA2CTBdTj0Ag8HBfKXdfjqfFZfDuM9iS8V12UX8Ig23L2nY3/aG+Pqi7Ohj50lMcN+7KPY9jPYwMj2cWpuykpx8CrESXSKcCDwEuxz6qHmZdVptxM7wnMzP8zJo1s5vNMo3WkAAJ7COQjEbLvrr5PwmQQK8IKFlcvHhoxLWxZoW4GkXl9aq47p3ciDofsW3fSnRt2Na9UxN7NFWPxPLuRm0dC1M6lpwz4pRB1V5QPUaPXpTt91uYIlvOgJ/DsPE3tBsBj/OhHaoH6rg7FGqqp+oRZ9osngR6SYA3z14C5OkkkGwCeLqf1dycf6GSbjkGwQZgD8bvxu2Fh76iDl3fyxob7Zc2bSpti1tNvSyYqkcvAcb39PdxrS5Vyvmu6QtTdmJQsqBkyactx6rA+89j6xNfPCy9mwSoenQTGA8ngWQTYAKS7AiwfhKIEQGsPzA44kZuRt/n61HkMTEq9sBimpF9PKocd0Vd3Yy3D/zAtL+pepgWkf32ONAM/iiRwObkNFaZvDDlPot1d0dltXwVNs/CvuHY+Lu5D07y/6fqkfwY0AIS6BEB3kh7hI0nkYCZBNBY8iu1+7PSVkEkIuNhpR0DS7XqsRE3i7KGBt9vqHrEgGh6FvEhBmwvcyP+R+vqSj80H4Ge4Wr5pyxLlGOsk57+mqqHWUGj6mFWPGgNCXSLABOQbuHiwSTgDQJaAXAc5zolZSkSkRN6YXULphp93LbcZdXVMzf3opy4n1pUtPAkV/hmwN//RWXHxb1CVhAtAazNJ/6ipFWWn93wshdUj3HjlvYJh+V/I/GYDSdNm/I6Wu6pehxVj1SNLP1KKwJMQNIq3HQ2nQjoVb63bNla4ipZDr/Px+bvhv9oM6p63CCCOTnNz6PR2NqNcxN6qB7r0dKSA/8sPStRMSqPheqTUB9SuLKPkBCuCIedRzZsmPmBF/wcO3b5GRhPVQa7vwR7+3rB5jSykapHGgWbrqY2ASYgqR1fekcCorj4vmMd1f41NKj0zD2Do0CyG+t6PClVeFEoNPMtdHlHu97M1wGqxzWw8FgzrUxLq/TClGv0WA+l+q4xeWHKfdHRqkd7O9bWkeJ27MNaOxzrsY+NAf9T9TAgCDSBBGJJgAlILGmyLBIwlkDQKizMKZCWNQcmXoYt4zCm6kTj70qqikyf/AVWot5zmGOM2EXVw4gwdGXETjTdV/gs6+Gqqinvd3WQSfvHlKw4zec4ZfgC/DvsMmFxT5PwJNsWqh7JjgDrJ4E4EGACEgeoLJIETCUQCMzPV5b/KjyZvg02nnqAnXtwM/iRZan51dXT/kHV4wAy/DNaAliYUryCBLbMcnP+5AXVQ09h3dKSPwljPbTq8Sls/E2MNtrxP64NUzU/p5S6h+t6xB82ayCBRBPgzTbRxFkfCSSdQNAaO7b/ma5w7sQN4IvomrVNWbJCun1/hkbj7qSb14UBWvVobs67QEoRREOXYz264JSk3TtxHd2H9vtDodDUHUmyoVvVBgILhwvLNwd2/wdOzOnWyTw43gSoesSbMMsngSQTYAKS5ACwehJIFoEJExbk7tmTOV7KyNuh0PTXqXokKxKerleP9aiWysVYj9zVXlE9kMheCep3wnatesRz4U5PBzcJxrfh4cLPLGHfs27dx69xNfMkRIBVkkCCCDABSRBoVkMCJNB9AvtUDzQRK/CkugglcIar7mOMzxlSfqyUeEA57Q/U1c1+Nz6VxLbU4uJFwyKudRe69lyFkql6xBZvb0uD6iHvzsxsX7Vmzezm3hbG80mABMwmwATE7PjQOhJIWwKc4crY0GOshwoJ157T1tbwf/X1wXZjLd1r2IgRKzPz+ke+iPnc7sKukdioepgTtI6xHgjJ3VQ9zAkKLSGBeBNgAhJvwiyfBEigWwSoenQLV6IPbkC3pYd8lu/+qqrSbYmuvCf1jTl72VA7onTioVWP3J6UwXPiRUC+iTVX7u6TEXmWqke8GLNcEjCTABMQM+NCq0ggLQlQ9TA27Ao/FiGMEyrbs6fx915QPUaODGb06ZN7hVJyDpKmUSBL1cOcy6sVMfkpAvLtmpqmv3GshzmBoSUkkCgCTEASRZr1kAAJdEmAqkeXaEz4oBE/FI9Iqe6tqZm+1QSDjmZDQcHiU2zbugMDmr+MY/OOdjw/TySBTtWjbXfWT+rrb25JZM2siwRIwBwCTEDMiQUtIYG0JBAILBsgLDUdg8yvAQCuZm7OVYD2u6gTWM28sdF+adOm0jZzTDu8JVr1yMrKv1xIVY4jRmOj6nF4VMnYS9UjGdRZJwkYSoAJiKGBoVkkkOoEqHoYHeEmZB+PSWUvD4Umv2O0pXuNKypaMsQV1u1Cqa9gV74XbE4fG6l6pE+s6SkJREeACUh0nHgUCZBADAkUFCwYKG3/DNyArkaxVD1iyLaXRWnV41UpVHlDg/9FL6gegcDDfmXtuhQzXAVh+xhsVD0AwZAXVQ9DAkEzSMA0AkxATIsI7SGBFCagVY+mXXkXobFYATcD2LiuhznxbsHA4O+6EXdpXd2Mt80xq2tLSkpWDg47kdn4IfsajurX9ZH8JPEEqHoknjlrJAHvEGAC4p1Y0VIS8DQBrXrYdsZMrCGhVY9jPO1MahmvVY+NGOtRnpvb+JvVq4OtprunVQ8hdl+CgfFBGF8Ae5nImhM0qh7mxIKWkICxBJiAGBsaGkYCqUFAqx4tLfkXI/EIwiOqHmaFtQUN+O/5LGdpdfWMLZhmVycjRr90ImtZ/lnCkldjvEd/o41NO+OoeqRdyOkwCfSQABOQHoLjaSRAAkcnQNXj6IySdAQSDVWPH4BgTk7z815QPZjIJulKia5aqh7RceJRJEACewkwAeGlQAIkEHMCuouMlLsvouoRc7SxKHCXkPIJ4YaXhEIz3/KC6tGxQKXyz0TSdA0AsPteLK6CmJVB1SNmKFkQCaQRASYgaRRsukoCiSBA1SMRlHtUB/JBgVWnVTAjQ/5q7dppe3pUSgJP4lTNCYTd/ao6VA/Xcu+pq2r5O1cz7z5AnkEC6UyACUg6R5++k0AMCVD1iCHM2Be1G8nHD5QSC2trp77pBdWjpGT5iZGIMwNqzdeBg1M1x/6a6EWJ8k2Mv5nb2pr5LFcz7wVGnkoCaUyACUgaB5+uk0CsCFD1iBXJuJTzd4XZojJ98hdeUD0mTXrG3rRl60RLyQrQKMHmiwsVFtoTAlQ9ekKN55AACRxCgAnIIUi4gwRIIFoCVD2iJZWU4/bgBv8jy1Lzq6un/cMLqsfo0YtO8Gf6puHp+rUgdlxSqLHSrghsgop2N1WPrvBwPwmQQHcIMAHpDi0eSwIksJ/A/ulQpfgf7OTA4P1kjPjjdTQWK4XIfi4UumG3ERYdwQitemzevP2zUGoqYfc4HErV4wi8EvxRK6ZMWyVcOa+2tvF1jvVIMH1WRwIpSoAJSIoGlm6RQLwIUPWIF9mYlIuB5fL/2zsT8Kiq8/+fc2cmYUkCuNQNFJRuUpAwBERtS622dncp2sW/W13qxhI2UUkmoLKvLlVrq7XWWtHWpdblZy22pZhlEoTS1oqCFVxq1WwQkpl7z/97ggtLErLMzD1n7nee5z6QmXvPed/Pe+fOec/3LKuEcufF41PRWLRhX4+VB4dCyclo5F4CAgenhAILSQ0BJV6WUs5taUn+dv366dtTUyhLIQESIAH8OhECCZAACXSWAFWPzpLy4TzrGosxZ9SoghOFI+bih+hEEKPq4cNt006Vu6kek7HClfmJbDt+8G0SIAFDCTABMTQwNIsETCKwS/VoxG7mshR2cTdzk4IjxE48yB/yPHlTdbUdjcVodPFB2Ml8olDyUqA8xCycAbfGukQ24PGi+yRgKQEmIJYGjmaTQKYIHDdu6RHhFjEdDcbzMDl4QKbqZT2dIWDbJnAxJxrNO0FIZy6806pHpDNe8pyMENgJpeNB5Yn5tiSyGaHCSkiABNJCgAlIWrCyUBKwn4BWPZRq/KrjyFKMzy+ERyH7vcoaD5oxgPZhR4ibKivr/2nDxOBx45Ye0JyQV0uhfowoHJo1kcgGR6h6ZEMU6QMJWEWACYhV4aKxJJAZAq2qR0LNRE/1uVQ9MsO8C7VslkLekJvbsmrNmpkNXbjOp1NjTlFR/vFKyTlIZL8AI6h6+BSJNqql6tEGFL5FAiSQfgJMQNLPmDWQgDUEqHoYHapmLFH7KCy8IR6v32iD6jF8+LwBOTm5V0KtuQJ2H2Y03aAZR9UjaBGnvyRgFAEmIEaFg8aQgH8Exo5dOTDpJmZQ9fAvBh3U/Br2yLixd07yAVtUj2i0f5GQHvYiEeNx5HTgGz/KLAHrlmrOLB7WRgIkkAkCTEAyQZl1kIDBBKh6GBwcIVowbOlx5ai5NRUNG2xQPUaOXNbfCasrMEzsSiHU4UbTDZpxUD1wL81JNnu/474eQQs+/SUBswgwATErHrSGBDJKgKpHRnF3tbL/YML2TaFQ5Nfl5RPru3px5s/Xcz36R5Xy9FyPk1E/VY/MB6G9Gql6tEeG75MACfhCgAmIL9hZKQn4S4Cqh7/891N7C5SDP+DhPKeqquFFG1SPaHR+P8wt/7GQ8ir4NnA//vHjTBKg6pFJ2qyLBEigkwSYgHQSFE8jgWwhoFWPhJucKaX8IVe4Mi6qryMm84RI3B+PX1NnnHX7GKTkqFFLRknH0XM9TsFB1WMfRr69QdXDN/SsmARIYH8EmIDsjxA/J4EsIfCh6iFDTgyN3JFwi/t6mBPbBB7GT2Gp2lg8XrfOBtUDiWxB0nMvxb00ERgHmYOSlmC1NM714G1AAiRgNAEmIEaHh8aRQGoIfKR6CHEuSuyfmlJZSooIbMWDeEEyKe9bt25KbYrKTGMxSo4evXSkknIOGrqnoqLcNFbGortGoEko+Rsh3AXx+NSXsLM5puOY+lK47U22z1RutIsEsoMAE5DsiCO9IIE2CbSqHs7207AiUSlVjzYR+flmApX/n+eI0qFHDaxZteps109jOlP3iScuyG9ujlyMVu0knH9UZ67hORkj8BISwjmJhPuoyStcjR8fC9fX9/+yDKnhYUf+srx88tsZI8SKSIAEjCHABMSYUNAQEkgtAaoeqeWZ2tLkG0p4ixLNLb/YsGHW+6ktOx2lKVk4ZukI6TlzsDLXV1EDVY90YO5emU34IX9ACGdBVdWkf5usKowdu/yQpOdNR6J0AVzVSuwLUnhleXmNf1q9Opbsnvu8igRIwEYCTEBsjBptJoEOCFD16ACO/x8l8dB9FmaUDhkyMG6D6jFs2K15vXq1XIiVuYqxo/lg/xHSgt0ItKoeQvR9JB6/bMdu7xv13wkTHgxt2vL6eEfJMhh2PI7d55+9C0XtXjcilry4tnibUYbTGBIggbQRwG8hXyRAAtlCgKqH0ZF8Cz2/i3NyxN1r1xa/Z7SlrcbpFa5WDJfSiyHx+Bre6mW+zYGx0BrVo7Bw5cFOOFmMe/9iROegdiLkYgnndRJ7yDQ1NTy1cWMMS1HzRQIkkM0EmIBkc3TpW2AIDBsWy+ndO/80JZ0SzvUwLux6aMlzylOlxxwzqNIG1WPEiEV9I7mh89FonAbbhxhHNLgG6Unl/0ZcsOyx+arHli1bT1JKYWNKeQLsDncibLVolDzoOO78iorpmztxPk8hARKwlAATEEsDR7NJ4EMCRUVLBnmevAa91D/Ae1zh6kMwZvz7NlqMS8JOzs8rKq561wyTOrJCyaKiZcd6SsRw1jdxUPXoCFdmP7NG9YhGFx8kHInlmeVlSJY+0UVMHs7fiMbJTXl59Y9gbsjOLl7P00mABCwgwATEgiDRRBJoi8Au1aPga2jgluDzkTicts7je74QcPFwXY0GWGleXl25DRNsMXeoj5SN/08JZzrmexwNavx98OXW2adSa1QP7F/jjB7db5wSai68OAlHZB9vOv9GI27AR/BYu8H0yfWdd4lnkgAJfEiAPzAfkuC/JGARAaoeBgdLiv8KTy1FI/5n8fi0/xls6Qem6bkeyz8jpdJzPb6FN3ubb3NgLGxVPRxHYUhS8cvICXUyYuRr3LilB7QkxVVQPC6HgYemyEjt78tYRnxBS0vyNyYvL5wif1kMCQSGABOQwISajmYDgd1Uj1L4cxwOqh7mBFbv4/EX5YmSgoL6tbaoHspp/KH05HQkH0NhP38TzLifWlUPNLzLlOrzqMkrXGnVY9So/DHScTAvRY0Hvp6oHu3R14nYk57nlFVXT9pgciLWngN8nwRIYE8C/LHZkwf/IgFjCbSqHsKZhUnmeq5HP2MNDaZh76DFuDzZ4t6FXtr/mo9A72a+4lNKuEhk5Xdgbx/zbQ6MhdaoHiNHLusfiniXC+VcheTj8DRHCCO7xGu4X5eGw6FflJdPrE9zfSyeBEggjQSYgKQRLosmgVQQ0KpHr179vo7RF3quB1WPVEBNXRkeNIM1kKFm9+1bv8YG1QNDZXo3J8X3MJjnGmD4JA7+DqTufuhJSVapHkVF/aMKy+bC6JPhdE5PHO/itc2o8zl852JVVfVV+EdPWueLBEjAMgL84bEsYDQ3WASoehgd7/8JJVeGw/LO8vLJbxtt6QfGjRy74pOhZLIUey6cgbeoepgTtB3o3n8g7IgFps/1iEbn91My51I0HrDKlRjoG0IltmHe0k8iEfkTO/bV8Y0UKyYBIwkwATEyLDQq6ASoehh9B+ge17UYCjdbiLy/Ynx+wmhrYdz48bFejY35Z2M/hln489M4+Ow3I2gWqR562N7SkbiH9ApXp+DINQCh/u791ZNObOjgw9fYsMeOAcxoAgkYQYA/QkaEgUaQwMcEqHp8zMLA/70nhbpZSvf2ysoZbxlo3z4mjRq1dCiWKijBw/5MfNh3nxP4hl8ErFE9TjxxQX5Tc/hHmBQ/GbCO8gtYu/W2rjwnfwY1coUtamS7vvADEggIASYgAQk03TSfAFUPo2OEvfnECwrzcBwv78+2qB4NDQU66bgOesdn8S+f92bcYlr1+BeCMUepvo+ZvcKVXqJ5xXDpuGW4fb4Gu01QPdqLot57p0KvlCVl7+ds+I625wjfJ4EgEOAPUhCiTB+NJxCNrjhSON41XOHKwFBJ+T5W+LlVePK2eHzKmwZauI9J0ejCY7Aa6vVYuOC7+DBvnxP4hl8EdmAlp1+54dCideUTN6FRr5MRI1/Dht2a17t38wUwsBgGDjHSyLaNeg+p9n1hJ7wIK2VtbfsUvksCJOA3ASYgfkeA9QeaAFUPo8Ov53pUosFYsnNn/eqNG2MtRlsL44YOXZlbMCBxOpq116NxeyzewmJBfBlAoFX1gIJWlhuWj2HSdJMBNrVjgpJFRcuOdZUoQwPhGzipVzsnmvy2/u6+qBwxt3l7/RM2fHdNhknbSCAdBJiApIMqyySBThCg6tEJSP6dUosVrn7ieS231NTMfMM/Mzpf85gxi4a4Xug6XHE2jvzOX8kz00zAGtUjGr2jT+vGlMqZCdXvaHCxvY1QBx8ecqS8qbJyyqtpjjOLJwES6AIB2x8uXXCVp5KAGQSoepgRh3aswFwPFccytSXNO+qfs6HnVN9PvXv3+zbsLoFPw3BQ9WgnuBl+2yLVQ4hodPFnpAzFcB99G5x6Z5hVOqvTasg/oWTelJMjfme2+pRODCybBMwiwATErHjQmiwnUFi4+CgZCs3CSkrfg6vczdyseNch8bg97IRusWXsuL6fQiHnWrR09f1UYBbOQFtjjeoRoI0pG6HnPKZceUN19eR/mTz/JtDfHDofGAJMQAITajrqJ4FdvdT531JKzsaP4HDYwl5qPwOyZ93Y2kBWC0+U1tWFnt20aWLznh+b9xfvJ/Ni8oFFVqkeAdyYEgKP2KQctah5R69fb9x4ZaOxdxINI4EsJ8AEJMsDTPf8J8Beav9j0IEF9Vh57E7HESsrK6e+3sF5xnzEfWKMCcXehrSqHkqJhdXVU14xuYd918aU/SagNX4tnAjixpRYBEA97UinrLKybr0QMT1Miy8SIIEMEmACkkHYrCpYBNhLbXS8dU/1i0qKkvr3w8/Yo3oUfA2Gl8L243BQRTPjFvtA9RCx3LB43PQ5Bq1LNDvh2VACzgK+oC/R/BqSsOVSJe6Ox6/RE9b5IgESyBABJiAZAs1qgkWAqofR8W7Ajs4/c113eU3NtNeMtvQD48aOXTnQdRPXYKzYD/FWfxtsDoiN1qgeHy/RjGGgonVjSiawu27SZmzHslq5IlZd3VBBNSQg31y66TsBJiC+h4AGZBMBqh5GR1P3VG/AQ6+ktjb8lA2qB5ZFjSjV+FUZcmIYKjYS9oeMJhwc46xSPUYev2xwKKmwNwyXaG7/FpVvQBW6PRSK3FZRcdW77Z/HT0iABFJBgAlIKiiyDBIAAaoeRt8GmGyq7g453rKKiumbjbb0A+OOG7f0iHBCzRTSORfJxwAbbA6IjdaoHh91iAipl2j+HA6qHh3fpElklmukUmX5+Q1/Wb06luz4dH5KAiTQXQJMQLpLjteRwAcEPvqR5wpXJt4Tuqf679gRubSgT/2TaFDsNNHI3W3CBOFwY2O/UzE2PYb3ozioeuwOyL//6xWU/ol7CbuZ2zDXY8WRSnrXYsnv7wMZl2ju2n3zDoJ9d0i6yyorZ7zVtUt5NgmQQGcIMAHpDCWeQwLtEKDq0Q4YM97ejgbjLxxHLqmsnAzVQ+pkxOhXNLrsMCnFDDR+zoOhBxhtbLCM0/fS/TascKWH7Um5/eu42UsRIi5W0P371MWlVZgvVqZUn2fj8csS3S+KV5IACexNgAnI3kT4Nwl0ggBVj05A8u8UnWj8Aw2HWF5e3e9tUT0aGgpOxgCZMjR0i2A/VQ//7p/da7ZK9dCLFSTc5Ez8sJ8LJ7hYwe6R7P7/34OK9Gulwgvj8Un/6X4xvJIESGB3AkxAdqfB/5NAJwhQ9egEJP9OaR2fL0RyQTw+/VUbVI+iooWHeiI8DYnHBcB2oH/oWPNeBLbj718KlVxs+r2kVQ8hdnxFShVD9l0Iu5nA7hXMHv6p9wlZj0TkhtrayO9tWMCih/7ychJIOwEmIGlHzAqyhcAu1aPft5XCajLczdy0sGrV41/Y18OKvRg0vAkTHgxt2bLtS7if5sD4MXiLjUYNxv/XRwpaJKKeMH1fj8LCBYeHQjnTce+fz8UK0n7z1KPR9LDniZtM32wy7SRYAQn0kAATkB4C5OXBIKCXsQwn1Sy0TL4Hjzmh06yw78D0jvtdJ7xwXfnETTaoHmPHLj8k4brFGCZ2EVAeZBbOQFuzXUh5r/ASS0xXPfRiBa3D9qSYg4iNxsEENjO3bmtnB76785CgPmR6gpoZJKyFBLpOgAlI15nxigARoOphfLBf+mCS6KOYJLrDdGu16vHKK9u+KB2lG41jcYRNtzkg9lmleugENpl0pyFZuhDx4bA9f27S7Xj2/B7D3uZWVk75hw0dH/5gYq0k0DYBJiBtc+G7JCBaN+9KqGsx3Ooc4KDqYdY90YSH1wOOo+ZXVBS/bMOPf2HhyoMdx50CteZioDzYLJyBtsYa1YMJrHH3KRJX+SqGvi3u1SvxqzVrZjYYZyENIgFDCTABMTQwNMs/AkOHrswtGJD8DhZt1TsHD8Ph+GcNa96HgBIvKygIyWbvd+vXT9cThY1+7ZrrsfWkXXM95AkwlqqHGRGzSvXYLYG9BPg4bM+Me+hDK3YqIZ/Bb0ZZPF63ToiYnrTOFwmQQAcEmIB0AIcfBY/AmDGLhrhe6Dp4fjaO/OARMNpjbCIoHxTKnRePT33JBtUjGl18kHCcSaB6KVa5+oTRdINlnDWqBxqzTlFRweeZwFpxg/4Hw+JudhPirnXrptRaYTGNJAGfCDAB8Qk8qzWLAFUPs+KxrzXyFSm8OS0t3sM2qB660ThqVMGJ0mmdIHwi/MEyqXwZQACqh9oohVNmwwpXuxJYOVEoeSnYHWIAP5qwfwIt6Bx53pFebPDgQeWrVp2tNzTkiwRIYC8CTED2AsI/g0eAqofRMd+JOTi/9Rzvxpryxn/ZMLRhzJhbDnTdlomw+zKQZaPRnNvLMtUj/3hPyLlQzj4PhExgzbmPOmvJm9g35E7XjdxaUzPxnc5exPNIICgEmIAEJdL0cx8CVD32QWLaG68qrDDTvKPXQxs3XtlomnH72qOHyuQfr5TU+3p8AZ+z0bgvJD/e+UD1ELG8vIYnVq+OYSifua9x45Ye0JIUVyHxuBxWHmqupbSsEwSS6IhYq1wZKyio+zPuvWQnruEpJBAIAkxAAhFmOrk3AaoeexMx6u9mLG/5COb+31BV9T6WtzR/QudujcYfg+RhRtEMtjGtqgdWkVhcWTl5s9nzhvSwvfwx0nGwRLMaj7Axgc2ee/d/WCnrHjzTlsbjU97MHrfoCQl0nwATkO6z45UWEqDqYXzQNuOhdGNubuJBO5a0ZKPR0DvKKtVj5Mhl/UMR73KhnKuQfBxuKFOa1TMCrhKqWnhijpR5T2PfokTPiuPVJGA3ASYgdseP1neBAFWPLsDK/KmYuCkeU54zt7q69u82qB7Dh88bkJubc4USzhVsNGb+humgxu0YvvQLx5FLzFc9lCwqWjFaKU8P2zsZPuV04Bc/yg4CenWsB9ywXLDuhSlbssMlekECXSfABKTrzHiFZQSoehgfsNeUlDdFnNAD5eUT6423FitcjR5dMBoNxrmwdTwONhrNCJpVqkc0Or+fcHIvwdCcicA3yAyEtCJDBPQ+IX9H7G+oq4s8tmnTxOYM1ctqSMAYAkxAjAkFDUkHAaoe6aCasjJb8AD6vYtNBWsqGjbYoHq0DpUJqR9jYumVoDAwZSRYUE8JNEL1uNcW1WP06KUjkXTPgc2nwvHcnjrP660lgJ3T5e9CWOWvoqL4ZbPnKFnLmIYbSoAJiKGBoVk9I7BL9UicLpXUmwpyN/Oe4UzH1a+j92+eEIn74/Fr6tJRQWrLVLJwzLKo1OO3hfgyyqbqkVrA3S0NqofYoBwRK+hT/6TpK1ydeOKC/Kbm8I+wyMJk2H1Ud53mdVlFQN/DLyEZnS9E31WYG7Ijq7yjMyTQDgEmIO2A4dv2EqDqYXTs9MTLP2B9/LKqqoYXbVA99FAZJXMuxcPyatjOoTLm3F6NaLndE3bcpRUV07aY3Xus5KhRK4ZLxy2DnV8DQqoe5txHpliiE48/IBGZg5WyMA9O6sSELxLIWgJMQLI2tMFz7GPVQ1yPh/exIIDVN/kyiMBWPHAWJJPyvnXrpuiJmIa/lIxGlxeiHYBlUcUpONhoNCNiumFmjeoxYsSivuGc8AVIuqfC7iFmIKQVhhLQ9/ZmJeTS3rkt99qxEqChJGmW8QSYgBgfIhrYGQJa9Uh6zvUY2jAB5+d35hqekzECCcyZeNqTomzoUQNrVq06281Yzd2saOzYlQWum/wRWgN6qMyR3SyGl6WegFWqR1HRsmM9JWLA8E0cvVKPgyVmKYGdeGY+q5+ZNRX11TYoxVkaB7qVRgJMQNIIl0Wnn8D48bFeDQ0FZ6KXehZVj/Tz7noN8g2hvAUtLS2/3LBh1vtdvz7TV+hlUZcfhwX7y9Bj/VXUTtUj0yFouz6rVI9o9I4+ymn8oVTOTCzRfDRc4m9t23Hlux0T2Iq5crfg+XmnHc/Pjp3hpySwOwE+FHenwf9bRSAaXXgMNgu+HsnHd2F4nlXGZ7+xSbQY/w9j4GJDhgyM26B6cIKwsTdlIxrxd2OloGXmz/UQIhpd/BkpQzFsOvdtEO1tLFUaZgsBvVrgX7BXTOzoo49ca8Oz1BawtNNfAkxA/OXP2rtB4GPVQ1yLyz+Lg3M9usExjZe8icbXwtyIvHft2uL30lhPioreY4LwaSiUQ2VSRLaHxVileowbt7R3c1J8D1OHr4Hfn8TB39ce3gC8fA8Cb+OO+mmi2b15/frp/93jE/5BAhYS4APSwqAF2WSqHkZHPwnrnlOeKj3mmEGVNvTUDRt2a17v3s0XoKVbDNsH4+AzERAMeFmleowcu+KTYdctwX10Jtj1MYAfTchOAvoZWy6FV5aX1/gnLDut/+aLBKwkwB9bK8MWPKOpehgf87ewfOTiUCjnnoqKq9413lqh5OjRK4d5wo3hIfgN2EvVw4ygWaV66OdSY2O/CVD8tBr7aRz8TTXjPsp2K97FF+VeNyKWvLi2eFu2O0v/spMAH5bZGdes8oqqh9HhdPEQWS2lKhk8eFC5DaqHXhY1EnHOE9LBsqicIGzQ3WWV6sHnkkF3TjBN0c/eGjzD5jY1NTy1cWOsJZgY6LWtBJiA2Bq5ANhN1cP4IL+NZY+XKuX+PB6f9j/jrYXqUTh2yWcdLxTDyjJ6WVROEDYjaK2qB8JTmp9f95Tpu5l/vN+QnA18nINmxj0UZCtq0ZB70HHc+RUV0zcHGQR9t4sAExC74hUYa9m7aHSo9T4ef8byuiX5+Y0v2DAO+eNlUeUM2I7V0zhUxpA7rAE9uPfYssLVyOOXDQ4lFTY6FWfj4H5DhtxENEN4YLARDbqb8vLqHzE9iWe8SEATYALC+8AoAlQ9jApHW8a8g2WPl3nJyF01NRPfaesE097jsqimRaTVHqtUj2HDYjm9e+d/SymoHlIMhwdcec/I2yrwRjWiUfcIbs8bqqom/RtNPP0944sEjCTABMTIsATTKKoeRscde/OJvyrplPTrW/s3G1QPLotq7P3UgEb83SHpLrdhyEg0uuJIJb1rsTHl90G0wFiqNIwEdhHQScfLGB6LDWCTv8GSvdsJhgRMJMAExMSoBMymj1QPIa5Dw+QzcJ+9i2bdA//DClcrEgn3TlvWnx89evmn0Wgsgd2nAyWXRTXjftINoxfxoxPDMJGnTR8mgmF7ESm3fx1Gl8Lu43DwuWTGfUQrOkegCd+1Jz3PKauunrSBakjnoPGszBFgApI51qypDQKtqocTno2G4ln4mLuZt8HIx7c8JIRrpJIlSvVZE49flvDRlk5VrVWPREJhWVSpl0X9FA4+4zpFLu0nNaBH9meu6y6vqZn2Wtpr62EFY8euHJhwkzNx85yLovr3sDheTgJ+EcAK0QLfN7k0HA79orx8Yr1fhrBeEtibAH+c9ybCvzNCgKpHRjD3pJL30IhfGQnJ28vLJ7/dk4Iyda3eDM5x3dl4qOnN4Ppmql7W0yGBD1QPVVpbG3l606aJzR2e7fOHeC6FGxvzv4IGWxkML4Q5IZ9NYvUkkAoCzbifn4OEF6uqqq/CP3rSOl8k4CsBJiC+4g9m5VQ9jI67hx+qFxT29XC8vD/boHroZLZ+e/53odRo1UMP4eNzzYxbzCrVIxpddpiUYga6jM8DvgPMQEgrSCCFBJTYpqS4LTcibl+7tvi9FJbMokigywT4Q91lZLyguwR2NRT7nSU97BrMuR7dxZjO61pVj5BM3FFZOeOtdFaUqrKxqeAnIpHwAiz2MgFlUvVIFdielWOd6tHQUHAyZniUYbhKEVyn6tGz+PNqswnoobR/9aQTGzr48DU2bB5rNk5a110C4e5eyOtIoCsE9PCY+kY9PEadgeSDcz26Ai9T50qxUbjqV5XVdiQfGksolIuVURMe5hdwgnDBNm9OAABAAElEQVSm7pOO67FK9Rg7dvkhDQ3uNDyTLkTycWDHrvFTEsgKAhF48SVHeMM2b956F74DK20ZZpsV9OnERwSogHyEgv9JBwGtejQ29sOkYDUL5XN4TDogp65MPS54vXLEnObt9U9s3BhrSV3R6StJbzIoROM3hJSlqOVYHHyupQ93eyVbpXpMmPBg6JVXtn1ROmoOHBqLg51x7UWW72czARcPywq9UpaUvZ+zYchtNgcjaL7xhzpoEc+Yv0qOHLtyKCcFZwx4KiuqwwT0B5TrzrNhxaJdjisZjS46Gu3ImUg/foD3OBwrlXdEx2XVI/v4mXK9FTbcL4WFKw92HHcKhu1dDLcO7tg1fkoCgSDwHp6b9zlCLa6sLN6KPhzdocAXCaSVABOQtOINbuGjR6/4nBLuvSCgV5Lhyz4CHoakbFAhUWaTGvLBMrzYu6FVDfkcsPMZl757zzrVY8uWrScppebg/jgBWKh6pO/eYMn2EcBQVvEnJOeX2LBBqH14afHeBDjZbm8i/DslBA466MvbQ47MwbCYESgwPyWFspBMEsC0CnEo+sFOC4dzjxo06JS/b9v2f7WZNKA7dW3d+nTyjTee/tfAI8qfRus4F2XoYX853SmL13RIQKseP4HqMaW6elrFe+896XZ4ts8fjhlzy4Hv1b43ExOG5iMnHQZzOGfI55iweqMIYPVDFUcCMu/993PWm/59Noocjek2AfYOdhsdL9wfAT3OGpPcophYEMONdgrO15Pf+LKPgJ4bshEZyZymprrHbJkb0rrq2o6Cr0lPxGD/cBx83gFCD19WqR549DhFRfnHY0fNuVD0Pg/f+Qzq4Q3Ay7OOQB06Cm8PO6FbsFEhhl/xRQKZIcAf5MxwDnQtGBZzQEuLOhcPuekAMTDQMOx2Xu+iuyrkuDfaI9ErOWbM4sGYZDkVw270/g5U47p/D1o112P48HkDcnrlXo3E43K4fGj33eaVJJCVBPBIlNXCE6V1daFnTd8kNCsjEHCnmIAE/AbInPsxZ9SovELhhEqwFO/XUC97IjMHP5U1taohQqm5dXWRx2z50dq1Glv+V/CLWwYYx+Hgs6/zd0Wr6oENzErq3w8/Y37MY0402r8I82jnCqHGw00+azofa54ZDAJ1eIb/1HHEysrKqa8Hw2V6aRoB/gibFpEst2fkyGX9QyHv++h5mQlXj8pyd7PZvXo8PB5WKnljPD7jFVscHXn8ssGhpFeM/ON82Fxgi90+2mmV6tH6fIl4lwvlXIXk43AfubFqEjCRgO5MqBFKllD1MDE8wbKJCUiw4m2It3pcdr8RnqdK0A/9DRjFScKGRKaLZugfs38o9DTXvx95xPye8V3eDR26MregIHGqDDkx9ALqVdo4IXnfwOvYroPqUWqH6qFk4Zhl0ZAn5sLwk2E7nyn7xpTvBJuAVZ0JwQ5VMLxnAhKMOBvpZTQ6vx8WKpqAoRLXwsAhRhpJozpDoAE9ag8LkbjBJjUkGl1xpJTeFKz+chGcpBrycaTr0THwU+GFVsbjk/7z8dtm/m/s2JUFSc+9FMnkRFg4yEwraRUJ+EZAdya8iKHPpbW1kadt6SjyjRYrzhgBJiAZQ82K2iagx2sXDJNSXoeG4Ok4Ry+dypd9BFrVEDxQbsjLq39k9erYThtc0GpI//6JL+9aqU1GYXOQ1RAdQ4uGZyhZVLT8OGxYo1e4OhW289lhw5eONmaSQANWL/yZ67rLbdgkNJNgWJf/BJiA+B8DWgACJ564IL+pJXyWVPI6/DmUUKwl0IhW7O+8UGjuuvJJL9viBXrRByaTiUmYm3QJbIYyF7hX66RU7M13sw2qR+vzojn8IzSuJiNSRwUuWnSYBDomoDsTNkCZLs3Pr3vKlg6hjl3ip9lGgAlItkXUan+UHDVq+WcwLOY6NATPgiu9rHYnuMbrH79/KSlvLOhb97AtP37DhsVycvsUnIzNF8tg/2gcQVBDdKysUj1GjVoxXDouYiT1anpUPQCBLxLYjUAjFmC4O+R4y+xZLn036/nfwBBgAhKYUNvj6LBht+bl9mn5jlRqNqz+FA7ep/aEb3dLrVRDjhu39IhwUmAVJXkZ5hUM2N2hLPu/VUtxjhixqG84J3wBxrJPRRyGZFks6A4J9JSA7kz4u3JEaUGf+idt6fjpqdO83l4CbNjZG7sst1zJ0aNXfEpJbxbGd0+As32y3OFsdU//KL6EoTI3RSLqobVri5tscFSrIb16FYyHBlKG+28MbM4mNcSyDcj0XI9lx3qqdUf7byIWVEZt+BLRxkwS2I7n1C8cRy6prJzyaiYrZl0k0F0CTEC6S47XZYRANHpHH+U0fkt6Ui/Z+1lUyns2I+RTXsl2RO5RqZw5VVWT/o0w6sTE+JdWQyIJcQWM/TGMPcB4g/dvoFWqxwff/x9ibtgMuHYMDn7/9x9jnhEcAvo5+g+9wlVeXsMTVD2CE/hs8JQP82yIYtb7oOeGLDtGhtRMTKr7Ptztm/UuZ6eD+sfy3/ixhBoiV9mihqARHPGcxi+gETwHD8zj4YONaohlqocQ0ehizAcLxbA63rfBvHd2fiXoFQl0mwA6deS9wkssicenQ/Wwo1On297ywqwjwAQk60KavQ6NG7e0dyKhvo6WVCm8/BwO3r92hns7Jkk+hvkVc+LxqS/Z8sMZjS47TDjqCgx1uALYbVJDrFI99FyPnJzwOUg8ZoLzJ/k9t/NLTqvTRkB35GCRDxHLDYvHbenISRsNFmwtATbgrA1dUA1vXft/iKfUdBA4F0deUElY7rf+EX0Zu6jPk17eg/H4ZTts8EerIUI0niQcqeeGnACbQwbbbZ3qIQT2BSoquBpsY+Da32C2NI0E/CCwA422+zxPLKqunvKKLZ03foBineYTYAJifoxoYRsExo+P9WpszP8KWlhl+Pg4HLyX2+BkwVv4QZWP4we1rLp68r9s+UEtKlp4qKsil2E42VVgfJCBnOvwhbhTSnVzZeXU1w20r12ToIB8IhJxzhXSwWpX6vB2T+QHJBAcAh+oHqosNywfo+oRnMBns6dstGVzdAPgW2Hh4qMcx5mC9ONCuFsQAJez0UWMthGbpJTzlerzgC1qCJLgcGNjv5OwE3cMD9KTEBgT1BALVY99b+kJEx4MbdnyxihPeXq45VdwQHniiwQCSaAJD8hfe6Hw/HXlEzfZ0kkTyEjR6S4RYALSJVw82UQCQ4euzO3Xzz1l15KpqhA22jhJ2ES0mbZpBxKR3zuOmIOlJP9hyw/trh770KVIgicC2MGZhrZbfdaqHrv5sMd/hw+fNyCS2+sHUJr0fJBBe3zIP0gguwlo1QOLdsgydMw8akvHTHaHhN6lkgATkFTSZFm+EigqWjIIQ3kmYmWQi2EIx4/7Go1uV65/dF/BamcLEonkr9evn44J6+a/tBpSt73/CY7yymDt53FkUg3JCtWj/SjHnNGj84/DjVGCpPTrOC+n/XP5CQlkBYEmNM4ecBw1v6Ki+GVbOmOygjydyBgBJiAZQ82KMkFAbyCXm9v/SzLkxdCbnm0byGUCoSl16A0Ln5AiVFZVNXGjLT/ArWpIrvMj2DsZ998nMgAz61SP9phFo/P7KSf3HKnUNThnSHvn8X0SsJqAwuIcWORCen1+R9XD6kjS+P0QYAKyH0D82E4CegO5cFJggrC8DMu9DrDTi8BbjU5v+aqS3oJks3e/LWqInr+wefM27BeiyuDAFxHFcBoiiY3BVdwRTmlTU90fN26MtaShDgOLxCpZ0YJhWIVsNr7Xen+QXAONpEkk0B0CO/G8e1Aod55Ny5N3x1FeQwKaABMQ3gdZS+DDDeQc1bpSFhqEGR0Wk7VcfXBMD0d40vMcrJQ1aQMeW2jXm/8qLFx5sOMkLsKQwMmw9tAUWlyLMu8IO6Fbyssnbk1hudYUdeKJC/KbWsJnYXPI62D0UGsMp6Ek0BYBqB5YhGNuS0vyt7Z0tLTlBt8jga4QYALSFVo810oCegM5Kb3LMFBeL5l6oJVO0GiddGzGsKZFO3fm3rdx45WNNiDRasim17aNcbDMMBSRL8HmnqghAVU92ou0kqNGLcdu6d51SMjOxFncLb09VHzfVAI7oeQ9rJRzo03LkJsKk3bZRYAJiF3xorXdJGDokqnd9CbQl+EHWzyJH+yYTWpINLr4IOGELkBjA3tbdEsNCbzq0d5dr3dOj0RC34GePxvnfBoHf9fag8X3DSIgX8Hw0huad/R6yJYOFYPg0ZQsIMAHdRYEkS50nsBHS6Y6Qu+2nIlJwp03jmd2hQDUELWoV6/kfWvWzGzoyoV+navVkFdffWM0euxjkHO+DDs6s7dFq+qBHv6S5h31zwVnrkdXo6TkmDFLP+l58hqwPQdX9+lqCTyfBDJEYCdS5N9irfibKivr/ylEzMtQvayGBIwiwATEqHDQmEwQ0GpIQ0Pe8VI6uiH4RdTZk2ExmTCZdbRNYCeG1T0TkqK0snLyi7bMDRk3bukBiYQ4H7ZPw7Csjnb6huohbg874VuDOtej7bC3/y7mfSHxaPwGuOkle4fhTP7GtY+Ln2SeABbVEFA9cldR9cg8fNZoFgE+nM2KB63JIAE9STgUci/EakJTUG0qJwln0AtWBSVri5RiSW5u4hc2qSGbN2+NIgEuRQRPxbG7GkLVo0e3tZLR6KKjhQwjwRPn4sjrUXG8mAR6TqAZz6lHpQzNrap6H5usUvXoOVKWYDsBJiC2R5D294jAx5OEVQwFnYyDakiPiPp2casa4ggvVlVVvM4WNUTv9J2Tk/P/YO8M9NUfAXpUPVJ0C0Hp7NXQ0O80LJqmk7zjcPD3LkVsWUyXCGzGjXcjOkgetKWDpEve8WQS6CYBPpC7CY6XZReBMWNuOdDzWs7rxLCY7HI8+7x5Dc3MZRi2dDeGLdXb4V7MKSrqH/U87xIp1SNNTQ3Pcq5H6iI38vhlg0NJrxj5x/kotSB1JbMkEuiQQAvmbj0qPDU3Hq/HZqpUPTqkxQ8DR4AJSOBCTofbI6DVkC1b3hjlKU/3mH4Fx+7DYtq7jO+bR6AZJj2rPK+0urqxxpYf/mHDYjkbN5YmbFFvzAt7+xYNHboyt18/9xQkeHre1yiciTnAfJFA2gi8pqS8KeKEHrCnIyRtLFgwCbRJgAlIm1j4ZpAJ7BoW0+tcDN2YDg6DgszCct//g/k9yyKhyM/ZCLA8kikyv6hoySCl5NVIQi5Bkf1TVCyLIYEPCbTg3npcOWpuTUUDNk2l6vEhGP5LAnsTCO39Bv8mgaAT+O9//7jzzTfHVR1+WK/V6MU6DFn6EDDhd8W+G6OfFPJLULQKDzv01JfefPOEt4VYjfYBX0El8MYbz9QPGDDu+XA4twoayCfBQa9Cxo64oN4QqfX7P1Koa8OhyI1VFVP+w2dNauGytOwjwAdv9sWUHqWQwMiRy/qHw945mBsyC8UelcKiWVRmCbyO8dgrhdf803j8mrrMVs3aTCRQWLjgcCccuRyrE10B+w4w0UbaZAWBFiyn/Qc0puZUVTVgOXCqHlZEjUb6ToAJiO8hoAHmE4g5hWPyh0tPzsYX5puwN9d8m2lhGwT08Ig/hqSDfUNq42wotEEoYG9h3xDM82o8STiyDInICXCfSmfA7oEeuvs6NkSdJ0TifnZs9JAkLw8cASYggQs5He4ugbFjVxa4bnICGrHXooyju1sOr/OdwFaoISuohvgeB2MMGDt2+SHJpHcJBmNNhFEHG2MYDTGVABaLEH8QSs6Jx+uw7DdVD1MDRbvMJcAExNzY0DIjCcSc0aMHHCuEdz0mOJ8OE6mGGBmn/RrVgoffczirtKqqvooNiP3yyvoTsG9IuL6+YJwMiRjUkC/AYe4JlPVR75aDW/HsWJBMyvvWrZtS260SeBEJkAAn3/EeIIHuEDjxxAX5zc3hM7CizvX4FunJrHzZSECJbTD7lpaW5js2bJj1vo0u0ObUEigsXHlwKOReiA6GKSj50NSWztIsJpDAs/5pT4qyoUcNrFm16mzXYl9oOgn4ToAKiO8hoAH2ElBy1Kjln5HSuw5Des6EH73t9SXQlmMSKZbH8hT2DWmooBoS6Huh1Xm9J9Cm17aNcfSeQEqejDcxV4SvwBJo7aiQC1padt7HjorA3gV0PMUEmICkGCiLCx6BESMW9Y1EQt9B79hseP9pHPxe2XgbUA2xMWpptXncuKUHJBLifKXEVHyrj0hrZSzcRAIJzPl7Vi9cMXjw4dVUPUwMEW2ylQAbSrZGjnYbRkDJMWOWftLz5DX4wToHxvUxzECa0zkCUEPk8470YpWVDS9QDekctGw+a5casrXQUQJqiPgqfKUaks0B/8g3+YYS3qLciLx37dri9z56m/8hARJICQEmICnByEJIYBcBLOvZRznbvymVKME7mKxONcTSe+NNNDZvy8kRt7HxYWkEU2y23hMoFFE/wH0xE0UfmeLiWZw5BJJoGD0Lc0qHDBkYp+phTmBoSXYRYAKSXfGkN0YQUDIaXYRlesMzkX78ACb1NcIsGtFVAgk8IP8spSqhGtJVdNl6fswpKuo3wvNUCb7b34CXOdnqaUD9egv7eizKyZH3sOMhoHcA3c4YASYgGUPNioJGAOPHeze74jTpYVlPIYbj4PfNzpuAaoidcUub1dHo/H5YgXuCkErvCTQkbRWx4EwRSKKi5/RCFMccM6iSqkemsLOeIBNggyjI0afvGSCg54YsHux5zlQl5HmoMD8DlbKK1BPQG4/9VXkCDZSBf2MDJfWA7SuRewLZF7M2LYbqIRaHQjn3VFRc9W6bZ/BNEiCBlBNgApJypCyQBPYlgE3OejU25n8FSUgMnx6Hw9n3LL5jAYG3EMPbw07kFjZWLIhWBkzknkAZgJyeKlw0gFbrIZaDBw8qZ6dCeiCzVBJojwATkPbI8H0SSAOBwsLFR4VCocnY5OwiFF+QhipYZPoJ6OEaWg0poRqSfth21PDBnkCOuEYI9V3YzFXwzA7c21LIpUq5P4/Hp/3PbFNpHQlkJwEmINkZV3plMIGhQ1fm9u+f+LKHNV7xIxiFqVRDDI5XB6a9JYW6Qyl1CxsxHVAK0EejRi37rHTUr+ByYYDctslVFzPxnpdKluTl1ZWvXh3TnQl8kQAJ+ECACYgP0FklCWgCY8euHOi6yYnYN+QS/NmfVKwkgCU71d+QQ2LJziP+wmEcVsawx0Zj+e0Ilt8+DXuFlOD7rJOPUI8LZQGpJvAOFg1YJjz1U3YYpBotyyOBrhPgQ7LrzHgFCaSEwLZtT9YPGDDu+XA4twoayCdR6OE42CmQEroZKwTqlTwKUfv6+7X1+Yce8o2/v/XWkzsyVjsr8p1Aa0eCap6LL24pjDkaBxVN36OyhwEu/vqzJ50rCvrW/2bt2msb9/iUf5AACfhCgI0dX7CzUhLYk0Bh4YLDZSjnCvSmX45PDtjzU/5lCYEkEpG1engH1RBLItYDM1tVD9X4VceRpVQ9egAyvZe+g9gsT7a4d61fP/2/6a2KpZMACXSFABOQrtDiuSSQRgK7GjQ7Pi8dUYaJrONQFRXKNPJOW9FS/FcqcVdLi7uCjZ60Ufa1YN1h4DiRGcLB0tpKDfDVGFbeFgEPnQFrIEXN7tu3fg3nerSFiO+RgL8EmID4y5+1k8A+BIqKFh7qqshlUEOuwocH7XMC37CBgB728YLyZElBQd2f2QCyIWT7t1F3Eki54xSsYhfD2XoBCXYS7B9bps/4n1ByZTgs7ywvn/x2pitnfSRAAp0jwIdn5zjxLBLIGIE33vi/xk9/atyanYnea5GEDEHFg3BwXHnGIpCSinS8jpSYG9KSyO1/5KCv/X3btqe2p6RkFuILgV2qhxdD8gGFUgzFwe+kL5Fot1KtevwVKwtegVWQf11ZeVV9u2fyAxIgAd8JUAHxPQQ0gATaJzBixKJPhHNCF6MhOwm79X6i/TP5icEEWtUQT6rSfn0bnqcaYnCk2jANm4iG6+v7f1k6nk48RuNgx10bnHx+6z1sELoyEpK3U/XwORKsngQ6SYAJSCdB8TQS8IvAhAkPhjZv3nY85oWUYULlF2FH2C9bWG+PCPwPD9y7pUwurayc8VaPSuLFGSGgh0N6IjwNyf8FqPDAjFTKSrpCwMMz8QWF3cwdL+/P8fhlia5czHNJgAT8I8AExD/2rJkEukQgGl18kJLOhfjSFuPCQ7t0MU82hYCL+FUI4ZXm5TX+iWqIKWHZ0w6tejQ0FJyMQVZlSD6K8ClVjz0RmfDXexiierOU7u1M6E0IB20gga4RYALSNV48mwR8JaDVkFdeeb3og6U/vwxjIr4axMq7SwATZdU9juMuYeOpuwjTc93YscsPSXredKoe6eGbglL1XI8KR8jZntfneaoeKSDKIkjABwJMQHyAzipJoKcExo1bekAiIc5XSkzFj/ERPS2P1/tCwEXsKpXrxAoKav9INcSXGHxUqU7uN215fbyjZBnexJBHqh4fwTHlP1K+j2febcptua2mZuYbpphFO0iABLpOgAlI15nxChIwgkBrg+m1rYWOJ2Iw6Cs4qIYYEZkuG4EJtOIXyk0sZqOqy+xScoFWPRKuW4wVlC5CgVz6OiVUU1qIh9IqoUqV7NxZv3rjxlhLSktnYSRAAhknwAQk48hZIQmklsDw4fMGRHJ7/QDjoWeiZL1kL1/2EdArZcWVFKXS6/tHDivJTAB3DWnc9kXpqDmocSwOLvCQGfRdqaUW+3r8xPNabmGC3hVsPJcEzCbABMTs+NA6owjEPlj3P6Z74wx7xZzRo/OPQ096iRDy6zAuxzADaU7nCFAN6RynHp9VWLjyYMzBmSKkuhiFHdzjAllAqglghSsVF1KWNO+of46qR6rxsjwS8JcAExB/+bN2SwjoFaiEIycqJXfmRsTta9cWv2ei6dHo/H7KyT1HemoW5hcMNtFG2rRfAi4aXtVSOWXYUO0ZqiH75dWlE7TqgWWtP4+VyLCstTwBF1P16BLBjJxci+fX7WEnfGt5+cStGamRlZAACWSUABOQjOJmZfYRiDmjRhWcKB2hh2ichAOjZMSfXUfOrqmoKxfCTDVk1Kj+n8PGabNh77dw5OLgyzYCmHCL2+2XybBY+OLa4m22mW+ivVr1CIWSk/ElvhjzCbixp3lB0s/XOFTckqamuj9S9TAvQLSIBFJFgAlIqkiynKwjoFeaak7IqzG34nI4d8ieDso3sIzqza4rb1+3bkrtnp+Z8dfYsSsLEl7yLKnkdWjIHmOGVbSiiwQ8PKSrobzFqIZ0kdxup++a67H1BOzrMRc8T8RHVD1242PIf+sQmzulVDdXVk593RCbaAYJkECaCDABSRNYFmszAa165I/BkCvdWNE7j7e3ulQLPn9OSqeksrIWvXYmqiFKFhUtOxZjeq6HrafDl142Ryawtms1RHn3hUORhRyS0rW74MPhk9AuL8WVe3UkdK0snp0WApi6JmoQn5K6utCzmzZNbE5LLSyUBEjAKAJMQIwKB43xm8DIkcv6O2F1BZbjvBKqweGdtOd1jNlfGglFfo7GYX0nr8noacOG3ZrXu3fLGUqp2RhbPRSV87uf0QikpDK9+ME6KHJlSuU9ybkh+2O6x/BJrXq015Gwv4L4efoI1ONJ9FNHqBVUPdIHmSWTgIkE2AgxMSq0yQcCWilYMVopbw66406GAV1dRUr32j2LxuHsqqridWjf6149w15KRqNLPi1kaBaSqwkwrrdhBtKczhHAsqTifsdR89loaxvYmDG3HOi6LRPRuL0MZ1D1aBuTn+/q5+OLmPBRUv9++BmqHn6GgnWTgD8EmID4w521GkRAz5VIeu6lmNMxEWb1bB8NJbZIKZY0NeXes3HjlY0GufmRKSNGLOqbkxP+NlQbLNkrPo2Dz4GP6Fjzn4/UkKamhqc4WffDuMWcoqL84zFnRnckfAHvUvX4EI05/zZAYf6Z67rLa2qmvWaOWbSEBEggkwTY8MgkbdZlGAGteiw/zhNqLnqUT4VxqVotaifKe1IpJ1ZdPWmDqWrIyLErh4ZddxYaaufA9z6GBYfmdI6AXgDhAc/15ge9MbfbohE/BpNDO4ePZ2WQAPo8xHpMMi+prY08TdUjg+RZFQkYSIAJiIFBoUnpJ6DnRPTqtfMibHJVjNqOSlONryqp5iebvfvXr5++PU119KjYaPSOPlLu+LoSXikSpWEojM+EHhH15WKthqxXWCq6eXv9E8FTQ6h6+HLXda1SqMHqbjfsLF33wpQtXbuUZ5MACWQjATY2sjGq9KkDAnoexLLP4YQyNLW/hn/TvSpUE5Kc33uOG6spn/pPU9WQaHTR0UpGpmMOyw/BJK8DgPzIXAJ12FjvAeW684KihgwfPm9ATk7ulfguX4GwHGZuaAJrGQRWsQHJcaygT/2Tq1fHdgaWBB0nARLYgwATkD1w8I9sJqDnPkQiznlICKbBzyE4MnX/66EHm/AjPC83LB7ALupNJnLGEJbeza44TbqiFGRGZJCPiThstQkjCnWDT85p3lH3++xVQ3YtlS0dWYZAjcfR1UUjbI2vTXY3Ivu4J+y4Sysqpm0xs/PFJpy0lQSyi0CmGmDZRY3eWEZAyVGjln8GY49jaFjrncH9Wv1pB+p/RCpnTlXV5JfMhKjkyOOXH+Uk1VQ8HM6Hjflm2kmr9kOgDguxrQpJ76aKiumb93OuVR9r1SM3N+cKJRyoHp1eKtsqHy03FnmH2ojnRywvr+EJqh6WR5Pmk0CaCDABSRNYFmsGAd2rn0jI72P/i2vQ+Ddh/wv8OIuXlJQ3FPSte9jUH+fx42O96rcXnIrFhGOwdyQOBwdfdhHQc0PQEJRzamtDj9s/6VfP9egf9YSLRSPkl+AbVQ/z7sftUJjvFV5iSTw+/VWqHuYFiBaRgCkEmICYEgnakXICY8Ys+ZSrZCmGpOgdwE1b5QmTMuVvhUrMicdnvJJy51NUYDS64kgl3cl4UFyEIvulqFgWk1kCenPMVSHHvdFWNURvEBoKqR+jEwEbhIqBmcXH2jpBQHes/APJbiwSUU+YOsy0E37wFBIggQwRYAKSIdCsJnMEdO99Y2P+2ZiQiw33jN7novVHG5txzcFmXI+a2kM9dOjK3P793ZM94ZWhgREFU6ohmbudU1VTqxqCvW7m1tVFHjP1XtvX2V2qRw82CN23SL6TagI70MnzK6XEwurqKehMMXET1lS7zPJIgAR6SoAJSE8J8nqjCESjC48RTng2fhC/C8P6GmVc+8a09lC7YXmDyUtUYsPGgdiw8Sq4oTdtHNC+O/zEYAINGL70sBCJG0xW3jS/aHR+PylzL8MKDlfjT6oe5t1UugPlX+hAiWFxjcepepgXIFpEAiYTYAJicnRoW6cJ6F76ggGJ06WSs3HRZ3HY1ku/a/WikCgzeS+HYcNiOb17530ReMvQ+hhrIedO31NZfOIHypuaW/9+5BHz1BC9aMSSUdJxyhCDU3CkaoPQLA5pxl1rVT3ccGjRuvKJm6h6ZJw/KyQB6wkwAbE+hHRg5PHLBoeS6nqQOBuH7as2YfUieb8jvHmVlVNfNzW62EvlMOGoK6A06f0XDjDVTtrVIQHj1BCteggn9xIobBNh+aAOreeHfhDQyeu/MRSzTKk+j8bjl+3wwwjWSQIkYD8BJiD2xzCwHuzqjc//ltKqhxTDAcI21aO92Onx+uv00Abp9X0KP/KJ9k70833soh4RovEkofdiUOIE2BLy0x7W3S0CrWoI4ndTfn79b/1blU1vELq8ENMH5sALqh7dCmXaL2pCg+EBx1HzKyqKX6bqkXberIAEspoAE5CsDm/2OldUtGSQJ5xZ6Cn9AbzMztWZpHwf6+n/MhkWC19cW7zN1GgWFS081BNhzAsRen7IwabaSbs6JKA3jfudFwrNXVc+CY3LzL0wt6jAdZM/Qv2TUOtRmauZNXWBwEv4fiM57PsIVY8uUOOpJEAC7RJgAtIuGn5gIgHd666c7acFaH8KF3GIQw0pLehb/yx6qJMmxgUrj4Xrtvc/wVFeDPZ9HkfYRDtpU4cEtBqCScXyxszsUaNkUdHy41wlsLqa+irq5lyPDsPjy4dNUDpWCeXOi8enYvNUrnDlSxRYKQlkIQEmIFkY1Gx1qbBwweFOODITPXHnwcf+2epnO369C7Xnbsdxl1RWznirnXN8f7uwcOXBTjhxMVZa0r3Zh/huEA3oDoFG/DA8gqE2c9M11ObEExfkNzWHf4S5BJNhIFWP7kQp3dco8bKUcm5LS/K369dP357u6lg+CZBAsAgwAQlWvK30VveuY1fuU9D3VgYH9D4UQZ1r4OILW+FKNbtf34bnTVVDJkx4MLRly+tjPeXEMITsS4gX1RBAsOyl1ZCXoEzMi0TkqtQtsapXuFoxXDouvsvya6iDqod5N8ZOBH+V8OS86urJ/6LqYV6AaBEJZAMBtGf4IgFzCXwwv2AaVI8LYSVXW9oVqnegMNzleaFlNTUT3zE1etHo4oOEE7oAyk0xbDzMVDtpV4cEtmOBh0elcuZUVU36d08ao8OG3ZrXq1fLhRjFMwU1DumwVn7oEwH5Cr6vcxMJ9yGqHj6FgNWSQEAIMAEJSKBtc1P3om/a8vp47OsxBzep3m8iqKpHe6FLonf6bxgiUTJ48MC/rlp1tp4rYtxLx/HVV98YLaUXQ6/ql2EgVs7iyzICWg3B0qvqpu6pIR+oHrgHkMxo1aOXZf4HwdydiM1vPce7saa8EapHTK/ExxcJkAAJpI0AE5C0oWXB3SWwax5Bshiqx8Uo46DulhOQ695Gw/B2x8m9uaLiqndN9XncuKUHtLSoc9GDPgMNnSNMtZN2dUgA8wDUY+ghn9PZCckjRizqG8kNnY/v8jSUPBgHf3M6ROzHh/IVJb0bmnf0emjjxisb/bCAdZIACQSPAH8Mghdzgz2OOUVFBZ9XaOAoIU+AoZw70Llo6ZWx/oIJvbOrqurWmtt7GXMKxxSMCnmiBF3qp8FmqiGdi69JZykkE5uUI+Zhj5rftL8kq5KjR68c5gk3hh+Zb8ABqh4mRXGXLc14ZjwipZpbWVn/T3OfG+aBo0UkQAI9J8AEpOcMWUIKCIwZc8uBrmqehLkNl6I4rp7UPaZvomF/S6K5+ScbNszCHiJmvkaOXNY/FMH+LUrMhIVHmmklrdoPgR1ovD7ueaJs74nKrapHxDlPSGcqFJOjUQ5/Z/YD04ePNyMoN+bmJh5cs2Zmgw/1s0oSIIGAE+APQ8BvAP/d16pH/vGekHPRINX7R7BXvGdB0bum/0kopyQer600t1dTx73fCM9TJWie6h7ynJ65zat9INCqhmAe0nyl+jyg1ZDCsYuPdVynDLbomPb2wSZW2TGBZjxnH8UpN8Tj9RvNfT507AQ/JQESsJ8AExD7Y2itB8OHzxuQk5N7JRqgV8AJrpKU2khuFVKuEF7zT+Pxa+pSW3TqSotG5/dTTuRsLDYwC6UOSV3JLCmDBHagUft7qB3VEDt+hO/zUNTN35YMBqBTVSmxBWG5ESuR/YaqR6eI8SQSIIE0EuCPRBrhsuj2CMSc0aMLRmO40FycMR4He7/bQ9Wz91tw+bPK80qqqxtrzO3tjDnRaMEw4cjZmOD8bdjMvSF6Fnc/rtYrZemVk7hanR/0O66zBcF5XHjOnOrq2r+b+xzo2Al+SgIkkF0EmIBkVzyN90b3eCPfuBz9o1fC2IHGG5wdBv4Hc2sWo+fzHpN7Plt3x24Jn4U9J65Hb/ox2YGeXpCArwReU1LeFHFCD5SXT6z31RJWTgIkQAK7EWACshsM/jedBJSMRpcXYhOyOajlVBxUPdKJe9+ysbuxfEY5XklNRfF6DMXQPdYGvpQsKlp2LLrSr8WwnjNhIFdPMjBKNMl4Ai34/jzhOHJOZWUdvu/c18P4iNFAEggYASYgAQu4H+7qnu3m5sjFaPFORv1c9ciPIHxc52Y0TBb26pX4lclqiN41O7fPztMxN2Q2TP8kDj6rPo4h/0cCHRF4HUMZ5wmRuN/k+V8dOcDPSIAEsp8Af9SzP8a+ehiNLj5IOKHbOLbf1zDsXflOtOcRkz6z29/HYe9L/Phb7yWx4lNYaulaDMmaAAu4qpIfYWCdthDAnC/1B/yoz6mqaniRqoctYaOdJBBMAk4w3abXmSIgZfhAJB8noT5OLM4U9I7raYIStcqR6ufx+KVNHZ/q96dSVVVNfinRkrxCSXUhrMFmadBv+CIBEtibAFa9E1OESlxQVTXV4AUn9jabf5MACQSVABOQoEY+s35Tacss77ZrU+JlbB53WbLFvbyyshh7AJg6D2RP89evn769urL4QTcU+g4++TmO7Xuewb9IILAEEni4Po6V7k4/evDAOzjkKrD3AR0nAesIhK2zmAaTAAl0lUATGikPKOEtRO/oS7YkHns6KdW6cvHyuHFLr04k5FPwpRR+DMM5TG73BMW/gkNgK1a3W5h0xS/XrZtWW41dWPgiARIgAVsIUAGxJVK0kwS6TkAPV3oJg5YuVqrvVfH4tH/ZmXx87PjatcVNGJb1sCMdrYbcgaPx40/5PxIIBIEEvHzCc8QZRx99xG3r1k2pDYTXdJIESCCrCLD3MKvCaZ4zo0cv/zR6q1fDskPNsy6rLdqBydsPhB2xoKKi+GXbE4+2IjV+fKxXQ0O/0zCSDGqIOA4Hn2dtgeJ7WURAvoH7fWHLzuZ7N2yY9X4WOUZXSIAEAkaACkjAAk53s56AVj3+iUnbF0mVd3VFxdR/Z2PyoaO4enVsZzw+5RE3LM/A3PRb8BY3WtNg+MpGAkl8sZ+UQp2BuR63MPnIxhDTJxIIFgH2GAYr3hn3lgpIRpHvwHCrXyns81FdPeWVbE082iI6dOjK3H793FOEI8qw6lohzmHnSlug+J6NBN6EmrkwNyLvxRDE92x0gDaTAAmQwN4E+CO9NxH+TQL2EdCqx0YlxYU5OWJSdXXxpiAlHzpcmzZNbIYa8oTwnDORgCzFW3X6fb5IwGICSdj+jPLUmccMGXQzkw+LI0nTSYAE9iFABWQfJHwjlQSogKSSZptlbRdS3iu8xJJ4fPqrQUs82iIybFgsJ7dPwclYZLgMn4/GwY6WtkDxPZMJvAU1c3EolHNPRcVV75psKG0jARIgge4Q4A9zd6jxGhLwnwBUD/V3jAk/P79vXXE8PiNQQ646wr9xY6wF+4Y8lYyIMzEtfSESNE7W7QgYPzOJAFQP+X+eI888+uiBy5l8mBQa2kICJJBKAlRAUkmTZe1DgArIPkhS8UYjso97QlIuq6ycvJmqR/tItRrSp0+/L7hKleFhdzzOZKdL+7j4ib8E3sZGoUsdJ/IzJh7+BoK1kwAJpJ8Af4zTz5g1kECqCOi5HuuVI84ryKufXlk5hUOu9kNWqyHg9KxU8rtYvvRGnM7hLPthxo8zTsBFcvxHJB9n5eXVLWXykXH+rJAESMAHAlRAfIAepCqpgKQs2g0YTnR3SLoYljFtC1WPrnPFviHhxsZ+J2GJ4jkYX38CSgh1vRReQQIpJCDFf4WnF01QP8NGof9LYcksigRIgASMJsAExOjw2G8cE5Aex1CrHi9irkdpbW3kab3aU49LDHgBY8cuPySZ9C5BQjcRKA4OOA667w8BF9X+RXmipKCgfi32tNErXvFFAiRAAoEhwAQkMKH2x1EmID3iXo/s42fK9VbU1Ex7rUcl8eI9CGg1pL6+YJwMiRjUkC/gw/AeJ/APEkgfgXfwvV6u3PBPa2omvpO+algyCZAACZhLgAmIubHJCsuYgHQrjFr1qMH6/6X19ZH/o+rRLYaduqiwcOXBjpP8EdSQybjgkE5dxJNIoHsEXHyx/6qkU9Kvb+3fqHp0DyKvIgESyA4C7PXLjjjSi+whUIeN9H7qOGJlZfXU17PHLTM90T3QEyY8uGjTa9uedzy9b4j6Eizlc9HMcNls1f+gtK1IJtw7168v/q/NjtB2EiABEkgFASogqaDIMtolQAWkXTR7f+Dhy1iNBrCe6/FHqh5740n/32PG3HKg6zafL6QzFXE4PP01soYAEPCgrq3BKmwlSvVZE49flgiAz3SRBEiABPZLgAnIfhHxhJ4QYALSKXq1aKTcHnbCt5aXT9zaqSt4UloIQA0Jbd68NYqhMqWo4FQckbRUxEKDQOBdoeSKcFjeWV4++e0gOEwfSYAESKCzBJiAdJYUz+sWASYgHWLzlFBx7NRd0ryj/jm9Z0WHZ/PDjBEYPnzegJycXudi75AZqHRgxipmRdlAAN9r8YLw5Gwp+/yFqkc2hJQ+kAAJpJoAxzqnmijLI4HOEJDyfanUT5IReduLa4u3deYSnpM5Ahs2zHpfiNito0bl/U04oRIsg3waas/JnAWsyVIC7+FeudmR7u2V1TPestQHmk0CJEACaSfAndDTjpgVkMAeBPSYcPSOqu81NdWXMfnYg41hf8S86uppcS8pzsfCAHqVrNcMM5DmmENAqx5/86Q6W6m8GysrmXyYExpaQgIkYCIBKiAmRoU2ZSuB95B83OYlEz+pqZn5RrY6mW1+rVs3pRZqyB2FY/L/FvIwmViIb8JHqiHZFuju+gM1E4sW3Co9eVt1VfGb3S2G15EACZBAkAhQAQlStOmrXwQ+6h0VXt85TD78CkNP6o15NRVTX1Sq5SJMnLsCJW3uSWm8NisItKqZUrnn7NxRPzcen8LkIyvCSidIgAQyQYAKSCYos44gE/h4TDiHZVh/H8Tj19RBDbk7Gi2okFJeh0UETodTudY7Rge6RgCqh1LiNpVsuY0dCl1Dx7NJgARIQBOgAsL7gATSQ0D3jv5FeXICx4SnB7B/pca8eLx4Q25uyyVKqh/Djk3+2cKaM0wAaqaqVK78fnNTHdXMDMNndSRAAtlDgMvwZk8sjfQkoMvwYtdjuZLr/xt5S6bYKCVHjVr+GSm967Cc8lkovFeKK2Bx5hDgfj3mxIKWkAAJWE6ACojlAaT5RhFwsQTnn6WQE4ToM5+bjxkVmzQZI1V19ZR/7tzZ68dKyotRyUs4ME+drywisEv1kOL7mOtRys1CsyiydIUESMA3ApwD4ht6VpxlBN5Bq3N5osW7a/36qf/NMt/ozn4IbNx4ZSPyjvtHj15RpaQ3CykIklDRZz+X8WPzCdRhyNUdkVDkZiYe5geLFpIACdhDgAqIPbGipWYScGHWak863y3Iq1+4fv10Jh9mxikDVklVVTX5Jax0dgXmhlyEJOQfqJRqSAbIp6EKhSF1cQyl/GF9baSEyUcaCLNIEiCBQBOgAhLo8NP5HhJ4GxvULfO8yM9raia+08OyeHmWEIjHL9uBvOPBUaOWxTHJbgYWI/gBXOubJe4FwY06fK9/6ki1sjI+9fUgOEwfSYAESCDTBKiAZJo468sGAkk0LP+IuR5n5ec3LGHykQ0hTbUPem5I8aacHDEJ84LOR+kbcFANSTXm1Jan41OjPHVuXV3k+spKJh+pxcvSSIAESOBjAlRAPmbB/5FAZwi8jcRjqVLuz+Pxaf/rzAU8J7gE1q4tbkLe8duiouU1nhDT0LN+LmjkB5eIsZ43IPu4S7neipqaaa8ZayUNIwESIIEsIUAFJEsCSTfSTiCJGp7xHHlGXl7dUiYfaeedRRVIVVk55dX8vnXFUEN0ArIOB9UQMyKs47BOx6W+NjyLyYcZQaEVJEAC2U+A+4Bkf4x99TBL9gF5C83FxaFQzj0VFVe96ytQVm49gcLCxUc5jjMFc0MuhDMF1jtkrwMNiMHdXtJbysTD3iDSchIgATsJUAGxM260OjMEEsjQn8KY8DOOPnrgciYfmYGe7bXoxm5dXXgmVlj6Ae6vKviL0Vl8ZZCAVj3Wg/95+X3rZzL5yCB5VkUCJEACHxCgAsJbIa0E7FVA5BtKeItyI/JejON/L62QWHhgCRQVLRnkeWIilnzVmxj2DyyIzDmu92u5O+R4yyoqpm/OXLWsiQRIgARIYHcCVEB2p8H/k4AQCUD4A8aEn3HMkEE3M/ngLZFOAnqlpZ07G65TnvM9DAd6AXVRDUkPcKge6u/KEefl5zXMYPKRHsgslQRIgAQ6S4AKSGdJ8bxuEbBMAdmKYRkLW1p23rdhw6z3u+UwLyKBbhI4btzSI8It8koh1WUo4oBuFsPL9iWwHXO4fuE4ckll5WSoHlIPweKLBEiABEjARwJUQHyEz6qNIaDnejzuOQJzPY64jcmHMXEJlCEvri3eJkSfUk+qs+H4GhxuoACk3lmdaGzEstkX5OfXT9UrkTH5SD1klkgCJEAC3SFABaQ71HhNpwlYoIC8ji/BwmRS3rdu3ZTaTjvGE0kgjQSi0WWHSeldpoS8CtUcmMaqsrXo7XDsl0IlF8fj05l4ZGuU6RcJkIC1BKiAWBs6Gt5DAi0YE/4IhlydXlVVfxuTjx7S5OUpJRCPT3kzL6/hBvTefxfd+M+jcKohnSOsVY9/KikuyomI4nh8xitUPToHjmeRAAmQQCYJUAHJJO0A1mWoAvIf7Eg9H/PN74/Hr6kLYFjoskUERoxY9ImcHOcSJeVEzGX4hEWmZ9rUHeDzK6XEwurqKUw8Mk2f9ZEACZBAFwhQAekCLJ5qPYEWdI8+7Ej5nXi84Q4mH9bHMxAOrF8//b9QQxYIzzsLPUZ/hNPJQDjeNSeheqiLcnLEpOrq4k1UPboGj2eTAAmQQKYJUAHJNPGA1WeQAvIaepBvijihB8rLJ9YHLAx0N0sIFBauPDgUci9UQk2BS4dmiVs9caMJLH4ddsSCioril5l49AQlryUBEiCBzBGgApI51qzJHwLNqPYhz1Hfqa6su4vJhz9BYK2pIVBTM/GdIUOOWOI58kyU+AyOIKshL2HI1cVS5V1dUTH130w+UnOPsRQSIAESyAQBKiCZoBzgOnxWQDbjBr8xFAqvYuIR4JswS10fM+aWAz2v5TyslDUNCyocnqVutuVWE77XDwjhLKiqmsTEoy1CfI8ESIAEDCdABcTwANG8bhFoxupBv0Hv6HewwtXdTD66xZAXGU6gouKqd4cMGbgSc5pOh6lP4EgYbnLPzVPiZcz1uLSlxb26qmryS1Q9eo6UJZAACZCAHwSogPhBPUB1Zl4Bka+ggXJj75zEQ2vWzGwIEGq6GmACw4fPG5CT0+tcbPI9HRgGZSGKnUg2HhTKnRePT2XikYUBpkskQALBIkAFJFjxzmZvdwop7neknutR/wsmH9kcavq2N4ENG2a9H4/X3ar3tcFnj+Jo2fsci//eBEXz0kRL8op4fNq/qHpYHEmaTgIkQAIfEKACwlshrQQypIBswnCrG3buzH1448YrG9PqEAsnAcMJjBy5rH847J2DuSGzYOpRhpvbkXm6U+G3nuPdWFM+9Z9MPDpCxc9IgARIwC4CTEDsipd11qY5AWlCo2SV8sT86urJ7Bm17u6gwekjEHMKx+QPdzx5Per4Fo7c9NWVjpL1UErvhuYdvR5ip0I6+LJMEiABEvCXAIdg+cuftXeXwAeTUfWwDOx6zN7R7nLkdVlKIObVVEx9MRwK/wi9TFfCyVctcbT546GUDfcy+bAkajSTBEiABLpIINzF83k6CfhNoHUJTiW8hdWVnIzqdzBYv9kEdq0AF7u7qKjgBVeJ65GMnAGLTVVDsGy2vCE3p2UV53CZfV/ROhIgARLoKQEqID0lyOszRUChotaNx5TqexUno2YKO+uxn0DMq6ws3tg7N3GpFOpSzJfCjuFGvZphE1a40stm193D5MOo2NAYEiABEkgLAc4BSQtWFvohgRTNAdmhhHog7IgFFRXFaDxJnYzwRQIk0GUCSo4atfwzjqOuxZfoLFzeu8tFpPaC1s1Cc3MTDzLxSC1YlkYCJEACJhOgAmJydGibTjT+iX09LpIq7+qKiqnc9Zj3BAn0iIBUes4UNvL7MRSHi1EUFm/A/zL/0ssEP6Q853S9WSiTj8wHgDWSAAmQgJ8EOAfET/qsuyMCO9As+pVSYmF1dfErVD06QsXPSKBrBNavn74decevx4xZWuV58hpkIOeghD5dK6XbZ7+mpLwp4oQeKK+aWN/tUnghCZAACZCAtQSogFgbuqw1XPfGbhRKXZCTIyYh+djE5CNrY03HfCUglVYV9ZwqJcWFrd+79KohLfhyP+w5erPQurt2TZD3FQArJwESIAES8IkAFRCfwLPaNglsF1LeK7zEknh8OpYN5VyPNinxTRJIIYF4/LIdyDtWRaOL4kKEZ2IZ3B+g+L4prEIX9R8omvMi4fD9TDxSTJbFkQAJkICFBKiAWBi0LDQZHaPq71ih5/z8vnXF8fgMDrnKwiDTJZMJSKW/d1p1VI74f7B0PQ6tRvb0hbke6hF8t0+Px+vvZPLRU5y8ngRIgASygwAVkOyIo81eNKKBcnfI8ZZVVEzbQtXD5lDSdtsJrF1b3AQffjdmzKJ1nudMVUKeh7/zu+nX6xhKOU+IxP1V8WvqulkGLyMBEiABEshCAlRAsjColrike1fXo7f1vPy8hhkVFdM3M/mwJHI0M+sJ6O9jXl7DNCgX58LZGhxeF5xOYH33x4WSUD0a7ogz+egCOp5KAiRAAsEgwH1AghFn37xsZx+QBgzu+LkbkcvXvTD5NSYevoWHFZPAfglEoyuOlNKbgr14LsLJBfu5YCt+VBYkk/K+deum1O7nXH5MAiRAAiQQUAJUQAIaeJ/c1qrHOt2rWlcXnrnuhSlbmHz4FAlWSwKdJBCPT/pPbW3oGink95CEVOKyttSQBCav/95zxBlDhgz8CZOPTsLlaSRAAiQQUAJUQAIa+Ey5vZsC0hfZx13K9VbU1EyD6sEXCZCAbQTGjl050HWTE/FdvgS2999lv3xDKG9BS0vLLzdsmPW+bT7RXhIgARIggcwTCGW+StYYJAIDB556oFJyBPYZuLa+NnznP/4x5d0g+U9fSSCbCGzb9mT9gAHjng+Hc6vwnT4GPVgbcFx+9NGDHv3Tn36M5Xz5IgESIAESIAESIAGfCYwbt7T3iBGLPoGVrqi2+RwLVk8CqSSgv9fDh88bkMoyWRYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJohQLwwAAAWNJREFUkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMCeBP4/mARs9wzgCEYAAAAASUVORK5CYII=\"/></defs>`,\r\n            },\r\n        },\r\n        bradesco: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"#CC092F\"/><rect x=\"3.59998\" y=\"5\" width=\"16\" height=\"15.2215\" fill=\"url(#pattern0_4795_830)\"/><defs><pattern id=\"pattern0_4795_830\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4795_830\" transform=\"scale(0.000640205 0.000672948)\"/></pattern><image id=\"image0_4795_830\" width=\"1562\" height=\"1486\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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AAECBAgQIECAQD8C/lDZz6xUSoAAAQIECBAgQIAAAQIECBAgQIAAAQIEmhMQNDQ3EgURIECAAAECBKoL7KvvaEMCBAgQIECAAAECBAgQGEZA0DDMKDVCgAABAgQIECBAgAABAgQIECBAgAABAgTqCwga6pvbkQABAgQIECBAgAABAgQIECBAgAABAgQIDCMgaBhmlBohQIAAAQIECBAgQIAAAQIECBAgQIAAAQL1BQQN9c3tSIAAAQIECBAgQIAAAQIECBAgQIAAAQIEhhEQNAwzSo2Aj+aCAAAs3UlEQVQQIECAAAECBAgQIECAAAECBAgQIECAAIH6AoKG+uZ2JECAAAECBAgQIECAAAECBAgQIECAAAECwwgIGoYZpUYIECBAgAABAgQIECBAgAABAgQIECBAgEB9AUFDfXM7EiBAgAABAgQIECBAgAABAgQIECBAgACBYQQEDcOMUiMECBAgQIAAAQIECBAgQIAAAQIECBAgQKC+gKChvrkdCRAgQIAAAQIECBAgQIAAAQIECBAgQIDAMAKChmFGqRECBAgQIECAAAECBAgQIECAAAECBAgQIFBfQNBQ39yOBAgQIECAAAECBAgQIECAAAECBAgQIEBgGAFBwzCj1AgBAgQIECBAgAABAgQIECBAgAABAgQIEKgvIGiob25HAgQIECBAgAABAgQIECBAgAABAgQIECAwjICgYZhRaoQAAQIECBAgQIAAAQIECBAgQIAAAQIECNQXEDTUN7cjAQIECBAgQIAAAQIECBAgQIAAAQIECBAYRkDQMMwoNUKAAAECBAgQIECAAAECBAgQIECAAAECBOoLCBrqm9uRAAECBAgQIECAAAECBAgQIECAAAECBAgMIyBoGGaUGiFAgAABAgQIECBAgAABAgQIECBAgAABAvUFBA31ze1IgAABAgQIECBAgAABAgQIECBAgAABAgSGERA0DDNKjRAgQIAAAQIEZgvsZl/pQgIECBAgQIAAAQIECBBILyBoSP8UAECAAAECBAgQIECAAAECBAgQIECAAAECBOYLCBrm27mSAAECBAgQIECAAIGbBbxK5mYX9xIgQIAAAQIECBAYUkDQMORYNUWAAAECBAgQIECAAAECBAgQIECAAAECBOoICBrqONuFAAECBAgQIECAAAECBAgQIECAAAECBAgMKSBoGHKsmiJAgAABAgQIECBAgAABAgQIECBAgAABAnUEBA11nO1CgAABAgQIECBAgAABAgQIECBAgAABAgSGFBA0DDlWTREgQIAAAQIECBAgQIAAAQIECBAgQIAAgToCgoY6znYhQIAAAQIECBAgQIAAAQIECBAgQIAAAQJDCggahhyrpggQIECAAAECBAgQIECAAAECBAgQIECAQB0BQUMdZ7sQIECAAAECBAgQIECAAAECBAgQIECAAIEhBQQNQ45VUwQIECBAgAABAgQIECBAgAABAgQIECBAoI6AoKGOs10IECBAgAABAgQIECBAgAABAgQIECBAgMCQAoKGIceqKQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEdA0FDH2S4ECBAgQIAAAQIECBAgQIAAAQIECBAgQGBIAUHDkGPVFAECBAgQIECAAAECBAgQIECAAAECBAgQqCMgaKjjbBcCBAgQIECAAAECBAgQIECAAAECBAgQIDCkgKBhyLFqigABAgQIECBAgAABAgQIECBAgAABAgQI1BEQNNRxtgsBAgQIECBAgAABAgQIECBAgAABAgQIEBhSQNAw5Fg1RYAAAQIECBAgQIAAAQIECBAgQIAAAQIE6ggIGuo424UAAQIECBAgQIAAAQIECBAgQIAAAQIECAwpIGgYcqyaIkCAAAECBAhMEthNOtvJBAgQIECAAAECBAgQIEDgSEDQcIThJgECBAgQIECAAAECBAgQIECAAAECBAgQIDBNQNAwzcvZBAgQIECAAAECBAgQIECAAAECBAgQIECAwJGAoOEIw00CBAgQIECAAAECBAgQIECAAAECBAgQIEBgmoCgYZqXswkQIECAAAECBAgQIECAAAECBAgQIECAAIEjAUHDEYabBAgQIECAAAECBAgQIECAAAECBAgQIECAwDQBQcM0L2cTIECAAAECBAgQIECAAAECBAgQIECAAAECRwKChiMMNwkQIECAAAECBAgQIECAAAECBAgQIECAAIFpAoKGaV7OJkCAAAECBAgQIECAAAECBAgQIECAAAECBI4EBA1HGG4SIECAAAECBAgQIECAAAECBAgQIECAAAEC0wQEDdO8nE2AAAECBAgQIECAAAECBAgQIECAAAECBAgcCQgajjDcJECAAAECBAgQIECAAAECBAgQIECAAAECBKYJCBqmeTmbAAECBAgQIECAAAECBAgQIECAAAECBAgQOBIQNBxhuEmAAAECBAgQIECAAAECBAgQIECAAAECBAhMExA0TPNyNgECBAgQIECAAAECBAgQIECAAAECBAgQIHAkIGg4wnCTAAECBAgQIECAAAECBAgQIECAAAECBAgQmCYgaJjm5WwCBAgQIECAAAECBAgQIECAAAECBAgQIEDgSEDQcIThJgECBAgQIECAAAECBAgQIECAAAECBAgQIDBNQNAwzcvZBAgQIECAAAECBAgQIECAAAECBAgQIECAwJGAoOEIw00CBAgQIECAAAECBAgQIECAAAECBAgQIEBgmoCgYZqXswkQIECAAAECBAgQIECAAAECBAgQIECAAIEjAUHDEYabBAgQIECAAIGkArukfWubAAECBAgQIECAAAECBAoICBoKIFqCAAECBAgQIECAAAECBAgQIECAAAECBAhkFRA0ZJ28vgkQIECAAAECBAgQIECAAAECBAgQIECAQAEBQUMBREsQIECAAAECBAgQIECAAAECBAgQIECAAIGsAoKGrJPXNwECBAgQIECAAAECBAgQIECAAAECBAgQKCAgaCiAaAkCBAgQIECAAAECBAgQIECAAAECBAgQIJBVQNCQdfL6JkCAAAECBAgQIECAAAECBAgQIECAAAECBQQEDQUQLUGAAAECBAgQIECAAAECBAgQIECAAAECBLIKCBqyTl7fBAgQIECAAAECBAgQIECAAAECBAgQIECggICgoQCiJQgQIECAAAECBAgQIECAAAECBAgQIECAQFYBQUPWyeubAAECBAgQIECAAAECBAgQIECAAAECBAgUEBA0FEC0BAECBAgQIECAAAECBAgQIECAAAECBAgQyCogaMg6eX0TIECAAAECBAgQIECAAAECBAgQIECAAIECAoKGAoiWIECAAAECBAgQIECAAAECBAgQIECAAAECWQUEDVknr28CBAgQIECAAAECBAgQIECAAAECBAgQIFBAQNBQANESBAgQIECAAAECBAgQIECAAAECBAgQIEAgq4CgIevk9U2AAAECBAgQIECAAAECBAgQIECAAAECBAoICBoKIFqCAAECBAgQIECAAAECBAgQIECAAAECBAhkFRA0ZJ28vgkQIECAAAECBAgQIECAAAECBAgQIECAQAEBQUMBREsQIECAAAECBAgQIECAAAECBAgQIECAAIGsAoKGrJPXNwECBAgQIECAAAECBMYQeGWMNnRBgAABAgQIEOhXQNDQ7+xUToAAAQIECBAgQIAAAQK3bu0gECBAgAABAgQIbCsgaNjW3+4ECBAgQIAAgRYE/JKuhSmogQABAgQIECBAgAABAp0KCBo6HZyyCRAgQIAAAQIECBAgQIAAAQIECBAgQIBACwKChhamoAYCBAgQIECAAAECYwl4lcxY89QNAQIECBAgQIAAgbMCgoazPB4kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgkIGs7peIwAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4KyBoOMvjQQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOCcgKDhnI7HCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbMCgoazPB4kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgkIGs7peIwAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4KyBoOMvjQQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOCcgKDhnI7HCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbMCgoazPB4kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgkIGs7peIwAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4KyBoOMvjQQIECBAgQIAAAQIECBBoXGDfeH3KI0CAAAECBAgMLyBoGH7EGiRAgAABAgQIECBAgAABAgQIECBAgAABAusJCBrWs7UyAQIECBAgQIAAAQIECBAgQIAAAQIECBAYXkDQMPyINUiAAAECBAgQIECAAAECBAgQIECAAAECBNYTEDSsZ2tlAgQIECBAgAABAgQIECBAgAABAgQIECAwvICgYfgRa5AAAQIECBAgQIAAAQIECBAgQIAAAQIECKwnIGhYz9bKBAgQIECAAAECBAgQIECAAAECBAgQIEBgeAFBw/Aj1iABAgQIECBAgAABAgQIECBAgAABAgQIEFhPQNCwnq2VCRAgQIAAAQK9COx6KVSdBAgQIECAAAECBAgQINCegKChvZmoiAABAgQIECBAgAABAgQIECBAgAABAgQIdCMgaOhmVAolQIAAAQIECBAgQIAAAQIECBAgQIAAAQLtCQga2puJiggQIECAAAECBAgQIECAAAECBAgQIECAQDcCgoZuRqVQAgQIECBAgAABAgQIECBAgAABAgQIECDQnoCgob2ZqIgAAQIECBAgQIAAAQIECBAgQIAAAQIECHQjIGjoZlQKJUCAAAECBAgQIECAAAECBAgQIECAAAEC7QkIGtqbiYoIECBAgAABAgQIECBA4HqB/fWnOpMAAQIECBAgQGANAUHDGqrWJECAAAECBAgQIECAAAECBAgQIECAAAECSQQEDUkGrU0CBAgQIECAAAECBAgQIECAAAECBAgQILCGgKBhDVVrEiBAgAABAgQIECBAgAABAgQIECBAgACBJAKChiSD1iYBAgQIECBAgAABAgQIECBAgAABAgQIEFhDQNCwhqo1CRAgQIAAAQIECBAgQIAAAQIECBAgQIBAEgFBQ5JBa5MAAQIECBAgQIAAAQIECBAgQIAAAQIECKwhIGhYQ9WaBAgQIECAAAECBAgQIECAAAECBAgQIEAgiYCgIcmgtUmAAAECBAgQIECAAAECBAgQIECAAAECBNYQEDSsoWpNAgQIECBAgAABAgQIECBAgAABAgQIECCQREDQkGTQ2iRAgAABAgQIECBAgAABAgQIECBAgAABAmsICBrWULUmAQIECBAgQIAAAQIECBAgQIAAAQIECBBIIiBoSDJobRIgQIAAAQIECBAgQIAAAQIECBAgQIAAgTUEBA1rqFqTAAECBAgQIECAAAECBAgQIECAAAECBAgkERA0JBm0NgkQIECAAAECZwR2Zx7zEAECBAgQIECAAAECBAgQOCsgaDjL40ECBAgQIECAAAECBAgQaFxg33h9yiNAgAABAgQIDC8gaBh+xBokQIAAAQIECBAgQIAAAQIECBAgQIAAAQLrCQga1rO1MgECBAgQIECAAAECBAgQIECAAAECBAgQGF5A0DD8iDVIgAABAgQIECBAgAABAgQIECBAgAABAgTWExA0rGdrZQIECBAgQIAAAQJrCHg/+jVUrUmAAAECBAgQIECAwGwBQcNsOhcSIECAAAECBAgQ2ERgt8muNiVAgAABAgQIECBAgMAJAUHDCRh3EyBAgAABAgQIECBAgAABAgQIECBAgAABApcFBA2XjZxBgAABAgQIECBAgAABAgQIECBAgAABAgQInBAQNJyAcTcBAgQIECBAgAABAgQIECBAgAABAgQIECBwWUDQcNnIGQQIECBAgAABAgQIECBAgAABAgQIECBAgMAJAUHDCRh3EyBAgAABAgQIECBAgAABAgQIECBAgAABApcFBA2XjZxBgAABAgQIECBAgAABAgQIECBAgAABAgQInBAQNJyAcTcBAgQIECBAgAABAgQIECBAgAABAgQIECBwWUDQcNnIGQQIECBAgAABAgQIECBAgAABAgQIECBAgMAJAUHDCRh3EyBAgAABAgQIECBAgAABAgQIECBAgAABApcFBA2XjZxBgAABAgQIECBAgAABAu0K7NstTWUECBAgQIAAgRwCgoYcc9YlAQIECBAgQIAAAQIECBAgQIAAAQIECBBYRUDQsAqrRQkQIECAAAECBAgQIECAAAECBAgQIECAQA4BQUOOOeuSAAECBAgQIECAAAECBAgQIECAAAECBAisIiBoWIXVogQIECBAgAABAgQIECBAgAABAgQIECBAIIeAoCHHnHVJgAABAgQIECBAgAABAgQIECBAgAABAgRWERA0rMJqUQIECBAgQIBAVwK7rqpVLAECBAgQIECAAAECBAg0JSBoaGociiFAgAABAgQIECBAgAABAgQIECBAgAABAn0JCBr6mpdqCRAgQIAAAQIECBAgQIAAAQIECBAgQIBAUwKChqbGoRgCBAgQIECAAAECBAgQIECAAAECBAgQINCXgKChr3mplgABAgQIECBAgAABAgQIECBAgAABAgQINCUgaGhqHIohQIAAAQIECBAgQIAAAQIECBAgQIAAAQJ9CQga+pqXagkQIECAAAECBAgQIECAAAECBAgQIECAQFMCgoamxqEYAgQIECBAgAABAgQIECBAgAABAgQIECDQl4Cgoa95qZYAAQIECBAgQIAAAQIECBAgQIAAAQIECDQlIGhoahyKIUCAAAECBAgQIECAAIGJAvuJ5zudAAECBAgQIECgsICgoTCo5QgQIECAAAECBAgQIECAAAECBAgQIECAQCYBQUOmaeuVAAECBAgQIECAAAECBAgQIECAAAECBAgUFhA0FAa1HAECBAgQIECAAAECBAgQIECAAAECBAgQyCQgaMg0bb0SIECAAAECBAgQIECAAAECBAgQIECAAIHCAoKGwqCWI0CAAAECBAgQIECAAAECBAgQIECAAAECmQQEDZmmrVcCBAgQIECAAAECBAgQIECAAAECBAgQIFBYQNBQGNRyBAgQIECAAAECBAgQIECAAAECBAgQIEAgk4CgIdO09UqAAAECBAgQIECAAAECBAgQIECAAAECBAoLCBoKg1qOAAECBAgQIECAAAECBAgQIECAAAECBAhkEhA0ZJq2XgkQIECAAAECBAgQIECAAAECBAgQIECAQGEBQUNhUMsRIECAAAECBAgQIECAAAECBAgQIECAAIFMAoKGTNPWKwECBAgQIECAAAECBAgQIECAAAECBAgQKCwgaCgMajkCBAgQIECAAAECBAgQIECAAAECBAgQIJBJQNCQadp6JUCAAAECBAgQIECAAAECBAgQIECAAAEChQUEDYVBLUeAAAECBAgQIECAAAECBAgQIECAAAECBDIJCBoyTVuvBAgQIECAAAECBAgQGE9gP15LOiJAgAABAgQI9CUgaOhrXqolQIAAAQIECBAgQIAAAQIECBAgQIAAAQJNCQgamhqHYggQIECAAAECmwjsNtnVpgQIECBAgAABAgQIECAwhICgYYgxaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECGwjIGjYxt2uBAgQIECAAAECBAgQIECAAAECBAgQIEBgCAFBwxBj1AQBAgQIECBAgAABAgQIECBAgAABAgQIENhGQNCwjbtdCRAgQIAAAQIECBAgQIAAAQIECBAgQIDAEAKChiHGqAkCBAgQIECAAAECBAgQIECAAAECBAgQILCNgKBhG3e7EiBAgAABAgQIECBAgAABAgQIECBAgACBIQQEDUOMURMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAbAUHDNu52JUCAAAECBAgQIECAAAECBAgQIECAAAECQwgIGoYYoyYIECBAgAABAgQIECBAgAABAgQIECBAgMA2AoKGbdztSoAAAQIECBAgQIAAAQIECBAgQIAAAQIEhhAQNAwxRk0QIECAAAECBAgQIECAAAECBAgQIECAAIFtBAQN27jblQABAgQIECBAgAABAgQIECBAgAABAgQIDCEgaBhijJogQIAAAQIECBAgQIBAWoF92s41ToAAAQIECBBoREDQ0MgglEGAAAECBAgQIECAAAECBAgQIECAAAECBHoUEDT0ODU1EyBAgAABAgQIECBAgAABAgQIECBAgACBRgQEDY0MQhkECBAgQIAAAQIECBAgQIAAAQIECBAgQKBHAUFDj1NTMwECBAgQIECAAAECBAgQIECAAAECBAgQaERA0NDI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QIAAAQIECBAgQIDAbAFBw2w6FxIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCBs8BAgQIECBAgAABAgQIECBAgAABAgQIECBAYLaAoGE2nQsJECBAgAABAgQIECBAgAABAgQIECBAgAABQYPnAAECBAgQIECAAAECBAgQIECAAAECBAgQIDBbQNAwm86FBAgQIECAAAECBAgQIECAAAECBAgQIECAgKDBc4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYLSBomE3nQgIECBAgQIAAAQIECBAgQIAAAQIECBAgQEDQ4DlAgAABAgQIECBAgAABAgQIECBAgAABAgQIzBYQNMymcyEBAgQIECBAgAABAgQIECBAgAABAgQIECAgaPAcIECAAAECBAgQIECAAAECBAgQIECAAAECBGYLCBpm07mQAAECBAgQIECAAAECBAgQIECAAAECBAgQEDR4DhAgQIAAAQIECOwQECBAgAABAgQIECBAgACBuQKChrlyriNAgAABAgQIECBAgAABAgQIECBAgAABAgRuCRo8CQgQIECAAAECBAgQIECgZ4F9z8WrnQABAgQIECAwgoCgYYQp6oEAAQIECBAgQIAAAQIECBAgQIAAAQIECGwkIGjYCN62BAgQIECAAAECBAgQIECAAAECBAgQIEBgBAFBwwhT1AMBAgQIECBAgAABAgQIECBAgAABAgQIENhIQNCwEbxtCRAgQIAAAQIECBAgQIAAAQIECBAgQIDACAKChhGmqAcCBAgQIECAAAECBAgQIECAAAECBAgQILCRgKBhI3jbEiBAgAABAgQIECBAgAABAgQIECBAgACBEQQEDSNMUQ8ECBAgQIAAAQIECBAgQIAAAQIECBAgQGAjAUHDRvC2JUCAAAECBAgQIECAAAECBAgQIECAAAECIwgIGkaYoh4IECBAgAABAgQIECBAgAABAgQIECBAgMBGAoKGjeBtS4AAAQIECBAgQIAAAQIECBAgQIAAAQIERhAQNIwwRT0QIECAAAECBAgQIECAAAECBAgQIECAAIGNBAQNG8HblgABAgQIECBAgAABAgQIECBAgAABAgQIjCAgaBhhinogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIbCQgaNoK3LQECBAgQIECAAAECBAgQIECAAAECBAgQGEFA0DDCFPVAgAABAgQIECBAgACBvAL7vK3rnAABAgQIECDQhoCgoY05qIIAAQIECBAgQIAAAQIECBAgQIAAAQIECHQpIGjocmyKJkCAAAECBAgQIECAAAECBAgQIECAAAECbQgIGtqYgyoIECBAgAABAgQIECBAgAABAgQIECBAgECXAoKGLsemaAIECBAgQIAAAQIECBAgQIAAAQIECBAg0IaAoKGNOaiCAAECBAgQIECAAAECBAgQIECAAAECBAh0KSBo6HJsiiZAgAABAgQIECBAgAABAgQIECBAgAABAm0ICBramIMqCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAlwKChi7HpmgCBAgQIECAAAECBAgQIECAAAECBAgQINCGgKChjTmoggABAgQIECBAgAABAgQIECBAgAABAgQIdCkgaOhybIomQIAAAQIECBAgQIAAAQIECBAgQIAAAQJtCAga2piDKggQIECAAAECBAgQIECAAAECBAgQIECAQJcCgoYux6ZoAgQIECBAgAABAgQIECBAgAABAgQIECDQhoCgoY05qIIAAQIECBAgQIAAAQIECBAgQIAAAQIECHQpIGjocmyKJkCAAAECBAgQIECAAAECBAgQIECAAAECbQgIGtqYgyoIECBAgAABAgQIECBAYJ7Aft5lriJAgAABAgQIECglIGgoJWkdAgQIECBAgAABAgQIECBAgAABAgQIECCQUEDQkHDoWiZAgAABAgQIECBAgAABAgQIECBAgAABAqUEBA2lJK1DgAABAgQIECBAgAABAgQIECBAgAABAgQSCggaEg5dywQIECBAgAABAgQIECBAgAABAgQIECBAoJSAoKGUpHUIECBAgAABAgQIECBAgAABAgQIECBAgEBCAUFDwqFrmQABAgQIECBAgAABAgQIECBAgAABAgQIlBIQNJSStA4BAgQIECBAgAABAgQIECBAgAABAgQIEEgoIGhIOHQtEyBAgAABAgQIECBAgAABAgQIECBAgACBUgKChlKS1iFAgAABAgQIECBAgAABAgQIECBAgAABAgkFBA0Jh65lAgQIECBAgMBtArvbvvYlAQIECBAgQIAAAQIECBC4WkDQcDWVEwkQIECAAAECBAgQIECAAAECBAgQIECAAIHbBQQNt4v4mgABAgQIECBAgAABAgQIECBAgAABAgQIELhaQNBwNZUTCRAgQIAA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\"/></defs>`,\r\n                primary: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"currentColor\"/><rect x=\"3.59998\" y=\"5\" width=\"16\" height=\"15.2215\" fill=\"url(#pattern0_4795_915)\"/><defs><pattern id=\"pattern0_4795_915\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4795_915\" transform=\"scale(0.000640205 0.000672948)\"/></pattern><image id=\"image0_4795_915\" width=\"1562\" height=\"1486\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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AAECBAgQIECAQD8C/lDZz6xUSoAAAQIECBAgQIAAAQIECBAgQIAAAQIEmhMQNDQ3EgURIECAAAECBKoL7KvvaEMCBAgQIECAAAECBAgQGEZA0DDMKDVCgAABAgQIECBAgAABAgQIECBAgAABAgTqCwga6pvbkQABAgQIECBAgAABAgQIECBAgAABAgQIDCMgaBhmlBohQIAAAQIECBAgQIAAAQIECBAgQIAAAQL1BQQN9c3tSIAAAQIECBAgQIAAAQIECBAgQIAAAQIEhhEQNAwzSo2Aj+aCAAAs3UlEQVQQIECAAAECBAgQIECAAAECBAgQIECAAIH6AoKG+uZ2JECAAAECBAgQIECAAAECBAgQIECAAAECwwgIGoYZpUYIECBAgAABAgQIECBAgAABAgQIECBAgEB9AUFDfXM7EiBAgAABAgQIECBAgAABAgQIECBAgACBYQQEDcOMUiMECBAgQIAAAQIECBAgQIAAAQIECBAgQKC+gKChvrkdCRAgQIAAAQIECBAgQIAAAQIECBAgQIDAMAKChmFGqRECBAgQIECAAAECBAgQIECAAAECBAgQIFBfQNBQ39yOBAgQIECAAAECBAgQIECAAAECBAgQIEBgGAFBwzCj1AgBAgQIECBAgAABAgQIECBAgAABAgQIEKgvIGiob25HAgQIECBAgAABAgQIECBAgAABAgQIECAwjICgYZhRaoQAAQIECBAgQIAAAQIECBAgQIAAAQIECNQXEDTUN7cjAQIECBAgQIAAAQIECBAgQIAAAQIECBAYRkDQMMwoNUKAAAECBAgQIECAAAECBAgQIECAAAECBOoLCBrqm9uRAAECBAgQIECAAAECBAgQIECAAAECBAgMIyBoGGaUGiFAgAABAgQIECBAgAABAgQIECBAgAABAvUFBA31ze1IgAABAgQIECBAgAABAgQIECBAgAABAgSGERA0DDNKjRAgQIAAAQIEZgvsZl/pQgIECBAgQIAAAQIECBBILyBoSP8UAECAAAECBAgQIECAAAECBAgQIECAAAECBOYLCBrm27mSAAECBAgQIECAAIGbBbxK5mYX9xIgQIAAAQIECBAYUkDQMORYNUWAAAECBAgQIECAAAECBAgQIECAAAECBOoICBrqONuFAAECBAgQIECAAAECBAgQIECAAAECBAgMKSBoGHKsmiJAgAABAgQIECBAgAABAgQIECBAgAABAnUEBA11nO1CgAABAgQIECBAgAABAgQIECBAgAABAgSGFBA0DDlWTREgQIAAAQIECBAgQIAAAQIECBAgQIAAgToCgoY6znYhQIAAAQIECBAgQIAAAQIECBAgQIAAAQJDCggahhyrpggQIECAAAECBAgQIECAAAECBAgQIECAQB0BQUMdZ7sQIECAAAECBAgQIECAAAECBAgQIECAAIEhBQQNQ45VUwQIECBAgAABAgQIECBAgAABAgQIECBAoI6AoKGOs10IECBAgAABAgQIECBAgAABAgQIECBAgMCQAoKGIceqKQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEdA0FDH2S4ECBAgQIAAAQIECBAgQIAAAQIECBAgQGBIAUHDkGPVFAECBAgQIECAAAECBAgQIECAAAECBAgQqCMgaKjjbBcCBAgQIECAAAECBAgQIECAAAECBAgQIDCkgKBhyLFqigABAgQIECBAgAABAgQIECBAgAABAgQI1BEQNNRxtgsBAgQIECBAgAABAgQIECBAgAABAgQIEBhSQNAw5Fg1RYAAAQIECBAgQIAAAQIECBAgQIAAAQIE6ggIGuo424UAAQIECBAgQIAAAQIECBAgQIAAAQIECAwpIGgYcqyaIkCAAAECBAhMEthNOtvJBAgQIECAAAECBAgQIEDgSEDQcIThJgECBAgQIECAAAECBAgQIECAAAECBAgQIDBNQNAwzcvZBAgQIECAAAECBAgQIECAAAECBAgQIECAwJGAoOEIw00CBAgQIECAAAECBAgQIECAAAECBAgQIEBgmoCgYZqXswkQIECAAAECBAgQIECAAAECBAgQIECAAIEjAUHDEYabBAgQIECAAAECBAgQIECAAAECBAgQIECAwDQBQcM0L2cTIECAAAECBAgQIECAAAECBAgQIECAAAECRwKChiMMNwkQIECAAAECBAgQIECAAAECBAgQIECAAIFpAoKGaV7OJkCAAAECBAgQIECAAAECBAgQIECAAAECBI4EBA1HGG4SIECAAAECBAgQIECAAAECBAgQIECAAAEC0wQEDdO8nE2AAAECBAgQIECAAAECBAgQIECAAAECBAgcCQgajjDcJECAAAECBAgQIECAAAECBAgQIECAAAECBKYJCBqmeTmbAAECBAgQIECAAAECBAgQIECAAAECBAgQOBIQNBxhuEmAAAECBAgQIECAAAECBAgQIECAAAECBAhMExA0TPNyNgECBAgQIECAAAECBAgQIECAAAECBAgQIHAkIGg4wnCTAAECBAgQIECAAAECBAgQIECAAAECBAgQmCYgaJjm5WwCBAgQIECAAAECBAgQIECAAAECBAgQIEDgSEDQcIThJgECBAgQIECAAAECBAgQIECAAAECBAgQIDBNQNAwzcvZBAgQIECAAAECBAgQIECAAAECBAgQIECAwJGAoOEIw00CBAgQIECAAAECBAgQIECAAAECBAgQIEBgmoCgYZqXswkQIECAAAECBAgQIECAAAECBAgQIECAAIEjAUHDEYabBAgQIECAAIGkArukfWubAAECBAgQIECAAAECBAoICBoKIFqCAAECBAgQIECAAAECBAgQIECAAAECBAhkFRA0ZJ28vgkQIECAAAECBAgQIECAAAECBAgQIECAQAEBQUMBREsQIECAAAECBAgQIECAAAECBAgQIECAAIGsAoKGrJPXNwECBAgQIECAAAECBAgQIECAAAECBAgQKCAgaCiAaAkCBAgQIECAAAECBAgQIECAAAECBAgQIJBVQNCQdfL6JkCAAAECBAgQIECAAAECBAgQIECAAAECBQQEDQUQLUGAAAECBAgQIECAAAECBAgQIECAAAECBLIKCBqyTl7fBAgQIECAAAECBAgQIECAAAECBAgQIECggICgoQCiJQgQIECAAAECBAgQIECAAAECBAgQIECAQFYBQUPWyeubAAECBAgQIECAAAECBAgQIECAAAECBAgUEBA0FEC0BAECBAgQIECAAAECBAgQIECAAAECBAgQyCogaMg6eX0TIECAAAECBAgQIECAAAECBAgQIECAAIECAoKGAoiWIECAAAECBAgQIECAAAECBAgQIECAAAECWQUEDVknr28CBAgQIECAAAECBAgQIECAAAECBAgQIFBAQNBQANESBAgQIECAAAECBAgQIECAAAECBAgQIEAgq4CgIevk9U2AAAECBAgQIECAAAECBAgQIECAAAECBAoICBoKIFqCAAECBAgQIECAAAECBAgQIECAAAECBAhkFRA0ZJ28vgkQIECAAAECBAgQIECAAAECBAgQIECAQAEBQUMBREsQIECAAAECBAgQIECAAAECBAgQIECAAIGsAoKGrJPXNwECBAgQIECAAAECBMYQeGWMNnRBgAABAgQIEOhXQNDQ7+xUToAAAQIECBAgQIAAAQK3bu0gECBAgAABAgQIbCsgaNjW3+4ECBAgQIAAgRYE/JKuhSmogQABAgQIECBAgAABAp0KCBo6HZyyCRAgQIAAAQIECBAgQIAAAQIECBAgQIBACwKChhamoAYCBAgQIECAAAECYwl4lcxY89QNAQIECBAgQIAAgbMCgoazPB4kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgkIGs7peIwAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4KyBoOMvjQQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOCcgKDhnI7HCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbMCgoazPB4kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgkIGs7peIwAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4KyBoOMvjQQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOCcgKDhnI7HCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbMCgoazPB4kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgkIGs7peIwAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4KyBoOMvjQQIECBAgQIAAAQIECBBoXGDfeH3KI0CAAAECBAgMLyBoGH7EGiRAgAABAgQIECBAgAABAgQIECBAgAABAusJCBrWs7UyAQIECBAgQIAAAQIECBAgQIAAAQIECBAYXkDQMPyINUiAAAECBAgQIECAAAECBAgQIECAAAECBNYTEDSsZ2tlAgQIECBAgAABAgQIECBAgAABAgQIECAwvICgYfgRa5AAAQIECBAgQIAAAQIECBAgQIAAAQIECKwnIGhYz9bKBAgQIECAAAECBAgQIECAAAECBAgQIEBgeAFBw/Aj1iABAgQIECBAgAABAgQIECBAgAABAgQIEFhPQNCwnq2VCRAgQIAAAQK9COx6KVSdBAgQIECAAAECBAgQINCegKChvZmoiAABAgQIECBAgAABAgQIECBAgAABAgQIdCMgaOhmVAolQIAAAQIECBAgQIAAAQIECBAgQIAAAQLtCQga2puJiggQIECAAAECBAgQIECAAAECBAgQIECAQDcCgoZuRqVQAgQIECBAgAABAgQIECBAgAABAgQIECDQnoCgob2ZqIgAAQIECBAgQIAAAQIECBAgQIAAAQIECHQjIGjoZlQKJUCAAAECBAgQIECAAAECBAgQIECAAAEC7QkIGtqbiYoIECBAgAABAgQIECBA4HqB/fWnOpMAAQIECBAgQGANAUHDGqrWJECAAAECBAgQIECAAAECBAgQIECAAAECSQQEDUkGrU0CBAgQIECAAAECBAgQIECAAAECBAgQILCGgKBhDVVrEiBAgAABAgQIECBAgAABAgQIECBAgACBJAKChiSD1iYBAgQIECBAgAABAgQIECBAgAABAgQIEFhDQNCwhqo1CRAgQIAAAQIECBAgQIAAAQIECBAgQIBAEgFBQ5JBa5MAAQIECBAgQIAAAQIECBAgQIAAAQIECKwhIGhYQ9WaBAgQIECAAAECBAgQIECAAAECBAgQIEAgiYCgIcmgtUmAAAECBAgQIECAAAECBAgQIECAAAECBNYQEDSsoWpNAgQIECBAgAABAgQIECBAgAABAgQIECCQREDQkGTQ2iRAgAABAgQIECBAgAABAgQIECBAgAABAmsICBrWULUmAQIECBAgQIAAAQIECBAgQIAAAQIECBBIIiBoSDJobRIgQIAAAQIECBAgQIAAAQIECBAgQIAAgTUEBA1rqFqTAAECBAgQIECAAAECBAgQIECAAAECBAgkERA0JBm0NgkQIECAAAECZwR2Zx7zEAECBAgQIECAAAECBAgQOCsgaDjL40ECBAgQIECAAAECBAgQaFxg33h9yiNAgAABAgQIDC8gaBh+xBokQIAAAQIECBAgQIAAAQIECBAgQIAAAQLrCQga1rO1MgECBAgQIECAAAECBAgQIECAAAECBAgQGF5A0DD8iDVIgAABAgQIECBAgAABAgQIECBAgAABAgTWExA0rGdrZQIECBAgQIAAAQJrCHg/+jVUrUmAAAECBAgQIECAwGwBQcNsOhcSIECAAAECBAgQ2ERgt8muNiVAgAABAgQIECBAgMAJAUHDCRh3EyBAgAABAgQIECBAgAABAgQIECBAgAABApcFBA2XjZxBgAABAgQIECBAgAABAgQIECBAgAABAgQInBAQNJyAcTcBAgQIECBAgAABAgQIECBAgAABAgQIECBwWUDQcNnIGQQIECBAgAABAgQIECBAgAABAgQIECBAgMAJAUHDCRh3EyBAgAABAgQIECBAgAABAgQIECBAgAABApcFBA2XjZxBgAABAgQIECBAgAABAgQIECBAgAABAgQInBAQNJyAcTcBAgQIECBAgAABAgQIECBAgAABAgQIECBwWUDQcNnIGQQIECBAgAABAgQIECBAgAABAgQIECBAgMAJAUHDCRh3EyBAgAABAgQIECBAgAABAgQIECBAgAABApcFBA2XjZxBgAABAgQIECBAgAABAu0K7NstTWUECBAgQIAAgRwCgoYcc9YlAQIECBAgQIAAAQIECBAgQIAAAQIECBBYRUDQsAqrRQkQIECAAAECBAgQIECAAAECBAgQIECAQA4BQUOOOeuSAAECBAgQIECAAAECBAgQIECAAAECBAisIiBoWIXVogQIECBAgAABAgQIECBAgAABAgQIECBAIIeAoCHHnHVJgAABAgQIECBAgAABAgQIECBAgAABAgRWERA0rMJqUQIECBAgQIBAVwK7rqpVLAECBAgQIECAAAECBAg0JSBoaGociiFAgAABAgQIECBAgAABAgQIECBAgAABAn0JCBr6mpdqCRAgQIAAAQIECBAgQIAAAQIECBAgQIBAUwKChqbGoRgCBAgQIECAAAECBAgQIECAAAECBAgQINCXgKChr3mplgABAgQIECBAgAABAgQIECBAgAABAgQINCUgaGhqHIohQIAAAQIECBAgQIAAAQIECBAgQIAAAQJ9CQga+pqXagkQIECAAAECBAgQIECAAAECBAgQIECAQFMCgoamxqEYAgQIECBAgAABAgQIECBAgAABAgQIECDQl4Cgoa95qZYAAQIECBAgQIAAAQIECBAgQIAAAQIECDQlIGhoahyKIUCAAAECBAgQIECAAIGJAvuJ5zudAAECBAgQIECgsICgoTCo5QgQIECAAAECBAgQIECAAAECBAgQIECAQCYBQUOmaeuVAAECBAgQIECAAAECBAgQIECAAAECBAgUFhA0FAa1HAECBAgQIECAAAECBAgQIECAAAECBAgQyCQgaMg0bb0SIECAAAECBAgQIECAAAECBAgQIECAAIHCAoKGwqCWI0CAAAECBAgQIECAAAECBAgQIECAAAECmQQEDZmmrVcCBAgQIECAAAECBAgQIECAAAECBAgQIFBYQNBQGNRyBAgQIECAAAECBAgQIECAAAECBAgQIEAgk4CgIdO09UqAAAECBAgQIECAAAECBAgQIECAAAECBAoLCBoKg1qOAAECBAgQIECAAAECBAgQIECAAAECBAhkEhA0ZJq2XgkQIECAAAECBAgQIECAAAECBAgQIECAQGEBQUNhUMsRIECAAAECBAgQIECAAAECBAgQIECAAIFMAoKGTNPWKwECBAgQIECAAAECBAgQIECAAAECBAgQKCwgaCgMajkCBAgQIECAAAECBAgQIECAAAECBAgQIJBJQNCQadp6JUCAAAECBAgQIECAAAECBAgQIECAAAEChQUEDYVBLUeAAAECBAgQIECAAAECBAgQIECAAAECBDIJCBoyTVuvBAgQIECAAAECBAgQGE9gP15LOiJAgAABAgQI9CUgaOhrXqolQIAAAQIECBAgQIAAAQIECBAgQIAAAQJNCQgamhqHYggQIECAAAECmwjsNtnVpgQIECBAgAABAgQIECAwhICgYYgxaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECGwjIGjYxt2uBAgQIECAAAECBAgQIECAAAECBAgQIEBgCAFBwxBj1AQBAgQIECBAgAABAgQIECBAgAABAgQIENhGQNCwjbtdCRAgQIAAAQIECBAgQIAAAQIECBAgQIDAEAKChiHGqAkCBAgQIECAAAECBAgQIECAAAECBAgQILCNgKBhG3e7EiBAgAABAgQIECBAgAABAgQIECBAgACBIQQEDUOMURMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAbAUHDNu52JUCAAAECBAgQIECAAAECBAgQIECAAAECQwgIGoYYoyYIECBAgAABAgQIECBAgAABAgQIECBAgMA2AoKGbdztSoAAAQIECBAgQIAAAQIECBAgQIAAAQIEhhAQNAwxRk0QIECAAAECBAgQIECAAAECBAgQIECAAIFtBAQN27jblQABAgQIECBAgAABAgQIECBAgAABAgQIDCEgaBhijJogQIAAAQIECBAgQIBAWoF92s41ToAAAQIECBBoREDQ0MgglEGAAAECBAgQIECAAAECBAgQIECAAAECBHoUEDT0ODU1EyBAgAABAgQIECBAgAABAgQIECBAgACBRgQEDY0MQhkECBAgQIAAAQIECBAgQIAAAQIECBAgQKBHAUFDj1NTMwECBAgQIECAAAECBAgQIECAAAECBAgQaERA0NDI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QIAAAQIECBAgQIDAbAFBw2w6FxIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCBs8BAgQIECBAgAABAgQIECBAgAABAgQIECBAYLaAoGE2nQsJECBAgAABAgQIECBAgAABAgQIECBAgAABQYPnAAECBAgQIECAAAECBAgQIECAAAECBAgQIDBbQNAwm86FBAgQIECAAAECBAgQIECAAAECBAgQIECAgKDBc4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYLSBomE3nQgIECBAgQIAAAQIECBAgQIAAAQIECBAgQEDQ4DlAgAABAgQIECBAgAABAgQIECBAgAABAgQIzBYQNMymcyEBAgQIECBAgAABAgQIECBAgAABAgQIECAgaPAcIECAAAECBAgQIECAAAECBAgQIECAAAECBGYLCBpm07mQAAECBAgQIECAAAECBAgQIECAAAECBAgQEDR4DhAgQIAAAQIECOwQECBAgAABAgQIECBAgACBuQKChrlyriNAgAABAgQIECBAgAABAgQIECBAgAABAgRuCRo8CQgQIECAAAECBAgQIECgZ4F9z8WrnQABAgQIECAwgoCgYYQp6oEAAQIECBAgQIAAAQIECBAgQIAAAQIECGwkIGjYCN62BAgQIECAAAECBAgQIECAAAECBAgQIEBgBAFBwwhT1AMBAgQIECBAgAABAgQIECBAgAABAgQIENhIQNCwEbxtCRAgQIAAAQIECBAgQIAAAQIECBAgQIDACAKChhGmqAcCBAgQIECAAAECBAgQIECAAAECBAgQILCRgKBhI3jbEiBAgAABAgQIECBAgAABAgQIECBAgACBEQQEDSNMUQ8ECBAgQIAAAQIECBAgQIAAAQIECBAgQGAjAUHDRvC2JUCAAAECBAgQIECAAAECBAgQIECAAAECIwgIGkaYoh4IECBAgAABAgQIECBAgAABAgQIECBAgMBGAoKGjeBtS4AAAQIECBAgQIAAAQIECBAgQIAAAQIERhAQNIwwRT0QIECAAAECBAgQIECAAAECBAgQIECAAIGNBAQNG8HblgABAgQIECBAgAABAgQIECBAgAABAgQIjCAgaBhhinogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIbCQgaNoK3LQECBAgQIECAAAECBAgQIECAAAECBAgQGEFA0DDCFPVAgAABAgQIECBAgACBvAL7vK3rnAABAgQIECDQhoCgoY05qIIAAQIECBAgQIAAAQIECBAgQIAAAQIECHQpIGjocmyKJkCAAAECBAgQIECAAAECBAgQIECAAAECbQgIGtqYgyoIECBAgAABAgQIECBAgAABAgQIECBAgECXAoKGLsemaAIECBAgQIAAAQIECBAgQIAAAQIECBAg0IaAoKGNOaiCAAECBAgQIECAAAECBAgQIECAAAECBAh0KSBo6HJsiiZAgAABAgQIECBAgAABAgQIECBAgAABAm0ICBramIMqCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAlwKChi7HpmgCBAgQIECAAAECBAgQIECAAAECBAgQINCGgKChjTmoggABAgQIECBAgAABAgQIECBAgAABAgQIdCkgaOhybIomQIAAAQIECBAgQIAAAQIECBAgQIAAAQJtCAga2piDKggQIECAAAECBAgQIECAAAECBAgQIECAQJcCgoYux6ZoAgQIECBAgAABAgQIECBAgAABAgQIECDQhoCgoY05qIIAAQIECBAgQIAAAQIECBAgQIAAAQIECHQpIGjocmyKJkCAAAECBAgQIECAAAECBAgQIECAAAECbQgIGtqYgyoIECBAgAABAgQIECBAYJ7Aft5lriJAgAABAgQIECglIGgoJWkdAgQIECBAgAABAgQIECBAgAABAgQIECCQUEDQkHDoWiZAgAABAgQIECBAgAABAgQIECBAgAABAqUEBA2lJK1DgAABAgQIECBAgAABAgQIECBAgAABAgQSCggaEg5dywQIECBAgAABAgQIECBAgAABAgQIECBAoJSAoKGUpHUIECBAgAABAgQIECBAgAABAgQIECBAgEBCAUFDwqFrmQABAgQIECBAgAABAgQIECBAgAABAgQIlBIQNJSStA4BAgQIECBAgAABAgQIECBAgAABAgQIEEgoIGhIOHQtEyBAgAABAgQIECBAgAABAgQIECBAgACBUgKChlKS1iFAgAABAgQIECBAgAABAgQIECBAgAABAgkFBA0Jh65lAgQIECBAgMBtArvbvvYlAQIECBAgQIAAAQIECBC4WkDQcDWVEwkQIECAAAECBAgQIECAAAECBAgQIECAAIHbBQQNt4v4mgABAgQIECBAgAABAgQIECBAgAABAgQIELhaQNBwNZUTCRAgQIAA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\"/></defs>`,\r\n            },\r\n        },\r\n        'c6-bank': {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"#242424\"/><mask id=\"mask0_4798_812\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"3\" y=\"7\" width=\"18\" height=\"10\"><rect x=\"3.49036\" y=\"7.49683\" width=\"17.0191\" height=\"9.00684\" fill=\"url(#pattern0_4798_812)\"/></mask><g mask=\"url(#mask0_4798_812)\"><rect x=\"-5.47693\" y=\"2.6731\" width=\"34.9536\" height=\"22.3804\" fill=\"white\"/></g><defs><pattern id=\"pattern0_4798_812\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4798_812\" transform=\"matrix(0.00208333 0 0 0.00393662 0 -0.208604)\"/></pattern><image id=\"image0_4798_812\" width=\"480\" height=\"360\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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CEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIFA/Av8PkkYgTPE9/SwAAAAASUVORK5CYII=\"/></defs>`,\r\n                primary: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"currentColor\"/><mask id=\"mask0_4798_809\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"3\" y=\"7\" width=\"18\" height=\"10\"><rect x=\"3.49023\" y=\"7.49707\" width=\"17.0191\" height=\"9.00684\" fill=\"url(#pattern0_4798_809)\"/></mask><g mask=\"url(#mask0_4798_809)\"><rect x=\"-5.47705\" y=\"2.67334\" width=\"34.9536\" height=\"22.3804\" fill=\"currentColor\"/></g><defs><pattern id=\"pattern0_4798_809\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4798_809\" transform=\"matrix(0.00208333 0 0 0.00393662 0 -0.208604)\"/></pattern><image id=\"image0_4798_809\" width=\"480\" height=\"360\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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CEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIFA/Av8PkkYgTPE9/SwAAAAASUVORK5CYII=\"/></defs>`,\r\n            },\r\n        },\r\n        caixa: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"#005CA9\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.32149 17.0673L4 17.4577V17.6963H16.9508L20 9.98645V6.30347H6.27854L4.32149 17.0673Z\" fill=\"url(#pattern0_4795_812)\"/><defs><pattern id=\"pattern0_4795_812\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4795_812\" transform=\"matrix(0.00442199 0 0 0.0062102 -1.65795 0)\"/></pattern><image id=\"image0_4795_812\" width=\"734\" height=\"351\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/></defs>`,\r\n                primary: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"currentColor\"/><mask id=\"mask0_4795_934\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"4\" y=\"6\" width=\"16\" height=\"12\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.32149 17.0676L4 17.458V17.6966H16.9508L20 9.98669V6.30371H6.27854L4.32149 17.0676Z\" fill=\"url(#pattern0_4795_934)\"/></mask><g mask=\"url(#mask0_4795_934)\"><rect x=\"3.05176\" y=\"5.12744\" width=\"17.9121\" height=\"12.5693\" fill=\"currentColor\"/></g><defs><pattern id=\"pattern0_4795_934\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4795_934\" transform=\"matrix(0.00442199 0 0 0.0062102 -1.65795 0)\"/></pattern><image id=\"image0_4795_934\" width=\"734\" height=\"351\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/></defs>`,\r\n            },\r\n        },\r\n        itau: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"#FF6200\"/><rect x=\"5\" y=\"5\" width=\"14\" height=\"14.0002\" fill=\"url(#pattern0_4797_870)\"/><defs><pattern id=\"pattern0_4797_870\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4797_870\" transform=\"scale(0.00166669)\"/></pattern><image id=\"image0_4797_870\" width=\"600\" height=\"600\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/></defs>`,\r\n                primary: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"currentColor\"/><rect x=\"5\" y=\"5\" width=\"14\" height=\"14\" fill=\"url(#pattern0_4797_856)\"/><defs><pattern id=\"pattern0_4797_856\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4797_856\" transform=\"scale(0.00166667)\"/></pattern><image id=\"image0_4797_856\" width=\"600\" height=\"600\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/></defs>`,\r\n            },\r\n        },\r\n        nubank: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37257 0 0 5.37261 0 12C0 18.6274 5.37257 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37261 18.6274 0 12 0Z\" fill=\"#810AD2\"/><rect x=\"4\" y=\"7.64062\" width=\"16\" height=\"8.71875\" fill=\"url(#pattern0_4795_880)\"/><defs><pattern id=\"pattern0_4795_880\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4795_880\" transform=\"scale(0.00195312 0.00358423)\"/></pattern><image id=\"image0_4795_880\" width=\"512\" height=\"279\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/></defs>`,\r\n                primary: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"currentColor\"/><rect x=\"4\" y=\"7.64062\" width=\"16\" height=\"8.71875\" fill=\"url(#pattern0_4797_821)\"/><defs><pattern id=\"pattern0_4797_821\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4797_821\" transform=\"scale(0.00195312 0.00358423)\"/></pattern><image id=\"image0_4797_821\" width=\"512\" height=\"279\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/></defs>`,\r\n            },\r\n        },\r\n        santander: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"#EC0000\"/><rect x=\"4\" y=\"3.41357\" width=\"16\" height=\"15.1723\" fill=\"url(#pattern0_4797_840)\"/><defs><pattern id=\"pattern0_4797_840\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4797_840\" transform=\"matrix(0.00453654 0 0 0.00478404 0.00184297 0)\"/></pattern><image id=\"image0_4797_840\" width=\"1192\" height=\"322\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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zy3yfW98PuS3eO5Lsr27U3zIz+21dXTgHd1fOfAXAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAAC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\"/></defs>`,\r\n                primary: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"currentColor\"/><rect x=\"4\" y=\"3.41357\" width=\"16\" height=\"15.1723\" fill=\"url(#pattern0_4797_837)\"/><defs><pattern id=\"pattern0_4797_837\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_4797_837\" transform=\"matrix(0.00453654 0 0 0.00478404 0.00184297 0)\"/></pattern><image id=\"image0_4797_837\" width=\"1192\" height=\"322\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKgAAAFCCAYAAADVOuVmAAAKo2lDQ1BJQ0MgUHJvZmlsZQAASImVlwdUk8kWx+f70kNCS4iAlNCbIJ0AUkIPRZAONkISQigxBIKK2FlcwbUgIoIVXWkKrgWQtSCiWFgEC9g3yCKgrIsFGyrvCxyCu++8986750zmd27u3HtnzkzOPwCQ0WyRKA1WBiBdmCUO9/eix8bF03GDAAs0ARUYACKbkylihoUFA8Sm57/b+x4AyeY7lrJc//79fzUVLi+TAwAUhnAiN5OTjvBpZEg5InEWAKhixG+wPEsk4yaEqWKkQYQ7ZMyfYqmME6f43WRMZLg3AGg8AHgSmy3mA0CiIn56NoeP5CHZI2wt5AqECHMRdk9PX4bMpCMImyIxIoRl+RmJ3+Xh/y1nojwnm82X89ReJg3vI8gUpbFX/p/H8b8tPU0yXcMYGaRkcUC4rB5yZvdTlwXJWZg4P3SaBdypnmScLAmImmZOpnf8NHPZPkHytWnzg6c5SeDHkufJYkVOMy/TN2KaxcvC5bWSxN7MaWaLZ+pKUqPk/mQeS54/JzkyZpqzBdHzpzkzNSJoJsZb7hdLwuX984T+XjN1/eR7T8/8br8ClnxtVnJkgHzv7Jn+eULmTM7MWHlvXJ6P70xMlDxelOUlryVKC5PH89L85f7M7Aj52izkQs6sDZOfYQo7MGyagQCEADbgZPFWZMma914mWikW8JOz6EzkVfHoLCHHag7d1trWDgDZG526Am9pk28Pot2Y8WW0AOBcgDj5Mz62AQBnnwNAeT/jM3iDXJ/tAJzv4kjE2VM+tOwDA4hACXn9GkAH+QUwBZbAFjgCV+AJfEEgCAWRIA4sARyQDNKBGCwHuWA9yAeFYDvYBcrAAXAYVIHj4CRoBOfAJXAV3ARd4B54BKRgALwEo+A9GIcgCAeRIQqkAelCRpAFZAsxIHfIFwqGwqE4KAHiQ0JIAuVCG6FCqAgqgw5B1dAv0FnoEnQd6oYeQH3QMPQG+gyjYBJMhbVhY3guzICZcBAcCS+G+XAGnAPnwVvhUrgCPgY3wJfgm/A9WAq/hMdQAKWAoqH0UJYoBsobFYqKRyWhxKg1qAJUCaoCVYdqRrWj7qCkqBHUJzQWTUHT0ZZoV3QAOgrNQWeg16C3oMvQVegGdBv6DroPPYr+hiFjtDAWGBcMCxOL4WOWY/IxJZijmDOYK5h7mAHMeywWS8OaYJ2wAdg4bAp2FXYLdh+2HtuC7cb2Y8dwOJwGzgLnhgvFsXFZuHzcHtwx3EXcbdwA7iNeAa+Lt8X74ePxQvwGfAm+Bn8Bfxs/iB8nKBOMCC6EUAKXsJKwjXCE0Ey4RRggjBNViCZEN2IkMYW4nlhKrCNeIT4mvlVQUNBXcFZYoCBQWKdQqnBC4ZpCn8InkirJnORNWkSSkLaSKkktpAekt2Qy2ZjsSY4nZ5G3kqvJl8lPyR8VKYpWiixFruJaxXLFBsXbiq+UCEpGSkylJUo5SiVKp5RuKY0oE5SNlb2V2cprlMuVzyr3Ko+pUFRsVEJV0lW2qNSoXFcZUsWpGqv6qnJV81QPq15W7aegKAYUbwqHspFyhHKFMkDFUk2oLGoKtZB6nNpJHVVTVbNXi1ZboVaudl5NSkPRjGksWhptG+0krYf2eZb2LOYs3qzNs+pm3Z71QX22uqc6T71AvV79nvpnDbqGr0aqxg6NRo0nmmhNc80Fmss192te0RyZTZ3tOpszu2D2ydkPtWAtc61wrVVah7U6tMa0dbT9tUXae7Qva4/o0HQ8dVJ0inUu6AzrUnTddQW6xboXdV/Q1ehMehq9lN5GH9XT0gvQk+gd0uvUG9c30Y/S36Bfr//EgGjAMEgyKDZoNRg11DUMMcw1rDV8aEQwYhglG+02ajf6YGxiHGO8ybjReMhE3YRlkmNSa/LYlGzqYZphWmF61wxrxjBLNdtn1mUOmzuYJ5uXm9+ygC0cLQQW+yy652DmOM8RzqmY02tJsmRaZlvWWvZZ0ayCrTZYNVq9mms4N37ujrntc79ZO1inWR+xfmSjahNos8Gm2eaNrbktx7bc9q4d2c7Pbq1dk91rewt7nv1++/sOFIcQh00OrQ5fHZ0cxY51jsNOhk4JTnudehlURhhjC+OaM8bZy3mt8znnTy6OLlkuJ13+crV0TXWtcR2aZzKPN+/IvH43fTe22yE3qTvdPcH9oLvUQ8+D7VHh8czTwJPredRzkGnGTGEeY77ysvYSe53x+uDt4r3au8UH5ePvU+DT6avqG+Vb5vvUT9+P71frN+rv4L/KvyUAExAUsCOgl6XN4rCqWaOBToGrA9uCSEERQWVBz4LNg8XBzSFwSGDIzpDH843mC+c3hoJQVujO0CdhJmEZYb8uwC4IW1C+4Hm4TXhueHsEJWJpRE3E+0ivyG2Rj6JMoyRRrdFK0Yuiq6M/xPjEFMVIY+fGro69GacZJ4hrisfFR8cfjR9b6Ltw18KBRQ6L8hf1LDZZvGLx9SWaS9KWnF+qtJS99FQCJiEmoSbhCzuUXcEeS2Ql7k0c5XhzdnNecj25xdxhnhuviDeY5JZUlDTEd+Pv5A8neySXJI8IvAVlgtcpASkHUj6khqZWpk6kxaTVp+PTE9LPClWFqcK2ZTrLVizrFlmI8kXSDJeMXRmj4iDx0Uwoc3FmUxYVEUMdElPJD5K+bPfs8uyPy6OXn1qhskK4omOl+crNKwdz/HJ+XoVexVnVmquXuz63bzVz9aE10JrENa1rDdbmrR1Y57+uaj1xfer63zZYbyja8G5jzMbmPO28dXn9P/j/UJuvmC/O793kuunAj+gfBT92brbbvGfztwJuwY1C68KSwi9bOFtu/GTzU+lPE1uTtnZuc9y2fzt2u3B7zw6PHVVFKkU5Rf07Q3Y2FNOLC4rf7Vq663qJfcmB3cTdkt3S0uDSpj2Ge7bv+VKWXHav3Ku8fq/W3s17P+zj7ru933N/3QHtA4UHPh8UHLx/yP9QQ4VxRclh7OHsw8+PRB9p/5nxc/VRzaOFR79WCiulVeFVbdVO1dU1WjXbauFaSe3wsUXHuo77HG+qs6w7VE+rLzwBTkhOvPgl4Zeek0EnW08xTtWdNjq99wzlTEED1LCyYbQxuVHaFNfUfTbwbGuza/OZX61+rTynd678vNr5bReIF/IuTFzMuTjWImoZucS/1N+6tPXR5djLd9sWtHVeCbpy7arf1cvtzPaL19yunbvucv3sDcaNxpuONxs6HDrO/Obw25lOx86GW063mrqcu5q753VfuO1x+9IdnztX77Lu3rw3/153T1TP/d5FvdL73PtDD9IevH6Y/XD80brHmMcFT5SflDzVelrxu9nv9VJH6fk+n76OZxHPHvVz+l/+kfnHl4G85+TnJYO6g9VDtkPnhv2Gu14sfDHwUvRyfCT/T5U/974yfXX6L8+/OkZjRwdei19PvNnyVuNt5Tv7d61jYWNP36e/H/9Q8FHjY9Unxqf2zzGfB8eXf8F9Kf1q9rX5W9C3xxPpExMitpg9KQVQyICTkgB4UwkAOQ7RDl0AEBdOaehJg6Z0/ySB/8RTOnvSHAGo9AQgah0AwYhG2Y8MI4RJyCyTQZGeALazk49pvTupzWWGRf6lHFSVUYdObi74h03p9u/6/ucMZFll0v/v878AdMICvXjCdG0AAAA4ZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAABKigAwAEAAAAAQAAAUIAAAAA8NTkMQAAQABJREFUeAHsvbtyJEd+708y1if2/wJo7nmA6Y0jH8UIySbW0HGnx9ExCVqSNz2e1iJoSs70uDrGgvYqgg1fim0+gMSeF9CCT8D/9wtWzRQK1d11ycy69CcjEnXL/F0+eanM7KrCJ58QJkvgl19+ySZrPIZDAAIQgAAEIAABCEAAAhCAAAQgAAEITJuAFqcuFPeKy2l7gvUQgAAEIAABCEAAAhCAAAQgAAEInDuBz84dwIT9v5Htl4rZhH3AdAhAAAIQgAAEIAABCEAAAhCAAAQgAIEpEtBTUwvFItxN0QdshgAEIAABCEAAAhCAAAQgAAEIQAACEJgwAa1MbYrVKW0fJuwKpkMAAhCAAAQgAAEIQAACEIAABCAAAQhMjYAWpMpPTxXrVNdT8wN7IQABCEAAAhCAAAQgAAEIQAACEIBAQYBvUBUkprNd15jKAlUNFE5BAAIQgAAEIAABCEAAAhCAAAQgAAEIBCZw4OkpP0XFa36BWSMOAhCAAAQgAAEIQAACEIAABCAAgXQEeIIqHesQmlYHhHyuRapD1w5k4TQEIAABCEAAAhCAAAQgAAEIQAACEIAABFoS0CLU3o9LHQjbluJIDgEIQAACEIAABCAAAQhAAAIQgAAEIACB5gS0KHV9YGGqfHrZXCIpIQABCEAAAhCAAAQgAAEIQAACEIDAOAjwit84yqGJFU0+hH7TRBBpIAABCEAAAhCAAAQgAAEIQAACEIAABCDQmoAek3ooPyp1ZH/RWjgZIAABCEAAAhCAAAQgAAEIQAACEIAABCBwjIAWo7IjC1LVS3fHZHENAhCAAAQgAAEIQAACEIAABCAAAQiMjQCv+I2tROrtyepP1579ygtatVc4CQEIQAACEIAABCAAAQhAAAIQgAAEIACBLgS04LStPiZ14njXRQ95IAABCEAAAhCAAAQgAAEIQAACEIAABCBQS+DEYtShy6taYZyEAAQgAAEIQAACEIAABCAAAQhAAAIQgEAbAlp9avP9qfJilT+qftFGF2khAAEIQAACEIAABCAAAQhAAAIQgMAQBPgG1RDU2+lctkv+IfXn2rv5cMQOBCAAAQhAAAIQgAAEIAABCEAAAhAYKQEWqEZaMCWz+jwF9VpPUS1KstiFAAQgAAEIQAACEIAABCAAAQhAAAKjI8AC1eiK5JlB2bMz7U5s2iUnNQQgAAEIQAACEIAABCAAAQhAAAIQSEuABaq0vIfQdqWnqLIhFKMTAhCAAAQgAAEIQAACEIAABCAAAQg0IfBpk0SkGY6AFpd+CaD9/aeffroIIAcREIAABCAAAQhAAAIQgAAEIAABCEAgOAGeoAqOdJQCL7XOxQfTR1k0GAUBCEAAAhCAAAQgAAEIQAACEIAAT1CNvA4EeoLKXv6suNCTVA8jdxnzIAABCEAAAhCAAAQgAAEIQAACEDgzAjxBdT4F/rlcXZ+Pu3gKAQhAAAIQgAAEIAABCEAAAhCAwFQI8ATVyEsq4BNUhae/11NUu+KALQQgAAEIQAACEIAABCAAAQhAAAIQGJoAT1ANXQLp9d+mV4lGCEAAAhCAAAQgAAEIQAACEIAABCBwmAALVIfZzPXKlZ7Kup6rc/gFAQhAAAIQgAAEIAABCEAAAhCAwPQI8IrfyMsswit+9vi9XvNbeIcAAQhAAAIQgAAEIAABCEAAAhCAAASGJsATVEOXwDD6L7XwtR5GNVohAAEIQAACEIAABCAAAQhAAAIQgMBTAjxB9ZTH6I60kLSXUZcRDPtZMhd6kuohgmxEQgACEIAABCAAAQhAAAIQgAAEIACBxgR4gqoxqsES7iNp/lxy+WB6JLiIhQAEIAABCEAAAhCAAAQgAAEIQKA5ARaomrMaKuU+ouKXekIriygf0RCAAAQgAAEIQAACEIAABCAAAQhA4CQBFqhOIho8wT6yBevI8hEPAQhAAAIQgAAEIAABCEAAAhCAAASOEmCB6iieUVzcRbbiSk9RrSLrQDwEIAABCEAAAhCAAAQgAAEIQAACEDhIgI+kH0QzjgtaPFrIkp8iW/Ne8pd8MD0yZcRDAAIQgAAEIAABCEAAAhCAAAQgUEuAJ6hqsYznpBaN9rLGC0gxg/9L4E1MBciGAAQgAAEIQAACEIAABCAAAQhAAAKHCLBAdYjMuM7Hfs3P3t7kT2uNy3OsgQAEIAABCEAAAhCAAAQgAAEIQGD2BFigmkYR3yUw83PpuE2gBxUQgAAEIAABCEAAAhCAAAQgAAEIQOAJAb5B9QTHOA8SfYeqcP5LvVa4LQ7YQgACEIAABCAAAQhAAAIQgAAEIACB2AR4gio24QDy8+9Q/RhAVBMRPEXVhBJpIAABCEAAAhCAAAQgAAEIQAACEAhGgAWqYCijC9pE1/Crghd6YmuVSBdqIAABCEAAAhCAAAQgAAEIQAACEIDAJ7ziN5FKkPg1v5+FZaEntx4mggczIQABCEAAAhCAAAQgAAEIQAACEJgwAZ6gmkjh5a/5fZ/IXH8wfZ1IF2ogAAEIQAACEIAABCAAAQhAAAIQgAAEpkJAT1FdK6YMi6mwwU4IQAACEIAABCAAAQhAAAIQgAAEpkuAV/wmVnZandrL5MtEZt/rya0skS7UQAACEIAABCAAAQhAAAIQgAAEIHCmBHjFb3oFv05o8pUWxLKE+lAFAQhAAAIQgAAEIAABCEAAAhCAAAQg0IeAFnMWird9ZDTJKx17xVRh38Qm0kAAAhCAAAQgAAEIQAACEIAABCAAAQiMgIBWjDaK+9imSMcq1epUrucmtk/IhwAEIAABCEAAAhCAAAQgAAEIQAACEOhJQAs5WWnRaNFT3Mns0rUr6Yu9+yAFFyeNIgEEIAABCEAAAhCAAAQgAAEIQAACEOhAgG9QdYB2IMu6dD4r7cfaTflU0+dyIvqri7FAIRcCEIAABCAAAQhAAAIQgAAEIAABCMyegJ4uuq48wnSXwmnpvKvojX24TOEXOiAAAQhAAAIQgAAEIAABCEAAAhCAAARaEtCqUPWj5Q8tRXRKLr0LRb9+lypsOxlKJghAAAIQgAAEIAABCEAAAhCAAAQgcIQAr/gdgdPkklaGMqW7rKT9XOdXlXPBDz/99NO9hKZ89e5Kfl0HdwSBEIAABCAAAQhAAAIQgAAEIAABCEAAAt0JaMFmq1gX7rpLbZ5Tii8Uq09w1dkT6ty+uXWkhAAEIAABCEAAAhCAAAQgAAEIQAACpwl8ejoJKQ4R0IrPQtd+OnRd57/In3I6kqT/JdmxkpS3/SU1lvBGfq0bpyYhBAIRUF3PclFLbS9q9vNTjTfbUsq99h0ddqrjD7/u8hcCEIAABCAAAQhAAAIQgAAEYhNggaoHYU2Wb5X96yMiki3kyJat7Lg6YkvISz9L2FIT+H1IociCQEFA9dkLUNXo/yaZOvwohV6o2uXbrbZ76r4oECAAgUEJqJ9cyADHIrCwXpBgCwEIQGDkBPKx7kXJzAeNLz3eJEDgrAmwQNWj+NWx7JW9+v2pskQv5CzU2XiCGzXIlkwKfoiq5Knwd/Jr9fQURxDoRiC/SV8rd6aYaqG1m7G/5nLb9iDCceut2sNeWwIEIACBXgTUH15IwDKPxb63ji8UD4Uv1Q9tD13kPAQgAAEIxCeQz8kW0lSOVnxqfHuvPjxzQgIEzpkAC1QdSz+fUP+lQfY36mzWDdL1TiKbNhLysreg5gK+lG/b5slJCYGPBFRfr3VUxCGejvpoTJi99xKzU9wq3qlt7LUlQAACEDhIQP2gF50yxWVp27U/5J4siAQIQAACqQjk88FM+oo+/LKH7nuNHS2LAAEIQKA9AXVIt4pNwoMSeQAaPViPovWlCtvoTqFgVgRUMReKbjsp62mq9lDV439esFG8nlUh4gwEINCLgPsERfeDof/BSdbLMDJDAAIQgMBJAnkf7vFd6D58e1I5CSAAAQgcIqBOaafYNKwPyQl9XgatmxoVKN0qtA/Imx8B1bVMcRuozk1VzJ0MXykmWbCeXy3CIwhMn4Daf8x+MJs+ITyAAAQgMG4CEQeh23F7jnUQSEOAV/w6cM4nmH9tkTXpR8Vl31629XnEtIVrn/i1pqUeSX1ok4m050FAdTGTp2vFU+/dK8n5BLUX+t7zKW48hcAHAuoTtzqI1R9+qa7F8gkQgAAEIBCJgPrxXyKJvlcfnkWSjVgITIbAZ5OxdFyGZi3N8fck1i3z9El+0ydzy7xeCEupr6V5JB+CgO7dC8U76f5BMdZkbAjXQui8DyEEGRCAAAQgAAEIQAACEIAABOZEgAWqbqWZdcj2UhP2Lvlaq9LquxcGUk6CX8u3RWtDyTBLAqoLXrDcKX41SwdxCgIQgAAEIAABCEAAAhCAAASCE2CBqhvSZbdsSZ+iWnW0sWu2264ZyTcPAlqYulDcyptvFf3UIKGewL7+NGchAAEIQAACEIAABCAAAQicLwEWqLqVfdcFqitN4FfdVLbLpaeo9srxXbtcvVJ/Jd+yXhLIPFkCednv5QCv850uRXMiQAACEIAABCAAAQhAAAIQgECJAAtUJRgtdvs8HeJ/LX3RQlefpGtl9gfaUwWeokpFekR68kVXf2uqT7sYkUfRTXmIrgEFEIAABCAAAQhAAAIQgAAEJkaABaqWBRbgKSFP4m9aqu2UXE9ReSK87pS5W6YX4pPEt27mkSs0gXxx6m1ouTOXt5u5f7gHAQhAAAIQgAAEIAABCECgNQEWqFojC5LhtSb2iyCSTgjRItWtkrw/kSzk5bV8uwgpEFnjJMDiVOdy2XfOSUYIQAACEIAABCAAAQhAAAIzJcACVfuCXbbPUpvDC0epwiqVIunxE2LrhPpQNQABFqe6Q8+/D9ddADkhAAEIQAACEIAABCAAAQjMkAALVO0LNdTTQck+Kq4J8VZuft/e1c45vk71hFhnC8nYmYDK1ou0KRdYO9s6woz3I7QJkyAAAQhAAAIQgAAEIAABCAxOgAWqYYsg5ST/JrGrm8T6UJeAgBanLqTmTpEPonfjveuWjVwQgAAEIAABCEAAAhCAAATmTYAFqmHLN9lHxfPXit4kdPdKixlZQn2oSkNgIzWXaVTNUst+ll7hFAQgAAEIQAACEIAABCAAgZ4EWKDqCTBA9pQfFb+VvT8HsLmpiE3ThKQbPwEtOF7Lyq/Gb+moLdyO2jqMgwAEIAABCEAAAhCAAAQgMBABFqgGAl9Sm+yj4nqK6kF6b0q6Y+9ealFjFVsJ8pMR8AInoTuBn9UGd92zkxMCEIAABCAAAQhAAAIQgMB8CbBANY6yTfZRcU2QN3L5x4Ru32qR6iKhPlRFIKAyXEssr/b1Y7vtl53cEIAABCAAAQhAAAIQgAAE5kvgN/N1bXKebWRxlshqP0X1QyJdfkLsWnGTSB9qAhPIFxhdZ8YU/N/w9nncafvgeOoJJfmyUDrHImT5zkLbIsZaiNtKBwECEIAABCAAAQhAAAIQgAAEagiwQFUD5cSp/YnrXS9fafKcaYK97SqgaT7rkK53Sv+yaZ6e6dbKv+kpg+zDEfAC49D/tc9P/d0pbvu0EeXdS4ZjEbbFTnmr9rHU8ULR2yL2XbjaShYBAhCAAAQgAAEIQAACEIAABGoIsEBVA+XEqf2J630ub5R50UdAi7xrpb1WTLHwcKkJ/0qLAxvpI0yPwHogk/1B/1vFTb6wlMwM6dtJmeNdoVR1+EL7S8WstG3aft7nMpWVAAEIQAACEIAABCAAAQhAAAJVAnyDqkrk9PHD6SSdU3ghZ905d4uM+YT/tkWWvklXfQWQPz0B1UcvyPR9cqit4V6YeqO4UD1d53W1rYzg6WWHXyHc5jZda3shJb9X/Ebxe0XbfShsD13gPAQgAAEIQAACEIAABCAAAQhAoBMBTdpjhgcJ98Q3erAexX1MZyqyF9GdQkFQAiq/TaUMYx/eSUGS+h8UVC5Mtl8r3ipW29V1DH3IhAAEpkVAfYNfsY8VsmnRwFoIQAAC0yMQqwOX3O30aGAxBMIT4Amqbkx/7JatUS6/MnTbKGXPRH4iRCLWPcW0yc4kvQ2tcaTNEprxjeqkn0xyvZxkkO13ijeKCznwe8XvFN/7vLYECEAAAhCAAAQgAAEIQAACEDhAgAWqA2BOnN6fuN738kutoi/7CmmSXxPnjdLdN0kbIM0qgAxEJCKQ18FUr/e9Ul28TeRaEjXyZ6dYLFYl0YkSCEAAAhCAAAQgAAEIQAACUyXAAlW3ktt1y9YqV8rJ+k0ry7onfqFFj0X37ORMTCBLpM+LU5tEulADAQhAAAIQgAAEIAABCEAAAiMkwAJVt0LZdsvWKteVFnOuW+XomNhPeijru47Z22bL2mYg/WAEUpTV9yxODVa+KIYABCAAAQhAAAIQgAAEIDAaAixQdSgKTai3HbJ1yeKPLV90ydghj5+iOvZfyDqIrM2S1Z7l5BgJLCMb5fq2iqwD8RCAAAQgAAEIQAACEIAABCAwAQIsUHUvpO+7Z22c09//8cJR9KBFtwcpuY2u6JNPsgQ6UBGGQOzvT93m9S6MtUiBAAQgAAEIQAACEIAABCAAgckSYIGqe9Hddc/aKudNqu82abFgLcvet7KufeLLVP60N40cBQGVUVbsR9ymWBCNaD6iIQABCEAAAhCAAAQgAAEIQCAUARaoupPcds/aKufnSr1ulaNf4lW/7I1yLxqlItGcCfjbU35qjwABCEAAAhCAAAQgAAEIQAACEPiEBaqOlUCT672ypnjNzxa+TPREyyfyayt991YaMWQRZSM6DIFlGDEHpWwPXuECBCAAAQhAAAIQgAAEIAABCJwdARao+hV5qtf8bGXK16FW/bCczH1xMgUJhiYQu4x2QzuIfghAAAIQgAAEIAABCEAAAhAYDwEWqPqVxZ2yp/jPd7byhZ6iWnkndsifDvsuop5lRNmIngCB/Em9CViKiRCAAAQgAAEIQAACEIAABCCQgsBvUiiZqw5Nsh+0aLSRf18n8vFW+u6sN4G+tXSsFP0NLAIEIACB4ATUny0k1PFCsVi4Lu/rdKuwU+qHUo7y8S5R31lSP+1dlU+5LJbyxscO5fO/njn990FJdqVke+07Fq+We5cAgdESONBf2d6so9FuD24XRdhrx9GB/upXDo3/Bu6vrHdbUr7XviP9lSGMKFTKPSuZttT+Ren41O62lKDYpx2WoITcVbkV5VNsLT5rqGOvdI4OO8UHfvh+ZNH7j8oly4W47bhsirDQjmOf8KDMLq9y2OvA0WGvctx751P/IXQnoIJcKPdP3SW0zvlGhbdunatDBvl2o2zfdsh6Mot8oO6dpDRcApX9Wtpfx7KA8o9Fdpxy837SNzrHTPFC8YXiEOG9lO5Lced91Ulvzyrk5bKQ0y4Xl0l5O8SPE/eyYZ/HrbcqFx/PJoj5Vs5cRXLoS/GyfEIPAhPor85yMlbqrxYqXscx9FcPsmNXxLn1V/JrNEHlfyFjXOaZ4iKPsfpSiX8SfG8ql/WfnlwNd3CvOpSFEzcOSSo7++To8lsoxhr/vZfsveLWkfuhKFRCXhZFW1rosqOPY5WJRLcKj23g01ZZZpTYHZ0qrjub3kGyNhLysreg5gK+kO375sm7p5RvO+UOXmll/9nWve6lkS6nyn0tbSxQpUM+K02qP0s5lJXi5xNx8EfZuVd0vzebwU1eHgv55HJxvFBMNbCXql7BA87H8tDWZeL9yQaVxVbGx2L/pfhYPqEFAZXJQsmvFbM80l8JxFBh4v2VP/uxLeLU+6uh6oD1qh74PlW0y6X2g89FrGdk4V51JhuZTa3NKfWpLr9Y97umdt0r4Z2j2O6bZpp6urwfdbtZKGb59lLbsYfHNnBWiwR5YbmxOL5QRQ3if94Qf0pY4t/LdPsQPci3TEp+iKSo6DQmP+mIxGcwsSr3tZS/jmVAqLYXyz7ktieQ968r5XTfNIWbYFMnvWi1LaLq7kPTjEOky/vspXQ7LhSvFOcU3suZraIHm3dTc0zlY9tjlck3kr0bCxOVj30dZaC/Gkex0F+NoxzGYoXqw0K2XCuuFM9hQUpuPgn36jezJ2cmcqCyu5CpqzyOtew8nts4ivODtrMIebvJ5Mwyj7HGGCl4PbaBIAs0KaztoiNvLO7oMkVvn/wqpsoZzH/pupX8rxVThS9l/jaFMvl2Jz1fRdY16UlHZDbJxavM11L6OqLiL1R/9xHlIzoBAdWThdTcKLp/vVQ8h3AvJ90nDr6wLv6Z7FiW4lgHhTIxSvDTChvF26n0Jyqzreyd8uBR5jcLKpNgY6xmGo+nOtP+yhMy91de0N0dJxT3qvi7r8oUiz7rXPsrT44HLYu4Jd1OuurFhXJcK94onludqMK6V93IqifHfKzys70rxZeKUwkeO9wprsV7PxWjCzvze1mm4yLOafz92AZGNXgowPfZljo6d3ZHF1VUKYP5n+vdS+fnfexvkfe9zF+0SN85ad4QfuosoH3GouOY5C/k7d0dXw6V+VpWvY5o2R9Uf31zIEyQgOqH+9cbxasJmh/S5PcS5nocfcKR32My6Voqenvu7IXgSbjXkQeb2ydnR3agcrR951B2P6osXFcHD2KeyYi14jlwl5sHQ+r+quirMll07uyrhTKJ/qpqdMhjtcuF5K0VrxVTzZ2katThXv1mNmoLc+Nm1K++k0ujX6gSb/enbiuOc17IfWwDn8rJyQcV2oWcKArt6KJU2Vl1AkH9lx03kv9tWUfk/W/kwm1kHY/i5dtaO69T6KroYLGqAiTFocp7JT1vI+r6TnXX7YUwIQJ5vVjL5MsJmZ3E1ND3k6rRA/bBVVPGfjzqiZ/KcSuA5zBZv1ebyIasLPRXh+nTXx1mk/jKqPurGCzULjPJ9fiv8Xwthh0jlTl4v3mKi8pvqTSee87tPvbGfqlvfDjFYIjr4v7LEHoH0PlOZbD6bADFwVSqrK4VNxK4V3yrOGhnJ6BusH6cOlVYy/+LRMrsmxeLUofPpfCl4p/k64PireIytRFnqG8f2efryPIRH5CA2lymuJdI97OXAUUjCgKhCVxJ4A+qr3eKi9DCkTd+Aip391c7WUp/Nf7iOncLi/5qO/f+yv4pblTgPygOOl8790rXxX+V3YWi54J/UXS9nVt4LYd28pH5ybAlu7f6yS1QqeK4g1sr2oE/Kb5U9CJG62BZrTOdznBzOkmwFPZ7HUzaEUH5irI7piGD/f1a8S8qO3ciK8WLIQ2ase6HyL5dquyyyDoQ35OAysj97VZiPKC87CmO7BBISeArKXu8T6RUiq4PBGLfQz4oKnby/upOx+6vXhTn2UJgAgSuZKP7q5sJ2NrKRPl0obhWpp8UX7bKTOJREFD5ZTJkp+g52JzDpZzzAxG3rrdzdnTsvk1mgcqNQ3EjoO7gXiu6EvUNi74Cqvm1kLPVue+r5yMefy0ui4jyy6I35YOB9z34fKu4d71IyGBgt9OoVz32jSh2WMdWgPzuBNSmPFB2PbjqLoWcEBiUwOfS/ja/RzDYTFsUKe4hHzwq9VdffTjJDgSmRcD91beqy3eKs+iv5Ecmn9wXeN5GmCABleFaZv+geDlB87ua/LUybuX7oqsA8vUjMPoFKlWOleJebrpxvOznbrLcN8k0/apok0KfFi320vMuha4WOnxDd734SfXEnUnWIi9JjxOI/brqFeV1vACGuKoy8a+dW+n+VtHtiwCBqRPwPcL3h1lM+qZeGCHtp78KSRNZIyHwleyY/ORYbXMtPzx3u1QkTIxA3rfeyezXEzM9lLkvJGgnDstQApHTiMDWqUa5QJU3irW2e9n4VjFW55ZJdvCQL+T4Y2upwpVYXSdStkmkp4uaK2X6wfVGcdVFAHmeENg9OYpzwGO0cbh2kqp2kynjXtFtiQCBORHwYNP3BgabaUr1IbaavCz30kN/FRs28lMTmOzkWO2y+JHrdWpo6AtDwGUoSVtFL5aec/hczvuzMqtzhjCE76NaoMo7tbVA7BXdsV0qxgxugLHCrQSn/Ki49UUP+SuM76Mr6qfA9eat6hMLVf04bvtlb5Tbg7AkdbeRNWecKL8B/yAEviETIDBHAq7bW9X15RydG5lPu5j25P3VX6SD/iomaGQPSWBy/VXet+4F7WpIcOjuTiAvQ/ffL7pLmV3Ot/k9Z3aOjdChvW0axQKVCt2r7WvZs1d8rZhqwBFtkKqFnAf5caOYKlzmDFPo26RQEkAHC1X9IG77ZW+c+6Xq7qpxahIGJyD+txL6NrhgBEJgfAQ8vtiozl+MzzQsakJAZbdWOvqrJrBIM3UC7q/uptBfycZMtm4VU83hpIoQkoDKcCl5W0XPnwhPCbzN6/jTsxwFJZC/hTb8ApUKeyXP9oqvFVN3alfSGS0I8kbC76MpeC74RjxTDLrvnqse9Rl3tO5Y/ERVNmpLR2Rc3knE/g5V4bHLZ1UcsE1HQNw30vZ1Oo1ogsDgBF7IgqndxwaH1tKAXcv0jZLn/ZXHiwQInAsBj2G3Y3Y2H7/9IBtTz+PGjGVStqkMPX/cKFKGh0vOi8XLw5e50pPAhze0BnuCSgWcKe7lyFvFwRpDgoq2ln+pgjnexlamhQsPPD9Uotj6Asr3Tf4HlTmveDSHum2etHfKtyqbVW8pCGhMQLw3SvyycQYSQmA+BK5U/9fzcWdcnmic8BDaIvqr0ESRNyECL1T/o4/vu/CQXSvl81yOMFECKsMLmb5VfDFRF1KZ7Xn2JJ5oTAUksJ59IS/5ApUawUJxKwN+UPSCwdAhi2mABmlbyX8XU0dF9kvxXVbOxTi8iyE0kcwr6fFH724V3SkTDhO4PXwpypW3KpNNFMkIfULA9V8nXj45yQEEzovAa7WD5Xm5nMTb4D9gqZxuZDn9VZLiQ8lICXytdpCNyba8/0w9ThwTgrnY4jJkcapZaXrt4q5ZUlK1JLAr0iddoFJHtpbinxSvCgNGsM0S2LCWjrl9MH2bgFtsFV9LgV/7W8VWNFX5+Wt+94ntf6ky2SkuEus9G3V5nXf9J0Dg3Alszh1ABP/3IWXm/dW3IWUiCwITJTCaxSC1y6UYbhU/nyhLzBYBleONNiz+t6sNVzm3drlIfYrAvkiQZIHKnZiiV8VeF4pHtM1i25JP8lPeVNxwVpH92kaWn0q8b6xvxcuv/S1SKZ2Yns0A9r6QTi9S+cZJCEhATJcS9zagSERBYMoE/OrMasoOjND2fSib8v4q5fgplOnIgUAMAqPor9QuL+TcRpHFqRilnEhm3r9+m0jd3NR8K36LuTk1sD+7Qv+nxU6srQpvLdljXJgqu/wHLSLdlU/E2BeLveRexpBdI9OP2C/l10PNtSCnEvsTxOYTQvyU21rMbk+kO7vLA5e1n+C6Ubl86LjOrgACOaxyvJCoveKUBpXHnuCzP17MHDyofka9n6rs1nJybPdS32f2iofC1aELIzv/XsW3SGGTynErPVPh0hXJG/Fcd81c5Mv7K/f7qcZNheo+W/or0aO/6lOFTuZN1l8dskTle6drXx26PrLz/mc/DzU2LXRubH3LvfrOrMbWKKdUju5fxzCGchntFW3PsbDUxYXiGGy2ncnKS2X1ixWOJBxqU3XmNR7vqO5/Wgj4TbETeiuOrkQbxbFUomMuXuvi3bEEga7dSM6fAsk6JcadrvWtTyXscX2nvGPr3Hu48zhp94p4JiErtZOHPsJmlnctf94O5JM7t7+oXN5p64UqyqV7Qdwp6+fds0fJ6YVh9yXbfOvy3XUt57z9SsTjIGZR2i61PzbfZdIow31u1bayfVC5uKxaB5XLQpnKMdPxWMrkUva5z9/IJkJ/Ap3qSI3ajc6NbYxR7q/2ss+R/koQBgzV/sr178GR/ip8qaivvJHUr8JL7iXRE+at4l7R5b9X2Xu/UZBPF0q4zBN76+Ms377QdnZBPq/l1FC+ubzuFLcqp622rYPsz5TpOo9D3SeuZMdcxg7VfnQrto+haxkV+avbvOyK00V72xcnvP20fBBq34UlWbeKU5kM/Cz4F6H8PyZHbLa67gl3iuCB1LJNJ93GKPmyVvrXbfJMKK3ZXYdulBPy/5mpKu+9Tg51Eyjscbm4b7lV2TwUJ9meJqDyu1Gqb0+nTJLCg5ONogcnuyQapUQMfomlS35EuZ8W9sr0tfZj9bffSfad4i51u5JfC+m9VswUv1IcKvwo35exlcvfrXRcxdYzsPwvxdJ+dg7i5Drxp84CwmZ0f+X2cSe/dmFFH5YWs67Ijyn3V9+L2q3iUP1VJt2un0P2V+9VhAvZkDTk/bXbwOdJFT9X9rNO3eXR44iH50nCnZHfS0lbKHqbKcbqw+/li+VHDQOVo8tso+jx+17bYCEvnxsJfBlMaHNB7+XPonnybinl4y/dcp7OJfuj3g9OW/A8RdBvUIndheJGat4qDt15Pff28JnPZffq8OWgV9yAUgWXwW1EZfuIsocWbXY/qF6shzZkRPpXI7DF5fJace+yUbwYgU2jNyHntB7YUA9OvlP8QvfCpaIHKbuBbUL9rwTuVBbRB/l1sKV3n9eFa13/QvGNoutK6vBC7WSZWukc9bku9fEr7682fWQEyFvtr9byi/4qANgAInauY4oPAWS1EiGd7q82iu6vfqs4VH91OVB/tZHPQ87vfpT+V+J/obhS9L0rej2QDtc561orZrJh6mEtB1KWo9vJQuxuFPfaDxok0+WzklCPIb4PKvy0MLfF1elkpGhDINgrfiqchRTfKb5oY8CI0q5kyya2PW5EYvVOelKt8n4lfZn0biP4to8gc2wiX4vfUkatxDD6TXBszpftcR0Si+907uvy+YH2fWP1QtWNbHK/s5Z9e20J9QQ2Op1yMFK24mcd3DqeexsqQ2H/OYG8DXvh2fXlRtFtPGVYSZn1TjV8I8N3UzW+ZLfLn/6qBITd8RHI72fl/sp9R8p6a32rVGTUL19L11UqfRU99zr2OG9bOc9hSwIqx0xZUs1Bf5Su6/ze3tLS9slzPde5j3eSkKo9rqVro0gYEwFVhKXig+LUwzIFV0G6UEzJaxfDL/mwmHqBt7B/p7QXMThOSaYZKO5bcEuZ9E7KsinxTGGrmaQshIouD95H024qtgU9jF2WMtYsY4VRths5u1R035sq7BOU4zaiM6MsxzZMxcZlPlS4leIx9VfR6kqbMumSVhxj9lfrLjbFziOfF4qz6q/KzOTbXjF1eJDCVdmOMexHhLCN7Z9sj9avVLhsYvtyTL5suVBM2R5Xx+zpe63CNuhhX9ti5O/9ip8IrWTYVjHVKqVURQs30SSXBBe/upROxd71qwur0EpSrYiHtrujvBfK55vzsmP+WWTL6+71SJ35Snb9oDJyOa0URzPRGJjXegD9/tXs96ov/sXzYQD9qJwBAdWdndzIFP3reYpwqX5jkUIROg4SuD14Jd6F9xLt/sqvn9BfxeM8a8mqO3s5mCn6LYkUwf3VMoUi6VlLz2UKXSUd32t/Ia6b0jl2exDI60uKp+BeqdxWPUztnVX6HxTdPlK1x5veRiPgA4FeC1Sq6CtJeqs4h8UpQ3kpnxbeiR3UaG6lw4OiVOFWvl2kUjZTPa7n/uXBHd7ZBtXdnZx/NWIAHkS5X/JClev9YsS2RjVNvmdSkGIwUvbDg4Esryfl8+xDoDUB1SMPMjNl9KJninCdQgk6nhMYsL9a0l89Lw/OtCeQ91cr5fTiSoqQxVaidum5w01sPRX5b8Ty2jwr5znsRyBFOb5SuW36mRkut2xZSVqK9sh3LMMV2yedF6jUYbnAPQmcW7hN6NAqoS4vrqTomBK6NIgqFqmEPb/5pPpVomtBu6y+VvxJ/dWdYtZV0ITzrRPb/o0HA4oMKhODPwN1mXxM8aOO9RCGIbBOrPY7+qvExM9H3UquzqW/8tzB46lU4ZXa5TqVsnPRozHwhXx9Gdnfdyq7TWQdXcSvlCnFj1zWQwhAoNMClSr5SrrnuDhlpI8fFfdO7KBGvJWO+9h6SvJfq+wWpWN2uxFgkUrcVH9X2ox9kaoo4a+084Pq/9m8/idfM/mc8umpV6oTtwVwthAISUB1y4ueq5AyD8haHjjP6YgE1F+Ze+r+6iaiS4g+YwIJ+6ssAeZVAh2FCo8jNsUB26AEVkGlPRf2o8outo7nWhucKbXHnxsk75Pkuk9m8n4k0HqBSoOIlbLPdXGqIHNb7CTYrhLoKKvYlA/Y70yARSqhy29GU1mkcmFfKrr/OofX/1byM1Xwk1ObVMrQc54EVMe28jz2o/ruIwjpCaRcLHpDf5W+gM9NY95fxR4ffa552UUstvmcL1Wf+Ip2GaskH+XG7mOvo1rfU7jq1k4ibnuKOZX9Um1meSoR108TaLVAlXdUntzNPUT5qHgdNDWYvc5/V3ct0rkrlWMWSfa5iWWRSiWuOrzSJvYgLHTdctl9rfiT2sPsXv+TTxfy7WVoaAfkvVMdiH3TP6Ca02dIYB3bZ+6RsQk/lT9AfxW9Dj31kKMzJpCirsWcEK8SlZ3HEZtEus5OjfpY15GYC41vVH77sYOVjWvZ+D6ynavI8s9CfOMFqrxyn8PiVFHwKT8qvpbS2I8dFn55uykfsN+LQLFI5QWBsw3q9Fdy/s1EAXwlu39QH7dTtB9zCKtEToz2ke5E/qMmMQH1NTup/DGy2kVk+Yh/SuD66WG0I9ebm2jSEQyBCoF80n5fOR36cBlaoOVpPLTQ5sr7kQPjiMiAJX4VUYUXfG4jyg8teh1aYEVeVjnmsAOBRgtUeSe17SB/ylm88JBkIKMb2EMqXXmBXKpMk/g25QrQwnYWqQRL9XitzSvFlIutUhcsvJCkt2obj9+pCiZ1GEGrBGpdztcJ9KACAlUCm+qJwMeLwPIQd5xAqvHIKh9vHbeGqxAIS2ATVtwzaRfPzoQ5ker+vgpjLlKOEIhZlrdT6ldl60acvKgWK/gtrFhtMpbNo5PbaIFKVt8pehJ+buG1KtkihdN5g4n9q3DZlXXfBqT8WVngme97ceP2zBl4kWojBplizM5f4qMGPwb9VvV7kgtVsnsh+10fYwcPSvaxlSAfAjUEPCYhzIBAwv7qjfqr3QyQ4cL0CGwjm7yIJP8mktyyWNplmUaEffWxS4mN9Xqff6jcRDA7tsjbyAqyyPJnL/7kApUqtgsxxWRnrLA3CQ1LcTMo3PGC47o4YBuEwEu1l1UQSRMWkk8CfEN8N2E3bPpUF6quE3B/r3JeJ9CDCgg8I6C6t9fJmIvg2TOlnIhFgP4qFlnkjoJA3l/F/AF6EdpRjWUtM9aiRmGu+/Db4oBtNAJZNMlanFL9fogoP5bou1iCc7nLyPJnL/7oApU6qGsR+Hr2FI47eCUO2fEkYa6qkW8l6fsw0hpJ+Vq+9WlEffI2MnCCifztssUE7Q5qsm9YiisJ/YOif2GZcigWqvyNqmwCjqwS2HiTQAcqIHCMwO7YRa5NhkCWwNJ1Ah2ogMAxAlPrr66PORPo2nqiixuB3E8mJouoaRNRdjTRqnd7CY+5aJxFM/5MBB9coNJE7EIMNmfC4ZSbKTncnDIm8PXbHvIWPfLONaufTNvM1bm2fukmcKc8C8WpP01l1/0k6Q/qG+8UFz4xtpD327YzZvAHTV2uBAgMSWA3pHJ0ByPwVTBJ9YLeq7/a1F/iLASSEdgn0xRG0XUYMQel/Ey7PMgm9IUstMBcnvvWKd+HY45jl5GYn43YgwtUIrBW9GSboMdcNfG7SQFCjX0vPW9S6Mp1XMm36476aID14Mx0VX/p/M6qThdPU30p72P+YpEKridUP6mM16kUttCTtUjbNelt14zkg0BAAvuAshA1AAH1oVkCtesEOlABgVMEdqcS9Li+6JH3UNarQxcCnWccEQjkMTHqYz1PizWXvzumewLXthFtjMU8osnjEl27QJUPGr4el6mDW9P7o+ItPHDH/b5F+r5Ju94o3PER6gn4Vb+L+kvneVYLVVtF15lXilN/7c+F+Fpl7A+pZz4YScgi28GvnpEBI74xgX3jlCQcK4EssmG+z9xF1oF4CDQh8NAkUcc0Qb8VlWhMs+noK9naEfCYO1aYdN/qOUksMJabqB3FdGFQ2bULVLJoPahV41Tu1dAkXPzESSpdOepLNaRWvim9Oz1WiHOANZtk9aVG96hPqX5vZOBC8Y3i1BeqPDD8Qe3hVtsxBLfLmGETUziyIQCBsyKQRfb2Lh9PRVaDeAicJLA/mWI8CbLIpnyvdrmPrAPxvxKINiZUGW5nAHkOb3XMoBieu/BsgUoTrUzJYj/a+dySaZzp+1Hxxl7mk/j7xhn6J7xR2V+0EJO1SHuuSV1fFufq/DG/PWlQXCvNQnEOC1Uua39EPdpgQJyahNh996aJEaSBQAICuwQ6UBGXQOz+6jau+UiHQDMCGu/sm6UcRarY45i7UXh5HkbEKsuU89OYJfUQUXgWUfbsRT9boJLH69l73c/B237ZW+Vet0rdL7Gf+GnjW9ZP3dnkXp+Npx0cndlC1Qsh2GqRatUBRe8sCRbH3qu8dr0NRQAEAhBw3xFADCIGIpCgv/LryPRXA5UvaidNYBnZ+m1k+Yj/SCDWjwBz6Vupix/ryqj2nixQacCQybpYlXlUjvcw5kqcrnvkb5xVg6utEr9rnKF/wpfybdFQTNYw3bknM9OLc4dwyn9PNhX9L4fN6pXi+1N5RnrdC71vVea3A9i3jKzzLrJ8xEMAAudDYBHZVfqryIARP1sClxE9+1HjvH1E+YjOCUSee1CGp2vaxekkpDhE4MkClRLdHErI+ScEbp8cxT1wmaT8Ts/6lDvq9K6VxhNxQjMCq2bJSGUCGrxsFBfa/YPiveIUg1/5u4s8QKhyWVRPBD7eBpaHOAhA4HwJLCO7vo0sH/EQmB0BjVmyyE5tI8tH/EcCMfvY3Uc1k957iGh9TP4RzR6H6A8LVPlE6qtxmDV6Ky7Fa53CSk3U3XhuU+jKdbyUb4sT+q5PXOfyUwI3Tw85akJAdd8fuM2U9gvFd4opF2qlrndwf+pX/i56S2omIGuWrHOqbeecZIQABCDwlMDy6WHwo21wiQiEwPwJLCK7uI0sH/EfCSw+7gbf2wWXOIzAufgxDL2IWj8sUEnHKqKeOYr2R8UXKRzTJH0tPe9T6Mp1WF9tyCfb17UXOXmIwKW4xR6MH9I9+fOq/3vFlRxZKH6jmLItSF2v8EK5Uy1SXfSy9Hjm9yqDh+NJuAoBCECgMYHY/dW+sSUkhAAECgKLYifSdhdJLmKfE1g8PxXmDOPBMByRcpgAC1SH2Zy64lfc1qcSBbx+E1DWKVHX+UJUXbprnbTvhHYEVu2Sk7pKwDdExVvFha5N6fW/VItU1hMrMKiMRRa5EDhPAsuIbu8jykY0BOZMYBHROf/jgn1E+YhOREBzxFkE4fohETLUtCTwuEClWnahfDEnNy3Nmkzyl2KXpbBWnfqd9Nyn0CUdXoC6PqDr5sB5Th8ncIjn8VxcrSXg9qCY6eIXiu8Ux/763+MileycathN1XDshgAERknA44xYYRtLMHIhMHMCi4j+MY6ICLdGdFZzjlMQmASB4gmqbBLWjtPIdUKzUi4Orap+5YtxLGRWwTQ7vhS/RbOkpGpKwL/GKa6UfqH4RvG94ljDC9WBTQzj8rYZQ3Qhk4FlQYItBCDQi0CCe+G+l4FkhsD5EriI6Po+omxEQwACMyJQLFAtZ+RTaleuNNhapVCqibgnid+l0CUd9mtR0bWuHHPYjgDtrB2vxqnVNvz631pxoUyvFMe6UPVS7epG9k0tPEzNYOyFAARGS2AR2bJ9ZPmIh8BcCcT8EXo/V2j4BQEIhCVQLFBlYcWenbS1Jp0XibxeS0+q15mywif55/2r4phtJwIsUHXC1i6TFqk2+ULVWL9T9a3a09Tqwq5dKZAaAhCAwGAE9oNpRjEEIHCIwMOhC5yPQmARRSpCIZCAQLFANbXJUgI0rVRcKvVNqxwdE2vi7Q5+3TF722zXpQypdJZUzm43m51HI3ZIbaX4TtWXMvN+ZKZuAtsTtQ/P+53AJiMOAhCAQHgC6q/24aUiEQIQ6Elg1zM/2dsR8NyUAIFJEigWqGJ+rHKSYDoY/VpPRSw65GudRYOvW2VK8QpTZuPklxeqeHrKMPqFi37Zyd2FgNrLVjFT3jEtVPl7VOsu/hzIQ906AIbTEIDA6Ahko7MIgyBw5gRSzWHOHDPuQwACDQh8pg5p2SAdSZoRuG2WLEiqVRApx4V8ntePlH4dt2jaV2O+2z9tMgmsLy1U+dW/FAu8p7y6mciAcGxPn53iynUIQOB8CaT6BML5EsbzuRJYzNUx/IIABKZFwE9Q8ct7uDL7ShPOLJy4w5I82dbVFBPHO+nhMdHDRcGViRFQ2/GrfwuZ/Y3ikJMZP7m6ViRAAAIQgEAYArswYpACAQgEJrAPLA9xEBgzge2YjRu7bcUrfmO3c0r2pXzaaJ0ADItTCSCjIj0BLVK5rS4Uv0+v/YPGlxN5iuqDwexAAAIQgAAEIACBNgQ05tq3SU9aCEDgfAmwQBW+7P1tmVV4sc8lqrPf6myKp6ieK+cMBGZAQG3oQfFarvxBcainqW5mgBIXIAABCEAAAhCAAAQgAAEI9CLAAlUvfAcz32qR6uLg1bAX/BQIAQIQ6EFAi1R3yr5QHGLBdyW9BAhAAAIQgAAEIAABCEBg+gQepu/CcB6wQBWHfbJvy+QT6/dx3EAqBM6HQP40VSaP3yX22v+M4DqxTtRBAAIQgAAEIAABCEAAAuEJ7MKLPB+JLFDFK+uvE35bZhPPDSRD4LwIaKFqJY9fJfbaOgkQgAAEIAABCEBgdgQSvlkyO3Y4BIFzI/CZJmPbc3M6ob+bRLpS6UnkzmzV/Dhbz2bmmPrFjVxKuUiVzQwh7kAAAhAYgsBiCKXohAAEThJYnkxBgpAE7kMKQ1ZrAjxB1RrZxwzFE1RDfRz4oyXz3LvSLwZZbNc0md5LB4sfsUH3l//QXwQSUhHIF6m+S6TPr/lliXS1VcOgsi0x0kMAAkMR4D8PD0UevVMnwBh16iWI/aMhoDkE7alHaRQLVLseMsh6nMDm+OVgV1PpCWbwGQranqHPk3ZZN5gbOZDqV6hspLD8TT0CBCAAgVAEGHOGIokcCAQioPEO7TIQS8ScPYH3Z0+gJwAWqHoCbJD9Uk9GeJIbO2xjK0B+bwL73hIQMASBlZSmeMp02cO5bY+8ZIUABCCQksBDSmXoggAERkFgMQorzscI+tnhyno/nOp5aC4WqLbzcGe0Xqy1SHUR07r8lw9WbGNC7i97218EElITUNvaS+dtAr3LBDo6qVD/NVrbOjlEJghAYLYE1F9ls3UOxyAwXQKL6Zo+Sct3k7R6Hkbv5+HGcF6wQJWGvV+RSTHB3aZxBy0dCLzPFzo6ZCXLCAi4/cZ+imrM3065GEEZYAIEIDAPAg/zcAMvIDA7AjG/Z8s4Yj7V5RvNaQiHCazmU9TDePK4QCW+HizE7JSG8W5cWl8meAphNy6XsaZE4K60z+7ECOR95Ca22V1/+Zd928i2LSPLRzwEIHAmBNRfxR6rZGeCEjchEJrAQ2iBJXmMI0owEuxuI+qgLCPCRfQnnxRPUJnFBiDRCdxG1rCLLB/x3Qlsu2cl50gIbEZixxBmLIZQik4IQAACHQhcdMhDFghA4JNPHiJCWESUjei0BJZp1aHt3AiUF6juzs35Afy90hMS17H0JniKIpbpc5f7XmVD+5p4Kee/+sd+zW/RA1PMp2AZjPQoGLJCAALPCMT876j0V89wcwICjQjsGqXqluhSc6CLblnJ1ZZA5Dnhi7b2kB4CbQh8WKBSRd4r4/dtMpO2E4HbyB00H0rvVCxRM22iSkd4SgIxB2/2Y9HDmYceeU9lXZ5KwHUIQAACLQjE7K+uWthBUghA4COBmO3SWhhLfGSdYi/anFBz2SyFA+g4TwIfFqhy9zfniSGp1/4Q8k1EjfuIshHdjcCmWzZyjZDAboQ2FSZti50I2881GGFgGQEsIiFwpgSi9qX0V2daq3C7L4Go7VLGZX0NJH8rAvtWqdslvm6XnNQQaE7gyQJV/hpStNXW5mbNPuWNBk+LSF7uI8lFbDcC7/KnE7vlJtfYCDyMzaCSPbFtW5Z0sQsBCECgD4F9n8wN8mYN0pAEAhB4SmD39DD4EeOI4EiPCtwevdrv4nW/7OSGwGECTxao8mTrw8m5EojA55KzDiSrKmZfPcHxoATWg2pH+TkRiD2wZDByTrUJXyEQl0Ds/iqLaz7SITA/AvpB9UFexfzW5lfzozZqj2L2s5c8qTrqsp+0cc8WqNQ5beQRT1HFL9aXathZfDVoGJAAT08NCP/cVKvv3kb2OYssH/EQgMCZEFB/FXPiZIpfaYx1cSY4cRMCIQlEbZtql9chjUXWUQLbo1f7X1z1F4EECDwn8GyBKk+yep6UMxEIrCPIROQ4CPgXqPU4TMGKMyIQ8z/5+TtUDCzPqDLhKgQiE7iPLJ/+KjJgxM+SwDayV7TLyIAL8foh4EH7MceFlGUBm21QArULVPkv8d8H1YSwOgJXmvCt6i70OLfvkZes4Qjcqh1RFuF4noskDyb6hF2fzA3yMhhpAIkkEIBAIwL0V40wkQgCSQlsI2tjHBEZcEV8zPK8jDCPrZjP4TkSqF2gykGstPVTIIS4BG7VuC8CqtgHlIWobgR+1OLUultWco2cQBbZvr4Ttm1k+14G7q8im4t4CEBgxAS2kW3za36LyDoQD4G5Eeg7DjnFw09jr04l4nowAttgkuoFretPcxYC3QkcXKDKHwtcdRdNzoYE/MH0m4ZpmyRbNklEmqgEVlGlI3xIAmNvX9sEcEL2VwnMRQUEzobAYmKebhPYu0qgAxUQmA2BfP4X87Uws1rNBtj4HdlGNvGSBcfIhM9Q/MEFKrNQJ3WnDa/6xa8Yr9W4F4HUXASSg5huBL5Ru9l1y0quMRNQG13KPi8oxwy96o7q3l7GMbCMWULIhsB4CSzGa9pzyxJNhG/UdzMueo6fMxA4RuDu2MUA167ULrMAchBxgkDez8aey6/pZ08UBJdbETi6QJVLWmkbe8LTyuiZJr6dqV/n5Nb3uhFQjvMt8VVk137OBxJ91Wz7CjiR/1IDkfWJNFyGAATSE1imV9lbY+yJcOin1Hs7jAAITIBA7HZpBOsJcJiLibHL81KgbuYCCz+GJ3BygSqfMK1k6s/DmztrC/ythGzWHs7bOS/irubt4vl6l/8yFLt8d4EIbwLJOSaGpxKO0eEaBA4TCNXO6zRkdSdHfi72xMnu01+NvBJg3rgIaO7nfir2vO9KY6vrcXk+W2vcz8Yuz9cqz2y2BHEsKYGTC1S2Ju+oVkktO09ltwHcXgaQgYh2BNzprwI9/dJOM6lTEbiRolG/3leAyPvr98VxpK1ZhOivIpmHWAiMlsBDRMv88eFJjQES9lebiNwRDYE5ErhL4FTofxSVwOTpqcjnJynK8073oIvpEcLisRFotEBlo1W5XbFfjc2BmdnzQg37pqdPdAw9AbbM7sWpLB9kt8xK8ikQyCd8rxPYug2ow/117PBSbK5jK0E+BCDQisCqVepxJN4kMMNPqdNfJQCNitkQuE3giV8NS6EngSujV7FJYKF/vNyqr71IoAsVMybQeIHKDDQJ32jznfcJ0Qj0/dDcMpplCK4jcDP3xSndaFZ1jp/Dufwmu03ka0g9m0Q2b8RokUgXaiAwBwLbyE5cR5YfQ/wmhtAame6vGCPVgOEUBKoE8rFt7Kexrfal2uWqqp/jsARUnltJ/DGs1FppL3SWRapaNJxsSqDVApWFqoLfaPOuqQLStSbg1ed161zKoA7+QhvnJ6Qh8ErtYZNG1TBa8sH8W20fFNeKi2EsSa9Vvro9bRVTtKl71aWHUF5K1k6yUgxEzKSix/UAADzcSURBVIZHukMVHHIg0J/ApfquVX8x6SSov9pL230Cje6vvEjlvp0AAQicJnB7OkmQFG/VLpdBJCHkGIFU5flCRpzNIpXq7kLR9xbq8LHa1+Ja6wUqy9ZgYqUNi1SGESd87creQTQNowO0jlleqR1sOuadUrZVbqwH9n7N7SfVTS9IXOfnZ7mRf25LO0XfZFOEuwhKbiPIrBM5iYFIXqZ19nMOAskI6L6xTaDsVvX9IoGekCo2IYUdkTWl/mpxxA8uQSAFgU0KJbkOL2gsE+prrcr9quKmdcaRZMjnLSmeirPHRV876jLtUzSqCyvFrWT8pPhS8UGREIBApwUq61UlX2nzxvuEKAQ2HaRmHfKQpT2BV3kn3z7n9HJc15j8lc79SZ3yg2/UinVparJN45T8WcvSvyj62wipwia0ooEGIheh/QghT2V6IzkuUwIExkAg9tONn8vJzRgcbWoD/dVHUnl/tdWZlPegjwawB4GcgNrlg3ZTPZDgfmu0i1Rql5ns2yl6IWLKYZ3Q+BfS5TL1GGwWQb4sFf0jkNvGW8WrwjG1l32xz7Yfgc4LVFarglhr88r7hOAErlT5r1tKzVqmJ3k7Aj8r+e/zgXS7nBNMrfq3lNnHBsgeTPhGXV6s8q8JFxN09xPZnSnuZfvrxPa/U53yjS5G2MQQekCmByK7vN4cSJL2tG1R3Errt2k1ow0CRwnsjl4Nc9EfBd+EEZVMyjqZpl9/3d+PrL9alPor318JEBgDgXVCI1zv/6J2cJNQ51FVsuVC8VaJflA8NiY+KmcsF/M5TKqnqOy2y/Rb922KmU9MLchujyVvFfey/S+KXyvar3KI/cNTWdfs93stUJlOXtH/oF1P3glhCbhDbBOu2iQmbSsC7swz1fcUE4tWhkVMnLWQ7Y76peJbxb+qE9/lnfm1thct5CRNatsUV4ou1x8UL5Ma8KuyTUSd7kNS9s3m58HlOqJPJ0VLvyd6GyX0QOLqZAYSQCAtgVT3kZduB4qj7YPL2AeaOI2hv/J9yH31T4r0V+VKwf7gBNQu9zIi1VNUhb9e0Lgbuu+S/hsZZP+9IDGnsBrAGfdtP4ip70nZAPpbqZSNnr/cKu6V0WNJ14FLxUPh4dAFzrcn0HuByirVed1pkymmXJGVutmHSzUMd44ng9JlJxORoCsBr4ovz2xxyqwy/+kYXiifO/M/KRYLVr4prYauq9LvyYDt2Mi2veJbRds7RLhXvdrGUizZvmHexpJ/RO5r8d0rZkfSBL8kfQvFjQTvFF8GV4BACIQhcBdGTCMpbge7FG3ROhQfB/Q99K0beRU20WvZO1R/5f55r+j7JQECYyWwHsCwr6TT7XKteJFKv3Up3ijupfNbxc9T6U6lJx93fp9KX0WP70k/iK/vSyvFZGVbsePDoW1QzBRd17aKv+jinxS/Vrz8kPD4zvb4Za62IfBpm8Sn0qo8XcnuFK9OpeV6YwJ++mGRTzQPZhL7W110QyKEJfCd2N+EFTkNaXkHHdNYL/ztFXf59nH/VF1X2sYh75OWyuC4UMwUXyiOJXwpf7exjRGHvXQ0vcmGNudeAjfycxNacCFP/l1rf6X4VXEu9Vb+Bb2fVu2Xj2ude109H+j4S5m/DSQrmRgx+SWSsnvxyCLJfhQr0/faSd0m3RZv5dvdoxE9/8gH96tZKX5eEvml9GxLx413B2JT2Of7khltihOht/KP/qof1Dcqn3U/Eelzq9xj9Vd+UCDq/ce0ZP6tNkPNMzwXsn6PJfbaBg/yz/3ZjeK1YrkvC67riMB7+ZcduR7skvy9kLC94lC+ln3xvWnrKP+9jRbk90LCHbN863J/odg3vJLtm75CDuWX3ZPuPw75deh8lA5NDNdS+PqQUs63JnCy0ov5XlJTD3ZbOzKhDL4ZrtTZ3E3I5mCmqj65w/5LMIHtBb1Xln2e7UHbXb5/amO7L/JEV6cSD3z9XvUrS2GDyvNaev6UQtcRHW5Td3n0IOThSNqjl+TPQgkyRfvl7eADLPkT5X4q3x6DfF5rJ9Z99UuZv31UNKE/YvJLJHPvxSOLJPtRrEy/1c7XMXUcke22uFXc5VttPtnJ5ydtUjYudN7RYZHHZb59oe2x8NuqvGOJy9ekN9PxD+VzA+zH6K/s17Ui/VW/An2jurXuJyJ9btXrWP3VJ+IR9f5jWjL/Qpu94tD193vZsFW8k9t7bTuF3J9MmR3dLi8Vhw738ilLZYQY2O8/pdLXQs+PSrtX3OVb7zvsD5V5Xp7LX5M9/l3or6ND9vg37gM0X8q2ba4n+Eb+Tbr/aAskWocmjpmM2SiOocHLjEmH96r0i0MeiLUb5F8OXed8awLuGK/FfN8650wyqE7dyJVvZ+LOGN3w5GeZso6pTO+k86sRwXgvW3Z5fMi3deZd6ORSsdh6//O6hEOeU1lGu5/aL5XfWpvX3o8QvpT52whyo4oUk1gDtnvxyGIaL9Ndj2d73xa/Xu1BfO7Eh/4qUiXsWz6nzFL5rZUmVn/1RvZb/qSCmMTqr5IsUBm2XFhp89b7IwkeS+0Ut7k9xTY/fLLJ8iNvF4qXimML96rbWUqjVKYb6XuZUudMdXX+UaYJjzn0H038LNL8ptgJvVUD2wqmB2AbxTENMkK7mkLepViuxNQs68JN3UnOdSLwRpzXnXLOK5PbLiEegbXq2T6e+FrJK53dK45lcceDQ0fuD4JAOC8Cav/+/oZ/DHkxQ8+9+Nw3rCRgr0h/JQgECIyBgPqtjecjsuVqDPbIBvcPtqWw5/VI7JqSGZ5Desw/x3tRqnL4WW3jIZWyc9DzWUwnXViK19LxB0WvchO6E1jVZdWN4kLnzZjQj4AnCr9XfV33EzOb3IvZeDI+R+5Vz25TmyWdD9K5Sq0XfRCAwEECyfuBg5aEvbDvK47+qi9B8kMgGgHPOZjTRcObVnDe11Km/bDv+mUnd5VA1AWqQpkq/532F4rfFefYtiZwpcWoRU2ulc6N5RfGGvNGf8o32Teqo37dig7mY3EVv0Z9PMNeCAKubx4IDBLyvvjdIMpRCgEIPCGg9rjRiRBPGz2RO4KDhxA25P0V48YQMJEBgUAE1C7dvleBxCFmBARUpnuZkSl6jEpoT4D5Y3tmR3MkWaCyBe7QFG+0+6Xijz5HaE3guiaHmRK6Efhe2bwwte6WfZ658qfy5uncsF75xp+5LxzSDOlfST998JCFgG4IfCSw/rg7m71dKE/yceN9KHnIgQAE+hNQu7yTlDf9JU1Wwux+WFCZut9eTbZEhjV8P6z6+WlPtkBVoFMD2CoudfxK0RM2QnMCq3JSLST4+LJ8jv1GBHxj+VL18Fpx3yjHeSVy+ySEJ7BSffMAYAwhkxGzG2A1AHvfIA1JIJCMgPqEjZTNbcH4ITDA6xkyaoKI/qoJJdIMQkB911qK3w2ifFilbpfrYU2Io11leifJr+JIn7XUsYztZwM5+QJVQS4flC10/EaRhaoCzPHti8prfuvjyblaIeB69kp1b6G4rVzj8COBi4+77AUi4HrnG/8ogmx5kCHXiufU9/4ov7NRFABGQOApgdXTw8kf7UJ6kPdXZkR/FRIssiDQk4Da5koifuwpZkrZ3QetFPeKswwq040c+73iOfW3vcpSzLa9BJD5GYHBFqhsiQcdimvtLhXfKRJOE8icRAtVa214esowTgd3sl4I9cLU5nTys0/h9kgIQ8B179UY651s8iQyUzyHQYh9vFYkQGB0BPK26HvUXMI+tCNn2F+tQjNEHgQiEcgk98dIsscm1k/C78dmVGh7zqy/7YvvfV8B5H9OYNAFqsIcN3bFlY6/UHxXnGdbSyDLvxF0U3uVk2UCnpR60O+FqbXiQ/ki+xCITMD1L1O920TW01m8bDuXRary67wMJjrXGDLGIuB7lGR/H0t+SrnyZR9D3xn1V6vcV2M8l4l/jCqDzAQEVFc9ts4U515X38jXuxypx06zDnkftJCT97N2tL9zs68L/RG1lzCKBarCbDWGveJKx18ovlP0BI/wlECmw1tF/nPfUy7lI9ebN4oL1ae14kP5IvsnCSxPpiDBKQIeqPkD/KO/ceU2ZrJ3roPLV/JxK/+KsC922EJgZARWsmfq7TCq/Xl/5XtUVD0D1gv3V3cl/Q+lfXYhMEoCqrN+I8bt0nO3OYZ38m9dOGZ/i/05b+2nYiYfPaci1BPY1Z/mbB8Co1qgKhxRYygWqhY650bxc3GN7eNrfS/hUEvgvc6+Uv25UGRhqhZRo5MXjVKR6BCB71T/vDi1P5RgbOdlq2+wmeL92Gzrac8r+bbpKYPsEEhCQHXVk55MccqLL/YhahCnvRRkit8rzinU9VfRec4JIL4MS0BtcyUL5raY8S73a1i4A2qX/2up/1LR8yzCUwLbp4cchSDwWQghsWSoQXjl1gsNF9LxSnHKg7ZYmJD76yD1S9WTheIGIBAYiIBv3K6HNwPp76VWds/tl7JX8mlTA2Vbc45TEBgFAbdDGZIpTnW8s5Xt0UPeX11L0ZvoytIoONRf7dKoRwsEwhBQ21xL0peKP4eROKiUd/JndcCC+wPnZ3laHLZybKk4lz43VDnRR4ciWZIz6gWqkp2fqGFsFN0wfq/4TnEOHV/ZRfbbEXiv5O4kv1C9uFbctstO6iME9keucek5AfdFb1QHvUC6fX55Wmfkw1oWf6noNjbF4PL4g/zYTNF4bIaA6u6DKGSK7yZIY5/S5ry/8rjwx5R6A+pyf/WK/iogUUQNTkD1eSsjForfK041+Gn41VSNj2G3eDw+OCLZXyhO8f4UGst7MwktFHmffDKZBaqisFQRdoorHS8UXyneKxLOh4Bvdp58ejFgrbg/H9fTeJq3ry+k7Z2iB8+EwwTMaOm6eDjJ9K7In62s9g8CbyZm/Y+yN5P9d0fs3h+5xiUIjIKA6rAnAisZ80pxSv3wLjVAcfK4sOivpsSq6K82R5gl53nEFi5BoDGBvA+7VoY/KL5vnHH4hO5DPM+4OWHK/sT12V4Wm73iSg5+ofhuto4edsx15DvF7HASrvQh8FmfzEPmzTu+jbaZ7HAD+UbxR0XC/Ajcy6VXir9VeV8r3s3PxXF5JMbFzWchy8yetvWxiH7W7jvFL8RpZVYfL81nT355gryWR18o2t+xhzeyd6l4akK3H7sj2AeBgoDq80b7C8UptMFPGrQ/uRInSPdakpeKU2D1RvY26a8e4tBCKgTSEFA995jd7fKNosdPYw73Ms7t0jafCvtTCeZ+XZz2iiv5+YWi+92xl69M7BU8F3qluJDfN/a/lzQyHyQw2QWqskd5A7nV1h3g7xW/U3QlIkyXgMvvG8UvVK6Z4kbxYbruTNNyM8/Zu235BuQyOde29T73fyEmK8W9jmcf7Kf9laMu/3cjdNg2fSEb1yO0DZMg0JuA6rb74ZUEfal431tgPAGD3xvEaez9lcvvC9m5blgMjHsagiLZeAmovrsPW8vCheIbxZ8VxxTeyxg/NZUp7sdk2BRsMTPFlWxdKL5SvFecS/B97RvFL+TjUnGjSL8cuXRnsUBVZqRKs1O8USxPqOfUUMruzm3/eznkjs1PSrkTuFXcz83JqfrjssjLpNy2XGZzDu/l3HeKv5fvi9z/s7wx5eW/EovfKn6jaDZDhndS/oXsWtm2poYo7bZpWtJBYEwEXHcVM9n0haLr/8+KYwnfy5D1WIxxn6C4kj1j6q++dPnZtqaclHbXNC3pIDB2AqrPD4prxQvZ+krxfmCbf7QdsmeheNfSFtpmBZgYunw3ipkufaH4jaLvDVMLttm2fyFfmI8OUHqfDqBzEJW//PKLO8NrxSyPl9oShiXwo9RvHdUBtL0xDGs52p8QUPvKdKKIS+1/rjjV4Hrp+ninermbqhMp7Fa5u6xXipniC8XYwWWzcVTZPMRWhnwIjJ2A2uC1bCxiyn73Z+ndKt45TqE95v1VwYr+SgVHgMDQBNQuF7LB7TJT/EoxdngvBe63PI7YxVaG/F8J5PeqpY4yxatfz47ib3Evc13wfHQ7CqvO3IizWaCqlnM+UMl0vogpB3ZVc87l2DeFbRHVCey1T5ghgXzA4RtRcTNaaH+Mi8K+MT3elIrtFCZasnV0QWV+IaOyPBZl37dfvZc8l4/jJCbBspMAgUEIlMY1bn8LxZCTALfFvaLbogfx3k42lPors8oUvaW/EgQCBIYkoLaZSb+j26Rj37Gj5x47xa3j1Psu+TCLkN+vXL4LxUzRIeQ961eJH/+6HuwVXRceFLeKe+aiojDC8OkIbRrEpFJDyWSAG8yLQQyZl1I/7bDN445OYF6F28WbvJ1dKG+W53db87FjzDZ3n+vbavuguFPkxiQIsUM+2LSapaLL+VhwuTwoUjbHKHENAg0JqP25zS3z5N76+FTYK4Gjg+/dD7/uzv9vy/5qLyKPkfHN/OsGHg5HoDR2XMgKx2PB/dXOCdQut94SpkWg1A/b8KyD9dtSnrO6h5X8nvQuC1QHiq80qMuUZJnHvqv4B7TN4rQXo3xDeIzcFGZRpoM5URqM1Nng9nhRuuA691A6ftylDlaJcAwBCEAAAhCAAAQgAAEIQGC8BFigalk2+aruQtkcs3x7TgtXXojaK3pRwNFPOnhLgAAEIAABCEAAAhCAAAQgAAEIQAACnQiwQNUJ2/NMpSc+svxqsY35Pu1zQ/qfKb7J4ydSvPBUbHnlpj9bJEAAAhCAAAQgAAEIQAACEIAABCBQQ4AFqhooMU5pAWshuY4OS8WLx71fzy3yfW98PuS3eO5Lsr27U3zIz+21dXTgHd1fOfAXAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAAC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\"/></defs>`,\r\n            },\r\n        },\r\n        sembanco: {\r\n            viewBox: '0 0 24 24',\r\n            colors: {\r\n                brand: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"#9E9E9E\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.00033 10V14.6667H9.00033V10H7.00033ZM11.0003 10V14.6667H13.0003V10H11.0003ZM5.66699 18H18.3337V16H5.66699V18ZM15.0003 10V14.6667H17.0003V10H15.0003ZM12.0003 4L5.66699 7.33333V8.66667H18.3337V7.33333L12.0003 4Z\" fill=\"#F5F5F5\"/>`,\r\n                primary: `<path d=\"M12 0C5.3736 0 0 5.3736 0 12C0 18.6264 5.3736 24 12 24C18.6264 24 24 18.6264 24 12C24 5.3736 18.6264 0 12 0Z\" fill=\"currentColor\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.99984 10V14.6667H8.99984V10H6.99984ZM10.9998 10V14.6667H12.9998V10H10.9998ZM5.6665 18H18.3332V16H5.6665V18ZM14.9998 10V14.6667H16.9998V10H14.9998ZM11.9998 4L5.6665 7.33333V8.66667H18.3332V7.33333L11.9998 4Z\" fill=\"currentColor\"/>`,\r\n            },\r\n        },\r\n    },\r\n    'app-store': {\r\n        'app-store': {\r\n            viewBox: '0 0 264 82',\r\n            colors: {\r\n                default: `<rect width=\"264\" height=\"81.1164\" fill=\"url(#pattern0_5776_37343)\"/><defs><pattern id=\"pattern0_5776_37343\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_5776_37343\" transform=\"scale(0.00460829 0.0153846)\"/></pattern><image id=\"image0_5776_37343\" width=\"217\" height=\"65\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANkAAABBCAYAAABciwFYAAAABGdBTUEAALGOfPtRkwAAGpZJREFUeAHtnQW4VUXXxwfEVsRuQDGxC2wRu1teG7u7u7u7FcXufFQsxO4OTDAxsLvm+//me9d+55y79+lziLvX85y7zz3Ta2blrJndwaXA9ddfP/O4447by3vfU59uKVnyn3IMtHsMiDY6CAn/jjPOOB/8+++/b/3yyy/Pbb311iOKEUOmBAYOHDj9BBNMcJgIrN/vv/8+5c8//+z++uuvJD3/kmMgx0BbDIw//vhukkkmceONN96IP//8c+Bvv/128lZbbTXSciZEdu211y444YQT3ihqnOPuu+92zz77rPvmm2/cP//8Y3nzZ46BHAMpGOjUqZObdtpp3VJLLeVWX311JyH16q+//tpviy22GEr2QGRSD2cQFQ755JNPepx66qnus88+S6kq/ynHQI6BchiYY4453P777+8mn3zyN0VofbfccsuvOlKoY8eOR0s17HHyySfnBFYOi3l6joESGHj33Xfdaaed5mSjzSM18giydrz66qtnkbj7z+233+6++OKLEsXzpBwDOQYqwcDQoUPdoEGDUBu3uOmmm7p21JclZKxNgg2WQ46BHAONwcCTTz5JRZ0l0ZaUpthxx5EjR7pvv/22MbXnteQYyDHgvvrqK/fTTz+BiR0gsmX/+OMPdMgcNTkGcgw0CAN45aEr0dfyncYk4urQoYPDXQrk+3cNWg15NU3FAPT1/yu2qc3UX7m4gWPDr0ePHm6ZZZZx2stzctjUX3GJGrSLHwgawgZA1t9//121xKffMAa5c50iBEq0mCeNrRgY7YlMjhk311xzuX322cetu+66rkuXLu7ee+9tOpEtvPDCbpVVVnFTTjllmHvtIbohQ4a4V199tSopuvvuu7s+ffq4HXfcMd8eGVupqMy4wj5ZmTyjLBkC22ijjdwDDzzg+vfvHwiMznz88cdN79MGG2zgjj32WLf00ku7eeaZx+25557u4YcfDv2opvHFF1/cLbvssm6qqaaqpliedyzCwGgryVARN9xwQ3fFFVcEVdFwjsr19NNP279Ne5rNt+2227rXXnvNTT/99O7xxx93hx56qLvmmmuc4tNC2zACPqiVqJTFTqSddtrJTTPNNO7tt99O8qOKatskUT1RKQHKAqRTJ0/G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\"/></defs>`,\r\n            },\r\n        },\r\n        'play-store': {\r\n            viewBox: '0 0 264 82',\r\n            colors: {\r\n                default: `<rect width=\"264\" height=\"81.1164\" fill=\"url(#pattern0_5776_37341)\"/><defs><pattern id=\"pattern0_5776_37341\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#image0_5776_37341\" transform=\"scale(0.00460829 0.0153846)\"/></pattern><image id=\"image0_5776_37341\" width=\"217\" height=\"65\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/></defs>`,\r\n            },\r\n        },\r\n    },\r\n    inchurch: {\r\n        default: {\r\n            viewBox: '0 0 115 24',\r\n            colors: {\r\n                default: `<path d=\"M23.1129 7.4288H24.9509C25.1788 7.4267 25.4048 7.4734 25.6152 7.56607C25.8257 7.65875 26.0162 7.79549 26.1755 7.96809C26.338 8.13332 26.467 8.33184 26.5546 8.55155C26.6422 8.77127 26.6866 9.00756 26.6851 9.24603V21.7238H23.1129V7.4288ZM27.0909 4.36176C27.0928 4.82989 26.9633 5.28808 26.7189 5.67827C26.4745 6.06845 26.1261 6.37307 25.7178 6.5535C25.3096 6.73393 24.86 6.78206 24.4259 6.69179C23.9918 6.60152 23.5928 6.37691 23.2795 6.04642C22.9662 5.71594 22.7526 5.29447 22.6659 4.83542C22.5792 4.37636 22.6232 3.9004 22.7924 3.46785C22.9616 3.0353 23.2483 2.66564 23.6162 2.40571C23.9842 2.14578 24.4167 2.0073 24.8591 2.0078C25.4489 2.00644 26.0151 2.25271 26.4335 2.69258C26.8519 3.13245 27.0883 3.72999 27.0909 4.35409V4.36176Z\" fill=\"#A8D94E\"/><path d=\"M39.8904 21.7364H38.1031C37.8729 21.7487 37.6428 21.71 37.4275 21.6227C37.2123 21.5353 37.0168 21.4013 36.8534 21.2292C36.6901 21.057 36.5626 20.8507 36.4792 20.6233C36.3957 20.3959 36.3582 20.1526 36.3689 19.9089V12.594C36.3689 11.7327 36.1274 11.1065 35.6274 10.7103C35.1521 10.3229 34.568 10.1151 33.9681 10.1199C33.3759 10.1123 32.7993 10.3208 32.3353 10.7103C31.8523 11.1065 31.6107 11.7327 31.6107 12.594V21.7364H28.0361V13.3454C28.0361 10.9071 28.6407 9.27561 29.85 8.45092C31.0475 7.63052 32.4315 7.16617 33.857 7.10653C35.3181 7.09698 36.7519 7.52591 37.992 8.34357C39.2496 9.16997 39.8791 10.8373 39.8808 13.3454L39.8904 21.7364Z\" fill=\"#A8D94E\"/><path d=\"M50.5867 17.3278H53.1397C52.7645 18.8341 52.0496 19.9817 50.9949 20.7706C49.9402 21.597 48.6134 22.0093 47.0145 22.0076C45.0726 22.0076 43.5574 21.344 42.4689 20.0166C41.3788 18.725 40.8345 16.878 40.8361 14.4755C40.8361 12.1837 41.3635 10.3946 42.4182 9.10814C43.5067 7.78249 45.0211 7.11882 46.9614 7.11712C49.0047 7.11712 50.5875 7.7629 51.7098 9.05447C52.3306 9.85915 52.7833 10.7938 53.0383 11.7969H49.4636C49.3337 11.5017 49.1619 11.2294 48.954 10.9893C48.5112 10.4883 47.8816 10.2378 47.0652 10.2378C46.7267 10.2245 46.3891 10.2842 46.0731 10.4134C45.7571 10.5426 45.4693 10.7385 45.2272 10.9893C44.6137 11.7015 44.3069 12.8815 44.3069 14.5291C44.3069 16.1768 44.6137 17.3423 45.2272 18.0256C45.67 18.6015 46.3334 18.8886 47.2174 18.8869C47.7337 18.9035 48.2449 18.7738 48.698 18.5112C48.8039 18.472 48.8999 18.4072 48.9781 18.3221L49.2607 18.0256C49.3782 17.8639 49.5155 17.7195 49.6689 17.5962C49.9362 17.3969 50.2606 17.302 50.5867 17.3278Z\" fill=\"currentColor\"/><path d=\"M62.6112 11.4643C62.38 11.1074 62.0677 10.8178 61.703 10.6222C61.3383 10.4266 60.933 10.3312 60.5243 10.3448C60.1032 10.321 59.6829 10.4066 59.3002 10.5941C58.9175 10.7817 58.584 11.0655 58.3288 11.4208C57.82 12.1382 57.5648 13.1239 57.5632 14.378V21.7465H54.0851V3.23434H55.8217C56.2802 3.23501 56.7199 3.42751 57.0448 3.76986C57.3696 4.11221 57.5534 4.57663 57.5559 5.06179V9.32243C57.8338 8.81052 58.2084 8.36474 58.6564 8.01293C59.1044 7.66112 59.6161 7.41084 60.1596 7.27773C61.2265 6.98759 62.3528 7.06275 63.3768 7.49243C64.3377 7.93061 65.1677 8.63748 65.7776 9.53713C66.4217 10.4709 66.7438 11.7616 66.7438 13.4093V21.7465H63.3261V14.3345C63.3293 13.838 63.2864 13.3423 63.1981 12.8547C63.0963 12.3529 62.8964 11.8793 62.6112 11.4643Z\" fill=\"currentColor\"/><path d=\"M79.5345 7.42888V15.8198C79.5345 18.3757 78.9049 20.0438 77.6458 20.8242C76.395 21.6097 74.9652 22.0189 73.5107 22.0076C72.0928 21.9524 70.7122 21.5123 69.5013 20.7296C68.2937 19.939 67.6899 18.3067 67.6899 15.8326V7.42888H71.2645V16.5738C71.2645 17.4351 71.506 18.0613 71.9891 18.4575C72.4531 18.847 73.0297 19.0554 73.6219 19.0479C74.2218 19.0527 74.8059 18.8449 75.2812 18.4575C75.7642 18.0613 76.0203 17.4351 76.0203 16.5738V9.25889C76.0151 8.78205 76.1888 8.3225 76.5033 7.98095C76.6644 7.80311 76.859 7.66316 77.0746 7.57024C77.2901 7.47732 77.5218 7.43351 77.7544 7.44166L79.5345 7.42888Z\" fill=\"currentColor\"/><path d=\"M80.4824 21.7367V14.8C80.4517 13.5944 80.6547 12.3949 81.079 11.2755C81.4286 10.3849 81.9812 9.59981 82.6876 8.99052C83.3607 8.43711 84.1332 8.03447 84.958 7.80715C85.8318 7.55524 86.7334 7.42802 87.639 7.42888H88.1486V11.2627H86.9748C85.9861 11.2627 85.2543 11.5132 84.7793 12.0141C84.3043 12.5151 84.0627 13.304 84.0547 14.3809V21.7494L80.4824 21.7367Z\" fill=\"currentColor\"/><path d=\"M98.8444 17.3278H101.397C101.024 18.8341 100.309 19.9817 99.2526 20.7706C98.1963 21.597 96.8687 22.0093 95.2698 22.0076C93.3375 22.0076 91.8231 21.344 90.7266 20.0166C89.6381 18.725 89.0938 16.878 89.0938 14.4755C89.0938 12.1837 89.6212 10.3946 90.6758 9.10814C91.7643 7.78249 93.2787 7.11882 95.219 7.11712C97.2624 7.11712 98.8452 7.7629 99.9675 9.05447C100.588 9.85915 101.041 10.7938 101.296 11.7969H97.7213C97.5905 11.5023 97.4187 11.23 97.2117 10.9893C96.7672 10.4781 96.1393 10.2378 95.3229 10.2378C94.9843 10.2243 94.6468 10.284 94.3307 10.4132C94.0147 10.5424 93.7269 10.7384 93.4848 10.9893C92.8714 11.7083 92.5646 12.8917 92.5646 14.5394C92.5646 16.1871 92.8714 17.3525 93.4848 18.0358C93.9268 18.6109 94.5886 18.8971 95.4751 18.8971C95.9914 18.9138 96.5026 18.784 96.9556 18.5214C97.0616 18.4822 97.1575 18.4175 97.2358 18.3323L97.5184 18.0358C97.6359 17.8742 97.7732 17.7298 97.9266 17.6064C98.1926 17.4035 98.5172 17.305 98.8444 17.3278Z\" fill=\"currentColor\"/><path d=\"M110.869 11.4643C110.638 11.1047 110.325 10.8127 109.958 10.6152C109.592 10.4178 109.185 10.3212 108.775 10.3346C108.353 10.3105 107.933 10.396 107.55 10.5836C107.168 10.7712 106.834 11.0551 106.579 11.4106C106.077 12.1296 105.825 13.1154 105.825 14.3677V21.7363H102.343V3.23434H104.077C104.536 3.23433 104.976 3.42654 105.301 3.76897C105.627 4.11139 105.811 4.57618 105.813 5.06179V9.32243C106.091 8.81052 106.466 8.36474 106.914 8.01293C107.362 7.66112 107.874 7.41084 108.417 7.27773C109.484 6.98759 110.61 7.06275 111.634 7.49243C112.594 7.93067 113.424 8.63757 114.033 9.53713C114.677 10.4709 114.999 11.7616 114.999 13.4093V21.7465H111.584V14.3345C111.587 13.838 111.544 13.3423 111.456 12.8547C111.354 12.3529 111.154 11.8793 110.869 11.4643Z\" fill=\"currentColor\"/><path d=\"M5.17464 0.000793449H0V5.3219H5.17464V0.000793449Z\" fill=\"currentColor\"/><path d=\"M11.0662 0H5.89154V5.32111H11.0662V0Z\" fill=\"#A8D94E\"/><path d=\"M16.9676 0H11.793V5.32111H16.9676V0Z\" fill=\"currentColor\"/><path d=\"M5.17464 6.22558H0V11.5467H5.17464V6.22558Z\" fill=\"#A8D94E\"/><path d=\"M11.0662 6.22552H5.89154V11.5466H11.0662V6.22552Z\" fill=\"#A8D94E\"/><path d=\"M16.9676 6.22552H11.793V11.5466H16.9676V6.22552Z\" fill=\"#A8D94E\"/><path d=\"M5.17464 12.4507H0V17.7718H5.17464V12.4507Z\" fill=\"currentColor\"/><path d=\"M11.0662 12.4506H5.89154V17.7717H11.0662V12.4506Z\" fill=\"#A8D94E\"/><path d=\"M16.9676 12.4506H11.793V17.7717H16.9676V12.4506Z\" fill=\"currentColor\"/><path d=\"M16.9676 18.6788H11.793V23.9999H16.9676V18.6788Z\" fill=\"currentColor\"/><path d=\"M5.17464 18.6789H0V24H5.17464V18.6789Z\" fill=\"currentColor\"/><path d=\"M11.0662 18.6788H5.89154V23.9999H11.0662V18.6788Z\" fill=\"#A8D94E\"/>`,\r\n            },\r\n        },\r\n    },\r\n};\r\n\r\n// ── Helpers ───────────────────────────────────────────────────────────\r\n\r\nexport function isFigmaBrand(set: string | null | undefined, name: string | null | undefined): boolean {\r\n    if (!set || !name) return false;\r\n    const s = (FIGMA_BRANDS as Record<string, Record<string, FigmaBrandAsset>>)[set];\r\n    return !!s && name in s;\r\n}\r\n\r\nexport function getFigmaBrandSvg(\r\n    set: string | null | undefined,\r\n    name: string | null | undefined,\r\n    color: FigmaBrandColor = 'brand',\r\n): string | null {\r\n    if (!set || !name) return null;\r\n    const setRegistry = (FIGMA_BRANDS as Record<string, Record<string, FigmaBrandAsset>>)[set];\r\n    if (!setRegistry) return null;\r\n    const asset = setRegistry[name];\r\n    if (!asset) return null;\r\n    const body = asset.colors[color] ?? asset.colors.brand ?? asset.colors.primary ?? asset.colors.default;\r\n    if (!body) return null;\r\n    return `<svg viewBox=\"${asset.viewBox}\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">${body}</svg>`;\r\n}\r\n\r\nexport function getFigmaBrandColors(\r\n    set: string | null | undefined,\r\n    name: string | null | undefined,\r\n): FigmaBrandColor[] {\r\n    if (!set || !name) return [];\r\n    const setRegistry = (FIGMA_BRANDS as Record<string, Record<string, FigmaBrandAsset>>)[set];\r\n    if (!setRegistry) return [];\r\n    const asset = setRegistry[name];\r\n    if (!asset) return [];\r\n    return (Object.keys(asset.colors) as FigmaBrandColor[]).filter(c => !!asset.colors[c]);\r\n}\r\n\r\nexport function getFigmaBrandViewBox(\r\n    set: string | null | undefined,\r\n    name: string | null | undefined,\r\n): string | null {\r\n    if (!set || !name) return null;\r\n    const setRegistry = (FIGMA_BRANDS as Record<string, Record<string, FigmaBrandAsset>>)[set];\r\n    return setRegistry?.[name]?.viewBox ?? null;\r\n}\r\n\r\nexport function getFigmaBrandNames(set: string | null | undefined): string[] {\r\n    if (!set) return [];\r\n    const setRegistry = (FIGMA_BRANDS as Record<string, Record<string, FigmaBrandAsset>>)[set];\r\n    return setRegistry ? Object.keys(setRegistry).sort() : [];\r\n}\r\n\r\nexport const FIGMA_BRAND_SETS: readonly FigmaBrandSet[] = ['social', 'bank', 'app-store', 'inchurch'];\r\n","import { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { FigmaBrandColor, FigmaBrandSet, getFigmaBrandSvg, isFigmaBrand } from './figma-brands';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/** Tamanho canônico — paralelo ao matcha-icon. */\r\nexport type MatchaBrandSize = 'tiny' | 'small' | 'medium' | 'large' | 'huge' | (string & {}) | '' | null | undefined;\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-brand',\r\n    templateUrl: './brand.component.html',\r\n    styleUrls: ['./brand.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[attr.set]': 'set || null',\r\n        '[attr.name]': 'name || null',\r\n        '[attr.color]': 'color || null',\r\n        '[attr.size]': 'size || null',\r\n    },\r\n})\r\nexport class MatchaBrandComponent {\r\n    /**\r\n     * Set da marca — categoria do asset:\r\n     * - `social` — Facebook, Instagram, WhatsApp, etc. (24 variantes)\r\n     * - `bank` — Bradesco, Caixa, Nubank, etc. (16 variantes)\r\n     * - `app-store` — Play Store, App Store (badges oficiais, 2 variantes)\r\n     * - `inchurch` — Logo principal inChurch\r\n     */\r\n    @Input() set: FigmaBrandSet | string | null | undefined = null;\r\n\r\n    /**\r\n     * Nome do asset dentro do set — kebab-case do Figma.\r\n     * - social: `facebook`, `whatsapp`, `instagram`, `youtube`, `email`, `copy`, `share`...\r\n     * - bank: `bradesco`, `caixa`, `nubank`, `itau`, `bb`, `c6-bank`, `sembanco`...\r\n     * - app-store: `play-store`, `app-store`\r\n     * - inchurch: `default`\r\n     */\r\n    @Input() name: string | null | undefined = null;\r\n\r\n    /**\r\n     * Variante de cor:\r\n     * - `brand` (default) — cor oficial da marca; preserva identidade.\r\n     * - `primary` — adapta ao tema (currentColor); monocromático.\r\n     * - `default` — sem variante de cor (app-store, copy/share, inchurch).\r\n     */\r\n    @Input() color: FigmaBrandColor = 'brand';\r\n\r\n    /** Tamanho — mapeia pros mesmos tokens do matcha-icon. */\r\n    @Input({ transform: (v: string) => sizeAlias(v) }) size: MatchaBrandSize = '';\r\n\r\n    private readonly sanitizer = inject(DomSanitizer);\r\n\r\n    get figmaSvg(): SafeHtml | null {\r\n        if (!isFigmaBrand(this.set, this.name)) return null;\r\n        const svg = getFigmaBrandSvg(this.set, this.name, this.color);\r\n        return svg ? this.sanitizer.bypassSecurityTrustHtml(svg) : null;\r\n    }\r\n}\r\n","<span class=\"matcha-brand-svg\" [innerHTML]=\"figmaSvg\"></span>\r\n","/**\r\n * MatchaDocumentMasks — registro centralizado de máscaras de documentos/IDs\r\n * por país. Usado com o `matchaMask` directive (que faz auto-validação quando\r\n * o pattern bate com um formato reconhecido) e no selector de país do playground.\r\n *\r\n * Formato da máscara:\r\n *   - `0` = dígito [0-9]\r\n *   - `A` = alphanumeric [a-zA-Z0-9]\r\n *   - `U` = letra maiúscula [A-Z]\r\n *   - `S` = letra qualquer [a-zA-Z]\r\n *\r\n * Uso básico:\r\n *   <input [matchaMask]=\"MatchaDocumentMasks['us-ssn'].mask\" />\r\n *\r\n * Uso no form reativo (com validator casado):\r\n *   this.form = fb.group({\r\n *     doc: ['', [Validators.required, MatchaValidators.ssn]]\r\n *   });\r\n */\r\n\r\nexport type MatchaDocumentId =\r\n    | 'br-cpf' | 'br-cnpj'\r\n    | 'us-ssn'\r\n    | 'ca-sin'\r\n    | 'pt-nif'\r\n    | 'es-dni'\r\n    | 'ar-cuit'\r\n    | 'cl-rut'\r\n    | 'mx-rfc';\r\n\r\nexport interface MatchaDocumentSpec {\r\n    /** Código ISO do país (lowercase) */\r\n    country: string;\r\n    /** Nome do documento no idioma local */\r\n    label: string;\r\n    /** Máscara matchaMask */\r\n    mask: string;\r\n    /** Placeholder sugerido pro input */\r\n    placeholder: string;\r\n    /** Nome da função validator em MatchaValidators (ex.: 'cpf', 'ssn') */\r\n    validator: string;\r\n}\r\n\r\nexport const MatchaDocumentMasks: Record<MatchaDocumentId, MatchaDocumentSpec> = {\r\n    'br-cpf':  { country: 'br', label: 'CPF',   mask: '000.000.000-00',    placeholder: '000.000.000-00',    validator: 'cpf'    },\r\n    'br-cnpj': { country: 'br', label: 'CNPJ',  mask: '00.000.000/0000-00',placeholder: '00.000.000/0000-00',validator: 'cnpj'   },\r\n    'us-ssn':  { country: 'us', label: 'SSN',   mask: '000-00-0000',       placeholder: '000-00-0000',       validator: 'ssn'    },\r\n    'ca-sin':  { country: 'ca', label: 'SIN',   mask: '000-000-000',       placeholder: '000-000-000',       validator: 'sin'    },\r\n    'pt-nif':  { country: 'pt', label: 'NIF',   mask: '000000000',         placeholder: '000000000',         validator: 'nif'    },\r\n    'es-dni':  { country: 'es', label: 'DNI',   mask: '00000000U',         placeholder: '00000000A',         validator: 'dniEs'  },\r\n    'ar-cuit': { country: 'ar', label: 'CUIT',  mask: '00-00000000-0',     placeholder: '00-00000000-0',     validator: 'cuit'   },\r\n    'cl-rut':  { country: 'cl', label: 'RUT',   mask: '00.000.000-A',      placeholder: '00.000.000-X',      validator: 'rut'    },\r\n    'mx-rfc':  { country: 'mx', label: 'RFC',   mask: 'AAAAAAAAAAAAA',     placeholder: 'AAAA000000AAA',     validator: 'rfc'    },\r\n};\r\n\r\n/** Lookup por país — retorna os docs disponíveis pra uma country code */\r\nexport function getDocsByCountry(country: string): MatchaDocumentSpec[] {\r\n    return Object.values(MatchaDocumentMasks).filter(d => d.country === country);\r\n}\r\n\r\n/** Lista ordenada (pt-BR primeiro, depois alfabética) para dropdowns */\r\nexport const MatchaDocumentList: Array<{ id: MatchaDocumentId } & MatchaDocumentSpec> =\r\n    (Object.entries(MatchaDocumentMasks) as [MatchaDocumentId, MatchaDocumentSpec][])\r\n        .map(([id, spec]) => ({ id, ...spec }));\r\n","/**\r\n * MatchaPostalCodeMasks — registro de máscaras de códigos postais por país.\r\n * Irmão de MatchaDocumentMasks — mesma convenção.\r\n *\r\n * Formato:\r\n *   - `0` = dígito\r\n *   - `U` = letra maiúscula\r\n *\r\n * Uso básico:\r\n *   <input [matchaMask]=\"MatchaPostalCodeMasks['br-cep'].mask\" />\r\n *\r\n * Validação automática:\r\n *   matchaMask reconhece os patterns únicos (BR, PT, CA, CL, AR) e aplica o\r\n *   validator correto. Patterns compartilhados (`00000` entre US/ES/MX/FR/DE)\r\n *   ficam sem auto-dispatch — aplique o validator explicitamente:\r\n *     this.form = fb.group({ zip: ['', [MatchaValidators.zipUs]] });\r\n */\r\n\r\nexport type MatchaPostalCodeId =\r\n    | 'br-cep'\r\n    | 'us-zip'\r\n    | 'ca-postal'\r\n    | 'pt-postal'\r\n    | 'es-postal'\r\n    | 'mx-postal'\r\n    | 'ar-postal'\r\n    | 'cl-postal'\r\n    | 'fr-postal'\r\n    | 'de-postal';\r\n\r\nexport interface MatchaPostalCodeSpec {\r\n    country: string;\r\n    /** Nome local do código postal */\r\n    label: string;\r\n    mask: string;\r\n    placeholder: string;\r\n    /** Nome da função em MatchaValidators (ex.: 'cep', 'zipUs') */\r\n    validator: string;\r\n}\r\n\r\nexport const MatchaPostalCodeMasks: Record<MatchaPostalCodeId, MatchaPostalCodeSpec> = {\r\n    'br-cep':     { country: 'br', label: 'CEP',         mask: '00000-000', placeholder: '00000-000', validator: 'cep'        },\r\n    'us-zip':     { country: 'us', label: 'ZIP',         mask: '00000',     placeholder: '00000',     validator: 'zipUs'      },\r\n    'ca-postal':  { country: 'ca', label: 'Postal Code', mask: 'U0U 0U0',   placeholder: 'A1A 1A1',   validator: 'postcodeCa' },\r\n    'pt-postal':  { country: 'pt', label: 'Código Postal', mask: '0000-000',placeholder: '0000-000',  validator: 'postcodePt' },\r\n    'es-postal':  { country: 'es', label: 'Código Postal', mask: '00000',   placeholder: '28001',     validator: 'postcodeEs' },\r\n    'mx-postal':  { country: 'mx', label: 'Código Postal', mask: '00000',   placeholder: '06100',     validator: 'postcodeMx' },\r\n    'ar-postal':  { country: 'ar', label: 'CPA',         mask: '0000',      placeholder: '1000',      validator: 'postcodeAr' },\r\n    'cl-postal':  { country: 'cl', label: 'Código Postal', mask: '0000000', placeholder: '8320000',   validator: 'postcodeCl' },\r\n    'fr-postal':  { country: 'fr', label: 'Code Postal', mask: '00000',     placeholder: '75001',     validator: 'postcodeFr' },\r\n    'de-postal':  { country: 'de', label: 'PLZ',         mask: '00000',     placeholder: '10115',     validator: 'postcodeDe' },\r\n};\r\n\r\n/** Lookup por país */\r\nexport function getPostalCodesByCountry(country: string): MatchaPostalCodeSpec[] {\r\n    return Object.values(MatchaPostalCodeMasks).filter(p => p.country === country);\r\n}\r\n\r\n/** Lista ordenada pronta pra dropdowns */\r\nexport const MatchaPostalCodeList: Array<{ id: MatchaPostalCodeId } & MatchaPostalCodeSpec> =\r\n    (Object.entries(MatchaPostalCodeMasks) as [MatchaPostalCodeId, MatchaPostalCodeSpec][])\r\n        .map(([id, spec]) => ({ id, ...spec }));\r\n","import {\r\n    Component, ViewEncapsulation, ChangeDetectionStrategy, booleanAttribute,\r\n    HostBinding, HostListener, signal, computed, input, output, contentChild, contentChildren,\r\n    viewChild, effect, isDevMode, inject, AfterViewInit, DestroyRef, OnInit, ElementRef,\r\n    forwardRef,\r\n} from '@angular/core';\r\nimport { MATCHA_OPTION_PARENT, MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport {\r\n    AbstractControl, ControlValueAccessor, FormsModule, NgControl,\r\n    ValidationErrors, ValidatorFn, Validators\r\n} from '@angular/forms';\r\n\r\nimport { MatchaFormFieldComponent } from '../matcha-form-field/matcha-form-field/matcha-form-field.component';\r\nimport { MatchaLabelComponent } from '../matcha-form-field/matcha-label/matcha-label.component';\r\nimport { MatchaHintTextComponent } from '../matcha-hint-text/hint/hint-text.component';\r\nimport { MatchaErrorComponent } from '../matcha-form-field/matcha-error/matcha-error.component';\r\nimport { MatchaPrefixComponent } from '../matcha-form-field/matcha-prefix/matcha-prefix.component';\r\nimport { MatchaSuffixComponent } from '../matcha-form-field/matcha-suffix/matcha-suffix.component';\r\nimport { MatchaTextComponent } from '../matcha-text/matcha-text.component';\r\n\r\n// Directives auto-aplicadas em tipos nativos\r\nimport { MatchaEmailValidatorDirective } from '../matcha-validators/matcha-email.directive';\r\nimport { MatchaPasswordToggleDirective } from '../matcha-password-toggle/matcha-password-toggle.directive';\r\nimport { MatchaClearButtonDirective } from '../matcha-clear-button/matcha-clear-button.directive';\r\nimport { MatchaAutoGrowDirective } from '../matcha-auto-grow/matcha-auto-grow.directive';\r\nimport { MatchaCapsLockHintDirective } from '../matcha-caps-lock-hint/matcha-caps-lock-hint.directive';\r\n\r\n// Directives opt-in pra Fase 2\r\nimport { MatchaMaskCompatibleDirective } from '../matcha-mask/matcha-mask-compatible.directive';\r\nimport { MatchaMoneyDirective } from '../matcha-money/matcha-money.directive';\r\nimport { MatchaQuantityStepperDirective } from '../matcha-quantity-stepper/matcha-quantity-stepper.directive';\r\n\r\n// Custom elements pra Fase 3\r\nimport { MatchaSelectComponent, MATCHA_SELECT_TEXTS, MatchaSelectTexts } from '../matcha-select/matcha-select.component';\r\nimport { MatchaDateComponent } from '../matcha-date/date/matcha-date.component';\r\nimport { MatchaTimeComponent } from '../matcha-time/time/time.component';\r\nimport { MatchaFieldRangeComponent, MatchaFieldRangeType } from '../matcha-field-range/field-range/field-range.component';\r\nimport { MatchaPeriodComponent } from '../matcha-period/matcha-period.component';\r\nimport { MatchaPeriodDisplayFormat, MatchaPeriodPreset } from '../matcha-period/matcha-period.types';\r\nimport { MatchaPhoneComponent } from '../matcha-phone/phone.component';\r\nimport { MatchaAutocompleteComponent } from '../matcha-autocomplete/matcha-autocomplete.component';\r\nimport { MatchaAutocompleteTriggerDirective } from '../matcha-autocomplete/matcha-autocomplete.directive';\r\nimport { MatchaCheckboxComponent } from '../matcha-checkbox/checkbox/checkbox.component';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaBrandComponent } from '../matcha-brand/brand.component';\r\nimport { MatchaChipComponent } from '../matcha-chip/chip/chip.component';\r\nimport { MatchaButtonComponent } from '../matcha-button/button/button.component';\r\nimport { FigmaBrandColor, FigmaBrandSet } from '../matcha-brand/figma-brands';\r\n\r\nimport { MatchaValidators } from '../matcha-validators/matcha-validators';\r\nimport { MatchaDocumentMasks, MatchaDocumentId } from '../matcha-validators/matcha-document-masks';\r\nimport { MatchaPostalCodeMasks, MatchaPostalCodeId } from '../matcha-validators/matcha-postal-code-masks';\r\nimport { MatchaPhoneMasks, MatchaPhoneId, MatchaPhoneCountry, resolvePhoneSpec, resolveCountryByDialPrefix, validatePhoneDigits } from '../matcha-validators/matcha-phone-masks';\r\nimport { MatchaPhoneAllCountries } from '../matcha-phone/matcha-phone-countries';\r\nimport { MatchaCurrencyId, MatchaCurrencyMasks } from '../matcha-validators/matcha-currency-masks';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-field — API canônica type-driven pra campos de formulário.\r\n *\r\n *   <matcha-field type=\"email\" label=\"Email\" [(ngModel)]=\"email\" required />\r\n *   <matcha-field type=\"url\" label=\"Site\" formControlName=\"site\" [maxlength]=\"75\" />\r\n *   <matcha-field type=\"cpf\" label=\"CPF\" formControlName=\"cpf\" />\r\n *   <matcha-field type=\"money\" currency=\"brl\" [(ngModel)]=\"price\" />\r\n *\r\n * Implementa ControlValueAccessor + Validator. Funciona com ngModel/formControlName.\r\n * Validação type-específica é auto-aplicada pelo dispatcher.\r\n */\r\nexport type MatchaFieldType =\r\n    // Nativos\r\n    | 'text' | 'email' | 'url' | 'password' | 'search' | 'number' | 'textarea'\r\n    // Docs BR\r\n    | 'cpf' | 'cnpj'\r\n    // Docs internacionais\r\n    | 'ssn' | 'sin' | 'nif' | 'dni' | 'cuit' | 'rut' | 'rfc'\r\n    // Postais\r\n    | 'cep' | 'zip'\r\n    | 'postal-ca' | 'postal-pt' | 'postal-es' | 'postal-mx' | 'postal-ar' | 'postal-cl' | 'postal-fr' | 'postal-de'\r\n    // Telefone simples (masked sem flag)\r\n    | 'phone-br'\r\n    // Comportamentais\r\n    | 'money' | 'quantity'\r\n    // Escape hatch\r\n    | 'mask'\r\n    // Custom elements\r\n    // ('autocomplete' é @deprecated — use 'select' com searchMode=\"backend\" pra lista\r\n    //  remota/paginada; ver MatchaAutocompleteComponent)\r\n    | 'select' | 'autocomplete' | 'date' | 'time' | 'range' | 'phone'\r\n    // Período: presets (atalhos de range) + intervalo personalizado\r\n    | 'period'\r\n    // Chip checklist (multi-select all-visible, horizontal flex)\r\n    | 'checklist';\r\n\r\n// ── Maps type → registry id ──────────────────────────────────────────────\r\nconst DOC_TYPE_MAP: Partial<Record<MatchaFieldType, MatchaDocumentId>> = {\r\n    cpf:  'br-cpf',   cnpj: 'br-cnpj', ssn:  'us-ssn',  sin:  'ca-sin',\r\n    nif:  'pt-nif',   dni:  'es-dni',  cuit: 'ar-cuit', rut:  'cl-rut',  rfc:  'mx-rfc',\r\n};\r\n\r\nconst POSTAL_TYPE_MAP: Partial<Record<MatchaFieldType, MatchaPostalCodeId>> = {\r\n    cep: 'br-cep', zip: 'us-zip',\r\n    'postal-ca': 'ca-postal', 'postal-pt': 'pt-postal', 'postal-es': 'es-postal',\r\n    'postal-mx': 'mx-postal', 'postal-ar': 'ar-postal', 'postal-cl': 'cl-postal',\r\n    'postal-fr': 'fr-postal', 'postal-de': 'de-postal',\r\n};\r\n\r\n// Types que renderizam <input> + matchaMask (compartilham mesmo template block)\r\nconst MASKED_TYPES: readonly MatchaFieldType[] = [\r\n    'cpf', 'cnpj', 'ssn', 'sin', 'nif', 'dni', 'cuit', 'rut', 'rfc',\r\n    'cep', 'zip', 'postal-ca', 'postal-pt', 'postal-es', 'postal-mx',\r\n    'postal-ar', 'postal-cl', 'postal-fr', 'postal-de',\r\n    'phone-br', 'mask',\r\n];\r\n\r\n// Validator dispatcher (type → MatchaValidators method). `null` = sem validator built-in.\r\nconst VALIDATOR_MAP: Partial<Record<MatchaFieldType, keyof typeof MatchaValidators>> = {\r\n    email:       'email',      url:  'url',\r\n    cpf:         'cpf',        cnpj: 'cnpj',\r\n    cep:         'cep',        'phone-br': 'phoneBr',\r\n    ssn:         'ssn',        sin:  'sin',     nif: 'nif',\r\n    dni:         'dniEs',      cuit: 'cuit',    rut: 'rut',     rfc: 'rfc',\r\n    zip:         'zipUs',\r\n    'postal-ca': 'postcodeCa', 'postal-pt': 'postcodePt', 'postal-es': 'postcodeEs',\r\n    'postal-mx': 'postcodeMx', 'postal-ar': 'postcodeAr', 'postal-cl': 'postcodeCl',\r\n    'postal-fr': 'postcodeFr', 'postal-de': 'postcodeDe',\r\n};\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-field',\r\n    templateUrl: './matcha-field.component.html',\r\n    styleUrls: ['./matcha-field.component.scss'],\r\n    standalone: true,\r\n    providers: [\r\n        // matcha-field anuncia-se como MATCHA_OPTION_PARENT pras matcha-options\r\n        // projetadas pelo caller. Sem isso, options usam o fallback CustomEvent\r\n        // bubble — que QUEBRA quando matcha-autocomplete está com panel portaled\r\n        // pro `<body>`: options nascem no body (via *ngFor após search dinâmico),\r\n        // bubble nunca chega de volta no element do autocomplete.\r\n        // Forward chama os métodos públicos diretos da instance JS (não DOM).\r\n        {\r\n            provide: MATCHA_OPTION_PARENT,\r\n            useExisting: forwardRef(() => MatchaFieldComponent),\r\n        },\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatchaFormFieldComponent,\r\n        MatchaLabelComponent,\r\n        MatchaHintTextComponent,\r\n        MatchaErrorComponent,\r\n        MatchaPrefixComponent,\r\n        MatchaSuffixComponent,\r\n        MatchaTextComponent,\r\n        MatchaEmailValidatorDirective,\r\n        MatchaPasswordToggleDirective,\r\n        MatchaClearButtonDirective,\r\n        MatchaAutoGrowDirective,\r\n        MatchaCapsLockHintDirective,\r\n        MatchaMaskCompatibleDirective,\r\n        MatchaMoneyDirective,\r\n        MatchaQuantityStepperDirective,\r\n        MatchaSelectComponent,\r\n        MatchaDateComponent,\r\n        MatchaTimeComponent,\r\n        MatchaFieldRangeComponent,\r\n        MatchaPeriodComponent,\r\n        MatchaPhoneComponent,\r\n        MatchaAutocompleteComponent,\r\n        MatchaAutocompleteTriggerDirective,\r\n        MatchaCheckboxComponent,\r\n        MatchaIconComponent,\r\n        MatchaBrandComponent,\r\n        MatchaChipComponent,\r\n        MatchaButtonComponent,\r\n    ],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaFieldComponent implements ControlValueAccessor, AfterViewInit, MatchaOptionParent {\r\n    // ── NgControl integration — padrão MatFormFieldControl (Angular Material).\r\n    // Injetamos opcional self pra:\r\n    //  1. Setar valueAccessor=this manualmente (substitui NG_VALUE_ACCESSOR self-provide)\r\n    //  2. Registrar validate() dinamicamente (substitui NG_VALIDATORS self-provide)\r\n    // Sem esse pattern, o useExisting forwardRef pros 2 tokens dispara NG0200 circular DI\r\n    // quando NgModel/FormControlDirective resolve validators antes do field terminar de construir.\r\n    readonly ngControl = inject(NgControl, { optional: true, self: true });\r\n\r\n    /** Host ref pra delegar host-click → input nativo (usado em type='autocomplete'). */\r\n    private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n    /** View ref pro matcha-autocomplete interno (so existe em type='autocomplete'). */\r\n    private readonly autoPanelRef = viewChild(MatchaAutocompleteComponent);\r\n\r\n    /** View ref pro matcha-select interno (so existe em type='select'). */\r\n    private readonly selectRef = viewChild(MatchaSelectComponent);\r\n\r\n    /** Captura do validator interno bound a `this` — usado em add/removeValidators. */\r\n    private readonly internalValidator: ValidatorFn = (c) => this.validate(c);\r\n\r\n    /** True após primeira aplicação do validator em ngAfterViewInit (idempotência). */\r\n    private validatorApplied = false;\r\n\r\n    // ── Signal inputs (Angular 17.3+) ─────────────────────────────────────\r\n    type         = input<MatchaFieldType>('text');\r\n    label        = input<string>('');\r\n    /** Nome acessível quando NÃO há label visível (ex.: label externo no paginator).\r\n     *  Vai no controle interno (input/combobox), nunca no host — evita\r\n     *  aria-prohibited-attr. Se vazio, cai no label() visível. */\r\n    ariaLabel    = input<string>('');\r\n    placeholder  = input<string>('');\r\n    hint         = input<string>('');\r\n    errorMessage = input<string>('');\r\n    required     = input<boolean>(false);\r\n    disabled     = input<boolean>(false);\r\n    readonly     = input<boolean>(false);\r\n    loading      = input<boolean>(false);\r\n    /** Força visual de erro (borda vermelha + mensagem se errorMessage presente).\r\n     *  Use pra erros externos ao validator built-in (ex: async validator, server-side).\r\n     *  Quando false (default), erro aparece automaticamente via validator interno + touched. */\r\n    error        = input(false, { transform: booleanAttribute });\r\n    /** Tamanho do campo. Canônico extenso; abreviados (sm/md/lg) aceitos como alias @deprecated. */\r\n    size         = input<'small' | 'medium' | 'large', string>('small', { transform: (v) => sizeAlias(v) as 'small' | 'medium' | 'large' });\r\n    tooltip      = input<string>('');\r\n    name         = input<string>('');\r\n\r\n    // Type-específicos\r\n    maxlength    = input<number>(0);\r\n    autocomplete = input<string>('');\r\n    rows         = input<number>(3);\r\n    /** Textarea cresce conforme conteúdo entre `minRows` e `maxRows`, aí rola. Default `false` (altura fixa). */\r\n    autoGrow     = input<boolean>(false);\r\n    /** Piso de linhas quando `autoGrow` está ligado. Default `2`. */\r\n    minRows      = input<number>(2);\r\n    /** Teto de linhas quando `autoGrow` está ligado; ao passar, vira scroll. Default `8`. */\r\n    maxRows      = input<number>(8);\r\n    currency     = input<MatchaCurrencyId>('brl');\r\n    min          = input<number | null>(null);\r\n    max          = input<number | null>(null);\r\n    step         = input<number>(1);\r\n    mask         = input<string>('');\r\n    multiple     = input<boolean>(false);\r\n    /** Liga o botão de limpar (×).\r\n     *  - `'auto'` (default): liga em `select`, `autocomplete`, `search`; desliga em `text`/`email`/`password`.\r\n     *  - `true` / `false`: override explícito. */\r\n    clearable    = input<boolean | 'auto'>('auto');\r\n    /**\r\n     * Lista de chips abaixo do campo em `type=\"select\"` + `[multiple]`. Default `true`\r\n     * (comportamento histórico).\r\n     *\r\n     * `false` deixa a seleção só na CONTAGEM dentro da caixa (\"N selecionados\") e, em troca,\r\n     * fixa as opções já selecionadas no topo do painel — sem os chips, é lá que o usuário vê e\r\n     * desfaz o que escolheu. Use quando os chips ocupam espaço demais (campo em filtro lateral,\r\n     * linha de tabela) ou quando a seleção é grande o bastante pra empurrar o resto do form.\r\n     *\r\n     * Não vale pro `type=\"checklist\"`, que é outro desenho (todas as opções à vista).\r\n     */\r\n    showChips    = input<boolean>(true);\r\n    /** Máximo de chips visíveis antes do toggle \"+N mais\". 0 ou negativo desabilita overflow.\r\n     *  Ignorado quando `showChips` é `false`. */\r\n    maxChips     = input<number>(6);\r\n    /**\r\n     * Botão \"Selecionar todos\" no header do painel em `type=\"select\"` + `[multiple]`.\r\n     * Default `true`. Repassado ao `matcha-select` interno.\r\n     *\r\n     * `false` quando selecionar tudo não é ação legítima do fluxo: item com custo (request,\r\n     * cobrança, notificação), lista paginada/backend onde \"todos\" só alcança a página carregada,\r\n     * ou teto de itens por regra de negócio. O \"Limpar\" do header continua lá — sem o par\r\n     * \"Desmarcar todos\", ele passa a valer pra qualquer seleção, inclusive a completa.\r\n     */\r\n    showSelectAll = input<boolean>(true);\r\n\r\n    /**\r\n     * Nome acessível dos botões de overflow dos chips. São TEXTO, então não ficam cravados:\r\n     * o default é pt-BR e o consumidor passa o próprio idioma. O rótulo VISÍVEL não precisa\r\n     * de tradução — é \"+N\" mais o ícone de visibilidade.\r\n     */\r\n    showMoreLabel = input<string>('Mostrar mais itens');\r\n    showLessLabel = input<string>('Mostrar menos itens');\r\n\r\n    /**\r\n     * Textos do painel do select (contagem, \"selecionar todos\", \"limpar\", vazio da busca).\r\n     * Um objeto, e nao nove inputs: o consumidor sobrescreve so o que precisa e o resto cai\r\n     * no default pt-BR. Sem isto, os textos do select seriam inalcancaveis por quem usa o\r\n     * field — que e o caminho canonico — e um painel em 4 idiomas mostraria portugues.\r\n     */\r\n    selectTexts = input<MatchaSelectTexts>({});\r\n\r\n    /** Textos efetivos: o que o consumidor passou, sobre os defaults. */\r\n    protected texts = computed(() => ({ ...MATCHA_SELECT_TEXTS, ...this.selectTexts() }));\r\n    /** Habilita campo de busca dentro do panel (filtra options por texto). Default auto: liga se >8 options. */\r\n    searchable   = input<boolean | 'auto'>('auto');\r\n    country      = input<MatchaPhoneId>('br');\r\n    /** Lista de países do picker de `type=\"phone\"`. Default: cobertura internacional\r\n     *  completa (~240). Passe `MatchaPhoneList` pra restringir aos 11 curados. */\r\n    phoneCountries = input<MatchaPhoneCountry[]>(MatchaPhoneAllCountries);\r\n\r\n    // Time (type=\"time\") — forwards pro matcha-time\r\n    panelMode        = input<'auto' | 'digital' | 'scroll'>('auto');\r\n    hourFormat       = input<'24' | '12'>('24');\r\n    showPresets      = input<boolean>(false);\r\n    presets          = input<string[] | undefined>(undefined);\r\n    minuteStep       = input<number>(1);\r\n    showNow          = input<boolean>(true);\r\n    /** Abre o `<input type=\"time\">` nativo do browser em vez do painel matcha. type=\"time\" apenas. */\r\n    useNativePicker  = input<boolean>(false);\r\n    /** Horário mínimo permitido (HH:mm). Para type=\"time\" apenas. */\r\n    minTime          = input<string>('');\r\n    /** Horário máximo permitido (HH:mm). Para type=\"time\" apenas. */\r\n    maxTime          = input<string>('');\r\n\r\n    // Range (type=\"range\") — forwards pro matcha-field-range\r\n    rangeType        = input<MatchaFieldRangeType>('date');\r\n    separatorLabel   = input<string>('até');\r\n    showPicker       = input<boolean>(true);\r\n\r\n    // Date (type=\"date\") — forwards pro matcha-date\r\n    /** Data mínima permitida (yyyy-MM-dd). Para type=\"date\" e type=\"period\". */\r\n    dateMin          = input<string>('');\r\n    /** Data máxima permitida (yyyy-MM-dd). Para type=\"date\" e type=\"period\". */\r\n    dateMax          = input<string>('');\r\n\r\n    // Period (type=\"period\") — forwards pro matcha-period\r\n    /** Atalhos de intervalo listados no painel. Cada preset calcula o próprio range\r\n     *  em `getRange()`, chamado no momento da seleção (permite \"Últimos 7 dias\").\r\n     *  Nome com prefixo `period` porque `presets` já é o input de type=\"time\".\r\n     *  Para type=\"period\" apenas. */\r\n    periodPresets    = input<MatchaPeriodPreset[]>([]);\r\n    /** Habilita a seção \"Período personalizado\" (duas datas + Aplicar).\r\n     *  Para type=\"period\" apenas. */\r\n    allowCustom      = input<boolean>(true);\r\n    /** Rótulo do atalho que abre o período personalizado. Vazio = tradução do\r\n     *  matcha-i18n. Para type=\"period\" apenas. */\r\n    customLabel      = input<string>('');\r\n    /** Rótulo do botão que confirma o período personalizado. Vazio = tradução do\r\n     *  matcha-i18n. Para type=\"period\" apenas. */\r\n    applyLabel       = input<string>('');\r\n    /** Formato do intervalo exibido no campo. Para type=\"period\" apenas. */\r\n    displayFormat    = input<MatchaPeriodDisplayFormat>('dd/MM/yyyy');\r\n\r\n    // Select (type=\"select\") — forwards pro matcha-select\r\n    /** Modo de render do dropdown do select: 'auto' (mobile=sheet, desktop=dropdown),\r\n     *  'dropdown' (força panel inline) ou 'sheet' (força bottom-sheet). Default 'auto'. */\r\n    selectMode       = input<'auto' | 'dropdown' | 'sheet'>('auto');\r\n\r\n    // Checklist (type=\"checklist\") — chip checklist multi-select all-visible\r\n    /** Lista de opções pro chip checklist horizontal. Cada item: {value, label}.\r\n     *  Use type=\"select\" [multiple]=true pra multi-select com dropdown. Use\r\n     *  type=\"checklist\" quando user precisa VER todas as opções de uma vez. */\r\n    checklistOptions = input<Array<{ value: unknown; label: string }>>([]);\r\n\r\n    /** Logo de marca renderizado ANTES do texto da label (via matcha-brand).\r\n     *  Nome do asset em kebab-case (ex: 'facebook', 'instagram', 'youtube').\r\n     *  Vazio (default) = sem logo. Só aparece quando há label visível (prop, não slot). */\r\n    brand        = input<string>('');\r\n    /** Set do matcha-brand pro logo da label. Default 'social'. */\r\n    brandSet     = input<FigmaBrandSet | string>('social');\r\n    /** Variante de cor do logo da label. Default 'brand' (cor oficial da marca). */\r\n    brandColor   = input<FigmaBrandColor>('brand');\r\n\r\n    /** Texto de prefixo fixo renderizado DENTRO do input, antes do valor digitado\r\n     *  (ex.: 'facebook.com/', 'R$', '@'). Só aplica a inputs de texto\r\n     *  (text/email/password/search/number/money + masked). Vazio (default) = sem prefixo.\r\n     *  Espelha a propriedade `Prefix` do matcha/field no DSV3 (Figma). */\r\n    prefix       = input<string>('');\r\n\r\n    // ── Outputs ──────────────────────────────────────────────────────────\r\n    /** Emitido quando o usuário aperta Enter em `type=\"search\"`. Carrega o valor atual\r\n     *  (string). Pra debounced live-search use `(ngModelChange)` + RxJS no host. */\r\n    search = output<string>();\r\n\r\n    /** Emitido a cada commit de valor (digitação, seleção, escolha no autocomplete,\r\n     *  toggle de checklist, remoção de chip) — TODO custom element interno (matcha-select,\r\n     *  matcha-date, matcha-autocomplete, etc.) repropaga só via `(ngModelChange)` internamente,\r\n     *  então eventos como `(selectionChange)`/`(change)`/`(input)`/`(keyup)` no controle nativo\r\n     *  não chegam ao host quando ele está dentro de `matcha-field`. `(valueChange)` é o\r\n     *  substituto canônico — dispara pra QUALQUER type, com ou sem Reactive Forms. */\r\n    valueChange = output<unknown>();\r\n\r\n    /** Emitido quando o controle interno recebe foco. Coberto pros types com `<input>`/\r\n     *  `<textarea>` nativo (text/email/password/search/number/textarea/money/quantity/\r\n     *  masked/autocomplete). Custom elements sem output de foco próprio (select/date/time/\r\n     *  range/phone) ainda não repropagam — ver docs/canon/matcha-field.md. */\r\n    fieldFocus = output<void>();\r\n\r\n    /** Emitido quando o controle interno perde o foco — depois de `touched` já ter sido\r\n     *  marcado internamente. Dispara pra todos os types (mesmo handler de `onBlur()`). */\r\n    fieldBlur = output<void>();\r\n\r\n    // Autocomplete (type=\"autocomplete\") — wrappeia <matcha-autocomplete>.\r\n    // ATENÇÃO: os 6 inputs abaixo valem SÓ em type=\"autocomplete\". O matcha-select não\r\n    // possui nenhum deles — em type=\"select\" a busca é `includes` cru (sem fuzzy, sem\r\n    // normalização de acento) e o empty state é hardcoded no próprio matcha-select.\r\n    displayWith        = input<((v: unknown) => string | null) | null>(null);\r\n    displayProperty    = input<string>('name');\r\n    autoFilter         = input<boolean>(true);\r\n    fuzzy              = input<boolean>(true);\r\n    /** @deprecated NO-OP — repassado ao matcha-autocomplete, que também não o usa.\r\n     *  Ver a nota no `highlight` de matcha-autocomplete.component.ts. */\r\n    highlight          = input<boolean>(true);\r\n    emptyText          = input<string>('Nenhum resultado');\r\n    placement          = input<'bottom' | 'top' | 'auto'>('auto');\r\n    panelMaxHeight     = input<number>(280);\r\n    panelMinWidth      = input<number>(160);\r\n\r\n    /**\r\n     * Modo da busca — vale pra `type=\"select\"` e `type=\"autocomplete\"` (@deprecated):\r\n     *  - 'client' (default): filtro client-side sobre options pré-carregadas\r\n     *  - 'backend': consumer fetcha por chamada externa. Em backend mode:\r\n     *     • o filtro local não esconde nada (consumer já entrega options filtradas)\r\n     *     • (search) output emite o termo debounced\r\n     *     • em select, `searchable='auto'` liga a busca e a 1ª abertura emite search('')\r\n     *       (página inicial — o painel nunca abre vazio); par natural do\r\n     *       `<matcha-lazyload-data>` como sentinela pra paginação\r\n     */\r\n    searchMode = input<'client' | 'backend'>('client');\r\n\r\n    /** Debounce ms pro (search) output. Default 300ms (canon UX).\r\n     *  Nota: lido uma única vez na construção do componente — mudar o binding depois\r\n     *  não re-cria a pipeline de debounce. */\r\n    searchDebounce = input<number>(300);\r\n\r\n    /** `type=\"autocomplete\"`: no blur, se o texto digitado casar EXATAMENTE com uma opção\r\n     *  (match normalizado — ignora acento/case/pontuação), seleciona essa opção; se não\r\n     *  casar com nenhuma, o campo é limpo. Default `true` — é o canon: o valor de um campo\r\n     *  de seleção vem sempre de uma `<matcha-option>`, nunca do texto digitado.\r\n     *  `false` mantém o valor anterior em vez de limpar (a query digitada é descartada\r\n     *  em qualquer caso — texto livre nunca se torna valor). */\r\n    autoSelectOnBlur = input<boolean>(true);\r\n\r\n    /** `type=\"select\"`: auto-seleção por match exato na busca do painel (opt-in, single).\r\n     *  Avaliado no FECHAMENTO do painel, não durante a digitação: se o termo casa\r\n     *  exatamente (normalizado) com o texto de uma única option, ela é selecionada ao\r\n     *  fechar. Escolher uma option na lista vence o match. Ver\r\n     *  matcha-select.autoSelectOnMatch. */\r\n    autoSelectOnMatch = input<boolean>(false);\r\n\r\n    // ── Slot override via contentChild() signal query ────────────────────\r\n    // Cada slot projetado SUBSTITUI (não soma) o equivalente renderizado internamente\r\n    // pelo type-driven — mesma regra que já valia pro <matcha-label>. Antes desta rodada\r\n    // (Fase 0 do canon matcha-field), <matcha-error>/<matcha-hint-text>/<matcha-prefix>/\r\n    // <matcha-suffix> projetados eram DESCARTADOS SILENCIOSAMENTE — não existia\r\n    // <ng-content> pra eles no template. Ver docs/canon/matcha-field.md.\r\n    protected slotLabel = contentChild(MatchaLabelComponent);\r\n    protected hasLabelSlot = computed(() => !!this.slotLabel());\r\n    protected slotError = contentChild(MatchaErrorComponent);\r\n    protected hasErrorSlot = computed(() => !!this.slotError());\r\n    protected slotHint = contentChild(MatchaHintTextComponent);\r\n    protected hasHintSlot = computed(() => !!this.slotHint());\r\n    protected slotPrefix = contentChild(MatchaPrefixComponent);\r\n    protected hasPrefixSlot = computed(() => !!this.slotPrefix());\r\n    protected slotSuffix = contentChild(MatchaSuffixComponent);\r\n    protected hasSuffixSlot = computed(() => !!this.slotSuffix());\r\n\r\n    /** Subject pra debounce do search emission em backend mode. */\r\n    private readonly searchSubject = new Subject<string>();\r\n    private readonly destroyRef = inject(DestroyRef);\r\n\r\n    constructor() {\r\n        // NgControl wiring — substitui NG_VALUE_ACCESSOR self-provide\r\n        if (this.ngControl) {\r\n            this.ngControl.valueAccessor = this;\r\n        }\r\n\r\n        // Search wiring: pipe debounced do termo digitado pro output (search).\r\n        // O valor de searchDebounce() é lido UMA VEZ aqui — não há effect que re-crie a\r\n        // pipeline, então mudar o binding em runtime não tem efeito. Se algum dia precisar\r\n        // ser dinâmico, trocar por switchMap sobre um signal em vez de debounceTime fixo.\r\n        this.searchSubject\r\n            .pipe(\r\n                debounceTime(this.searchDebounce()),\r\n                distinctUntilChanged(),\r\n                takeUntilDestroyed(this.destroyRef),\r\n            )\r\n            .subscribe((term) => this.search.emit(term));\r\n\r\n        // Re-validar quando type/country mudam (substitui registerOnValidatorChange)\r\n        effect(() => {\r\n            this.type();\r\n            this.country();\r\n            if (this.validatorApplied && this.ngControl?.control) {\r\n                this.ngControl.control.updateValueAndValidity({ emitEvent: false });\r\n            }\r\n        });\r\n\r\n        // Dev warnings — a11y guard-rails. Só rodam em dev mode.\r\n        if (!isDevMode()) return;\r\n\r\n        // \"placeholder as label\" — anti-padrão a11y. Placeholder some ao preencher,\r\n        // e screen readers não lêem placeholder como label.\r\n        effect(() => {\r\n            if (this.placeholder() && !this.label() && !this.hasLabelSlot()) {\r\n                // Skip types sem input text (select/date/time/range/phone têm label interno via projeção).\r\n                const t = this.type();\r\n                if (t === 'text' || t === 'email' || t === 'url' || t === 'password' || t === 'search' ||\r\n                    t === 'textarea' || t === 'number' || t === 'autocomplete' || this.isMaskedType()) {\r\n                    console.warn(\r\n                        `[matcha-field] placeholder=\"${this.placeholder()}\" sem label — anti-padrão a11y. ` +\r\n                        `Adicione [label]=\"...\" ou projete <matcha-label> dentro do <matcha-field type=\"${t}\">.`\r\n                    );\r\n                }\r\n            }\r\n        });\r\n\r\n        // \"error sem mensagem\" — borda vermelha muda = invisível pra screen readers.\r\n        // Warna quando [error]=true explícito mas não há errorMessage nem <matcha-error> projetado.\r\n        effect(() => {\r\n            if (this.error() && !this.errorMessage() && !this.hasErrorSlot()) {\r\n                console.warn(\r\n                    `[matcha-field] [error]=\"true\" sem errorMessage nem <matcha-error> projetado. ` +\r\n                    `Borda vermelha sem texto não é acessível — forneça [errorMessage]=\"...\" ou projete <matcha-error>.`\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    // ── Content query pras matcha-options projetadas (pra resolver labels dos chips) ──\r\n    // Em type='select' + multiple, o field renderiza chips FORA do matcha-form-field.\r\n    // Precisamos mapear value → label a partir das options que o host projeta.\r\n    protected projectedOptions = contentChildren(MatchaOptionComponent, { descendants: true });\r\n\r\n    /** Chips renderizados abaixo do form-field em type='select' + multiple. */\r\n    protected externalChips = computed<Array<{ value: unknown }>>(() => {\r\n        if (this.type() !== 'select' || !this.multiple() || !this.showChips()) return [];\r\n        const v = this.value();\r\n        const values = Array.isArray(v) ? v : [];\r\n        return values.map(val => ({ value: val }));\r\n    });\r\n\r\n    /**\r\n     * Label de um chip. Lido no RENDER, de propósito, e NÃO dentro de um `computed`.\r\n     *\r\n     * O texto da option é DOM (`getTextContent()`), não signal: dentro de um computed ele era\r\n     * capturado uma vez — e quando essa captura acontecia antes do pai renderizar a\r\n     * interpolação das options (o caso de todo `@for`/`*ngFor` real), o label saía vazio e\r\n     * nunca era recalculado, porque texto de DOM não invalida signal. O resultado eram\r\n     * pílulas VAZIAS abaixo do campo enquanto o dropdown mostrava os nomes.\r\n     *\r\n     * `||` e não `??` no fallback: option com texto vazio agora mostra o valor, em vez de um\r\n     * chip sem nada. `??` só cobria a chave ausente.\r\n     */\r\n    protected chipLabel(value: unknown): string {\r\n        const option = this.projectedOptions().find(o => o.value() === value);\r\n\r\n        return option?.getTextContent() || String(value);\r\n    }\r\n\r\n    /** Toggle de expansão do overflow \"+N mais\". */\r\n    protected chipsExpanded = signal<boolean>(false);\r\n\r\n    /** Chips visíveis respeitando maxChips. Quando collapsed, mostra até maxChips. */\r\n    protected visibleChips = computed<Array<{ value: unknown }>>(() => {\r\n        const all = this.externalChips();\r\n        const max = this.maxChips();\r\n        if (max <= 0 || this.chipsExpanded() || all.length <= max) return all;\r\n        return all.slice(0, max);\r\n    });\r\n\r\n    /** Quantos chips estão ocultos pelo collapse. Usado pra render \"+N mais\". */\r\n    protected hiddenChipsCount = computed<number>(() => {\r\n        const all = this.externalChips();\r\n        const max = this.maxChips();\r\n        if (max <= 0 || this.chipsExpanded() || all.length <= max) return 0;\r\n        return all.length - max;\r\n    });\r\n\r\n    protected toggleChipsExpanded(evt?: Event): void {\r\n        if (evt) { evt.stopPropagation(); evt.preventDefault(); }\r\n        this.chipsExpanded.update(v => !v);\r\n    }\r\n\r\n    /**\r\n     * Remove um valor da seleção multi — atualiza value + notifica ngModel.\r\n     *\r\n     * Sem `Event`: quem chama agora é o `(removed)` do matcha-chip, que emite o próprio\r\n     * chip e não o evento de clique. O `stopPropagation/preventDefault` existia porque o\r\n     * botão era escrito à mão dentro do campo.\r\n     */\r\n    protected removeChip(value: unknown): void {\r\n        const current = this.value();\r\n        if (!Array.isArray(current)) return;\r\n        const next = current.filter(v => v !== value);\r\n        this.commitValue(next);\r\n    }\r\n\r\n    /** Resolve o `clearable` efetivo. Em `'auto'`, liga em types com UX canônica de X\r\n     *  (select/autocomplete/search) e desliga em inputs de texto puro.\r\n     *  Quando o campo é obrigatório, o X é incompatível com a semântica de obrigatório:\r\n     *  o auto desliga; consumer ainda pode forçar `[clearable]=\"true\"` se quiser\r\n     *  permitir limpar e re-validar.\r\n     *\r\n     *  Usa `effectiveRequired`, não a prop `required` crua: a maioria dos consumidores\r\n     *  marca obrigatoriedade só com `Validators.required` no FormGroup, sem espelhar o\r\n     *  atributo no template. Consultando a prop crua, o desligamento nunca disparava\r\n     *  nesses campos e o X aparecia em select obrigatório (IN-41225). */\r\n    effectiveClearable = computed<boolean>(() => {\r\n        const c = this.clearable();\r\n        // Override explícito sempre vence (consumer pode forçar X mesmo em required).\r\n        if (c === true) return true;\r\n        if (c === false) return false;\r\n        // 'auto' + required (prop OU validator) → X some pra não contradizer o gate.\r\n        if (this.effectiveRequired()) return false;\r\n        const t = this.type();\r\n        return t === 'select' || t === 'autocomplete' || t === 'search';\r\n    });\r\n\r\n    /** Auto-habilita searchable quando há mais de 8 options (threshold de UX). */\r\n    protected effectiveSearchable = computed<boolean>(() => {\r\n        const s = this.searchable();\r\n        if (s === true) return true;\r\n        if (s === false) return false;\r\n        // 'auto' + backend: a busca É o mecanismo de carga (o termo vai pro consumidor\r\n        // buscar/paginar) — contar options projetadas não faz sentido, elas começam\r\n        // vazias/poucas justamente porque a lista é remota.\r\n        if (this.searchMode() === 'backend') return true;\r\n        // 'auto' client: liga quando tem muitas options\r\n        return this.projectedOptions().length > 8;\r\n    });\r\n\r\n    /** Placeholder de money: respeita `placeholder` explícito; senão usa o\r\n     *  placeholder canônico da currency ativa (BRL \"R$ 0,00\" / USD \"$ 0.00\" /\r\n     *  EUR \"€ 0,00\"). Antes era hardcoded \"R$ 0,00\" independente da moeda. */\r\n    protected effectiveMoneyPlaceholder = computed<string>(() => {\r\n        const p = this.placeholder();\r\n        if (p) return p;\r\n        const id = this.currency();\r\n        return MatchaCurrencyMasks[id]?.placeholder ?? 'R$ 0,00';\r\n    });\r\n\r\n    // ── Host binding ──────────────────────────────────────────────────────\r\n    @HostBinding('attr.data-field-type') get dataType() { return this.type(); }\r\n\r\n    // ── Estado interno (signals) ──────────────────────────────────────────\r\n    /** Valor atual do FormControl. */\r\n    value = signal<unknown>('');\r\n    /** Setado como true depois do primeiro blur. */\r\n    touched = signal<boolean>(false);\r\n    /** Disabled setado via CVA.setDisabledState (distinct do @Input disabled). */\r\n    cvaDisabled = signal<boolean>(false);\r\n\r\n    /** Combined disabled: input OU CVA */\r\n    isDisabled = computed(() => this.disabled() || this.cvaDisabled());\r\n\r\n    /** True quando o control externo (via ngControl) tem Validators.required aplicado.\r\n     *  Detectado em ngAfterViewInit (quando ngControl.control já está garantido) e\r\n     *  recomputado em statusChanges (aproximação pra mudanças dinâmicas de validators). */\r\n    protected controlHasRequiredValidator = signal<boolean>(false);\r\n\r\n    /** Required efetivo: união entre a prop explícita e o validator do control -- nunca um\r\n     *  override que esconda o asterisco quando Validators.required já protege o form. */\r\n    effectiveRequired = computed<boolean>(() => this.required() || this.controlHasRequiredValidator());\r\n\r\n    // ── Validity derivation ───────────────────────────────────────────────\r\n    // Fonte da verdade interna pra \"tá inválido\". Template consulta via showError.\r\n    // - required + vazio = inválido (required é gate; VALIDATOR_MAP por type cobre formato)\r\n    // - vazio sem required = válido (não há o que validar)\r\n    // - tem valor = roda validate() pelo type\r\n\r\n    /** True quando value é null/undefined/string vazia/array vazio. */\r\n    private isEmptyValue = computed<boolean>(() => {\r\n        const v = this.value();\r\n        if (v === null || v === undefined) return true;\r\n        if (typeof v === 'string' && v.trim() === '') return true;\r\n        if (Array.isArray(v) && v.length === 0) return true;\r\n        return false;\r\n    });\r\n\r\n    /** True se o valor atual falha required OU o validator built-in do type. */\r\n    isInvalid = computed<boolean>(() => {\r\n        const empty = this.isEmptyValue();\r\n        // effectiveRequired, nao a prop `required` crua: a maioria dos consumidores marca\r\n        // obrigatoriedade so com Validators.required no FormGroup, sem espelhar o atributo no\r\n        // template (e o pattern-form do painel manda justamente NAO espelhar). Consultando a\r\n        // prop crua, isInvalid ficava false num campo vazio e obrigatorio, showError nunca\r\n        // abria e a mensagem de erro NUNCA aparecia. Mesmo defeito que 2f22642b corrigiu em\r\n        // effectiveClearable -- este era o caso irmao que ficou para tras.\r\n        if (this.effectiveRequired() && empty) return true;\r\n        if (empty) return false;\r\n        return this.validate({ value: this.value() } as AbstractControl) !== null;\r\n    });\r\n\r\n    /** Gate canônico do visual de erro. Template consulta aqui pra borda E mensagem.\r\n     *  Combina: (a) input explícito [error], (b) validator interno + touched. */\r\n    showError = computed<boolean>(() =>\r\n        this.error() || (this.touched() && this.isInvalid())\r\n    );\r\n\r\n    /** Quando exibir o bloco <matcha-error>. Requer texto + gate de erro ativo. */\r\n    showErrorMessage = computed<boolean>(() =>\r\n        !!this.errorMessage() && this.showError()\r\n    );\r\n\r\n    /** Tipos onde \"contagem de CARACTERES\" faz sentido. Number/money/quantity\r\n     *  tem range (min/max do valor), nao contagem. Date/time/select/etc nao\r\n     *  tem input texto. Counter so renderiza nesses tipos. */\r\n    private readonly TEXT_LIKE_TYPES = new Set<string>([\r\n        'text', 'email', 'url', 'password', 'search', 'textarea',\r\n        'cpf', 'cnpj', 'ssn', 'sin', 'nif', 'dni', 'cuit', 'rut', 'rfc',\r\n        'cep', 'zip',\r\n        'postal-ca', 'postal-pt', 'postal-es', 'postal-mx', 'postal-ar',\r\n        'postal-cl', 'postal-fr', 'postal-de',\r\n        'phone-br', 'mask',\r\n    ]);\r\n\r\n    /** True quando deve mostrar o counter inline: tem maxlength definido E o\r\n     *  type eh \"text-like\" (faz sentido contar caracteres). Numbers/dates/etc\r\n     *  nao mostram. */\r\n    showInlineCounter = computed<boolean>(() =>\r\n        this.maxlength() > 0 && this.TEXT_LIKE_TYPES.has(this.type())\r\n    );\r\n\r\n    /** Count atual de caracteres do value — usado pelo inline counter. */\r\n    inlineCharCount = computed<number>(() => {\r\n        const v = this.value();\r\n        return typeof v === 'string' ? v.length : 0;\r\n    });\r\n\r\n    /** True quando existe de fato ALGO validando o campo: required (explícito ou herdado do\r\n     *  validator do control) ou o validator built-in do `type`. Sem esse gate o ✓ inline\r\n     *  afirma \"válido\" onde nada foi verificado: num type=\"text\" sem required, showError()\r\n     *  é sempre false, então o ✓ aparecia só por existir caractere digitado. */\r\n    private hasValidation = computed<boolean>(() =>\r\n        this.effectiveRequired() || !!VALIDATOR_MAP[this.type()]\r\n    );\r\n\r\n    /** Mostra success icon inline quando: touched + validado + valido + tem value + nao tem error.\r\n     *  Pra forms onde feedback de sucesso por keystroke ajuda confianca do user. */\r\n    showInlineSuccess = computed<boolean>(() =>\r\n        this.hasValidation() && this.touched() && !this.showError() && !!this.value() && this.inlineCharCount() > 0\r\n    );\r\n\r\n    // CVA callbacks (definidas no registerOnChange/Touched)\r\n    private cvaChange: (v: unknown) => void = () => {};\r\n    private cvaTouched: () => void = () => {};\r\n\r\n    // ── Computeds derivados ───────────────────────────────────────────────\r\n    isMaskedType = computed(() => MASKED_TYPES.includes(this.type()));\r\n\r\n    /** Gate de render do prefixo: só em inputs de texto onde um prefixo fixo faz sentido.\r\n     *  Fora (select/date/time/range/phone/checklist/autocomplete/textarea) o prefixo é ignorado. */\r\n    protected readonly showPrefix = computed(() =>\r\n        !!this.prefix() &&\r\n        (['text', 'email', 'url', 'password', 'search', 'number', 'money'].includes(this.type()) || this.isMaskedType()));\r\n\r\n    /** Resolve pattern de máscara via registry (ou prop `mask` pra type='mask'). */\r\n    resolvedMask = computed(() => {\r\n        const t = this.type();\r\n        if (t === 'mask')     return this.mask();\r\n        if (t === 'phone-br') return MatchaPhoneMasks['br'].mask;\r\n        const docId = DOC_TYPE_MAP[t];\r\n        if (docId)            return MatchaDocumentMasks[docId].mask;\r\n        const postalId = POSTAL_TYPE_MAP[t];\r\n        if (postalId)         return MatchaPostalCodeMasks[postalId].mask;\r\n        return '';\r\n    });\r\n\r\n    resolvedPlaceholder = computed(() => {\r\n        if (this.placeholder()) return this.placeholder();\r\n        const t = this.type();\r\n        if (t === 'phone-br') return MatchaPhoneMasks['br'].placeholder;\r\n        const docId = DOC_TYPE_MAP[t];\r\n        if (docId)            return MatchaDocumentMasks[docId].placeholder;\r\n        const postalId = POSTAL_TYPE_MAP[t];\r\n        if (postalId)         return MatchaPostalCodeMasks[postalId].placeholder;\r\n        return '';\r\n    });\r\n\r\n    effectiveAutocomplete = computed(() => {\r\n        if (this.autocomplete()) return this.autocomplete();\r\n        const t = this.type();\r\n        if (t === 'email')    return 'email';\r\n        if (t === 'url')      return 'url';\r\n        if (t === 'password') return 'current-password';\r\n        if (t === 'search')   return 'off';\r\n        if (t === 'phone-br') return 'tel';\r\n        if (t === 'cep' || t === 'zip' || t.startsWith('postal-')) return 'postal-code';\r\n        return 'on';\r\n    });\r\n\r\n    effectiveInputmode = computed(() => {\r\n        const t = this.type();\r\n        if (t === 'phone-br') return 'tel';\r\n        if (t === 'dni' || t === 'rut' || t === 'rfc' || t === 'postal-ca') return 'text';\r\n        if (this.isMaskedType()) return 'numeric';\r\n        if (t === 'email')  return 'email';\r\n        if (t === 'url')    return 'url';\r\n        if (t === 'search') return 'search';\r\n        if (t === 'number' || t === 'quantity') return 'numeric';\r\n        return '';\r\n    });\r\n\r\n    // ── Handlers ──────────────────────────────────────────────────────────\r\n    /** Ponto único de commit de valor: signal + CVA + (valueChange). Todo handler de\r\n     *  mudança (texto, custom elements, autocomplete, checklist, chips) passa por aqui —\r\n     *  garante que (valueChange) dispara pra qualquer type, com ou sem Reactive Forms. */\r\n    private commitValue(v: unknown): void {\r\n        this.value.set(v);\r\n        this.cvaChange(v);\r\n        this.valueChange.emit(v);\r\n    }\r\n\r\n    onInputChange(event: Event): void {\r\n        const raw = (event.target as HTMLInputElement | HTMLTextAreaElement).value;\r\n        const t = this.type();\r\n        const typed: unknown = (t === 'number' || t === 'quantity')\r\n            ? (raw === '' ? null : Number(raw))\r\n            : raw;\r\n        this.commitValue(typed);\r\n    }\r\n\r\n    /** Bridge pra matchaMoney (emite number) e custom elements (select/date/time/range/phone). */\r\n    onChildChange(v: unknown): void {\r\n        this.commitValue(v);\r\n    }\r\n\r\n    /** Emitido em (focus) dos types com <input>/<textarea> nativo. */\r\n    onFocus(): void {\r\n        this.fieldFocus.emit();\r\n    }\r\n\r\n    // ── Checklist handlers (type=\"checklist\") ────────────────────────────\r\n    /** True quando `v` está incluído no value array atual. */\r\n    isChecklistValueSelected(v: unknown): boolean {\r\n        const cur = this.value();\r\n        return Array.isArray(cur) && cur.includes(v);\r\n    }\r\n\r\n    /** Toggle de um value no array. Adiciona se checked, remove se uncheck. */\r\n    toggleChecklistValue(v: unknown, checked: boolean): void {\r\n        const cur = Array.isArray(this.value()) ? [...(this.value() as unknown[])] : [];\r\n        const idx = cur.indexOf(v);\r\n        if (checked && idx === -1) cur.push(v);\r\n        else if (!checked && idx !== -1) cur.splice(idx, 1);\r\n        this.onChildChange(cur);\r\n    }\r\n\r\n    // ── Autocomplete handlers ────────────────────────────────────────────\r\n    /** Termo que o usuário digitou no autocomplete. `null` = nada digitado desde a última\r\n     *  seleção (o input exibe o rótulo do valor). String (inclusive `''`) = query ativa.\r\n     *\r\n     *  Este signal é o que separa EXIBIÇÃO de VALOR — o invariante do componente: o texto\r\n     *  digitado é termo de busca, nunca valor. Antes, cada keystroke era commitado no\r\n     *  FormControl do consumer, então texto livre que não correspondia a nenhuma opção\r\n     *  ficava valendo como valor (e o JSDoc de `searchMode` já dizia o contrário). */\r\n    private autocompleteQuery = signal<string | null>(null);\r\n\r\n    /** Rótulo derivado do VALOR — displayWith > displayProperty > texto da option que casa\r\n     *  > String(value).\r\n     *\r\n     *  O passo da option existe porque o caso dominante de autocomplete no painel é\r\n     *  `[value]` primitivo servindo de CHAVE (`resource_uri`, id) com o rótulo humano no\r\n     *  conteúdo da tag. Sem ele, `String(v)` vazava a chave crua no input\r\n     *  (`/api/v1/state/19/` em vez de \"Rio de Janeiro\"), obrigando todo consumidor a\r\n     *  escrever um `[displayWith]` só pra desfazer isso. `matcha-select` já resolvia o\r\n     *  rótulo assim (`selectedLabel = option.getTextContent()`) — aqui o autocomplete\r\n     *  passa a seguir a mesma regra, em vez de divergir. */\r\n    private valueDisplay = computed<string>(() => {\r\n        const v = this.value();\r\n        if (v == null) return '';\r\n        const dw = this.displayWith();\r\n        if (dw) return dw(v) ?? '';\r\n        if (typeof v === 'object') return (v as Record<string, unknown>)[this.displayProperty()] as string ?? '';\r\n        const match = this.projectedOptions().find(o => o.value() === v);\r\n        if (match) return match.getTextContent();\r\n        return String(v);\r\n    });\r\n\r\n    /** O que o input do autocomplete exibe: a query enquanto o usuário digita, o rótulo do\r\n     *  valor quando não há query ativa. */\r\n    autocompleteDisplay = computed<string>(() => this.autocompleteQuery() ?? this.valueDisplay());\r\n\r\n    /**\r\n     * User digitando no input do autocomplete. NÃO commita o texto — só atualiza a query\r\n     * (exibição + filtro) e empurra pro (search).\r\n     *\r\n     * Exceção: esvaziar o campo (X ou apagar à mão) limpa o valor na hora. É a única\r\n     * digitação que commita, porque \"vazio\" é um estado válido e não ambíguo — não existe\r\n     * opção a resolver.\r\n     */\r\n    onAutocompleteInput(text: string): void {\r\n        this.autocompleteQuery.set(text);\r\n        if (text === '') this.commitValue(null);\r\n        // (search) emite nos DOIS modos: em client mode o consumer pode querer o termo\r\n        // (telemetria, empty state próprio) mesmo com o filtro rodando localmente.\r\n        this.searchSubject.next(text ?? '');\r\n    }\r\n\r\n    /**\r\n     * Blur do autocomplete: a query digitada NUNCA sobrevive. Resolve o que fazer com ela:\r\n     * vazia → limpa o valor; casa exato → seleciona a opção; não casa → limpa (ou mantém o\r\n     * valor anterior quando `autoSelectOnBlur` é `false`).\r\n     */\r\n    private resolveAutocompleteQueryOnBlur(): void {\r\n        const query = this.autocompleteQuery();\r\n        if (query === null) return;   // nada digitado desde a última seleção\r\n\r\n        this.autocompleteQuery.set(null);   // display volta a derivar do valor\r\n\r\n        const trimmed = query.trim();\r\n        if (trimmed === '') {\r\n            if (this.value() != null) this.commitValue(null);\r\n            return;\r\n        }\r\n\r\n        if (!this.autoSelectOnBlur()) return;   // opt-out: preserva o valor anterior\r\n\r\n        const match = this.autoPanelRef()?.findOptionByText(trimmed);\r\n        if (match) {\r\n            // Caminho normal de seleção: o painel emite (optionSelected), que cai em\r\n            // onAutocompleteSelect() -> commitValue. Um dono só pro commit.\r\n            this.autoPanelRef()?.selectOption(match);\r\n        } else if (this.value() != null) {\r\n            this.commitValue(null);\r\n            this.autoPanelRef()?.clearSelection();\r\n        }\r\n    }\r\n\r\n    /** Filter client-side fica off em backend mode — consumer ja entrega filtrado. */\r\n    effectiveAutoFilter = computed<boolean>(() =>\r\n        this.searchMode() === 'backend' ? false : this.autoFilter()\r\n    );\r\n\r\n    /**\r\n     * Click no host (qualquer area do matcha-field) delega pro <input> interno.\r\n     * Necessario em type='autocomplete' pq matchaAutocomplete directive usa\r\n     * @HostListener('click') SO no input — click em padding/label do field nao\r\n     * chega no input naturalmente.\r\n     *\r\n     * Foca o input + dispara evento `click` nativo no DOM (NAO input.click() —\r\n     * isso pode falhar em browsers). dispatchEvent('click') é browser-native e\r\n     * garante que @HostListener('click') do matchaAutocomplete directive recebe.\r\n     */\r\n    @HostListener('click', ['$event'])\r\n    onHostClick(event: MouseEvent): void {\r\n        if (this.type() !== 'autocomplete') return;\r\n        const target = event.target as HTMLElement | null;\r\n        if (!target) return;\r\n        if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'BUTTON') return;\r\n        const input = this.hostRef.nativeElement.querySelector<HTMLInputElement>('input, textarea');\r\n        if (!input) return;\r\n        input.focus();\r\n        // dispatchEvent ao inves de .click() — garante propagação para @HostListener\r\n        // da directive (matchaAutocomplete usa pra openPanel). Bubbles=true crítico.\r\n        input.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));\r\n    }\r\n\r\n    /** Track se ja disparou o initial fetch em backend mode (so na 1a focus). */\r\n    private backendInitialFetchDone = false;\r\n\r\n    /**\r\n     * Focus handler do autocomplete. Em backend mode, dispara um (search) com\r\n     * string vazia na PRIMEIRA focus pra carregar a primeira pagina — UX de\r\n     * select (click → opcoes), sem precisar do consumer pre-loadar no ngOnInit.\r\n     * Idempotente: so dispara uma vez por instancia.\r\n     */\r\n    onAutocompleteFocus(): void {\r\n        if (this.searchMode() !== 'backend') return;\r\n        if (this.backendInitialFetchDone) return;\r\n        this.backendInitialFetchDone = true;\r\n        // Bypass debounce pro initial fetch — user esperando ver opcoes ja.\r\n        this.search.emit('');\r\n    }\r\n\r\n    /** User selecionou uma opção: emite o value REAL (pode ser object se options projetam objetos). */\r\n    onAutocompleteSelect(event: { option: { value: unknown } }): void {\r\n        this.autocompleteQuery.set(null);   // a query cumpriu seu papel; display passa a vir do valor\r\n        this.commitValue(event.option.value);\r\n    }\r\n\r\n    // ── MatchaOptionParent — forward direto pro componente interno ────────\r\n    // Options projetadas via matcha-field encontram matcha-field como parent DI.\r\n    // Forwardamos pra matcha-autocomplete (ou matcha-select) interno via método\r\n    // público JS — necessário porque DOM bubble falha quando panel está portaled.\r\n    selectOption(option: MatchaOptionComponent): void {\r\n        const ac = this.autoPanelRef();\r\n        if (ac) { ac.selectOption(option); return; }\r\n        const sel = this.selectRef();\r\n        sel?.selectOption(option);\r\n    }\r\n    registerOption(option: MatchaOptionComponent): void {\r\n        const ac = this.autoPanelRef();\r\n        if (ac) { ac.registerOption(option); return; }\r\n        const sel = this.selectRef();\r\n        sel?.registerOption?.(option);\r\n    }\r\n    unregisterOption(option: MatchaOptionComponent): void {\r\n        const ac = this.autoPanelRef();\r\n        if (ac) { ac.unregisterOption(option); return; }\r\n        const sel = this.selectRef();\r\n        sel?.unregisterOption?.(option);\r\n    }\r\n\r\n    onBlur(): void {\r\n        this.touched.set(true);\r\n        this.cvaTouched();\r\n\r\n        if (this.type() === 'autocomplete') {\r\n            this.resolveAutocompleteQueryOnBlur();\r\n        }\r\n\r\n        // Email/URL: trim automático — o validator já trima pra validar, mas o value salvo\r\n        // mantinha espaços. Isso mandava \"  a@b.com \" válido pro ngModel e pro backend.\r\n        // Só esses dois: em text/search o espaço pode ser intencional (nome, query literal);\r\n        // numa URL, espaço nas pontas é sempre resíduo de colagem.\r\n        if (this.type() === 'email' || this.type() === 'url') {\r\n            const v = this.value();\r\n            if (typeof v === 'string') {\r\n                const trimmed = v.trim();\r\n                if (trimmed !== v) {\r\n                    this.commitValue(trimmed);\r\n                }\r\n            }\r\n        }\r\n\r\n        this.fieldBlur.emit();\r\n    }\r\n\r\n    /** Enter em `type=\"search\"` dispara o output `(search)`. */\r\n    onSearchEnter(): void {\r\n        const v = this.value();\r\n        this.search.emit(typeof v === 'string' ? v : String(v ?? ''));\r\n    }\r\n\r\n    // ── ControlValueAccessor ──────────────────────────────────────────────\r\n    writeValue(v: unknown): void {\r\n        this.value.set(v ?? '');\r\n        // Valor setado de fora (patchValue/reset/setValue) manda no display: descarta\r\n        // qualquer query pendente pro input voltar a refletir o valor real.\r\n        this.autocompleteQuery.set(null);\r\n    }\r\n    registerOnChange(fn: (v: unknown) => void): void { this.cvaChange = fn; }\r\n    registerOnTouched(fn: () => void): void         { this.cvaTouched = fn; }\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.cvaDisabled.set(isDisabled);\r\n    }\r\n\r\n    // ── Lifecycle: registra validator no FormControl externo (substitui NG_VALIDATORS) ──\r\n    ngAfterViewInit(): void {\r\n        // Hook diferido: ngControl.control só fica disponível depois que NgModel/FormControlDirective\r\n        // termina seu próprio init. Aplicamos sempre — o validator interno consulta type() ao rodar,\r\n        // então funciona pra qualquer type (inclusive type='text' sem validator específico, retorna null).\r\n        const control = this.ngControl?.control;\r\n        if (control && !this.validatorApplied) {\r\n            control.addValidators(this.internalValidator);\r\n            control.updateValueAndValidity({ emitEvent: false });\r\n            this.validatorApplied = true;\r\n        }\r\n\r\n        // Auto-detect de Validators.required no control externo -- o asterisco aparece mesmo\r\n        // quando o consumer esqueceu de passar [required], desde que o form já exija o campo.\r\n        // statusChanges é uma aproximação: Angular não emite evento nativo pra \"validators\r\n        // mudaram\" sem mudança de status, então mudanças dinâmicas de validators que não\r\n        // afetam o status (raro) não disparam re-detecção.\r\n        if (control) {\r\n            this.controlHasRequiredValidator.set(control.hasValidator(Validators.required));\r\n            control.statusChanges\r\n                .pipe(takeUntilDestroyed(this.destroyRef))\r\n                .subscribe(() => this.controlHasRequiredValidator.set(control.hasValidator(Validators.required)));\r\n        }\r\n    }\r\n\r\n    // ── Validator ─────────────────────────────────────────────────────────\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        const t = this.type();\r\n\r\n        // Phone multi-país: resolve o país pelo PRÓPRIO valor (`+<ddi><digitos>`),\r\n        // não pelo input `country()` (que é só o inicial e não reflete a troca de\r\n        // país feita pelo user dentro do matcha-phone). Isso cobre também os países\r\n        // da camada genérica. Delega a validação pro ponto único validatePhoneDigits.\r\n        if (t === 'phone') {\r\n            const raw = (control.value ?? '').toString();\r\n            if (!raw) return null;\r\n            const countries = this.phoneCountries();\r\n            let spec = resolvePhoneSpec(this.country(), countries);\r\n            let localValue = raw;\r\n            if (raw.startsWith('+')) {\r\n                const withoutPlus = raw.slice(1);\r\n                const matched = resolveCountryByDialPrefix(withoutPlus, countries);\r\n                if (matched) {\r\n                    spec = matched;\r\n                    localValue = withoutPlus.slice(matched.ddi.length);\r\n                }\r\n            }\r\n            return validatePhoneDigits(spec, localValue.replace(/\\D/g, ''));\r\n        }\r\n\r\n        const validatorName = VALIDATOR_MAP[t];\r\n        if (!validatorName) return null;\r\n        const fn = MatchaValidators[validatorName] as (c: AbstractControl) => ValidationErrors | null;\r\n        return typeof fn === 'function' ? fn(control) : null;\r\n    }\r\n\r\n    // Re-run validator on type/country change é tratado pelo effect() no constructor que\r\n    // chama ngControl.control.updateValueAndValidity() — substitui o registerOnValidatorChange\r\n    // do padrão NG_VALIDATORS (que dispararia cycle).\r\n}\r\n","<!--\r\n    Single projection slot for matcha-option children, wrapped in ng-template so\r\n    we can reuse it across @case branches (select / autocomplete) via *ngTemplateOutlet.\r\n    Why not <ng-content select=\"matcha-option\"/> in each @case directly: Angular\r\n    resolves projection slots at COMPILE time. Duplicate select=\"matcha-option\"\r\n    in two branches makes projected content reach only ONE of them — even when\r\n    the active @case is the other one. ng-template + outlet sidesteps that.\r\n    Same pattern matcha-select already uses internally.\r\n-->\r\n<ng-template #projectedOptions><ng-content select=\"matcha-option\" /></ng-template>\r\n\r\n<!-- [disabled] é o caminho AUTORITATIVO do estado desabilitado: o matcha-field sabe disso pra\r\n     qualquer type (via input `disabled` ou CVA setDisabledState do FormControl), enquanto o\r\n     sniffing de DOM do matcha-form-field só enxerga o que o filho reflete como atributo —\r\n     matcha-date/time/field-range não refletem. Sem este binding, `matcha-form-field[disabled]`\r\n     nunca era setado e o esmaecimento de 0.38 do tema não aplicava. -->\r\n<matcha-form-field [size]=\"size()\"\r\n                   [error]=\"showError()\"\r\n                   [loading]=\"loading()\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [readonly]=\"readonly()\">\r\n\r\n    <!-- Label: prop `label` por default; slot override quando projetam <matcha-label>. -->\r\n    @if (label() && !hasLabelSlot()) {\r\n        <matcha-label [required]=\"effectiveRequired()\" [tooltip]=\"tooltip()\">\r\n            @if (brand()) {\r\n                <matcha-brand class=\"matcha-field-brand\"\r\n                              [set]=\"brandSet()\"\r\n                              [name]=\"brand()\"\r\n                              [color]=\"brandColor()\"\r\n                              size=\"sm\" />\r\n            }{{ label() }}\r\n        </matcha-label>\r\n    }\r\n    <!-- ngProjectAs: sem isso, este <ng-content> (tag literal \"ng-content\") não\r\n         casa com o seletor `matcha-label` do matcha-form-field um nível acima —\r\n         o matching de slot do Angular olha o nó estático, não o que ele projeta\r\n         em runtime. Sem ngProjectAs, o label projetado cai no slot default\r\n         (dentro da caixa do campo) em vez do slot de label (acima). -->\r\n    <ng-content select=\"matcha-label\" ngProjectAs=\"matcha-label\" />\r\n\r\n    <!-- Prefixo fixo dentro do input (ex.: 'facebook.com/'), antes do valor.\r\n         Projeta no slot matcha-prefix do matcha-form-field (renderiza dentro da borda). -->\r\n    @if (showPrefix() && !hasPrefixSlot()) {\r\n        <matcha-prefix class=\"matcha-field-prefix\">{{ prefix() }}</matcha-prefix>\r\n    }\r\n    <!-- <matcha-prefix> projetado pelo host SUBSTITUI o prop `prefix` (mesma regra do label). -->\r\n    <ng-content select=\"matcha-prefix\" ngProjectAs=\"matcha-prefix\" />\r\n\r\n    @switch (type()) {\r\n        @case ('text') {\r\n            <input type=\"text\" matchaClearButton\r\n                   [matchaClearButton]=\"effectiveClearable()\"\r\n                   [value]=\"value() ?? ''\"\r\n                   (input)=\"onInputChange($event)\"\r\n                   (focus)=\"onFocus()\"\r\n                   (blur)=\"onBlur()\"\r\n                   [placeholder]=\"placeholder()\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [attr.readonly]=\"readonly() ? '' : null\"\r\n                   [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                   [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                   [attr.name]=\"name() || null\"\r\n                   [attr.maxlength]=\"maxlength() > 0 ? maxlength() : null\"\r\n                   [attr.autocomplete]=\"effectiveAutocomplete()\" />\r\n        }\r\n\r\n        @case ('email') {\r\n            <input type=\"email\" matchaClearButton\r\n                   [matchaClearButton]=\"effectiveClearable()\"\r\n                   inputmode=\"email\" autocapitalize=\"off\" spellcheck=\"false\"\r\n                   [value]=\"value() ?? ''\"\r\n                   (input)=\"onInputChange($event)\"\r\n                   (focus)=\"onFocus()\"\r\n                   (blur)=\"onBlur()\"\r\n                   [placeholder]=\"placeholder()\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [attr.readonly]=\"readonly() ? '' : null\"\r\n                   [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                   [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                   [attr.name]=\"name() || null\"\r\n                   [attr.maxlength]=\"maxlength() > 0 ? maxlength() : null\"\r\n                   [attr.autocomplete]=\"effectiveAutocomplete()\" />\r\n        }\r\n\r\n        @case ('url') {\r\n            <input type=\"url\" matchaClearButton\r\n                   [matchaClearButton]=\"effectiveClearable()\"\r\n                   inputmode=\"url\" autocapitalize=\"off\" spellcheck=\"false\"\r\n                   [value]=\"value() ?? ''\"\r\n                   (input)=\"onInputChange($event)\"\r\n                   (focus)=\"onFocus()\"\r\n                   (blur)=\"onBlur()\"\r\n                   [placeholder]=\"placeholder() || 'https://exemplo.com'\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [attr.readonly]=\"readonly() ? '' : null\"\r\n                   [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                   [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                   [attr.name]=\"name() || null\"\r\n                   [attr.maxlength]=\"maxlength() > 0 ? maxlength() : null\"\r\n                   [attr.autocomplete]=\"effectiveAutocomplete()\" />\r\n        }\r\n\r\n        @case ('password') {\r\n            <input type=\"password\" matchaClearButton\r\n                   [matchaClearButton]=\"effectiveClearable()\"\r\n                   spellcheck=\"false\"\r\n                   [value]=\"value() ?? ''\"\r\n                   (input)=\"onInputChange($event)\"\r\n                   (focus)=\"onFocus()\"\r\n                   (blur)=\"onBlur()\"\r\n                   [placeholder]=\"placeholder()\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [attr.readonly]=\"readonly() ? '' : null\"\r\n                   [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                   [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                   [attr.name]=\"name() || null\"\r\n                   [attr.maxlength]=\"maxlength() > 0 ? maxlength() : null\"\r\n                   [attr.autocomplete]=\"effectiveAutocomplete()\" />\r\n        }\r\n\r\n        @case ('search') {\r\n            <input type=\"search\"\r\n                   [matchaClearButton]=\"effectiveClearable()\"\r\n                   inputmode=\"search\" enterkeyhint=\"search\"\r\n                   [value]=\"value() ?? ''\"\r\n                   (input)=\"onInputChange($event)\"\r\n                   (keydown.enter)=\"onSearchEnter()\"\r\n                   (focus)=\"onFocus()\"\r\n                   (blur)=\"onBlur()\"\r\n                   [placeholder]=\"placeholder()\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [attr.readonly]=\"readonly() ? '' : null\"\r\n                   [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                   [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                   [attr.name]=\"name() || null\"\r\n                   [attr.maxlength]=\"maxlength() > 0 ? maxlength() : null\"\r\n                   [attr.autocomplete]=\"effectiveAutocomplete()\" />\r\n        }\r\n\r\n        @case ('number') {\r\n            <input type=\"number\" inputmode=\"numeric\"\r\n                   [value]=\"value() ?? ''\"\r\n                   (input)=\"onInputChange($event)\"\r\n                   (focus)=\"onFocus()\"\r\n                   (blur)=\"onBlur()\"\r\n                   [placeholder]=\"placeholder()\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [attr.readonly]=\"readonly() ? '' : null\"\r\n                   [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                   [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                   [attr.name]=\"name() || null\"\r\n                   [attr.autocomplete]=\"effectiveAutocomplete()\" />\r\n        }\r\n\r\n        @case ('textarea') {\r\n            <textarea\r\n                      [matchaAutoGrow]=\"autoGrow()\"\r\n                      [minRows]=\"minRows()\"\r\n                      [maxRows]=\"maxRows()\"\r\n                      [rows]=\"rows()\"\r\n                      [value]=\"value() ?? ''\"\r\n                      (input)=\"onInputChange($event)\"\r\n                      (focus)=\"onFocus()\"\r\n                      (blur)=\"onBlur()\"\r\n                      [placeholder]=\"placeholder()\"\r\n                      [disabled]=\"isDisabled()\"\r\n                      [attr.readonly]=\"readonly() ? '' : null\"\r\n                      [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                      [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                      [attr.name]=\"name() || null\"\r\n                      [attr.maxlength]=\"maxlength() > 0 ? maxlength() : null\"></textarea>\r\n        }\r\n\r\n        @case ('money') {\r\n            <!-- matchaMoney (cents-first) com ngModel interno pra captar valor emitido -->\r\n            <input type=\"text\" [matchaMoney]=\"currency()\" inputmode=\"numeric\"\r\n                   [ngModel]=\"value()\"\r\n                   (ngModelChange)=\"onChildChange($event)\"\r\n                   [ngModelOptions]=\"{standalone: true}\"\r\n                   (focus)=\"onFocus()\"\r\n                   (blur)=\"onBlur()\"\r\n                   [placeholder]=\"effectiveMoneyPlaceholder()\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [attr.readonly]=\"readonly() ? '' : null\"\r\n                   [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                   [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                   [attr.name]=\"name() || null\" />\r\n        }\r\n\r\n        @case ('quantity') {\r\n            <input type=\"number\" matchaQuantityStepper inputmode=\"numeric\"\r\n                   [step]=\"step()\"\r\n                   [attr.min]=\"min()\"\r\n                   [attr.max]=\"max()\"\r\n                   [value]=\"value() ?? ''\"\r\n                   (input)=\"onInputChange($event)\"\r\n                   (focus)=\"onFocus()\"\r\n                   (blur)=\"onBlur()\"\r\n                   [placeholder]=\"placeholder()\"\r\n                   [disabled]=\"isDisabled()\"\r\n                   [attr.readonly]=\"readonly() ? '' : null\"\r\n                   [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                   [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                   [attr.name]=\"name() || null\" />\r\n        }\r\n\r\n        @case ('select') {\r\n            <matcha-select [placeholder]=\"placeholder() || 'Selecione uma opção'\"\r\n                           [countSuffix]=\"texts().countSuffix\"\r\n                           [countSuffixPlural]=\"texts().countSuffixPlural\"\r\n                           [selectAllLabel]=\"texts().selectAllLabel\"\r\n                           [deselectAllLabel]=\"texts().deselectAllLabel\"\r\n                           [clearLabel]=\"texts().clearLabel\"\r\n                           [clearSelectionLabel]=\"texts().clearSelectionLabel\"\r\n                           [clearSearchLabel]=\"texts().clearSearchLabel\"\r\n                           [noResultsText]=\"texts().noResultsText\"\r\n                           [bulkActionsLabel]=\"texts().bulkActionsLabel\"\r\n                           [ariaLabel]=\"ariaLabel() || label()\"\r\n                           [multiple]=\"multiple()\"\r\n                           [clearable]=\"effectiveClearable()\"\r\n                           [showChips]=\"!multiple()\"\r\n                           [pinSelected]=\"multiple() && !showChips()\"\r\n                           [showSelectAll]=\"showSelectAll()\"\r\n                           [searchable]=\"effectiveSearchable()\"\r\n                           [searchMode]=\"searchMode()\"\r\n                           [searchDebounce]=\"searchDebounce()\"\r\n                           [autoSelectOnMatch]=\"autoSelectOnMatch()\"\r\n                           [loading]=\"loading()\"\r\n                           (search)=\"search.emit($event)\"\r\n                           [mode]=\"selectMode()\"\r\n                           [placement]=\"placement() === 'auto' ? 'auto' : placement()\"\r\n                           [disabled]=\"isDisabled()\"\r\n                           [readonly]=\"readonly()\"\r\n                           [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                           [ngModel]=\"value()\"\r\n                           (ngModelChange)=\"onChildChange($event)\"\r\n                           [ngModelOptions]=\"{standalone: true}\"\r\n                           (blur)=\"onBlur()\">\r\n                <ng-container *ngTemplateOutlet=\"projectedOptions\"></ng-container>\r\n            </matcha-select>\r\n        }\r\n\r\n        @case ('autocomplete') {\r\n            <!-- ng-container agrupa os 2 nós num root único pro @case (NG8011) —\r\n                 é transparente pra projeção: input ainda cai no slot default de\r\n                 matcha-form-field e matcha-autocomplete no seu slot nomeado. -->\r\n            <ng-container>\r\n                <!-- Typeahead: input trigger + painel de opções projetadas. -->\r\n                <input type=\"text\" matchaClearButton\r\n                       [matchaClearButton]=\"effectiveClearable()\"\r\n                       [matchaAutocomplete]=\"autoPanel\"\r\n                       autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\"\r\n                       [ngModel]=\"autocompleteDisplay()\"\r\n                       (ngModelChange)=\"onAutocompleteInput($event)\"\r\n                       [ngModelOptions]=\"{standalone: true}\"\r\n                       (focus)=\"onAutocompleteFocus(); onFocus()\"\r\n                       (blur)=\"onBlur()\"\r\n                       [placeholder]=\"placeholder()\"\r\n                       [disabled]=\"isDisabled()\"\r\n                       [attr.readonly]=\"readonly() ? '' : null\"\r\n                       [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                       [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                       [attr.name]=\"name() || null\" />\r\n                <matcha-autocomplete #autoPanel\r\n                                     [displayWith]=\"displayWith()\"\r\n                                     [displayProperty]=\"displayProperty()\"\r\n                                     [autoFilter]=\"effectiveAutoFilter()\"\r\n                                     [fuzzy]=\"fuzzy()\"\r\n                                     [highlight]=\"highlight()\"\r\n                                     [emptyText]=\"emptyText()\"\r\n                                     [placement]=\"placement()\"\r\n                                     [maxHeight]=\"panelMaxHeight()\"\r\n                                     [minWidth]=\"panelMinWidth()\"\r\n                                     [disabled]=\"isDisabled()\"\r\n                                     [readonly]=\"readonly()\"\r\n                                     [loading]=\"loading()\"\r\n                                     (optionSelected)=\"onAutocompleteSelect($event)\">\r\n                    <ng-container *ngTemplateOutlet=\"projectedOptions\"></ng-container>\r\n                </matcha-autocomplete>\r\n            </ng-container>\r\n        }\r\n\r\n        @case ('date') {\r\n            <matcha-date [placeholder]=\"placeholder() || '__/__/____'\"\r\n                         [disabled]=\"isDisabled()\"\r\n                         [readonly]=\"readonly()\"\r\n                         [min]=\"dateMin()\"\r\n                         [max]=\"dateMax()\"\r\n                         [showPicker]=\"showPicker()\"\r\n                         [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                         [ngModel]=\"value()\"\r\n                         (ngModelChange)=\"onChildChange($event)\"\r\n                         [ngModelOptions]=\"{standalone: true}\"\r\n                         (blur)=\"onBlur()\"></matcha-date>\r\n        }\r\n\r\n        @case ('time') {\r\n            <matcha-time [placeholder]=\"placeholder() || 'hh:mm'\"\r\n                         [disabled]=\"isDisabled()\"\r\n                         [readonly]=\"readonly()\"\r\n                         [panelMode]=\"panelMode()\"\r\n                         [hourFormat]=\"hourFormat()\"\r\n                         [showPresets]=\"showPresets()\"\r\n                         [presets]=\"presets()\"\r\n                         [minuteStep]=\"minuteStep()\"\r\n                         [showNow]=\"showNow()\"\r\n                         [useNativePicker]=\"useNativePicker()\"\r\n                         [min]=\"minTime()\"\r\n                         [max]=\"maxTime()\"\r\n                         [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                         [ngModel]=\"value()\"\r\n                         (ngModelChange)=\"onChildChange($event)\"\r\n                         [ngModelOptions]=\"{standalone: true}\"\r\n                         (blur)=\"onBlur()\"></matcha-time>\r\n        }\r\n\r\n        @case ('range') {\r\n            <matcha-field-range [rangeType]=\"rangeType()\"\r\n                                [separatorLabel]=\"separatorLabel()\"\r\n                                [showPicker]=\"showPicker()\"\r\n                                [currency]=\"currency()\"\r\n                                [disabled]=\"isDisabled()\"\r\n                                [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                                [ngModel]=\"value()\"\r\n                                (ngModelChange)=\"onChildChange($event)\"\r\n                                [ngModelOptions]=\"{standalone: true}\"\r\n                                (blur)=\"onBlur()\"></matcha-field-range>\r\n        }\r\n\r\n        @case ('period') {\r\n            <matcha-period [presets]=\"periodPresets()\"\r\n                           [allowCustom]=\"allowCustom()\"\r\n                           [placeholder]=\"placeholder()\"\r\n                           [customLabel]=\"customLabel()\"\r\n                           [applyLabel]=\"applyLabel()\"\r\n                           [displayFormat]=\"displayFormat()\"\r\n                           [min]=\"dateMin()\"\r\n                           [max]=\"dateMax()\"\r\n                           [ariaLabel]=\"ariaLabel() || label()\"\r\n                           [placement]=\"placement()\"\r\n                           [disabled]=\"isDisabled()\"\r\n                           [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                           [ngModel]=\"value()\"\r\n                           (ngModelChange)=\"onChildChange($event)\"\r\n                           [ngModelOptions]=\"{standalone: true}\"\r\n                           (closed)=\"onBlur()\"></matcha-period>\r\n        }\r\n\r\n        @case ('checklist') {\r\n            <!-- Chip checklist multi-select all-visible: opcoes em flex horizontal\r\n                 wrap. Diferente de type=\"select\" [multiple], que usa dropdown +\r\n                 checkboxes internos. Aqui o user VE todas as opcoes de uma vez. -->\r\n            <div class=\"matcha-field-checklist\" role=\"group\" [attr.aria-label]=\"label() || name() || null\">\r\n                @for (opt of checklistOptions(); track opt.value) {\r\n                    <matcha-checkbox color=\"accent\"\r\n                        [checked]=\"isChecklistValueSelected(opt.value)\"\r\n                        (checkedChange)=\"toggleChecklistValue(opt.value, $event)\"\r\n                        [disabled]=\"isDisabled()\"\r\n                        [readonly]=\"readonly()\">\r\n                        {{ opt.label }}\r\n                    </matcha-checkbox>\r\n                }\r\n            </div>\r\n        }\r\n\r\n        @case ('phone') {\r\n            <matcha-phone [country]=\"country()\"\r\n                          [countries]=\"phoneCountries()\"\r\n                          [searchable]=\"searchable()\"\r\n                          [disabled]=\"isDisabled()\"\r\n                          [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                          [ngModel]=\"value()\"\r\n                          (ngModelChange)=\"onChildChange($event)\"\r\n                          [ngModelOptions]=\"{standalone: true}\"\r\n                          (blur)=\"onBlur()\"></matcha-phone>\r\n        }\r\n\r\n        @default {\r\n            <!-- Masked types consolidados: cpf, cnpj, cep, ssn, sin, nif, dni, cuit, rut, rfc,\r\n                 zip, postal-*, phone-br, mask (escape hatch).\r\n                 matchaMask é um ControlValueAccessor: precisa de ngModel pra o flow de\r\n                 writeValue/onChange funcionar. Usar [value]+(input) aqui deixa a máscara órfã\r\n                 e bloqueia digitação (mesmo pattern do bloco 'money' acima). -->\r\n            @if (isMaskedType()) {\r\n                <!-- maxlength: a máscara já LIMITA a digitação; o contador inline N/max\r\n                     (renderizado pelo template abaixo) só liga com maxlength setado. -->\r\n                <input type=\"text\"\r\n                       [matchaMask]=\"resolvedMask()\"\r\n                       [attr.inputmode]=\"effectiveInputmode()\"\r\n                       autocapitalize=\"off\" spellcheck=\"false\"\r\n                       [ngModel]=\"value()\"\r\n                       (ngModelChange)=\"onChildChange($event)\"\r\n                       [ngModelOptions]=\"{standalone: true}\"\r\n                       (focus)=\"onFocus()\"\r\n                       (blur)=\"onBlur()\"\r\n                       [placeholder]=\"resolvedPlaceholder()\"\r\n                       [disabled]=\"isDisabled()\"\r\n                       [attr.readonly]=\"readonly() ? '' : null\"\r\n                       [attr.required]=\"effectiveRequired() ? '' : null\"\r\n                       [attr.aria-invalid]=\"showError() ? 'true' : null\"\r\n                       [attr.name]=\"name() || null\"\r\n                       [attr.maxlength]=\"maxlength() > 0 ? maxlength() : null\"\r\n                       [attr.autocomplete]=\"effectiveAutocomplete()\" />\r\n            }\r\n        }\r\n    }\r\n\r\n    @if (!hasSuffixSlot() && (showInlineCounter() || showInlineSuccess() || showError())) {\r\n        <matcha-suffix class=\"matcha-field-inline-indicators\">\r\n            @if (showInlineCounter()) {\r\n                <!-- aria-live: mesma garantia a11y que a extinta MatchaCharCounterDirective\r\n                     tinha (o span dela era aria-live=\"polite\") — sem isso, screen readers\r\n                     não percebem a contagem se aproximando do limite. -->\r\n                <matcha-text variant=\"body-sm\" color=\"caption\" class=\"matcha-field-inline-counter\" aria-live=\"polite\">{{ inlineCharCount() }}/{{ maxlength() }}</matcha-text>\r\n            }\r\n            @if (showError()) {\r\n                <matcha-icon name=\"error\" color=\"danger\" size=\"sm\" />\r\n            } @else if (showInlineSuccess()) {\r\n                <matcha-icon name=\"check-circle\" color=\"success\" size=\"sm\" />\r\n            }\r\n        </matcha-suffix>\r\n    }\r\n    <!-- <matcha-suffix> projetado pelo host SUBSTITUI o counter/ícones inline (o host que\r\n         customiza o suffix assume o slot inteiro — mesmo padrão de label/prefix/error). -->\r\n    <ng-content select=\"matcha-suffix\" ngProjectAs=\"matcha-suffix\" />\r\n\r\n    @if (hint() && !hasHintSlot()) {\r\n        <matcha-hint-text>{{ hint() }}</matcha-hint-text>\r\n    }\r\n    <ng-content select=\"matcha-hint-text\" ngProjectAs=\"matcha-hint-text\" />\r\n\r\n    @if (showErrorMessage() && !hasErrorSlot()) {\r\n        <matcha-error>{{ errorMessage() }}</matcha-error>\r\n    }\r\n    <!-- <matcha-error> projetado herda o gate de visibilidade do matcha-form-field\r\n         (@if (showError()) lá dentro) -- o *ngIf que o host já tinha na própria tag\r\n         (ex.: por tipo de erro) continua funcionando por cima disso. -->\r\n    <ng-content select=\"matcha-error\" ngProjectAs=\"matcha-error\" />\r\n</matcha-form-field>\r\n\r\n<!-- Multi-select: chips renderizados FORA do matcha-form-field (padrão canônico do DS),\r\n     com o `matcha-chip` do próprio DS. Eram um `<span class=\"matcha-field-chip\">` montado\r\n     à mão, com botão de remover e dez regras de SCSS replicando o que o chip já faz —\r\n     design system cujo campo não usava o próprio componente de chip.\r\n\r\n     Overflow: quando externalChips.length > maxChips, trunca e mostra \"+N mais\" pra expandir.\r\n\r\n     [showChips]=\"false\" zera `externalChips` — a seleção fica só na contagem da caixa, e o\r\n     painel fixa as selecionadas no topo ([pinSelected] acima) pra elas continuarem alcançáveis. -->\r\n@if (type() === 'select' && multiple() && externalChips().length > 0) {\r\n    <div class=\"matcha-field-chips\" role=\"list\">\r\n        @for (chip of visibleChips(); track chip.value) {\r\n            <matcha-chip role=\"listitem\"\r\n                         [attr.data-value]=\"chip.value\"\r\n                         [removable]=\"!isDisabled() && !readonly()\"\r\n                         [disabled]=\"isDisabled()\"\r\n                         (removed)=\"removeChip(chip.value)\">{{ chipLabel(chip.value) }}</matcha-chip>\r\n        }\r\n        <!-- Overflow sem texto traduzível: \"+N\" é número, e o ícone `visibility` (variantes\r\n             `on`/`off`) diz mostrar/ocultar. Era \"+N mais\" / \"Mostrar menos\" cravado em\r\n             pt-BR dentro do componente, que consumidor nenhum conseguia traduzir. O nome\r\n             acessível segue sendo texto, e por isso é input (`showMoreLabel`/`showLessLabel`). -->\r\n        @if (hiddenChipsCount() > 0) {\r\n            <button matcha-button\r\n                    type=\"button\"\r\n                    size=\"small\"\r\n                    [attr.aria-expanded]=\"chipsExpanded()\"\r\n                    [attr.aria-label]=\"showMoreLabel()\"\r\n                    (click)=\"toggleChipsExpanded($event)\">+{{ hiddenChipsCount() }}<matcha-icon\r\n                    name=\"visibility-on\" size=\"small\" aria-hidden=\"true\"></matcha-icon></button>\r\n        }\r\n        @if (chipsExpanded() && externalChips().length > maxChips()) {\r\n            <button matcha-button\r\n                    type=\"button\"\r\n                    size=\"small\"\r\n                    [attr.aria-label]=\"showLessLabel()\"\r\n                    (click)=\"toggleChipsExpanded($event)\"><matcha-icon name=\"visibility-off\"\r\n                    size=\"small\" aria-hidden=\"true\"></matcha-icon></button>\r\n        }\r\n    </div>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaFieldComponent } from './matcha-field.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaFieldComponent],\r\n    exports: [MatchaFieldComponent],\r\n})\r\nexport class MatchaFieldModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\n\r\nimport { MatchaHintTextComponent } from './hint/hint-text.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaHintTextComponent, MatchaIconModule],\r\n    exports: [MatchaHintTextComponent],\r\n})\r\nexport class MatchaHintTextModule {}\r\n","/*\r\nHOW TO USE ---------------------------------------------------------\r\nTEMPLATE:\r\n<!-- Elemento sentinela para detectar o scroll -->\r\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\r\n    <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\r\n    <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\r\n</option>\r\n*/\r\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-infinite-scroll',\r\n  templateUrl: './matcha-infinite-scroll.component.html',\r\n  styleUrl: './matcha-infinite-scroll.component.scss',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaInfiniteScrollComponent implements OnInit, OnDestroy{\r\n// Evento que será disparado quando o elemento entrar na área visível\r\n@Output() scrolledToEnd = new EventEmitter<void>();\r\n\r\nprivate observer!: IntersectionObserver;\r\n\r\nconstructor(private element: ElementRef) {}\r\n\r\nngOnInit(): void {\r\n  // Configura o observer para disparar quando 10% do elemento estiver visível\r\n  const options = {\r\n    root: null, // Usa a viewport\r\n    rootMargin: '0px',\r\n    threshold: 0.1\r\n  };\r\n\r\n  this.observer = new IntersectionObserver((entries) => {\r\n    entries.forEach(entry => {\r\n      if (entry.isIntersecting) {\r\n        this.scrolledToEnd.emit();\r\n      }\r\n    });\r\n  }, options);\r\n\r\n  this.observer.observe(this.element.nativeElement);\r\n}\r\n\r\nngOnDestroy(): void {\r\n  this.observer.disconnect();\r\n}\r\n}\r\n","","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges ,ChangeDetectionStrategy } from '@angular/core';\r\nimport { Observable, Subscription, Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-infinite-scroll-data',\r\n    templateUrl: './matcha-infinite-scroll-data.component.html',\r\n    styleUrls: ['./matcha-infinite-scroll-data.component.scss'],\r\n    styles: [`\r\n        :host {\r\n            height: 1px;\r\n            opacity: 0;\r\n        }\r\n    `],\r\n    standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaInfiniteScrollDataComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n    /**\r\n     * Função que carrega os dados com base no número da página.\r\n     * Deve retornar um Observable com um array de itens.\r\n     */\r\n    @Input() loadData!: (page: number) => Observable<any[]>;\r\n\r\n    /**\r\n     * Lista inicial (opcional) para iniciar a agregação.\r\n     */\r\n    @Input() initialList: any[] = [];\r\n\r\n    /**\r\n     * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\r\n     */\r\n    @Input() threshold = 0.1;\r\n\r\n    /**\r\n     * Chave para resetar a diretiva (para componentes como select).\r\n     */\r\n    @Input() resetKey: any;\r\n\r\n    /**\r\n     * Novo input para o autocomplete, onde será aplicado o debounce.\r\n     */\r\n    @Input() searchTerm: any;\r\n\r\n    /**\r\n     * Emite a lista acumulada de itens.\r\n     */\r\n    @Output() aggregatedData = new EventEmitter<any[]>();\r\n\r\n    /**\r\n     * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\r\n     */\r\n    @Output() exactMatch = new EventEmitter<any>();\r\n\r\n    private aggregatedList: any[] = [];\r\n    private currentPage = 0;\r\n    private observer!: IntersectionObserver;\r\n\r\n    // Subscription para as chamadas do loadData\r\n    private dataSubscription = new Subscription();\r\n    // Subscription exclusiva para o debounce do searchTerm\r\n    private searchSubscription = new Subscription();\r\n    // Subject para aplicar debounce no searchTerm\r\n    private searchTermSubject: Subject<any> = new Subject();\r\n\r\n    constructor(private element: ElementRef) { }\r\n\r\n    ngOnInit(): void {\r\n        this.initialize();\r\n\r\n        // Configura o Intersection Observer para carregamento via scroll\r\n        const options = {\r\n            root: null,\r\n            rootMargin: '0px',\r\n            threshold: this.threshold\r\n        };\r\n\r\n        this.observer = new IntersectionObserver(entries => {\r\n            entries.forEach(entry => {\r\n                if (entry.isIntersecting) {\r\n                    this.loadNextPage();\r\n                }\r\n            });\r\n        }, options);\r\n\r\n        this.observer.observe(this.element.nativeElement);\r\n\r\n        // Inscreve para receber alterações do searchTerm com debounce\r\n        this.searchSubscription = this.searchTermSubject.pipe(\r\n            debounceTime(300)\r\n        ).subscribe(() => {\r\n            // Reseta e carrega a primeira página após o debounce\r\n            this.resetData();\r\n            this.loadNextPage();\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes['resetKey'] && !changes['resetKey'].firstChange) {\r\n            this.resetData();\r\n        }\r\n\r\n        if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\r\n            // Emite o novo valor para o Subject e aguarda o debounce\r\n            this.searchTermSubject.next(changes['searchTerm'].currentValue);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Inicializa ou reinicializa a lista agregada e o contador de página.\r\n     */\r\n    private initialize(): void {\r\n        this.aggregatedList = [...this.initialList];\r\n        this.currentPage = 0;\r\n        this.aggregatedData.emit(this.aggregatedList);\r\n        this.checkExactMatch();\r\n    }\r\n\r\n    /**\r\n     * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\r\n     */\r\n    private resetData(): void {\r\n        // Cancela as assinaturas das chamadas de loadData\r\n        this.dataSubscription.unsubscribe();\r\n        this.dataSubscription = new Subscription();\r\n\r\n        // Re-inicializa a lista e o contador\r\n        this.initialize();\r\n    }\r\n\r\n    /**\r\n     * Carrega a próxima página de dados utilizando a função loadData.\r\n     */\r\n    private loadNextPage(): void {\r\n        if (!this.loadData) {\r\n            return;\r\n        }\r\n        this.currentPage++;\r\n        const dataObservable = this.loadData(this.currentPage);\r\n        const sub = dataObservable.subscribe(data => {\r\n            if (data && data.length) {\r\n                this.aggregatedList = [...this.aggregatedList, ...data];\r\n                this.aggregatedData.emit(this.aggregatedList);\r\n                this.checkExactMatch();\r\n            }\r\n        });\r\n        this.dataSubscription.add(sub);\r\n    }\r\n\r\n    /**\r\n     * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\r\n     * Se sim, emite o output exactMatch com esse item.\r\n     */\r\n    private checkExactMatch(): void {\r\n        if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\r\n            this.exactMatch.emit(this.aggregatedList[0]);\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.observer.disconnect();\r\n        this.dataSubscription.unsubscribe();\r\n        this.searchSubscription.unsubscribe();\r\n    }\r\n}\r\n","","import { NgModule } from '@angular/core';\r\nimport { MatchaInfiniteScrollComponent } from './matcha-infinite-scroll/matcha-infinite-scroll.component';\r\nimport { MatchaInfiniteScrollDataComponent } from './matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent],\r\n    exports: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent]\r\n})\r\nexport class MatchaInfiniteScrollModule { }\r\n","import { Component, Input ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-masonry',\r\n    templateUrl: './masonry.component.html',\r\n    styleUrls: ['./masonry.component.scss'],\r\n    standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaMasonryComponent {\r\n    @Input('col') colSize: string | number | null = null;\r\n    @Input('col-sm') smColSize: string | number | null = null;\r\n    @Input('col-md') mdColSize: string | number | null = null;\r\n    @Input('col-lg') lgColSize: string | number | null = null;\r\n    @Input('col-xl') xlColSize: string | number | null = null;\r\n    @Input('gap') gap: string | number | null = null;\r\n    @Input('gap-sm') gapSm: string | number | null = null;\r\n    @Input('gap-md') gapMd: string | number | null = null;\r\n    @Input('gap-lg') gapLg: string | number | null = null;\r\n    @Input('gap-xl') gapXl: string | number | null = null;\r\n\r\n    public get classes(): string {\r\n        const col = this.colSize ? `masonry-${this.colSize}` : '';\r\n        const smCol = this.smColSize ? `masonry-sm-${this.smColSize}` : '';\r\n        const mdCol = this.mdColSize ? `masonry-md-${this.mdColSize}` : '';\r\n        const lgCol = this.lgColSize ? `masonry-lg-${this.lgColSize}` : '';\r\n        const xlCol = this.xlColSize ? `masonry-xl-${this.xlColSize}` : '';\r\n        const gap = this.gap ? `masonry-gap-${this.gap}` : '';\r\n        const gapSm = this.gapSm ? `masonry-gap-sm-${this.gapSm}` : '';\r\n        const gapMd = this.gapMd ? `masonry-gap-md-${this.gapMd}` : '';\r\n        const gapLg = this.gapLg ? `masonry-gap-lg-${this.gapLg}` : '';\r\n        const gapXl = this.gapXl ? `masonry-gap-xl-${this.gapXl}` : '';\r\n        let activeClasses = '';\r\n        activeClasses += col ? ` ${col}` : '';\r\n        activeClasses += smCol ? ` ${smCol}` : '';\r\n        activeClasses += mdCol ? ` ${mdCol}` : '';\r\n        activeClasses += lgCol ? ` ${lgCol}` : '';\r\n        activeClasses += xlCol ? ` ${xlCol}` : '';\r\n        activeClasses += gap ? ` ${gap}` : '';\r\n        activeClasses += gapSm ? ` ${gapSm}` : '';\r\n        activeClasses += gapMd ? ` ${gapMd}` : '';\r\n        activeClasses += gapLg ? ` ${gapLg}` : '';\r\n        activeClasses += gapXl ? ` ${gapXl}` : '';\r\n        return activeClasses;\r\n    }\r\n}\r\n","<div [class]=\"classes\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaMasonryComponent } from './masonry/masonry.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaMasonryComponent],\r\n    exports: [MatchaMasonryComponent]\r\n})\r\nexport class MatchaMasonryModule { }\r\n","import { Injectable, ComponentRef, createComponent, ApplicationRef, Injector, Type, EmbeddedViewRef, Renderer2, RendererFactory2 } from '@angular/core';\r\n\r\ninterface OverlayConfig {\r\n    disableClose?: boolean;\r\n    /** Chamado quando ESC/backdrop pedem o fechamento (o modal.service decide e emite afterClose). */\r\n    onDismiss?: () => void;\r\n}\r\n\r\ninterface OverlayEntry {\r\n    ref: ComponentRef<any>;\r\n    element: HTMLElement;\r\n    disableClose: boolean;\r\n    onDismiss: () => void;\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class MatchaOverlayService {\r\n    private overlayContainer: HTMLElement | null = null;\r\n    private backdrop: HTMLElement | null = null;\r\n    private backdropClickListener: (() => void) | null = null;\r\n    private escListener: (() => void) | null = null;\r\n    private renderer: Renderer2;\r\n    // Pilha de modais abertos — suporta modal-dentro-de-modal. Container e backdrop\r\n    // são compartilhados (z-index do tema: container 1000 acima do backdrop 998);\r\n    // o backdrop só é removido quando o último modal da pilha fecha.\r\n    private stack: OverlayEntry[] = [];\r\n    // Snapshot do estado da página antes do PRIMEIRO modal abrir — restaurado quando o último fecha.\r\n    private prevHtmlOverflow: string = '';\r\n    private prevBodyOverflow: string = '';\r\n    private prevBodyPaddingRight: string = '';\r\n    private inertedSiblings: HTMLElement[] = [];\r\n\r\n    constructor(\r\n        private appRef: ApplicationRef,\r\n        private injector: Injector,\r\n        private rendererFactory: RendererFactory2,\r\n    ) {\r\n        this.renderer = this.rendererFactory.createRenderer(null, null);\r\n    }\r\n\r\n    open<T>(component: Type<T>, config: OverlayConfig = {}): ComponentRef<T> {\r\n        const isFirst = this.stack.length === 0;\r\n        this.createOverlayContainer();\r\n        if (isFirst) {\r\n            this.createBackdrop();\r\n            this.lockBodyScroll();\r\n            this.inertSiblings();\r\n            this.attachEscListener();\r\n        }\r\n\r\n        const componentRef = createComponent(component, {\r\n            environmentInjector: this.appRef.injector,\r\n            elementInjector: this.injector,\r\n        });\r\n\r\n        const componentElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\r\n        this.renderer.appendChild(this.overlayContainer, componentElement);\r\n        this.appRef.attachView(componentRef.hostView);\r\n\r\n        this.stack.push({\r\n            ref: componentRef,\r\n            element: componentElement,\r\n            disableClose: !!config.disableClose,\r\n            onDismiss: config.onDismiss || (() => {}),\r\n        });\r\n\r\n        return componentRef;\r\n    }\r\n\r\n    // Fecha um modal específico (por ref) ou o do topo. Idempotente — fechar algo\r\n    // que não está mais na pilha é no-op.\r\n    close(ref?: ComponentRef<any>): void {\r\n        const idx = ref ? this.stack.findIndex(e => e.ref === ref) : this.stack.length - 1;\r\n        if (idx === -1) return;\r\n\r\n        const entry = this.stack[idx];\r\n        this.stack.splice(idx, 1);\r\n\r\n        // Exit animation\r\n        if (entry.element) {\r\n            this.renderer.addClass(entry.element, 'matcha-modal--closing');\r\n        }\r\n\r\n        const wasLast = this.stack.length === 0;\r\n        if (wasLast) {\r\n            this.detachEscListener();\r\n            this.removeBackdrop();\r\n        }\r\n\r\n        // Wait for animation then destroy\r\n        setTimeout(() => {\r\n            this.appRef.detachView(entry.ref.hostView);\r\n            entry.ref.destroy();\r\n            // Re-checa: um novo modal pode ter aberto durante a animação de saída.\r\n            // Só desmonta o container/scroll/inert se a pilha realmente esvaziou.\r\n            if (wasLast && this.stack.length === 0) {\r\n                this.removeOverlayContainer();\r\n                this.unlockBodyScroll();\r\n                this.uninertSiblings();\r\n            }\r\n        }, 150);\r\n    }\r\n\r\n    // ESC, clique no backdrop e o X do matcha-modal-header pedem o fechamento do TOPO —\r\n    // mas quem emite o afterClose é o modal.service (via onDismiss), pra manter uma única\r\n    // fonte da verdade. Público porque o header precisa do mesmo caminho: chamar\r\n    // `MatchaModalService.close()` de dentro de um componente falharia quando o app\r\n    // registra uma SUBCLASSE do service (a pilha vive na instância que abriu).\r\n    //\r\n    // `force` separa AÇÃO EXPLÍCITA de fechamento incidental. `disableClose` existe pra\r\n    // impedir que ESC e clique no backdrop descartem um formulário sem querer — não pra\r\n    // desativar o botão de fechar, que é o usuário pedindo pra sair com todas as letras.\r\n    // Enquanto o X passava pelo caminho guardado, ele nascia MORTO em todo modal aberto\r\n    // com `disableClose: true`: 56 modais do painel estavam assim, e os que funcionavam\r\n    // só funcionavam porque o consumidor ligava `(closed)` na mão. Quem quer diálogo sem\r\n    // via de saída usa `closable=\"false\"` no header — aí o X não é nem renderizado.\r\n    dismissTop(force = false): void {\r\n        const top = this.stack[this.stack.length - 1];\r\n        if (top && (force || !top.disableClose)) top.onDismiss();\r\n    }\r\n\r\n    private attachEscListener(): void {\r\n        this.escListener = this.renderer.listen('document', 'keydown', (event: KeyboardEvent) => {\r\n            if (event.key === 'Escape') this.dismissTop();\r\n        });\r\n    }\r\n\r\n    private detachEscListener(): void {\r\n        if (this.escListener) {\r\n            this.escListener();\r\n            this.escListener = null;\r\n        }\r\n    }\r\n\r\n    private createOverlayContainer(): void {\r\n        if (!this.overlayContainer) {\r\n            this.overlayContainer = this.renderer.createElement('div');\r\n            this.renderer.addClass(this.overlayContainer, 'matcha-overlay-container');\r\n            this.renderer.appendChild(document.body, this.overlayContainer);\r\n        }\r\n    }\r\n\r\n    private removeOverlayContainer(): void {\r\n        if (this.overlayContainer) {\r\n            this.renderer.removeChild(document.body, this.overlayContainer);\r\n            this.overlayContainer = null;\r\n        }\r\n    }\r\n\r\n    private createBackdrop(): void {\r\n        if (!this.backdrop) {\r\n            this.backdrop = this.renderer.createElement('div');\r\n            this.renderer.addClass(this.backdrop, 'matcha-modal-backdrop');\r\n            this.renderer.appendChild(document.body, this.backdrop);\r\n\r\n            // Backdrop click fecha o topo (a checagem de disableClose é dinâmica em dismissTop).\r\n            this.backdropClickListener = this.renderer.listen(this.backdrop, 'click', () => this.dismissTop());\r\n        }\r\n    }\r\n\r\n    private removeBackdrop(): void {\r\n        if (this.backdropClickListener) {\r\n            this.backdropClickListener();\r\n            this.backdropClickListener = null;\r\n        }\r\n        if (this.backdrop) {\r\n            // Exit animation\r\n            this.renderer.addClass(this.backdrop, 'matcha-modal-backdrop--closing');\r\n            const backdrop = this.backdrop;\r\n            this.backdrop = null;\r\n            setTimeout(() => {\r\n                if (backdrop && backdrop.parentNode) {\r\n                    this.renderer.removeChild(document.body, backdrop);\r\n                }\r\n            }, 150);\r\n        }\r\n    }\r\n\r\n    // ── Scroll lock — previne scroll na page atrás do modal ──────────────\r\n    // Compensa o gap do scrollbar via padding-right pra não ter layout shift.\r\n    private lockBodyScroll(): void {\r\n        const html = document.documentElement;\r\n        const body = document.body;\r\n        // O scrollbar do documento normalmente vive no <html> — travar só o body NÃO\r\n        // o remove, deixando (a) a página rolável atrás do modal e (b) o modal 16px\r\n        // fora do centro (centrado na largura visível, com o scrollbar à direita).\r\n        const scrollbarWidth = window.innerWidth - html.clientWidth;\r\n        this.prevHtmlOverflow = html.style.overflow;\r\n        this.prevBodyOverflow = body.style.overflow;\r\n        this.prevBodyPaddingRight = body.style.paddingRight;\r\n        html.style.overflow = 'hidden';\r\n        body.style.overflow = 'hidden';\r\n        // Compensa o sumiço do scrollbar p/ a página atrás não dar layout shift.\r\n        if (scrollbarWidth > 0) body.style.paddingRight = `${scrollbarWidth}px`;\r\n    }\r\n\r\n    private unlockBodyScroll(): void {\r\n        document.documentElement.style.overflow = this.prevHtmlOverflow;\r\n        document.body.style.overflow = this.prevBodyOverflow;\r\n        document.body.style.paddingRight = this.prevBodyPaddingRight;\r\n    }\r\n\r\n    // ── Inert siblings — screen readers/keyboard ignoram tudo fora do modal ──\r\n    // WAI-ARIA APG dialog pattern. Complementa focus trap.\r\n    private inertSiblings(): void {\r\n        const body = document.body;\r\n        const overlay = this.overlayContainer;\r\n        const backdrop = this.backdrop;\r\n        Array.from(body.children).forEach(child => {\r\n            if (child !== overlay && child !== backdrop && child instanceof HTMLElement) {\r\n                if (!child.hasAttribute('inert')) {\r\n                    child.setAttribute('inert', '');\r\n                    this.inertedSiblings.push(child);\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    private uninertSiblings(): void {\r\n        this.inertedSiblings.forEach(el => el.removeAttribute('inert'));\r\n        this.inertedSiblings = [];\r\n    }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, HostBinding, inject, Input, isDevMode, OnInit } from '@angular/core';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-icon-button — botão quadrado (1:1) com ícone.\r\n *\r\n * Espelha o componente Figma `matcha/icon-button` (3 variantes × 4 tamanhos × 4 estados).\r\n * Substitui o padrão legacy `<button matcha-button icon=\"true\">`.\r\n *\r\n * Exemplos:\r\n *   <button matcha-icon-button variant=\"filled\"  size=\"medium\" color=\"accent\" aria-label=\"Adicionar\">\r\n *     <matcha-icon name=\"plus\"></matcha-icon>\r\n *   </button>\r\n *\r\n *   <button matcha-icon-button variant=\"ghost\" size=\"small\" color=\"danger\" aria-label=\"Remover\">\r\n *     <matcha-icon name=\"close\"></matcha-icon>\r\n *   </button>\r\n *\r\n * Acessibilidade: **aria-label obrigatório** (botão sem texto visível).\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: '[matcha-icon-button]',\r\n    template: `\r\n        @if (loading) {\r\n            <span class=\"matcha-button__spinner\" aria-hidden=\"true\">\r\n                <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\r\n                    <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                            stroke-dasharray=\"40 20\" opacity=\"0.9\">\r\n                        <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 12 12\" to=\"360 12 12\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\r\n                    </circle>\r\n                </svg>\r\n            </span>\r\n        } @else {\r\n            <ng-content></ng-content>\r\n        }\r\n    `,\r\n    styleUrls: ['../matcha-button/button/button.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-button',\r\n        // icon attribute aplica aspect-ratio 1:1 + padding 0 via SCSS\r\n        '[attr.icon]': '\"\"',\r\n    },\r\n})\r\nexport class MatchaIconButtonComponent implements OnInit {\r\n    /** Variante visual alinhada com Figma: 'filled' | 'outline' | 'ghost'. */\r\n    @Input() variant: 'filled' | 'outline' | 'ghost' = 'filled';\r\n\r\n    /** Tamanho canônico: 'tiny'|'small'|'medium'|'large'|'huge'. Abreviações xs/sm/md/lg/xl aceitas como aliases @deprecated. */\r\n    @Input({ transform: (v: string) => sizeAlias(v) }) size: string = 'medium';\r\n\r\n    /** Cor semântica. */\r\n    @Input() color: string = 'basic';\r\n\r\n    /** Pill: radius 9999px. */\r\n    @Input() pill: boolean | string = false;\r\n\r\n    /** Loading state — desabilita interação + mostra spinner inline. */\r\n    @Input() loading = false;\r\n\r\n    /** Disabled state — mescla com `loading` no attr.disabled (mesmo padrão do matcha-button). */\r\n    @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n    // Reflete inputs como atributos HTML pro SCSS attribute-selector\r\n    @HostBinding('attr.color') get colorAttr() { return this.color; }\r\n    @HostBinding('attr.size') get sizeAttr() { return this.size; }\r\n    @HostBinding('attr.outline') get outlineAttr() { return this.variant === 'outline' ? '' : null; }\r\n    @HostBinding('attr.basic') get basicAttr() { return this.variant === 'ghost' ? '' : null; }\r\n    @HostBinding('attr.pill') get pillAttr() { return this.isTruthy(this.pill) ? '' : null; }\r\n    @HostBinding('attr.aria-busy') get ariaBusyAttr() { return this.loading ? 'true' : null; }\r\n    @HostBinding('attr.disabled') get disabledAttr() { return this.loading || this.disabled ? 'true' : null; }\r\n\r\n    private elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n    ngOnInit(): void {\r\n        // Enforce WCAG 2.5.5 — icon-only button MUST have aria-label ou aria-labelledby.\r\n        if (isDevMode()) {\r\n            const el = this.elementRef.nativeElement as HTMLElement;\r\n            const hasLabel = el.hasAttribute('aria-label') || el.hasAttribute('aria-labelledby');\r\n            if (!hasLabel) {\r\n                console.warn(\r\n                    '[matcha-icon-button] aria-label (ou aria-labelledby) é obrigatório — botão sem texto visível não é acessível. WCAG 2.5.5.',\r\n                    el,\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n    private isTruthy(v: boolean | string): boolean {\r\n        return v === true || (typeof v === 'string' && v !== 'false' && v !== '');\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, booleanAttribute, inject, numberAttribute } from '@angular/core';\nimport { MatchaOverlayService } from '../overlay.service';\nimport { MatchaDividerComponent } from '../../matcha-divider/divider/divider.component';\nimport { MatchaIconButtonComponent } from '../../matcha-icon-button/icon-button.component';\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\nimport { MatchaTitleComponent, MatchaTitleSize } from '../../matcha-title/title/title.component';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\n\n/**\n * matcha-modal-header — slot canônico DSV3 (Figma matcha/modal Header).\n *\n * Forma canônica — o consumidor informa só o TEXTO; o slot monta o título, o nome\n * acessível (id pro aria-labelledby do modal) e o X:\n *   <matcha-modal-header [heading]=\"'FEATURE.TITLE' | translate\" (closed)=\"onClose()\">\n *   </matcha-modal-header>\n *\n * O título É o atômico `matcha-title` (com `type=\"none\"`: sem pill, bullet ou ícone —\n * diálogo não leva decoração de cabeçalho de seção). A escala vem do atômico, não de\n * uma tipografia paralela cravada aqui: quem define tamanho de título no DS é o\n * matcha-title, e o default dele é o default do modal. `[headingSize]` sobrescreve.\n *\n * `[heading]` existe pra que o call-site não remonte o título à mão — era a origem de\n * 195 títulos fora do canon no control-panel. Sem ele, o `<ng-content>` segue valendo\n * pra título com estrutura (`*ngIf`, link, `<strong>`), e aí a semântica de heading é\n * responsabilidade de quem projeta.\n *\n * O slot `<matcha-modal-options>` continua disponível pra ações adicionais\n * (kebab menu, info button, etc) — quando `closable=true` o X é renderizado\n * APÓS as options projetadas.\n */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-modal-header',\n    templateUrl: './modal-header.component.html',\n    styleUrls: ['./modal-header.component.scss'],\n    standalone: true,\n    imports: [MatchaDividerComponent, MatchaIconButtonComponent, MatchaIconComponent, MatchaTitleComponent],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatchaModalHeaderComponent {\n    /**\n     * Renderiza o X de fechar no canto direito. Default `true`: diálogo sem via de\n     * saída visível é falha de usabilidade, e o X convive com o botão \"cancelar\" do\n     * footer (mesmo contrato das caixas de diálogo do sistema — o X é a ação menos\n     * danosa). Desligue com `closable=\"false\"` quando o fluxo exigir decisão explícita.\n     */\n    @Input({ transform: booleanAttribute }) closable = true;\n\n    /** Texto do título. Renderizado pelo slot como `matcha-title type=\"none\"`. */\n    @Input() heading: string | null = null;\n\n    /**\n     * Tamanho do título, repassado ao matcha-title. Omitido = default do atômico —\n     * é ele que governa a escala de título no DS, e um valor cravado aqui seria uma\n     * segunda escala paralela.\n     */\n    @Input() headingSize: MatchaTitleSize | null = null;\n\n    /** Nível ARIA do heading (1-6). Só vale quando `heading` está setado. */\n    @Input({ transform: numberAttribute }) headingLevel = 2;\n\n    /** Linha de apoio renderizada abaixo do título. Opcional. */\n    @Input() subtitle: string | null = null;\n\n    /** aria-label do botão de close. Default em pt-BR; sobrescreva pra i18n. */\n    @Input() closeAriaLabel = 'Fechar';\n\n    @Output() closed = new EventEmitter<void>();\n\n    /**\n     * Id do elemento de título — consumido pelo `aria-labelledby` do `matcha-modal`.\n     * Contador estático: precisa ser único no documento (modal sobre modal coexiste no DOM).\n     */\n    readonly headingId = `matcha-modal-heading-${MatchaModalHeaderComponent.nextId++}`;\n    private static nextId = 0;\n\n    private readonly overlayService = inject(MatchaOverlayService);\n\n    /**\n     * Clique no X. Sem listener de `(closed)`, o header fecha o modal sozinho — senão\n     * o X default seria um botão morto em quem não conhece o output.\n     *\n     * `dismissTop()` (e não `MatchaModalService.close()`) porque o consumidor pode\n     * registrar uma SUBCLASSE do modal service: a pilha vive na instância que abriu, e\n     * `close()` no token base acharia pilha vazia. O overlay é singleton de verdade e\n     * dispara o `onDismiss` de quem abriu.\n     *\n     * `force: true` porque este é o caminho da AÇÃO EXPLÍCITA, não o do ESC/backdrop:\n     * `disableClose` protege contra descarte acidental e não deve desativar o botão de\n     * fechar. Sem o force, o X nascia morto em todo modal aberto com\n     * `disableClose: true`. Diálogo que exige decisão explícita usa `closable=\"false\"`.\n     */\n    onCloseClick(): void {\n        if (this.closed.observed) {\n            this.closed.emit();\n            return;\n        }\n        this.overlayService.dismissTop(true);\n    }\n}\n","<header class=\"matcha-modal-header\">\n    <div class=\"matcha-modal-header__row\">\n        <div class=\"matcha-modal-header__titles\">\n            @if (heading) {\n                <!-- O título é o atômico: a escala vem dele (size omitido = default do\n                     matcha-title), e ele já emite role=heading + aria-level. -->\n                <matcha-title type=\"none\"\n                              [id]=\"headingId\"\n                              [size]=\"headingSize\"\n                              [level]=\"headingLevel\">{{ heading }}</matcha-title>\n            } @else {\n                <div class=\"matcha-modal-header__title\">\n                    <ng-content></ng-content>\n                </div>\n            }\n            @if (subtitle) {\n                <p class=\"matcha-modal-header__subtitle\">{{ subtitle }}</p>\n            }\n        </div>\n        <div class=\"matcha-modal-header__options\">\n            <ng-content select=\"matcha-modal-options\"></ng-content>\n            @if (closable) {\n                <button matcha-icon-button variant=\"ghost\" size=\"sm\"\n                        type=\"button\"\n                        [attr.aria-label]=\"closeAriaLabel\"\n                        (click)=\"onCloseClick()\">\n                    <matcha-icon name=\"close\"></matcha-icon>\n                </button>\n            }\n        </div>\n    </div>\n    <matcha-divider></matcha-divider>\n</header>\n","import { Component ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-modal-content',\r\n    templateUrl: './modal-content.component.html',\r\n    styleUrls: ['./modal-content.component.scss'],\r\n    standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaModalContentComponent {\r\n\r\n}\r\n","<div class=\"matcha-modal-content\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, booleanAttribute } from '@angular/core';\nimport { MatchaDividerComponent } from '../../matcha-divider/divider/divider.component';\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\n\n/**\n * matcha-modal-footer — slot canônico DSV3 (Figma matcha/modal Footer).\n *\n * FORMA CANÔNICA (declarativa) — o consumidor informa rótulo e handler; o slot decide\n * tamanho, variante e cor. É o caminho recomendado, porque tirar a escolha do call-site\n * é o que faz a hierarquia visual valer de fato:\n *\n *   <matcha-modal-footer\n *       [cancelLabel]=\"'SHARED.CANCEL' | translate\"\n *       [confirmLabel]=\"'SHARED.SAVE' | translate\"\n *       [loading]=\"isSubmitting()\"\n *       (cancelled)=\"close()\" (confirmed)=\"save()\">\n *   </matcha-modal-footer>\n *\n * Os três papéis, e nada além:\n *   - primária (confirmar/salvar)      → sólida `accent`\n *   - secundária (cancelar/voltar)     → `ghost` `basic`, não compete com a primária\n *   - destrutiva (excluir/recusar)     → sólida `danger` via `[destructive]`\n * Nenhum deles leva `size`: o default do matcha-button (40px) É o tamanho de ação de\n * diálogo. Uma única ação sólida por footer — a destrutiva é a exceção deliberada.\n *\n * PROJEÇÃO (`<ng-content>`) segue válida pro que não cabe nos três papéis: footer com\n * 3+ ações, botão com ícone, rodapé que muda por etapa de wizard. Aí a hierarquia passa\n * a ser responsabilidade de quem projeta.\n *\n * Comportamento de layout (canon Figma DSV3): width intrínseca, alinhados à direita,\n * gap 16px. Em ≤639px o SCSS faz column-reverse + stretch (touch target full-width) —\n * não recriar isso com `<div class=\"flex-... w-100-p\">` em volta dos botões.\n *\n * Legacy: até 2026-05-20 esse componente adicionava `.w-100-p` programaticamente via\n * ngAfterViewInit (herdado de DS antigo full-width). Removido — viola canon DSV3 atual\n * e CSS nativo já resolve via media query.\n */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-modal-footer',\n    templateUrl: './modal-footer.component.html',\n    styleUrls: ['./modal-footer.component.scss'],\n    standalone: true,\n    imports: [MatchaDividerComponent, MatchaButtonComponent],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatchaModalFooterComponent {\n    /** Rótulo da ação primária. Omita pra rodapé só com a secundária. */\n    @Input() confirmLabel: string | null = null;\n\n    /** Rótulo da ação secundária. Omita pra rodapé de ação única. */\n    @Input() cancelLabel: string | null = null;\n\n    /** Estado de envio: spinner + bloqueio na primária (usa o `loading` nativo do matcha-button). */\n    @Input({ transform: booleanAttribute }) loading = false;\n\n    /** Bloqueia a primária sem spinner — o caso \"salvar só com formulário válido\". */\n    @Input({ transform: booleanAttribute }) confirmDisabled = false;\n\n    /** Ação primária é destrutiva (excluir, recusar): sólida em `danger` no lugar de `accent`. */\n    @Input({ transform: booleanAttribute }) destructive = false;\n\n    @Output() confirmed = new EventEmitter<void>();\n    @Output() cancelled = new EventEmitter<void>();\n}\n","<footer class=\"matcha-modal-footer\">\n    <matcha-divider></matcha-divider>\n    <div class=\"matcha-modal-footer__actions\">\n        <!-- ng-content fora de bloco de controle de propósito: conteúdo projetado é\n             instanciado uma vez, e alternar @if em cima dele perde a projeção. -->\n        <ng-content></ng-content>\n\n        <!-- Rótulos independentes: há diálogo só com a primária (\"Entendi\") e diálogo\n             só com a secundária (\"Fechar\", quando a ação principal está indisponível). -->\n        @if (cancelLabel) {\n            <button matcha-button variant=\"ghost\" color=\"basic\" type=\"button\"\n                    (click)=\"cancelled.emit()\">\n                {{ cancelLabel }}\n            </button>\n        }\n        @if (confirmLabel) {\n            <button matcha-button type=\"button\"\n                    [color]=\"destructive ? 'danger' : 'accent'\"\n                    [loading]=\"loading\"\n                    [disabled]=\"confirmDisabled\"\n                    (click)=\"confirmed.emit()\">\n                {{ confirmLabel }}\n            </button>\n        }\n    </div>\n</footer>\n","import { Component ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-modal-options',\r\n    templateUrl: './modal-options.component.html',\r\n    styleUrl: './modal-options.component.scss',\r\n    standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaModalOptionsComponent {\r\n\r\n}\r\n","<div class=\"matcha-modal-options\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import {\r\n    AfterViewInit,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ElementRef,\r\n    OnDestroy,\r\n    ViewEncapsulation,\r\n    contentChild,\r\n    inject,\r\n    input,\r\n} from '@angular/core';\r\nimport { MatchaFocusTrap } from '../../matcha-a11y/matcha-a11y.utils';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\nimport { MatchaModalHeaderComponent } from '../modal-header/modal-header.component';\r\n\r\n/**\r\n * matcha-modal — Dialog canônico (focus trap + focus return + aria-modal).\r\n *\r\n * Aberto via MatchaModalService (não tem [open] input). Quando o componente\r\n * monta, ativa focus trap. Quando destrói (close), desativa e restaura foco\r\n * pro elemento anterior — cumpre WCAG 2.4.3 Focus Order + APG Dialog Pattern.\r\n *\r\n * NOME ACESSÍVEL: com um `matcha-modal-header [heading]` dentro, o diálogo aponta\r\n * `aria-labelledby` pro título sozinho — o consumidor não precisa repetir o texto\r\n * em `[ariaLabel]`. `[ariaLabel]` segue como fallback pra modal sem header (e vale\r\n * lembrar que `aria-labelledby` vence `aria-label`, então declarar os dois é seguro).\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-modal',\r\n    templateUrl: './modal.component.html',\r\n    standalone: true,\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[attr.role]': '\"dialog\"',\r\n        '[attr.aria-modal]': '\"true\"',\r\n        '[attr.aria-labelledby]': 'labelledBy()',\r\n        '[attr.aria-label]': 'ariaLabel() || null',\r\n        '[attr.size]': 'size()',\r\n        '[attr.size-xs]': 'sizeXs()',\r\n        '[attr.size-sm]': 'sizeSm()',\r\n        '[attr.size-md]': 'sizeMd()',\r\n        '[attr.size-lg]': 'sizeLg()',\r\n        '[attr.size-xl]': 'sizeXl()',\r\n        '[class]': 'classes()',\r\n    },\r\n})\r\nexport class MatchaModalComponent implements AfterViewInit, OnDestroy {\r\n    /**\r\n     * Tamanho default — match com tokens do tema. Default `huge` (640px max)\r\n     * pra dar respiro em desktop pra forms/edit (maioria dos casos). Modais\r\n     * de confirmação simples devem explicitar `small`/`medium`. Override por\r\n     * breakpoint via inputs size-xs/sm/md/lg/xl.\r\n     */\r\n    readonly size = input<string | null>('huge');\r\n\r\n    /** Override responsivo por breakpoint. */\r\n    readonly sizeXs = input<string | null>(null, { alias: 'size-xs' });\r\n    readonly sizeSm = input<string | null>(null, { alias: 'size-sm' });\r\n    readonly sizeMd = input<string | null>(null, { alias: 'size-md' });\r\n    readonly sizeLg = input<string | null>(null, { alias: 'size-lg' });\r\n    readonly sizeXl = input<string | null>(null, { alias: 'size-xl' });\r\n\r\n    /** Classes extras. */\r\n    readonly classExtra = input<string>('', { alias: 'class' });\r\n\r\n    /** aria-label fallback. Com `matcha-modal-header [heading]`, o nome acessível já vem\r\n     *  do `aria-labelledby` derivado — não precisa repetir o título aqui. */\r\n    readonly ariaLabel = input<string>('');\r\n\r\n    private readonly header = contentChild(MatchaModalHeaderComponent);\r\n\r\n    /** Id do título do header, quando ele renderiza o próprio heading via `[heading]`.\r\n     *  Título projetado (ng-content) não é apontado: o id existe, mas quem projeta\r\n     *  controla a semântica e pode não haver texto único ali. */\r\n    readonly labelledBy = (): string | null => {\r\n        const header = this.header();\r\n        return header?.heading ? header.headingId : null;\r\n    };\r\n\r\n    /**\r\n     * Onde focar quando o modal abre. Aceita selector CSS ou HTMLElement.\r\n     * Pra confirmation dialogs (delete, irreversível), use `'.cancel-btn'`\r\n     * pra focar a ação menos destrutiva. Default: primeiro focusable.\r\n     */\r\n    readonly initialFocus = input<string | HTMLElement | null>(null);\r\n\r\n    // IMPORTANT: NÃO incluir `matcha-modal` aqui — essa classe é do <div> interno\r\n    // (o card visual). O host tem positioning via element selector `matcha-modal {...}`.\r\n    // Se duplicar, class selector vence specificity → host vira card, perde fixed/inset.\r\n    classes = (): string => this.classExtra().trim();\r\n\r\n    private readonly elementRef = inject(ElementRef);\r\n    private focusTrap?: MatchaFocusTrap;\r\n\r\n    ngAfterViewInit(): void {\r\n        // Focus trap captura foco no modal + restaura previousFocus em deactivate()\r\n        this.focusTrap = new MatchaFocusTrap(this.elementRef.nativeElement, {\r\n            initialFocus: this.initialFocus(),\r\n        });\r\n        this.focusTrap.activate();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.focusTrap?.deactivate();\r\n    }\r\n}\r\n","<div class=\"matcha-modal\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { Injectable, NgZone, Type, inject, ComponentRef } from '@angular/core';\r\nimport { MatchaOverlayService } from './overlay.service';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\nexport interface ModalComponent {\r\n  afterClose?: Observable<any>;\r\n  data?: any;\r\n}\r\n\r\ninterface ModalStackEntry {\r\n  afterClose$: Subject<any>;\r\n  data: any;\r\n  overlayRef: ComponentRef<any>;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class MatchaModalService {\r\n  // Pilha de modais abertos. Cada open() ganha seu PRÓPRIO afterClose$ (emite 1x\r\n  // e completa) — diferente do Subject único antigo, que era compartilhado por\r\n  // todos os modais e causava: (a) cross-fire (fechar um disparava o handler de\r\n  // outro) e (b) loop infinito quando um modal abria outro e o close cascateava\r\n  // de volta no mesmo subject. Com subject por modal + complete, um close\r\n  // re-entrante é absorvido (subject já completou) e não há cross-fire.\r\n  private stack: ModalStackEntry[] = [];\r\n  // Data do modal mais recente — lido no ngOnInit via getData(); setado ANTES do\r\n  // overlay.open() (que dispara o ngOnInit do componente).\r\n  private currentData: any = {};\r\n  private readonly ngZone = inject(NgZone);\r\n\r\n  constructor(private overlayService: MatchaOverlayService) {}\r\n\r\n  open<T extends ModalComponent>(component: Type<T>, data: any = {}) {\r\n    this.currentData = data;\r\n    const afterClose$ = new Subject<any>();\r\n    let entry: ModalStackEntry;\r\n\r\n    const componentRef = this.overlayService.open(component, {\r\n      disableClose: data?.disableClose,\r\n      // ESC/backdrop → o overlay pede dismiss; aqui resolvemos (emite afterClose + fecha).\r\n      onDismiss: () => this.resolve(entry, undefined),\r\n    });\r\n\r\n    // Injeta os dados no componente\r\n    componentRef.instance.data = data;\r\n\r\n    entry = { afterClose$, data, overlayRef: componentRef };\r\n    this.stack.push(entry);\r\n\r\n    if (componentRef.instance.afterClose) {\r\n      // Componentes emitem no próprio afterClose (e às vezes também chamam close()).\r\n      // resolve() é idempotente por entry, então a dupla-chamada não duplica.\r\n      componentRef.instance.afterClose.subscribe((result: any) => this.resolve(entry, result));\r\n    }\r\n\r\n    return {\r\n      componentRef,\r\n      afterClose: afterClose$.asObservable()\r\n    };\r\n  }\r\n\r\n  // API legada: fecha o modal do topo.\r\n  close(result?: any) {\r\n    const entry = this.stack[this.stack.length - 1];\r\n    if (entry) this.resolve(entry, result);\r\n  }\r\n\r\n  getData(): any {\r\n    return this.currentData;\r\n  }\r\n\r\n  private resolve(entry: ModalStackEntry, result: any): void {\r\n    const idx = this.stack.indexOf(entry);\r\n    if (idx === -1) return; // já resolvido (ex.: close() + afterClose.next() no mesmo gesto)\r\n    this.stack.splice(idx, 1);\r\n    this.currentData = this.stack.length ? this.stack[this.stack.length - 1].data : {};\r\n\r\n    // O overlay usa appendChild manual + listeners diretos (ESC/backdrop), que\r\n    // podem disparar FORA da NgZone. run() garante CD no consumer.subscribe(afterClose).\r\n    this.ngZone.run(() => {\r\n      entry.afterClose$.next(result);\r\n      entry.afterClose$.complete();\r\n    });\r\n\r\n    this.overlayService.close(entry.overlayRef);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaTitleModule } from '../matcha-title/title.module';\r\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\r\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\r\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\r\n\r\nimport { MatchaModalHeaderComponent } from './modal-header/modal-header.component';\r\nimport { MatchaModalContentComponent } from './modal-content/modal-content.component';\r\nimport { MatchaModalFooterComponent } from './modal-footer/modal-footer.component';\r\nimport { MatchaModalOptionsComponent } from './modal-options/modal-options.component';\r\nimport { MatchaModalComponent } from './modal/modal.component';\r\nimport { MatchaModalService } from './modal.service';\r\nimport { MatchaOverlayService } from './overlay.service';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaModalHeaderComponent,\r\n    MatchaModalContentComponent,\r\n    MatchaModalFooterComponent,\r\n    MatchaModalOptionsComponent,\r\n    MatchaModalComponent,\r\n    MatchaIconModule,\r\n    MatchaTitleModule,\r\n    MatchaDividerModule,\r\n    MatchaTooltipModule,\r\n    MatchaElevationModule\r\n  ],\r\n  exports: [\r\n    MatchaModalHeaderComponent,\r\n    MatchaModalContentComponent,\r\n    MatchaModalFooterComponent,\r\n    MatchaModalOptionsComponent,\r\n    MatchaModalComponent\r\n  ],\r\n  providers: [\r\n    MatchaModalService,\r\n    MatchaOverlayService\r\n  ]\r\n})\r\nexport class MatchaModalModule { }\r\n","import { Component, Input ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-overflow-draggable',\r\n    templateUrl: './matcha-overflow-draggable.component.html',\r\n    styleUrls: ['./matcha-overflow-draggable.component.scss'],\r\n    standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class MatchaOverflowDraggableComponent {\r\n    @Input() dragRef: string = '';\r\n\r\n    public dragToScroll(): void {\r\n        const ele = document.querySelector(`matchaDraggableReference${this.dragRef}`);\r\n        if (ele) {\r\n            let pos = { top: 0, left: 0, x: 0, y: 0 };\r\n            const mouseDownHandler = function (e: any) {\r\n                pos = {\r\n                    // The current scroll\r\n                    left: ele.scrollLeft,\r\n                    top: ele.scrollTop,\r\n                    // Get the current mouse position\r\n                    x: e.clientX,\r\n                    y: e.clientY,\r\n                };\r\n                ele.setAttribute('style', 'cursor: grabbing; user-select: none');\r\n                document.addEventListener('mousemove', mouseMoveHandler);\r\n                document.addEventListener('mouseup', mouseUpHandler);\r\n            };\r\n\r\n            const mouseMoveHandler = function (e: any) {\r\n                // How far the mouse has been moved\r\n                const dx = e.clientX - pos.x;\r\n                const dy = e.clientY - pos.y;\r\n                // Scroll the element\r\n                ele.scrollTop = pos.top - dy;\r\n                ele.scrollLeft = pos.left - dx;\r\n            };\r\n\r\n            const mouseUpHandler = function () {\r\n                document.removeEventListener('mousemove', mouseMoveHandler);\r\n                document.removeEventListener('mouseup', mouseUpHandler);\r\n                ele.setAttribute('style', 'cursor: grab; user-select: initial');\r\n            };\r\n            ele.addEventListener('mousedown', mouseDownHandler);\r\n        }\r\n    }\r\n\r\n    public get classes(): string {\r\n        const draggableReference = this.dragRef ? `matchaDraggableReference${this.dragRef}` : '';\r\n\r\n        const activeClasses = `${draggableReference}`;\r\n        return activeClasses;\r\n    }\r\n\r\n}\r\n","<div [class]=\"classes\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n/**\r\n * Service to internationalize the paginator component.\r\n * Based on Angular Material's MatPaginatorIntl\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class MatchaPaginatorIntl {\r\n  /** Stream to emit from when labels are changed. Used by the paginator to update the labels. */\r\n  readonly changes: Subject<void> = new Subject<void>();\r\n\r\n  /** A label for the page size selector. */\r\n  itemsPerPageLabel: string = 'Itens por página:';\r\n\r\n  /** A label for the button that increments the current page. */\r\n  nextPageLabel: string = 'Próxima página';\r\n\r\n  /** A label for the button that decrements the current page. */\r\n  previousPageLabel: string = 'Página anterior';\r\n\r\n  /** A label for the button that moves to the first page. */\r\n  firstPageLabel: string = 'Primeira página';\r\n\r\n  /** A label for the button that moves to the last page. */\r\n  lastPageLabel: string = 'Última página';\r\n\r\n  /**\r\n   * A label for the range of items within the current page and the length of the whole list.\r\n   */\r\n  getRangeLabel: (page: number, pageSize: number, length: number) => string =\r\n    (page: number, pageSize: number, length: number) => {\r\n      if (length === 0) {\r\n        return `0 de 0`;\r\n      }\r\n      const amountPages = Math.ceil(length / pageSize);\r\n      return `Página ${page + 1} de ${amountPages}`;\r\n    };\r\n\r\n  /**\r\n   * A label for the range display (e.g., \"1–24 de 25.775 registros\")\r\n   * Uses pt-BR thousand separator pra números grandes serem legíveis.\r\n   * En-dash (–) em \"1–24\" é canon tipográfico pra ranges (vs hyphen).\r\n   */\r\n  getRangeDisplayLabel: (start: number, end: number, length: number) => string =\r\n    (start: number, end: number, length: number) => {\r\n      if (length === 0) {\r\n        return '0 de 0 registros';\r\n      }\r\n      const fmt = (n: number) => n.toLocaleString('pt-BR');\r\n      return `${fmt(start)}–${fmt(end)} de ${fmt(length)} registros`;\r\n    };\r\n\r\n  /**\r\n   * A label for filtered results (e.g., \"(filtrados de 500 no total)\")\r\n   */\r\n  getFilteredLabel: (totalLength: number) => string =\r\n    (totalLength: number) => {\r\n      return `(filtrados de ${totalLength.toLocaleString('pt-BR')} no total)`;\r\n    };\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  DestroyRef,\r\n  HostListener,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  computed,\r\n  effect,\r\n  inject,\r\n  input,\r\n  numberAttribute,\r\n  output,\r\n  signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PageEvent } from './page-event.interface';\r\nimport { MatchaPaginatorIntl } from '../paginator-intl.service';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaIconButtonComponent } from '../../matcha-icon-button/icon-button.component';\r\nimport { MatchaFieldComponent } from '../../matcha-field/matcha-field.component';\r\nimport { MatchaOptionComponent } from '../../matcha-option/matcha-option.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaPaginatorType = 'numeric' | 'progress';\r\n\r\n/**\r\n * Page-size canônico DSV3. 24 = múltiplo de grids 2/3/4/6/8/12 colunas, suficiente\r\n * pra 1 tela em densidade média (lista) ou 1 tela em densidade alta (grid de cards).\r\n */\r\nexport const MATCHA_PAGINATOR_DEFAULT_PAGE_SIZE = 24;\r\n\r\n/**\r\n * Page-size options canônicas DSV3 — step de 24, max 96 (~4 telas full).\r\n * Cobre lista densa → grid → catálogo. Acima de 96 client-rendered fica pesado\r\n * (DOM enorme + scroll). Consumer pode override pra casos data-heavy (admin tables, etc).\r\n */\r\nexport const MATCHA_PAGINATOR_DEFAULT_PAGE_SIZE_OPTIONS = Object.freeze([24, 48, 72, 96]) as readonly number[] as number[];\r\n\r\n/**\r\n * matcha-paginator — Paginação canônica DSV3.\r\n *\r\n * Modos (input `type`):\r\n *   • `numeric` (default) — page numbers + Prev/Next.\r\n *     Auto-detect Standard/Extended via SCSS `:has()`:\r\n *       - Sem total/page-size → layout compact (pad 16/0 centered).\r\n *       - Com total OU pageSizeOptions → layout full (pad 16/24 gap 16).\r\n *   • `progress` — segmented bar (1 segmento por slide) pra carrossel/banner/stories.\r\n *     Segments clicáveis (jump-to-slide pattern Stories/Instagram).\r\n *     NÃO use pra wizard de form (use matcha-stepper).\r\n *\r\n * Mobile: auto-responsive via media-query <600px OU `[forceMobile]=\"true\"`.\r\n *\r\n * A11y:\r\n *   • Numeric: role=\"navigation\" · aria-current=\"page\" · aria-live=\"polite\" anuncia mudança.\r\n *   • Progress: role=\"group\" + aria-roledescription=\"carousel\" (pattern WAI-ARIA APG).\r\n *\r\n * Page-jump input: aparece automaticamente quando `totalPages > 20` (toggle via `[showJump]=\"false\"`).\r\n *\r\n * Auto-play (progress): `[autoplay]=\"3000\"` avança a cada 3s. Pausa em hover/focus (WCAG SC 2.2.2).\r\n *\r\n * Swipe gesture (progress mobile): arrastar esquerda/direita navega entre slides.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-paginator',\r\n  templateUrl: './paginator.component.html',\r\n  styleUrls: ['./paginator.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, MatchaIconButtonComponent, CommonModule, FormsModule, MatchaFieldComponent, MatchaOptionComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    '[attr.role]': 'type() === \"progress\" ? \"group\" : \"navigation\"',\r\n    '[attr.aria-roledescription]': 'type() === \"progress\" ? \"carousel\" : null',\r\n    '[attr.aria-label]': 'ariaLabel()',\r\n    '[attr.aria-busy]': 'loading() || null',\r\n    // aria-live REMOVIDO do host (estava anunciando todo re-render). Substituído\r\n    // por região dedicada `<span role=\"status\" aria-live=\"polite\">` no template\r\n    // que anuncia SÓ a mudança de página (pageAnnouncement computed).\r\n  },\r\n})\r\nexport class MatchaPaginatorComponent {\r\n  // ── Dados ─────────────────────────────────────────────────────────────────\r\n  readonly pageIndex      = input(0, { transform: numberAttribute });\r\n  readonly length         = input(0, { transform: numberAttribute });\r\n  /**\r\n   * Default 24 (canon DSV3) — múltiplo de grids 2/3/4/6/8/12 colunas.\r\n   * Step de 24 cobre desde lista densa (24) até max produtivo (96 = 4 telas).\r\n   */\r\n  readonly pageSize       = input(MATCHA_PAGINATOR_DEFAULT_PAGE_SIZE, { transform: numberAttribute });\r\n  /**\r\n   * Default `[24, 48, 72, 96]` (steps de 24, max 96 — ~4 telas full).\r\n   * Acima de 96 a render fica pesado; consumer pode override pra casos data-heavy.\r\n   * Vazio `[]` esconde o seletor.\r\n   */\r\n  readonly pageSizeOptions = input<number[]>(MATCHA_PAGINATOR_DEFAULT_PAGE_SIZE_OPTIONS);\r\n  readonly filteredLength  = input<number | undefined>(undefined);\r\n\r\n  // ── Modo ──────────────────────────────────────────────────────────────────\r\n  readonly type = input<MatchaPaginatorType>('numeric');\r\n\r\n  // ── Chrome ────────────────────────────────────────────────────────────────\r\n  readonly showTotal = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Mostra page-jump input quando totalPages > showJumpThreshold (default 10).\r\n   * Permite usuário ir direto pra uma página em listas grandes.\r\n   * Default 10 (era 20) — mais discoverable em listas médias.\r\n   */\r\n  readonly showJump = input(true, { transform: booleanAttribute });\r\n  readonly showJumpThreshold = input(10, { transform: numberAttribute });\r\n\r\n  /** Mostra counter visível \"X / Y\" no progress mode. */\r\n  readonly showCounter = input(true, { transform: booleanAttribute });\r\n\r\n  /** Mostra botões First/Last (⏮ ⏭) em listas longas (opt-in, default false). */\r\n  readonly showFirstLast = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Esconde o paginador quando há apenas 1 página (ou 0). Default false — paginador\r\n   * sempre visível pra consistência de layout. Ative pra esconder em listas curtas.\r\n   */\r\n  readonly hideOnSinglePage = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Loading state — desabilita interações + visual feedback. Use durante fetch\r\n   * pra prevenir múltiplos clicks (request stampede). Default false.\r\n   */\r\n  readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n  // ── Mobile force ──────────────────────────────────────────────────────────\r\n  /** Força layout mobile em qualquer viewport (aplica classe is-mobile-preview). */\r\n  readonly forceMobile = input(false, { transform: booleanAttribute });\r\n\r\n  // ── Auto-play (progress) ──────────────────────────────────────────────────\r\n  /** Auto-play em ms (só no progress). 0 = off. Pausa em hover/focus + reduced-motion. */\r\n  readonly autoplay = input(0, { transform: numberAttribute });\r\n\r\n  // ── A11y ──────────────────────────────────────────────────────────────────\r\n  readonly ariaLabelInput = input<string>('', { alias: 'ariaLabel' });\r\n\r\n  // ── Output ────────────────────────────────────────────────────────────────\r\n  readonly page = output<PageEvent>();\r\n\r\n  // ── Internal state ────────────────────────────────────────────────────────\r\n  /** Página exibida no jump input (controlled durante typing). */\r\n  readonly jumpInput = signal('');\r\n\r\n  private readonly _intl = inject(MatchaPaginatorIntl);\r\n  private readonly _destroyRef = inject(DestroyRef);\r\n  private readonly _intlChanges = signal(0); // versão pra forçar re-compute em intl change\r\n\r\n  // Auto-play state (progress)\r\n  private autoplayTimer: ReturnType<typeof setTimeout> | null = null;\r\n  private readonly _autoplayPaused = signal(false);\r\n\r\n  // Reduced motion (WCAG SC 2.2.2) — pausa autoplay automaticamente.\r\n  private readonly _reducedMotion = signal(false);\r\n\r\n  // Swipe gesture state (progress mobile)\r\n  private touchStartX = 0;\r\n  private touchStartY = 0;\r\n  private readonly SWIPE_THRESHOLD = 50;\r\n\r\n  constructor() {\r\n    this._intl.changes\r\n      .pipe(takeUntilDestroyed(this._destroyRef))\r\n      .subscribe(() => this._intlChanges.update(v => v + 1));\r\n\r\n    // Detecta prefers-reduced-motion + observa mudanças (e.g., user toggles OS setting).\r\n    if (typeof window !== 'undefined' && window.matchMedia) {\r\n      const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n      this._reducedMotion.set(mq.matches);\r\n      const listener = (e: MediaQueryListEvent) => this._reducedMotion.set(e.matches);\r\n      mq.addEventListener('change', listener);\r\n      this._destroyRef.onDestroy(() => mq.removeEventListener('change', listener));\r\n    }\r\n\r\n    // Auto-play effect — reativo a [autoplay], pageIndex, paused, reducedMotion.\r\n    // Lê effectivePageIndex() AQUI (não só dentro do setTimeout) pra registrar\r\n    // dependência no signal — assim o effect re-roda após cada page change e\r\n    // re-agenda o próximo tick. Sem isto, autoplay avança apenas 1 vez.\r\n    effect(() => {\r\n      const ms = this.autoplay();\r\n      const paused = this._autoplayPaused();\r\n      const reduced = this._reducedMotion();\r\n      const idx = this.effectivePageIndex(); // ← registra dep p/ re-rodar após cada tick\r\n      this.cancelAutoplay();\r\n      if (this.type() !== 'progress') return;\r\n      if (ms <= 0 || paused || reduced) return; // WCAG 2.2.2 — pausa em reduced motion\r\n\r\n      this.autoplayTimer = setTimeout(() => {\r\n        const total = this.totalPages();\r\n        if (total <= 1) return;\r\n        const next = idx + 1 >= total ? 0 : idx + 1; // loop\r\n        this._changePage(next);\r\n      }, ms);\r\n    });\r\n\r\n    this._destroyRef.onDestroy(() => this.cancelAutoplay());\r\n  }\r\n\r\n  private cancelAutoplay(): void {\r\n    if (this.autoplayTimer) {\r\n      clearTimeout(this.autoplayTimer);\r\n      this.autoplayTimer = null;\r\n    }\r\n  }\r\n\r\n  // ── Computeds ─────────────────────────────────────────────────────────────\r\n\r\n  readonly totalPages = computed(() => {\r\n    const size = this.pageSize();\r\n    const len = this.length();\r\n    if (!Number.isFinite(size) || size <= 0) return 0;\r\n    if (!Number.isFinite(len)  || len  <= 0) return 0;\r\n    return Math.ceil(len / size);\r\n  });\r\n\r\n  /**\r\n   * pageIndex CLAMPED ao range válido [0, totalPages-1]. Visual sempre coerente\r\n   * mesmo se consumer passar índice fora do range (ex: estado stale após filtro).\r\n   * Todos os computeds e methods internos usam isto em vez de pageIndex() direto.\r\n   */\r\n  readonly effectivePageIndex = computed(() => {\r\n    const idx = this.pageIndex();\r\n    const total = this.totalPages();\r\n    if (!Number.isFinite(idx) || total === 0) return 0;\r\n    return Math.max(0, Math.min(idx, total - 1));\r\n  });\r\n\r\n  readonly currentPage = computed(() => this.effectivePageIndex() + 1);\r\n\r\n  readonly hasPreviousPage = computed(() => !this.loading() && this.effectivePageIndex() > 0);\r\n  readonly hasNextPage     = computed(() => !this.loading() && this.effectivePageIndex() < this.totalPages() - 1);\r\n\r\n  /** Esconde paginador quando hideOnSinglePage + total <= 1. */\r\n  readonly hideForSinglePage = computed(() => this.hideOnSinglePage() && this.totalPages() <= 1);\r\n\r\n  /** Mensagem sr-only anunciada ao mudar de página (live region dedicada). */\r\n  readonly pageAnnouncement = computed(() => {\r\n    void this._intlChanges();\r\n    const cur = this.currentPage();\r\n    const total = this.totalPages();\r\n    if (total === 0) return '';\r\n    return `Página ${cur} de ${total}`;\r\n  });\r\n\r\n  readonly displayPages = computed<(number | string)[]>(() => {\r\n    const current = this.currentPage();\r\n    const total = this.totalPages();\r\n    const pages: (number | string)[] = [];\r\n\r\n    if (total <= 1) {\r\n      if (total === 1) pages.push(1);\r\n      return pages;\r\n    }\r\n\r\n    if (total <= 5) {\r\n      for (let i = 1; i <= total; i++) pages.push(i);\r\n    } else {\r\n      if (current <= 2) {\r\n        pages.push(1, 2, 3, '...', total);\r\n      } else if (current >= total - 1) {\r\n        pages.push(1, '...', total - 2, total - 1, total);\r\n      } else {\r\n        pages.push(1, '...', current - 1, current, current + 1, '...', total);\r\n      }\r\n    }\r\n    return pages;\r\n  });\r\n\r\n  readonly rangeStart = computed(() => {\r\n    const len = this.length();\r\n    const size = this.pageSize();\r\n    if (len <= 0 || size <= 0) return 0;\r\n    return this.effectivePageIndex() * size + 1;\r\n  });\r\n\r\n  readonly rangeEnd = computed(() => {\r\n    const len = this.length();\r\n    const size = this.pageSize();\r\n    if (len <= 0 || size <= 0) return 0;\r\n    return Math.min((this.effectivePageIndex() + 1) * size, len);\r\n  });\r\n\r\n  readonly hasFilteredResults = computed(() => {\r\n    const f = this.filteredLength();\r\n    return f !== undefined && f !== this.length();\r\n  });\r\n\r\n  /** Mostra page-jump input quando totalPages > threshold E showJump=true. */\r\n  readonly showJumpInput = computed(() =>\r\n    this.showJump() && this.type() === 'numeric' && this.totalPages() > this.showJumpThreshold(),\r\n  );\r\n\r\n  readonly rangeLabel = computed(() => {\r\n    void this._intlChanges();\r\n    return this._intl.getRangeDisplayLabel(this.rangeStart(), this.rangeEnd(), this.length());\r\n  });\r\n\r\n  readonly filteredLabel = computed(() => {\r\n    void this._intlChanges();\r\n    const f = this.filteredLength();\r\n    if (this.hasFilteredResults() && f !== undefined) {\r\n      return this._intl.getFilteredLabel(f);\r\n    }\r\n    return '';\r\n  });\r\n\r\n  readonly previousLabel = computed(() => { void this._intlChanges(); return this._intl.previousPageLabel; });\r\n  readonly nextLabel     = computed(() => { void this._intlChanges(); return this._intl.nextPageLabel; });\r\n  readonly itemsPerPageLabel = computed(() => { void this._intlChanges(); return this._intl.itemsPerPageLabel; });\r\n\r\n  /** aria-label do host. */\r\n  readonly ariaLabel = computed(() => {\r\n    return this.ariaLabelInput() || (this.type() === 'progress' ? 'Carrossel' : 'Paginação');\r\n  });\r\n\r\n  /** Array de segmentos pra renderizar a progress bar (1 segment por página). */\r\n  readonly progressSegments = computed(() =>\r\n    Array.from({ length: Math.max(1, this.totalPages()) }, (_, i) => i),\r\n  );\r\n\r\n  // ── Pause-on-hover/focus (autoplay progress) ────────────────────────────\r\n  @HostListener('mouseenter')\r\n  @HostListener('focusin')\r\n  onPause(): void {\r\n    if (this.autoplay() > 0) this._autoplayPaused.set(true);\r\n  }\r\n\r\n  @HostListener('mouseleave')\r\n  @HostListener('focusout', ['$event'])\r\n  onResume(event?: FocusEvent): void {\r\n    if (event && event.relatedTarget instanceof Node) {\r\n      const host = event.currentTarget as HTMLElement;\r\n      if (host?.contains(event.relatedTarget)) return;\r\n    }\r\n    if (this.autoplay() > 0) this._autoplayPaused.set(false);\r\n  }\r\n\r\n  // ── Swipe gesture (touch — progress mobile) ─────────────────────────────\r\n  @HostListener('touchstart', ['$event'])\r\n  onTouchStart(event: TouchEvent): void {\r\n    if (this.type() !== 'progress' || this.loading()) return;\r\n    const t = event.touches[0];\r\n    if (!t) return;\r\n    this.touchStartX = t.clientX;\r\n    this.touchStartY = t.clientY;\r\n  }\r\n\r\n  @HostListener('touchend', ['$event'])\r\n  onTouchEnd(event: TouchEvent): void {\r\n    if (this.type() !== 'progress' || this.loading()) return;\r\n    const t = event.changedTouches[0];\r\n    if (!t) return;\r\n    const dx = t.clientX - this.touchStartX;\r\n    const dy = t.clientY - this.touchStartY;\r\n    if (Math.abs(dy) > Math.abs(dx)) return;\r\n    if (Math.abs(dx) < this.SWIPE_THRESHOLD) return;\r\n    if (dx > 0 && this.hasPreviousPage()) this.previousPage();\r\n    else if (dx < 0 && this.hasNextPage()) this.nextPage();\r\n  }\r\n\r\n  // ── Keyboard nav — ←/→/Home/End nos botões do paginator ─────────────────\r\n  // Não responde se foco está em input/textarea/contenteditable (evita roubar\r\n  // setas do jump-input ou de inputs do consumer).\r\n  @HostListener('keydown', ['$event'])\r\n  onKeyboardNav(event: KeyboardEvent): void {\r\n    if (this.loading()) return;\r\n    const target = event.target;\r\n    if (!(target instanceof HTMLElement)) return;\r\n    if (target.matches('input, textarea, [contenteditable=\"true\"], select')) return;\r\n\r\n    switch (event.key) {\r\n      case 'ArrowLeft':\r\n      case 'PageUp':\r\n        if (this.hasPreviousPage()) { this.previousPage(); event.preventDefault(); }\r\n        break;\r\n      case 'ArrowRight':\r\n      case 'PageDown':\r\n        if (this.hasNextPage()) { this.nextPage(); event.preventDefault(); }\r\n        break;\r\n      case 'Home':\r\n        if (this.hasPreviousPage()) { this.firstPage(); event.preventDefault(); }\r\n        break;\r\n      case 'End':\r\n        if (this.hasNextPage()) { this.lastPage(); event.preventDefault(); }\r\n        break;\r\n    }\r\n  }\r\n\r\n  // ── Navigation methods ──────────────────────────────────────────────────\r\n  trackByPage(_index: number, item: number | string): number | string { return item; }\r\n  trackByIndex(index: number): number { return index; }\r\n  isNumber(value: unknown): value is number { return typeof value === 'number'; }\r\n\r\n  previousPage(): void {\r\n    if (this.hasPreviousPage()) this._changePage(this.effectivePageIndex() - 1);\r\n  }\r\n\r\n  nextPage(): void {\r\n    if (this.hasNextPage()) this._changePage(this.effectivePageIndex() + 1);\r\n  }\r\n\r\n  firstPage(): void {\r\n    if (this.hasPreviousPage()) this._changePage(0);\r\n  }\r\n\r\n  lastPage(): void {\r\n    if (this.hasNextPage()) this._changePage(this.totalPages() - 1);\r\n  }\r\n\r\n  goToPage(page: number | string): void {\r\n    if (typeof page === 'number' && page >= 1 && page <= this.totalPages()) {\r\n      this._changePage(page - 1);\r\n    }\r\n  }\r\n\r\n  /** Click no segmento — jump-to-slide pattern Stories. */\r\n  goToSegment(index: number): void {\r\n    if (this.type() !== 'progress') return;\r\n    if (index < 0 || index >= this.totalPages()) return;\r\n    this._changePage(index);\r\n  }\r\n\r\n  /** Handler do matcha-field type=\"select\" pra page-size.\r\n   * matcha-field é CVA: ngModelChange emite o raw value (number). Aceita também\r\n   * objeto `{ value }` (legacy matcha-select shape) e number direto pra robustez. */\r\n  onPageSizeSelectChange(event: { value: number } | number | null | undefined): void {\r\n    if (event == null) return;\r\n    const newPageSize = typeof event === 'number' ? event : event.value;\r\n    if (typeof newPageSize !== 'number' || isNaN(newPageSize)) return;\r\n    if (newPageSize !== this.pageSize()) this._changePage(0, newPageSize);\r\n  }\r\n\r\n  /** Handler do matcha-field type=\"number\" pro jump-input.\r\n   * matcha-field é CVA: ngModelChange emite number|null (não string, ao contrário\r\n   * do <input> nativo) — normaliza pra string pra manter o formato de `jumpInput`. */\r\n  onJumpInputChange(value: number | string | null): void {\r\n    this.jumpInput.set(value == null ? '' : String(value));\r\n  }\r\n\r\n  /** Handler do page-jump input (Enter ou blur/focusout). */\r\n  onJumpSubmit(): void {\r\n    const n = parseInt(this.jumpInput(), 10);\r\n    if (!isNaN(n)) this.goToPage(n);\r\n    this.jumpInput.set('');\r\n  }\r\n\r\n  onJumpKeydown(event: KeyboardEvent): void {\r\n    if (event.key === 'Enter') {\r\n      event.preventDefault();\r\n      this.onJumpSubmit();\r\n    }\r\n  }\r\n\r\n  private _changePage(pageIndex: number, pageSize?: number): void {\r\n    const event: PageEvent = {\r\n      pageIndex,\r\n      // Usa effective pra que `previousPageIndex` reflita o que o usuário VIU\r\n      // antes do change (não um índice stale fora do range).\r\n      previousPageIndex: this.effectivePageIndex(),\r\n      pageSize: pageSize ?? this.pageSize(),\r\n      length: this.length(),\r\n    };\r\n    this.page.emit(event);\r\n  }\r\n}\r\n","<!-- Esconde por completo quando hideOnSinglePage=true E só 1 página (ou 0). -->\r\n<div class=\"matcha-paginator\"\r\n     *ngIf=\"!hideForSinglePage()\"\r\n     [class.matcha-paginator--numeric]=\"type() === 'numeric'\"\r\n     [class.matcha-paginator--progress]=\"type() === 'progress'\"\r\n     [class.is-mobile-preview]=\"forceMobile()\"\r\n     [class.is-loading]=\"loading()\">\r\n\r\n    <!-- Live region dedicada — anuncia SÓ mudança de página (não cada re-render).\r\n         WAI-ARIA APG pattern pra paginação. sr-only via CSS. -->\r\n    <span class=\"matcha-paginator__sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\r\n        {{ pageAnnouncement() }}\r\n    </span>\r\n\r\n    <!-- DOM order: pages → page-size → total. Em desktop Extended o CSS usa `order`\r\n         + `margin-right: auto` pra renderizar como [Total | gap | PageSize Pages] (canônico Figma).\r\n         Em mobile usa order pra empilhar [Pages] / [PageSize | Total]. -->\r\n\r\n    <!-- Page navigation (DOM 1) -->\r\n    <div class=\"paginator-pages\">\r\n        <!-- First (opt-in showFirstLast — útil em listas longas).\r\n             Unicode « (guillemet) — DS ainda não tem icon double-chevron. -->\r\n        <button *ngIf=\"showFirstLast() && type() === 'numeric'\"\r\n                matcha-icon-button\r\n                variant=\"ghost\"\r\n                size=\"md\"\r\n                class=\"paginator-nav-button paginator-nav-button--edge\"\r\n                [disabled]=\"!hasPreviousPage()\"\r\n                (click)=\"firstPage()\"\r\n                aria-label=\"Primeira página\"\r\n                aria-keyshortcuts=\"Home\"\r\n                type=\"button\">\r\n            <span class=\"paginator-nav-button__chevron\" aria-hidden=\"true\">«</span>\r\n        </button>\r\n\r\n        <!-- Prev — matcha-icon-button (canon DSV3 Ghost) -->\r\n        <button matcha-icon-button\r\n                [attr.variant]=\"'ghost'\"\r\n                [attr.size]=\"type() === 'progress' ? 'sm' : 'md'\"\r\n                class=\"paginator-nav-button\"\r\n                [disabled]=\"!hasPreviousPage()\"\r\n                (click)=\"previousPage()\"\r\n                [attr.aria-label]=\"previousLabel()\"\r\n                aria-keyshortcuts=\"ArrowLeft PageUp\"\r\n                type=\"button\">\r\n            <matcha-icon name=\"action_arrow_left\" [size]=\"type() === 'progress' ? 'sm' : 'md'\"></matcha-icon>\r\n        </button>\r\n\r\n        <ng-container *ngIf=\"type() === 'progress'; else numberedPagesTpl\">\r\n            <!-- Progress: segmented bar (clicáveis — pattern Stories/Instagram).\r\n                 NOTA: segmentos são <button> custom em vez de matcha-progress-bar\r\n                 porque o canon DS é não-interativo; jump-to-slide é paginator-specific. -->\r\n            <div class=\"paginator-progress\">\r\n                <button *ngFor=\"let _ of progressSegments(); let i = index\"\r\n                        type=\"button\"\r\n                        class=\"paginator-progress__segment\"\r\n                        [class.is-filled]=\"i < currentPage()\"\r\n                        [class.is-current]=\"i === effectivePageIndex()\"\r\n                        [disabled]=\"loading()\"\r\n                        [attr.aria-label]=\"'Ir para slide ' + (i + 1)\"\r\n                        [attr.aria-current]=\"i === effectivePageIndex() ? 'true' : null\"\r\n                        (click)=\"goToSegment(i)\">\r\n                </button>\r\n            </div>\r\n\r\n            <!-- Counter visível \"3 / 10\" — discreto, ao lado dos segments. -->\r\n            <span *ngIf=\"showCounter()\"\r\n                  class=\"paginator-progress__counter\"\r\n                  aria-hidden=\"true\">\r\n                {{ currentPage() }} / {{ totalPages() }}\r\n            </span>\r\n        </ng-container>\r\n\r\n        <ng-template #numberedPagesTpl>\r\n            <!-- Numeric: page buttons + ellipsis (escondidos em mobile via SCSS). -->\r\n            <ng-container *ngFor=\"let p of displayPages(); trackBy: trackByPage\">\r\n                <button\r\n                    *ngIf=\"isNumber(p); else ellipsisTpl\"\r\n                    class=\"page-button\"\r\n                    [class.active]=\"p === currentPage()\"\r\n                    [disabled]=\"loading()\"\r\n                    (click)=\"goToPage(p)\"\r\n                    [attr.aria-label]=\"'Ir para página ' + p\"\r\n                    [attr.aria-current]=\"p === currentPage() ? 'page' : null\"\r\n                    type=\"button\">\r\n                    {{ p }}\r\n                </button>\r\n                <ng-template #ellipsisTpl>\r\n                    <span class=\"ellipsis\" aria-hidden=\"true\">{{ p }}</span>\r\n                </ng-template>\r\n            </ng-container>\r\n\r\n            <!-- Mobile-only indicator \"Página X de Y\" — substitui a lista de buttons\r\n                 em telas pequenas (canon mobile Figma: Prev | indicator | Next).\r\n                 Label completo (não \"X / Y\") pra typography premium e clareza. -->\r\n            <span class=\"paginator-pages__indicator\" *ngIf=\"totalPages() > 0\" aria-hidden=\"true\">\r\n                Página {{ currentPage() }} de {{ totalPages() }}\r\n            </span>\r\n\r\n            <!-- Page-jump input — só quando totalPages > threshold.\r\n                 matcha-field (canon DS, mesmo padrão do page-size ao lado) em vez de\r\n                 <input> nativo. NOTA: matcha-field não repassa [ariaLabel] pro <input>\r\n                 interno em tipos nativos (gap conhecido — backlog matcha-field-001);\r\n                 o nome acessível cai pro label implícito do <label> wrapper (\"Ir para\"). -->\r\n            <label *ngIf=\"showJumpInput()\" class=\"paginator-jump\">\r\n                <span class=\"paginator-jump__label\">Ir para</span>\r\n                <matcha-field type=\"number\"\r\n                              size=\"sm\"\r\n                              class=\"paginator-jump__field\"\r\n                              placeholder=\"N°\"\r\n                              [disabled]=\"loading()\"\r\n                              [ngModel]=\"jumpInput()\"\r\n                              (ngModelChange)=\"onJumpInputChange($event)\"\r\n                              [ngModelOptions]=\"{standalone: true}\"\r\n                              (keydown)=\"onJumpKeydown($event)\"\r\n                              (focusout)=\"onJumpSubmit()\">\r\n                </matcha-field>\r\n            </label>\r\n        </ng-template>\r\n\r\n        <!-- Next -->\r\n        <button matcha-icon-button\r\n                [attr.variant]=\"'ghost'\"\r\n                [attr.size]=\"type() === 'progress' ? 'sm' : 'md'\"\r\n                class=\"paginator-nav-button\"\r\n                [disabled]=\"!hasNextPage()\"\r\n                (click)=\"nextPage()\"\r\n                [attr.aria-label]=\"nextLabel()\"\r\n                aria-keyshortcuts=\"ArrowRight PageDown\"\r\n                type=\"button\">\r\n            <matcha-icon name=\"action_arrow_right\" [size]=\"type() === 'progress' ? 'sm' : 'md'\"></matcha-icon>\r\n        </button>\r\n\r\n        <!-- Last (opt-in showFirstLast). Unicode » canon. -->\r\n        <button *ngIf=\"showFirstLast() && type() === 'numeric'\"\r\n                matcha-icon-button\r\n                variant=\"ghost\"\r\n                size=\"md\"\r\n                class=\"paginator-nav-button paginator-nav-button--edge\"\r\n                [disabled]=\"!hasNextPage()\"\r\n                (click)=\"lastPage()\"\r\n                aria-label=\"Última página\"\r\n                aria-keyshortcuts=\"End\"\r\n                type=\"button\">\r\n            <span class=\"paginator-nav-button__chevron\" aria-hidden=\"true\">»</span>\r\n        </button>\r\n    </div>\r\n\r\n    <!-- Page-size selector (DOM 2) — only in numeric.\r\n         Figma canon: <matcha-field type=\"select\" size=\"sm\"> (NÃO matcha-select cru).\r\n         Label \"Itens por página:\" externo (não-projetado) — matcha-field fica sem\r\n         label interno só com o select chrome (64w × 36h SM per Figma). -->\r\n    <div class=\"page-size-selector\" *ngIf=\"pageSizeOptions().length > 0 && type() === 'numeric'\">\r\n        <label class=\"page-size-selector__label\" [attr.for]=\"null\">{{ itemsPerPageLabel() }}</label>\r\n        <matcha-field type=\"select\"\r\n                      size=\"sm\"\r\n                      [clearable]=\"false\"\r\n                      [ngModel]=\"pageSize()\"\r\n                      (ngModelChange)=\"onPageSizeSelectChange($event)\"\r\n                      [ngModelOptions]=\"{standalone: true}\"\r\n                      [ariaLabel]=\"itemsPerPageLabel()\">\r\n            <matcha-option\r\n                *ngFor=\"let option of pageSizeOptions(); trackBy: trackByIndex\"\r\n                [value]=\"option\">\r\n                {{ option }}\r\n            </matcha-option>\r\n        </matcha-field>\r\n    </div>\r\n\r\n    <!-- Total info (DOM 3, ordem flexível via CSS) — only in numeric -->\r\n    <div class=\"paginator-total-info\" *ngIf=\"showTotal() && type() === 'numeric'\">\r\n        <div class=\"total-range\">{{ rangeLabel() }}</div>\r\n        <div class=\"total-filtered\" *ngIf=\"hasFilteredResults()\">{{ filteredLabel() }}</div>\r\n    </div>\r\n\r\n    <!-- Loading Indicator — 2px accent bar canon Figma DSV3 (todas as variants). -->\r\n    <span class=\"paginator-loading-bar\" aria-hidden=\"true\"></span>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaPaginatorComponent } from './paginator/paginator.component';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaSelectModule } from '../matcha-select/matcha-select.module';\r\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\r\nimport { MatchaPaginatorIntl } from './paginator-intl.service';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaPaginatorComponent,\r\n    MatchaIconModule,\r\n    MatchaSelectModule,\r\n    MatchaOptionModule\r\n  ],\r\n  exports: [MatchaPaginatorComponent],\r\n  providers: [MatchaPaginatorIntl]\r\n})\r\nexport class MatchaPaginatorModule {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    booleanAttribute,\r\n    computed,\r\n    forwardRef,\r\n    input,\r\n    model,\r\n    output,\r\n    signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaSlideToggleColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info';\r\n\r\nlet _idCounter = 0;\r\n\r\n/**\r\n * matcha-slide-toggle — Slide toggle binário ON/OFF (Figma DSV3 1:1, nodeId 14510:226).\r\n *\r\n * Touch target 40×40 · Track 36×20 (radius pill) · Thumb 16×16 sobre track.\r\n * 6 states (Default/Hover/Focus/Error/Disabled/Loading) × 2 checks (on/off).\r\n *\r\n * API two-way (model pattern):\r\n *   <matcha-slide-toggle [(checked)]=\"value\">                    Two-way binding\r\n *   <matcha-slide-toggle [checked]=\"x\" (change)=\"...\">           One-way + listener\r\n *   <matcha-slide-toggle formControlName=\"x\">                    Reactive Forms (CVA)\r\n *   <matcha-slide-toggle [(ngModel)]=\"x\">                        ngModel (CVA)\r\n *\r\n * IMPORTANTE: usar property binding `[checked]=\"boolean\"` — não HTML attribute.\r\n * Consumers passando `<matcha-slide-toggle checked>` (sem valor) NÃO ativam.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-slide-toggle',\r\n    templateUrl: './slide-toggle.component.html',\r\n    styleUrls: ['./slide-toggle.component.scss'],\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MatchaSlideToggleComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[attr.color]': 'color()',\r\n        '[attr.disabled]': 'isDisabled() ? \"true\" : null',\r\n        '[attr.data-state]': 'stateAttr()',\r\n        '[attr.aria-busy]': 'loading() ? \"true\" : null',\r\n        '[attr.aria-invalid]': 'error() ? \"true\" : null',\r\n        '[class.matcha-slide-toggle-loading]': 'loading()',\r\n        '[class.matcha-slide-toggle-error]': 'error()',\r\n    },\r\n})\r\nexport class MatchaSlideToggleComponent implements ControlValueAccessor {\r\n    /** ID único — usado em <input id> + <label for>. */\r\n    readonly toggleId = `matcha-slide-toggle-${++_idCounter}`;\r\n\r\n    // ── Inputs (signals) ────────────────────────────────────────────────\r\n    /** Estado de seleção. Two-way via [(checked)] OU CVA (FormControl/ngModel).\r\n     *  model() = source-of-truth direta — sem _internalChecked / effect. */\r\n    readonly checked = model(false);\r\n\r\n    /** Cor do track quando checked. 6 semânticas DSV3 (sem Material 1 legacy). */\r\n    readonly color = input<MatchaSlideToggleColor>('accent');\r\n\r\n    /** Bloqueia interação + opacity 0.5. Combina com setDisabledState do FormControl. */\r\n    readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /** Visual de erro (border + label danger). Combine com matcha-form-field hint. */\r\n    readonly error = input(false, { transform: booleanAttribute });\r\n\r\n    /** Loading state — pulsing thumb + bloqueia interação. */\r\n    readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n    // ── CVA disabled (separado do input pra combinar) ──────────────────\r\n    private readonly _cvaDisabled = signal(false);\r\n\r\n    /** Disabled efetivo — input OU CVA OU loading bloqueia interação. */\r\n    readonly isDisabled = computed(() =>\r\n        this.disabled() || this._cvaDisabled() || this.loading()\r\n    );\r\n\r\n    /** State attr derivado pra debugging/styling. Loading > Disabled > Error > Default. */\r\n    readonly stateAttr = computed<string>(() => {\r\n        if (this.loading()) return 'loading';\r\n        if (this.disabled() || this._cvaDisabled()) return 'disabled';\r\n        if (this.error()) return 'error';\r\n        return 'default';\r\n    });\r\n\r\n    // ── Outputs ─────────────────────────────────────────────────────────\r\n    /** Disparado em interação real do user. Carrega { source, checked }.\r\n     *  ATENÇÃO: model() já emite `checkedChange` automaticamente — esse output\r\n     *  é adicional pra consumers que precisam da referência da source. */\r\n    readonly change = output<{ source: MatchaSlideToggleComponent; checked: boolean }>();\r\n\r\n    // ── ControlValueAccessor ────────────────────────────────────────────\r\n    private cvaChange: (v: boolean) => void = () => {};\r\n    private cvaTouched: () => void = () => {};\r\n\r\n    writeValue(value: unknown): void {\r\n        // CVA do FormControl/ngModel — só atualiza o model, NÃO chama cvaChange\r\n        // (pra evitar loop com o próprio FormControl).\r\n        this.checked.set(!!value);\r\n    }\r\n\r\n    registerOnChange(fn: (v: boolean) => void): void { this.cvaChange = fn; }\r\n    registerOnTouched(fn: () => void): void { this.cvaTouched = fn; }\r\n    setDisabledState(isDisabled: boolean): void { this._cvaDisabled.set(isDisabled); }\r\n\r\n    // ── User interaction ────────────────────────────────────────────────\r\n    /**\r\n     * onChange do <input type=\"checkbox\">. Único caminho que muda checked\r\n     * a partir do user. Atualiza model + CVA + emite change output.\r\n     *\r\n     * CRÍTICO: stopImmediatePropagation impede o evento NATIVO de borbulhar\r\n     * até o host (que ALSO escuta `change`). Sem isso, parent recebia 2 eventos:\r\n     *   1. native Event ($event.checked = undefined → set(undefined))\r\n     *   2. component emit ($event = {source, checked} → set correto)\r\n     * O #1 dessincronizava o signal antes do #2 corrigir, gerando dessincronia.\r\n     *\r\n     * model.set() automaticamente emite `checkedChange` event (built-in\r\n     * model behavior) — parent usando [(checked)] sincroniza sem listener manual.\r\n     */\r\n    onInputChange(event: Event): void {\r\n        if (this.isDisabled()) {\r\n            event.preventDefault();\r\n            return;\r\n        }\r\n        const newChecked = (event.target as HTMLInputElement).checked;\r\n\r\n        // Bloqueia o native event de borbulhar e disparar o (change) duplicado no host.\r\n        event.stopImmediatePropagation();\r\n\r\n        this.checked.set(newChecked);\r\n        this.cvaTouched();\r\n        this.cvaChange(newChecked);\r\n        this.change.emit({ source: this, checked: newChecked });\r\n    }\r\n}\r\n","<label class=\"matcha-slide-toggle-wrapper\"\r\n       [for]=\"toggleId\"\r\n       [class.matcha-slide-toggle-disabled]=\"isDisabled()\">\r\n    <input #input\r\n           [id]=\"toggleId\"\r\n           type=\"checkbox\"\r\n           role=\"switch\"\r\n           [checked]=\"checked()\"\r\n           [disabled]=\"isDisabled()\"\r\n           [attr.aria-checked]=\"checked()\"\r\n           (change)=\"onInputChange($event)\" />\r\n    <span class=\"matcha-slide-toggle-label\">\r\n        <ng-content></ng-content>\r\n    </span>\r\n</label>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaSlideToggleComponent } from './slide-toggle/slide-toggle.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n  imports: [MatchaSlideToggleComponent, FormsModule],\r\n  exports: [MatchaSlideToggleComponent]\r\n})\r\nexport class MatchaSlideToggleModule { }\r\n\r\n","import { Component, ViewChild, ChangeDetectorRef, Output, EventEmitter, Input, ViewEncapsulation ,ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-menu',\r\n    template: `\r\n    <matcha-panel #panel\r\n                  [placement]=\"placement\"\r\n                  [maxHeight]=\"maxHeight\"\r\n                  [minWidth]=\"minWidth\"\r\n                  widthMode=\"max-content\"\r\n                  [open]=\"open\"\r\n                  [suppressGlobalClose]=\"isSubMenu\"\r\n                  [portalToBody]=\"isSubMenu || forcePortalToBody\"\r\n                  [ignoreClickOutsideElements]=\"subMenuPanelElements\"\r\n                  (closed)=\"closePanel()\">\r\n      <div class=\"matcha-menu-content\"\r\n           (click)=\"onContentClick($event)\"\r\n           (mouseenter)=\"cancelCloseChain()\"\r\n           (mouseleave)=\"onPanelMouseLeave?.()\">\r\n        <ng-content></ng-content>\r\n      </div>\r\n    </matcha-panel>\r\n  `,\r\n    exportAs: 'matchaMenu',\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: true,\r\n    imports: [MatchaPanelComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaMenuComponent {\r\n    @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\r\n\r\n    @Input() placement: 'bottom' | 'top' | 'auto' | 'side' = 'auto';\r\n\r\n    /**\r\n     * Porta o overlay para o <body> ao abrir. Default `true`: menus vivem quase sempre\r\n     * dentro de containers com overflow/transform/sticky (tabelas, cards) que recortariam\r\n     * o painel inline. Use `[forcePortalToBody]=\"false\"` para o comportamento inline antigo.\r\n     */\r\n    @Input() forcePortalToBody: boolean = true;\r\n\r\n    private _maxHeight = 300;\r\n    @Input()\r\n    get maxHeight(): number { return this._maxHeight; }\r\n    set maxHeight(value: number | string) { this._maxHeight = typeof value === 'string' ? parseInt(value, 10) : value; }\r\n\r\n    private _minWidth = 160;\r\n    @Input()\r\n    get minWidth(): number { return this._minWidth; }\r\n    set minWidth(value: number | string) { this._minWidth = typeof value === 'string' ? parseInt(value, 10) : value; }\r\n\r\n    @Output() opened = new EventEmitter<void>();\r\n    @Output() closed = new EventEmitter<void>();\r\n\r\n    open = false;\r\n    triggerElement?: HTMLElement;\r\n\r\n    /** Callbacks para o submenu-trigger que controla este menu */\r\n    onPanelMouseEnter: (() => void) | null = null;\r\n    onPanelMouseLeave: (() => void) | null = null;\r\n\r\n    /** Cancela o close deste menu e de todos os ancestrais */\r\n    cancelCloseChain(): void {\r\n        this.onPanelMouseEnter?.();\r\n        if (this.parentMenu) {\r\n            this.parentMenu.cancelCloseChain();\r\n        }\r\n    }\r\n\r\n    /** Referência ao menu pai (se for submenu) */\r\n    parentMenu: MatchaMenuComponent | null = null;\r\n\r\n    /** Se true, este menu é um submenu */\r\n    get isSubMenu(): boolean { return this.parentMenu !== null; }\r\n\r\n    /** Elementos de painéis de submenus para ignorar no click-outside do panel pai */\r\n    subMenuPanelElements: HTMLElement[] = [];\r\n\r\n    /** Referência à diretiva submenu-trigger que controla este menu (se for submenu) */\r\n    parentTrigger: { cancelClose(): void } | null = null;\r\n\r\n    /** Submenus abertos */\r\n    private openSubMenus: MatchaMenuComponent[] = [];\r\n\r\n    /** Verifica se tem submenus filhos abertos */\r\n    hasOpenSubMenus(): boolean {\r\n        return this.openSubMenus.length > 0;\r\n    }\r\n\r\n    constructor(private cdr: ChangeDetectorRef) { }\r\n\r\n    openPanel(trigger: HTMLElement) {\r\n        this.triggerElement = trigger;\r\n        this.open = true;\r\n        this.cdr.detectChanges();\r\n\r\n        this.panel.attachTo(this.triggerElement);\r\n        this.panel.openPanel();\r\n        this.opened.emit();\r\n\r\n        // Registrar o elemento do painel no menu pai para ignorar click-outside\r\n        if (this.parentMenu && this.panel.paneElement) {\r\n            this.parentMenu.addSubMenuPanelElement(this.panel.paneElement);\r\n        }\r\n    }\r\n\r\n    closePanel() {\r\n        if (!this.open) return;\r\n\r\n        // Remover o elemento do painel do menu pai\r\n        if (this.parentMenu && this.panel?.paneElement) {\r\n            this.parentMenu.removeSubMenuPanelElement(this.panel.paneElement);\r\n        }\r\n\r\n        // Fechar todos os submenus primeiro\r\n        this.closeAllSubMenus();\r\n\r\n        this.open = false;\r\n        this.panel.closePanel();\r\n        this.closed.emit();\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    togglePanel(trigger: HTMLElement) {\r\n        this.open ? this.closePanel() : this.openPanel(trigger);\r\n    }\r\n\r\n    /** Adiciona elemento de painel de submenu à lista de ignorados */\r\n    addSubMenuPanelElement(el: HTMLElement): void {\r\n        if (!this.subMenuPanelElements.includes(el)) {\r\n            this.subMenuPanelElements = [...this.subMenuPanelElements, el];\r\n        }\r\n        // Propagar para cima - o menu pai do pai também precisa ignorar\r\n        if (this.parentMenu) {\r\n            this.parentMenu.addSubMenuPanelElement(el);\r\n        }\r\n    }\r\n\r\n    /** Remove elemento de painel de submenu da lista de ignorados */\r\n    removeSubMenuPanelElement(el: HTMLElement): void {\r\n        this.subMenuPanelElements = this.subMenuPanelElements.filter(e => e !== el);\r\n        if (this.parentMenu) {\r\n            this.parentMenu.removeSubMenuPanelElement(el);\r\n        }\r\n    }\r\n\r\n    /** Registra um submenu aberto para gerenciamento */\r\n    registerSubMenu(subMenu: MatchaMenuComponent): void {\r\n        if (!this.openSubMenus.includes(subMenu)) {\r\n            this.openSubMenus.push(subMenu);\r\n        }\r\n    }\r\n\r\n    /** Remove um submenu da lista de abertos */\r\n    unregisterSubMenu(subMenu: MatchaMenuComponent): void {\r\n        this.openSubMenus = this.openSubMenus.filter(m => m !== subMenu);\r\n    }\r\n\r\n    /** Fecha todos os submenus registrados */\r\n    closeAllSubMenus(): void {\r\n        [...this.openSubMenus].forEach(sub => sub.closePanel());\r\n        this.openSubMenus = [];\r\n    }\r\n\r\n    /** Fecha outros submenus (ao abrir um novo no mesmo nível) */\r\n    closeOtherSubMenus(except: MatchaMenuComponent): void {\r\n        [...this.openSubMenus]\r\n            .filter(m => m !== except)\r\n            .forEach(sub => sub.closePanel());\r\n    }\r\n\r\n    onContentClick(event: MouseEvent) {\r\n        const target = event.target as HTMLElement;\r\n        // Não fechar se o item tem submenu\r\n        if (target.closest('[matchaSubmenuTriggerFor]')) {\r\n            return;\r\n        }\r\n        if (target.closest('button') || target.closest('.matcha-menu-item') || target.closest('[matcha-button]')) {\r\n            setTimeout(() => {\r\n                this.closeEntireTree();\r\n            }, 100);\r\n        }\r\n    }\r\n\r\n    /** Fecha toda a árvore de menus (do raiz ao último submenu) */\r\n    closeEntireTree(): void {\r\n        if (this.parentMenu) {\r\n            this.parentMenu.closeEntireTree();\r\n        } else {\r\n            this.closePanel();\r\n        }\r\n    }\r\n}\r\n","import { Directive, Input, HostListener, ElementRef, OnDestroy } from '@angular/core';\r\nimport { MatchaMenuComponent } from './matcha-menu.component';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Directive({\r\n    selector: '[matchaMenuTriggerFor]',\r\n    standalone: true,\r\n})\r\nexport class MatchaMenuTriggerDirective implements OnDestroy {\r\n    @Input('matchaMenuTriggerFor') menu!: MatchaMenuComponent;\r\n\r\n    private subs = new Subscription();\r\n\r\n    constructor(private el: ElementRef<HTMLElement>) { }\r\n\r\n    ngAfterViewInit() {\r\n        if (!this.menu) {\r\n            throw new Error('Você precisa passar uma referência para <matcha-menu> ex: [matchaMenuTriggerFor]=\"menu\"');\r\n        }\r\n\r\n        // Lógica para fechar ao clicar fora\r\n        const clickSub = fromEvent(document, 'click').pipe(\r\n            filter((ev: any) => {\r\n                const target = ev.target as Node;\r\n                const isInsideTrigger = this.el.nativeElement.contains(target);\r\n\r\n                // O painel do menu está dentro de um overlay no body, então precisamos verificar se o clique foi fora dele também.\r\n                // Como o MatchaMenuComponent gerencia o MatchaPanel, podemos confiar na lógica interna do MatchaPanel para fechar clicar fora,\r\n                // mas aqui reforçamos para o trigger.\r\n                return this.menu.open && !isInsideTrigger;\r\n            })\r\n        ).subscribe(() => {\r\n            // Apenas fechar se o clique não for dentro do painel (que é gerenciado pelo próprio MatchaPanel)\r\n            // Mas o MatchaPanel já tem essa lógica.\r\n        });\r\n\r\n        this.subs.add(clickSub);\r\n    }\r\n\r\n    @HostListener('click', ['$event'])\r\n    onClick(event: MouseEvent) {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        this.menu.togglePanel(this.el.nativeElement);\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.subs.unsubscribe();\r\n    }\r\n}\r\n","import { Directive, ElementRef, Input, OnChanges, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[matcha-menu-item]',\r\n    standalone: true\r\n})\r\nexport class MatchaMenuItemDirective implements OnInit, OnChanges {\r\n    private _matchaMenuItem = false;\r\n\r\n    @Input('matcha-menu-item')\r\n    get matchaMenuItem(): boolean {\r\n        return this._matchaMenuItem;\r\n    }\r\n\r\n    set matchaMenuItem(value: boolean | string) {\r\n        this._matchaMenuItem = value === 'false' ? false : !!value;\r\n    }\r\n\r\n    constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n    ngOnInit(): void {\r\n        this.updateClass();\r\n    }\r\n\r\n    ngOnChanges(): void {\r\n        this.updateClass();\r\n    }\r\n\r\n    private updateClass(): void {\r\n        if (this._matchaMenuItem) {\r\n            this.renderer.addClass(this.el.nativeElement, 'matcha-menu-item');\r\n        } else {\r\n            this.renderer.removeClass(this.el.nativeElement, 'matcha-menu-item');\r\n        }\r\n    }\r\n}\r\n","import { Directive, Input, ElementRef, OnDestroy, HostListener, HostBinding, AfterViewInit } from '@angular/core';\r\nimport { MatchaMenuComponent } from './matcha-menu.component';\r\n\r\n@Directive({\r\n    selector: '[matchaSubmenuTriggerFor]',\r\n    standalone: true\r\n})\r\nexport class MatchaSubmenuTriggerDirective implements AfterViewInit, OnDestroy {\r\n    @Input('matchaSubmenuTriggerFor') submenu!: MatchaMenuComponent;\r\n    @Input() parentMenu!: MatchaMenuComponent;\r\n\r\n    @HostBinding('class.matcha-menu-item-has-submenu') hasSubmenuClass = true;\r\n\r\n    private closeTimeout: any = null;\r\n\r\n    /** Detecta dispositivos sem hover (touch-primary) */\r\n    private get isTouch(): boolean {\r\n        return window.matchMedia('(hover: none)').matches;\r\n    }\r\n\r\n    constructor(private el: ElementRef<HTMLElement>) { }\r\n\r\n    ngAfterViewInit(): void {\r\n        if (!this.submenu) return;\r\n\r\n        // Registrar este trigger como controlador do submenu\r\n        this.submenu.parentTrigger = this;\r\n\r\n        // Quando o mouse entra no painel do submenu, cancela TODA a cadeia de fechamento\r\n        this.submenu.onPanelMouseEnter = () => this.cancelClose();\r\n\r\n        // Quando o mouse sai do painel do submenu, agenda fechamento\r\n        // apenas se não houver submenus filhos abertos (ignora em touch)\r\n        this.submenu.onPanelMouseLeave = () => {\r\n            if (!this.isTouch && !this.submenu.hasOpenSubMenus()) {\r\n                this.scheduleClose();\r\n            }\r\n        };\r\n    }\r\n\r\n    @HostListener('click', ['$event'])\r\n    onClick(event: MouseEvent): void {\r\n        if (!this.isTouch) return;\r\n\r\n        // Impedir que o clique propague para o onContentClick do menu pai\r\n        event.stopPropagation();\r\n\r\n        if (!this.submenu || !this.parentMenu) return;\r\n\r\n        // Toggle: se já está aberto, fecha; senão, abre\r\n        if (this.submenu.open) {\r\n            this.submenu.closePanel();\r\n            this.parentMenu.unregisterSubMenu(this.submenu);\r\n            return;\r\n        }\r\n\r\n        // Fechar outros submenus do mesmo nível\r\n        this.parentMenu.closeOtherSubMenus(this.submenu);\r\n\r\n        // Configurar relação pai/filho e abrir\r\n        this.submenu.parentMenu = this.parentMenu;\r\n        this.submenu.placement = 'side';\r\n        this.submenu.openPanel(this.el.nativeElement);\r\n        this.parentMenu.registerSubMenu(this.submenu);\r\n    }\r\n\r\n    @HostListener('mouseenter')\r\n    onMouseEnter(): void {\r\n        // Em touch, o submenu é controlado por click\r\n        if (this.isTouch) return;\r\n\r\n        // Cancelar qualquer fechamento pendente neste nível e nos pais\r\n        this.cancelClose();\r\n        if (this.parentMenu) {\r\n            this.parentMenu.cancelCloseChain();\r\n        }\r\n\r\n        if (!this.submenu || !this.parentMenu) return;\r\n\r\n        // Fechar outros submenus do mesmo nível\r\n        this.parentMenu.closeOtherSubMenus(this.submenu);\r\n\r\n        // Configurar relação pai/filho\r\n        this.submenu.parentMenu = this.parentMenu;\r\n        this.submenu.placement = 'side';\r\n\r\n        // Abrir o submenu posicionado ao lado deste item\r\n        if (!this.submenu.open) {\r\n            this.submenu.openPanel(this.el.nativeElement);\r\n            this.parentMenu.registerSubMenu(this.submenu);\r\n        }\r\n    }\r\n\r\n    @HostListener('mouseleave')\r\n    onMouseLeave(): void {\r\n        // Em touch, o submenu é controlado por click\r\n        if (this.isTouch) return;\r\n\r\n        // Agendar fechamento mas o cancelClose será chamado\r\n        // se o mouse entrar no painel do submenu ou no item novamente\r\n        this.scheduleClose();\r\n    }\r\n\r\n    private scheduleClose(): void {\r\n        this.cancelClose();\r\n        this.closeTimeout = setTimeout(() => {\r\n            if (this.submenu?.open && !this.submenu.hasOpenSubMenus()) {\r\n                this.submenu.closePanel();\r\n                this.parentMenu?.unregisterSubMenu(this.submenu);\r\n            }\r\n        }, 300);\r\n    }\r\n\r\n    cancelClose(): void {\r\n        if (this.closeTimeout) {\r\n            clearTimeout(this.closeTimeout);\r\n            this.closeTimeout = null;\r\n        }\r\n        // Propagar cancelamento para o trigger do menu pai (se existir)\r\n        if (this.parentMenu?.parentTrigger) {\r\n            this.parentMenu.parentTrigger.cancelClose();\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.cancelClose();\r\n        if (this.submenu) {\r\n            this.submenu.onPanelMouseEnter = null;\r\n            this.submenu.onPanelMouseLeave = null;\r\n            this.submenu.parentTrigger = null;\r\n            if (this.submenu.open) {\r\n                this.submenu.closePanel();\r\n            }\r\n        }\r\n    }\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    HostListener,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    input,\r\n    output,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\nexport type MatchaActionItemColor =\r\n    | 'default'\r\n    | 'primary'\r\n    | 'accent'\r\n    | 'success'\r\n    | 'warn'\r\n    | 'danger'\r\n    | 'info';\r\n\r\n/**\r\n * matcha-action-item — Item canônico de menu de ações (matcha/menu §38.9).\r\n *\r\n * Item opinativo pra usar dentro de `<matcha-menu>`. Substitui o padrão antigo\r\n * de `<button matcha-menu-item>...icon + label...</button>` por uma API tipada\r\n * com `icon`, `label` (slot), `color` (semântico) e `disabled`.\r\n *\r\n * **Por que NÃO usar matcha-option:** matcha-option é pra listbox (selectable\r\n * com aria-selected). Action-item é pra menu (role=menuitem, dispara ação).\r\n * São semanticamente diferentes — confundir quebra a11y.\r\n *\r\n * @example\r\n *   <matcha-menu #actions>\r\n *     <matcha-action-item icon=\"edit\" (action)=\"onEdit()\">Editar</matcha-action-item>\r\n *     <matcha-action-item icon=\"copy-text\" (action)=\"onDuplicate()\">Duplicar</matcha-action-item>\r\n *     <matcha-action-divider></matcha-action-divider>\r\n *     <matcha-action-item icon=\"delete\" color=\"danger\" (action)=\"onDelete()\">\r\n *       Excluir\r\n *     </matcha-action-item>\r\n *   </matcha-menu>\r\n *\r\n * **A11y:** role=menuitem, tabindex=0 quando focado, Enter/Space dispara\r\n * `(action)`, Escape fecha o menu pai (via bubble).\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-action-item',\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaIconComponent],\r\n    template: `\r\n        <matcha-icon *ngIf=\"icon()\"\r\n                     class=\"matcha-action-item__icon\"\r\n                     [name]=\"icon()\"\r\n                     size=\"sm\"\r\n                     aria-hidden=\"true\">\r\n        </matcha-icon>\r\n        <span class=\"matcha-action-item__label\">\r\n            <ng-content></ng-content>\r\n        </span>\r\n        <span *ngIf=\"shortcut()\" class=\"matcha-action-item__shortcut\">\r\n            {{ shortcut() }}\r\n        </span>\r\n    `,\r\n    styleUrls: ['./matcha-action-item.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-action-item matcha-menu-item',\r\n        'role': 'menuitem',\r\n        '[attr.data-color]': 'color()',\r\n        '[attr.tabindex]': 'disabled() ? \"-1\" : \"0\"',\r\n        '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n        '[class.matcha-action-item-disabled]': 'disabled()',\r\n    },\r\n})\r\nexport class MatchaActionItemComponent {\r\n    /** Nome do ícone (matcha-icon name) — leading. */\r\n    readonly icon     = input<string>('');\r\n    /** Cor semântica — afeta hover state e text color (danger = vermelho pra Excluir). */\r\n    readonly color    = input<MatchaActionItemColor>('default');\r\n    /** Atalho de teclado opcional (ex: \"Ctrl+D\") — renderiza no canto direito. */\r\n    readonly shortcut = input<string>('');\r\n    readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /** Disparado em click/Enter/Space (se não disabled). */\r\n    readonly action = output<void>();\r\n\r\n    @HostListener('click', ['$event'])\r\n    onHostClick(event: Event): void {\r\n        if (this.disabled()) {\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n            return;\r\n        }\r\n        this.action.emit();\r\n    }\r\n\r\n    @HostListener('keydown', ['$event'])\r\n    onHostKeydown(event: KeyboardEvent): void {\r\n        if (this.disabled()) return;\r\n        if (event.key === 'Enter' || event.key === ' ') {\r\n            event.preventDefault();\r\n            this.action.emit();\r\n        }\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-action-divider — Separador visual entre grupos de matcha-action-item.\r\n * Standalone, sem inputs. role=\"separator\" pra a11y.\r\n *\r\n * @example\r\n *   <matcha-menu>\r\n *     <matcha-action-item icon=\"edit\">Editar</matcha-action-item>\r\n *     <matcha-action-divider></matcha-action-divider>\r\n *     <matcha-action-item icon=\"delete\" color=\"danger\">Excluir</matcha-action-item>\r\n *   </matcha-menu>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-action-divider',\r\n    standalone: true,\r\n    template: '',\r\n    styles: [`\r\n        matcha-action-divider {\r\n            display: block;\r\n            height: var(--matcha-border-hairline, 1px);\r\n            margin: var(--matcha-space-050, 4px) var(--matcha-space-100, 8px);\r\n            background: var(--matcha-color-surface-border);\r\n        }\r\n    `],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'role': 'separator',\r\n        'aria-orientation': 'horizontal',\r\n    },\r\n})\r\nexport class MatchaActionDividerComponent {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaMenuComponent } from './matcha-menu.component';\r\nimport { MatchaMenuTriggerDirective } from './matcha-menu-trigger.directive';\r\nimport { MatchaMenuItemDirective } from './matcha-menu-item.directive';\r\nimport { MatchaSubmenuTriggerDirective } from './matcha-submenu-trigger.directive';\r\nimport { MatchaActionItemComponent } from './matcha-action-item.component';\r\nimport { MatchaActionDividerComponent } from './matcha-action-divider.component';\r\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaMenuComponent,\r\n    MatchaMenuTriggerDirective,\r\n    MatchaMenuItemDirective,\r\n    MatchaSubmenuTriggerDirective,\r\n    MatchaActionItemComponent,\r\n    MatchaActionDividerComponent,\r\n    MatchaPanelModule\r\n  ],\r\n    exports: [\r\n        MatchaMenuComponent,\r\n        MatchaMenuTriggerDirective,\r\n        MatchaMenuItemDirective,\r\n        MatchaSubmenuTriggerDirective,\r\n        MatchaActionItemComponent,\r\n        MatchaActionDividerComponent\r\n    ]\r\n})\r\nexport class MatchaMenuModule { }\r\n","import { Component, ElementRef, Inject, Input, Renderer2 ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-spin',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  templateUrl: './spin.component.html',\r\n  styleUrl: './spin.component.scss'\r\n})\r\nexport class MatchaSpinComponent {\r\n  private _progress: string | number = 0;\r\n  \r\n  @Input()\r\n  set progress(value: string | number) {\r\n    this._progress = Number(value);\r\n  }\r\n  get progress(): string | number {\r\n    return this._progress;\r\n  }\r\n\r\n  @Input() color: string = 'accent';\r\n  @Input('size') size: string | null = null;\r\n\r\n  @Input('size-xs') sizeXs: string | null = null;\r\n  @Input('size-sm') sizeSm: string | null = null;\r\n  @Input('size-md') sizeMd: string | null = null;\r\n  @Input('size-lg') sizeLg: string | null = null;\r\n  @Input('size-xl') sizeXl: string | null = null;\r\n\r\n  readonly strokeWidth: number = 5;\r\n\r\n  constructor(\r\n    @Inject(ElementRef) private _elementRef: ElementRef,\r\n    @Inject(Renderer2) private _renderer: Renderer2\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spin');\r\n    this.setSize();\r\n  }\r\n\r\n  private setSize() {\r\n    const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\r\n    sizes.forEach(size => {\r\n      this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spin-${size}`);\r\n    });\r\n\r\n    if (this.size) {\r\n      this._renderer.addClass(this._elementRef.nativeElement, `matcha-spin-${this.size}`);\r\n    }\r\n  }\r\n\r\n  get diameter(): number {\r\n    const rect = this._elementRef.nativeElement.getBoundingClientRect();\r\n    return rect.width;\r\n  }\r\n\r\n  get radius(): number {\r\n    return (this.diameter - this.strokeWidth) / 2;\r\n  }\r\n\r\n  get circumference(): number {\r\n    return 2 * Math.PI * this.radius;\r\n  }\r\n\r\n  get dashOffset(): number {\r\n    const progress = Math.min(Math.max(Number(this.progress), 0), 100);\r\n    return this.circumference - (progress / 100) * this.circumference;\r\n  }\r\n\r\n}\r\n","<div\r\n  class=\"matcha-spin\"\r\n  role=\"progressbar\"\r\n  [attr.aria-valuemin]=\"0\"\r\n  [attr.aria-valuemax]=\"100\"\r\n  [attr.aria-valuenow]=\"progress\"\r\n>\r\n  <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\">\r\n    <circle\r\n      class=\"spin-placeholder\"\r\n      [attr.cx]=\"diameter / 2\"\r\n      [attr.cy]=\"diameter / 2\"\r\n      [attr.r]=\"radius\"\r\n      [attr.stroke-width]=\"strokeWidth\"\r\n    />\r\n    <circle\r\n      class=\"spin-progress\"\r\n      [attr.cx]=\"diameter / 2\"\r\n      [attr.cy]=\"diameter / 2\"\r\n      [attr.r]=\"radius\"\r\n      [attr.stroke-width]=\"strokeWidth\"\r\n      [attr.stroke]=\"color\"\r\n      [attr.stroke-dasharray]=\"circumference\"\r\n      [attr.stroke-dashoffset]=\"progress ? dashOffset : null\"\r\n    />\r\n  </svg>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaSpinComponent } from './spin/spin.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaSpinComponent],\r\n  exports: [MatchaSpinComponent]\r\n})\r\nexport class MatchaSpinModule { }\r\n\r\n","import {\r\n    AfterViewInit,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ElementRef,\r\n    afterNextRender,\r\n    computed,\r\n    effect,\r\n    inject,\r\n    input,\r\n    numberAttribute,\r\n    viewChild,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { sizeAlias } from '../../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaSpinnerSize = 'tiny' | 'small' | 'medium' | 'large' | 'huge';\r\nexport type MatchaSpinnerColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info';\r\n\r\n/**\r\n * matcha-spinner — Indicador rotativo de carregamento (Figma DSV3 1:1).\r\n *\r\n * 5 tamanhos com border-width proporcional (Figma matcha/spinner):\r\n *   tiny: 24×24 · stroke 3\r\n *   small: 32×32 · stroke 4\r\n *   medium: 40×40 · stroke 5  (default)\r\n *   large: 48×48 · stroke 5\r\n *   huge: 56×56 · stroke 5\r\n *\r\n * Modos: indeterminate (spin contínuo, default) ou determinate (progress 0-100).\r\n *\r\n * Animação implementada via WAAPI (Web Animations API) em vez de @keyframes —\r\n * elimina problemas de transform-box em SVG, ViewEncapsulation, e prefers-reduced-motion\r\n * override silencioso. WAAPI roda direto no compositor do browser.\r\n *\r\n *   <!-- Indeterminate -->\r\n *   <matcha-spinner size=\"medium\" color=\"accent\" label=\"Salvando\"></matcha-spinner>\r\n *\r\n *   <!-- Determinate -->\r\n *   <matcha-spinner size=\"large\" color=\"primary\" [progress]=\"65\"></matcha-spinner>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-spinner',\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: './spinner.component.html',\r\n    styleUrls: ['./spinner.component.scss'],\r\n    host: {\r\n        'class': 'matcha-spinner',\r\n        '[attr.size]': 'size()',\r\n        '[attr.color]': 'color()',\r\n        '[attr.progress]': 'progress()',\r\n        'role': 'progressbar',\r\n        '[attr.aria-label]': 'label() || null',\r\n        '[attr.aria-valuemin]': 'isIndeterminate() ? null : 0',\r\n        '[attr.aria-valuemax]': 'isIndeterminate() ? null : 100',\r\n        '[attr.aria-valuenow]': 'isIndeterminate() ? null : progress()',\r\n    },\r\n})\r\nexport class MatchaSpinnerComponent implements AfterViewInit {\r\n    // ── Inputs (signals) ────────────────────────────────────────────────────\r\n    /** Tamanho — 5 valores DSV3 + aliases legacy abreviados (xs/sm/md/lg/xl). */\r\n    readonly size = input<MatchaSpinnerSize | string, string>('medium', { transform: (v) => sizeAlias(v) });\r\n\r\n    /** Cor semântica DSV3. Aceita string pra back-compat (paleta antiga). */\r\n    readonly color = input<MatchaSpinnerColor | string>('accent');\r\n\r\n    /** Progresso 0-100. 0 = indeterminate (spin contínuo); >0 = determinate (arco preenche). */\r\n    readonly progress = input(0, { transform: numberAttribute });\r\n\r\n    /** aria-label descritivo. Sem ele, leitor anuncia só \"Progresso N%\" sem dizer DO QUE. */\r\n    readonly label = input<string>('');\r\n\r\n    // ── ViewChild ───────────────────────────────────────────────────────────\r\n    private readonly wrapperRef = viewChild<ElementRef<HTMLElement>>('wrapper');\r\n\r\n    // ── Sizing canonical (Figma DSV3) ───────────────────────────────────────\r\n    private readonly sizeMap: Record<string, { d: number; sw: number }> = {\r\n        xs: { d: 24, sw: 3 },\r\n        sm: { d: 32, sw: 4 },\r\n        md: { d: 40, sw: 5 },\r\n        lg: { d: 48, sw: 5 },\r\n        xl: { d: 56, sw: 5 },\r\n        // Legacy aliases pra back-compat\r\n        tiny:   { d: 24, sw: 3 },\r\n        small:  { d: 32, sw: 4 },\r\n        medium: { d: 40, sw: 5 },\r\n        large:  { d: 48, sw: 5 },\r\n        huge:   { d: 56, sw: 5 },\r\n    };\r\n\r\n    // ── Computed ────────────────────────────────────────────────────────────\r\n    private readonly _spec = computed(() => this.sizeMap[this.size()] ?? this.sizeMap['medium']);\r\n\r\n    readonly diameter = computed(() => this._spec().d);\r\n    readonly strokeWidth = computed(() => this._spec().sw);\r\n    readonly center = computed(() => this.diameter() / 2);\r\n    readonly radius = computed(() => this.center() - this.strokeWidth() / 2);\r\n    readonly circumference = computed(() => 2 * Math.PI * this.radius());\r\n\r\n    readonly isIndeterminate = computed(() => Number(this.progress()) <= 0);\r\n\r\n    /** Indeterminate: arco 25% rotacionando; Determinate: arco completo com offset proporcional. */\r\n    readonly dashArray = computed(() => {\r\n        if (this.isIndeterminate()) {\r\n            return `${this.circumference() * 0.25} ${this.circumference()}`;\r\n        }\r\n        return `${this.circumference()}`;\r\n    });\r\n\r\n    readonly dashOffset = computed(() => {\r\n        if (this.isIndeterminate()) return 0;\r\n        const p = Math.min(Math.max(Number(this.progress()), 0), 100);\r\n        return this.circumference() - (p / 100) * this.circumference();\r\n    });\r\n\r\n    // ── WAAPI animation ─────────────────────────────────────────────────────\r\n    /** Handle da animação WAAPI ativa. Pausa/cancela quando troca pra determinate. */\r\n    private spinAnimation: Animation | null = null;\r\n\r\n    constructor() {\r\n        const destroyRef = inject(DestroyRef);\r\n\r\n        // Effect reativo — quando isIndeterminate muda, inicia/para a animação.\r\n        // Roda ao montar (afterNextRender) e em qualquer mudança subsequente.\r\n        afterNextRender(() => {\r\n            this.syncAnimation();\r\n        });\r\n\r\n        effect(() => {\r\n            // Lê o signal pra registrar dependência. afterNextRender garantiu que\r\n            // wrapperRef está disponível no primeiro tick; effect pega mudanças depois.\r\n            this.isIndeterminate();\r\n            // Defer pra próximo tick pra garantir DOM atualizado.\r\n            queueMicrotask(() => this.syncAnimation());\r\n        });\r\n\r\n        destroyRef.onDestroy(() => {\r\n            this.spinAnimation?.cancel();\r\n            this.spinAnimation = null;\r\n        });\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this.syncAnimation();\r\n    }\r\n\r\n    /** Liga/desliga a animação WAAPI conforme isIndeterminate. */\r\n    private syncAnimation(): void {\r\n        const el = this.wrapperRef()?.nativeElement;\r\n        if (!el) return;\r\n\r\n        if (this.isIndeterminate()) {\r\n            // Já existe e está rodando? Não recria.\r\n            if (this.spinAnimation && this.spinAnimation.playState === 'running') return;\r\n\r\n            // Cria animação WAAPI — roda no compositor, não passa por CSS.\r\n            this.spinAnimation = el.animate(\r\n                [{ transform: 'rotate(0deg)' }, { transform: 'rotate(360deg)' }],\r\n                {\r\n                    duration: 850,\r\n                    iterations: Infinity,\r\n                    easing: 'linear',\r\n                },\r\n            );\r\n        } else {\r\n            // Determinate: para a animação se estiver rodando.\r\n            this.spinAnimation?.cancel();\r\n            this.spinAnimation = null;\r\n        }\r\n    }\r\n}\r\n","<!-- Wrapper recebe a animação WAAPI (Web Animations API) via component code.\r\n     Determinate: SVG inteiro rotaciona -90deg via CSS pra arc começar em 12h.\r\n     Indeterminate: wrapper rotaciona 360° contínuo via WAAPI. -->\r\n<div class=\"spinner-wrapper\" #wrapper>\r\n    <svg [attr.viewBox]=\"'0 0 ' + diameter() + ' ' + diameter()\"\r\n         [attr.width]=\"diameter()\"\r\n         [attr.height]=\"diameter()\"\r\n         class=\"spinner\"\r\n         [class.spinner--determinate]=\"!isIndeterminate()\">\r\n        <!-- Track (rail completo) — sempre visível como base. -->\r\n        <circle class=\"spinner-track\"\r\n                [attr.cx]=\"center()\"\r\n                [attr.cy]=\"center()\"\r\n                [attr.r]=\"radius()\"\r\n                [attr.stroke-width]=\"strokeWidth()\"\r\n                fill=\"none\">\r\n        </circle>\r\n\r\n        <!-- Arc (cor semântica) — indeterminate: 25% gira; determinate: preenche por dashOffset. -->\r\n        <circle class=\"spinner-arc path\"\r\n                [attr.cx]=\"center()\"\r\n                [attr.cy]=\"center()\"\r\n                [attr.r]=\"radius()\"\r\n                [attr.stroke-width]=\"strokeWidth()\"\r\n                [attr.stroke-dasharray]=\"dashArray()\"\r\n                [attr.stroke-dashoffset]=\"dashOffset()\"\r\n                stroke-linecap=\"round\"\r\n                fill=\"none\">\r\n        </circle>\r\n    </svg>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaSpinnerComponent } from './spinner/spinner.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaSpinnerComponent],\r\n  exports: [MatchaSpinnerComponent]\r\n})\r\nexport class MatchaSpinnerModule { }\r\n\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    computed,\r\n    input,\r\n    numberAttribute,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { sizeAlias } from '../../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type ProgressBarType = 'standard' | 'multi-level' | 'informative' | 'segmented';\r\n// Canonical by extension; abbreviations (xs/sm/md) accepted as @deprecated aliases.\r\n// `default` renders exactly like `tiny` (4px) — kept for backwards compatibility only.\r\nexport type ProgressBarSize = 'default' | 'tiny' | 'small' | 'medium';\r\nexport type ProgressBarColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info';\r\n\r\n/** Segmento individual em multi-level (ex: thresholds de quota: 50% verde, 25% amarelo, 5% vermelho). */\r\nexport interface ProgressSegment {\r\n    /** Cor semântica DSV3. Usa fallback accent se não setada. */\r\n    color: ProgressBarColor;\r\n    /** Valor do segmento em % (0-100). Soma dos segments pode ser ≤100; o resto fica como track. */\r\n    value: number;\r\n    /** Label opcional pra tooltip / aria. */\r\n    label?: string;\r\n}\r\n\r\n/**\r\n * matcha-progress-bar — Barra de progresso linear (Figma DSV3 1:1).\r\n *\r\n * 4 tipos canônicos:\r\n *   • standard      — bar contínua simples (com % label inline em sm/md)\r\n *   • multi-level   — N segmentos coloridos lado a lado (thresholds, quotas)\r\n *   • informative   — card com %, descrição, ETA + bar 4px embaixo\r\n *   • segmented     — N steps discretos com gap (wizard, multi-step)\r\n *\r\n * 4 tamanhos: default (4) · tiny (8) · small (16) · medium (32). small/medium em\r\n * standard mostram % label inline. (xs/sm/md são alias @deprecated.)\r\n *\r\n *   <!-- Standard -->\r\n *   <matcha-progress-bar size=\"small\" [progress]=\"65\" showLabel></matcha-progress-bar>\r\n *\r\n *   <!-- Standard indeterminate (sem [progress] = anima dual-scan) -->\r\n *   <matcha-progress-bar color=\"accent\"></matcha-progress-bar>\r\n *\r\n *   <!-- Multi-level -->\r\n *   <matcha-progress-bar type=\"multi-level\" size=\"md\"\r\n *     [segments]=\"[{color:'danger',value:50},{color:'warn',value:25},{color:'success',value:15}]\">\r\n *   </matcha-progress-bar>\r\n *\r\n *   <!-- Informative -->\r\n *   <matcha-progress-bar type=\"informative\" [progress]=\"35\"\r\n *     description=\"Enviando arquivo…\" timeEstimate=\"2 min restantes\">\r\n *   </matcha-progress-bar>\r\n *\r\n *   <!-- Segmented -->\r\n *   <matcha-progress-bar type=\"segmented\" size=\"md\" [steps]=\"4\" [current]=\"2\">\r\n *   </matcha-progress-bar>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-progress-bar',\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    templateUrl: './progress-bar.component.html',\r\n    styleUrls: ['./progress-bar.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-progress-bar',\r\n        'role': 'progressbar',\r\n        '[attr.type]': 'type()',\r\n        '[attr.size]': 'size()',\r\n        '[attr.color]': 'color()',\r\n        '[attr.aria-valuemin]': '0',\r\n        '[attr.aria-valuemax]': 'type() === \"segmented\" ? effectiveSteps() : 100',\r\n        '[attr.aria-valuenow]': 'ariaValueNow()',\r\n        '[attr.aria-label]': 'ariaLabel() || null',\r\n        '[attr.aria-busy]': 'isIndeterminate() ? \"true\" : null',\r\n    },\r\n})\r\nexport class MatchaProgressBarComponent {\r\n    // ── Inputs ──────────────────────────────────────────────────────────────\r\n    /** Tipo do progress bar (4 variantes Figma DSV3). */\r\n    readonly type = input<ProgressBarType>('standard');\r\n\r\n    /** Tamanho da barra: tiny=4px (slim), small=16, medium=32. Abreviados (xs/sm/md) aceitos\r\n     *  como alias @deprecated. `'default'` é sinônimo de `tiny` — mantido só por\r\n     *  retrocompatibilidade, use `tiny` em código novo. */\r\n    readonly size = input<ProgressBarSize | string, string>('default', { transform: (v) => sizeAlias(v) });\r\n\r\n    /** Cor semântica DSV3. */\r\n    readonly color = input<ProgressBarColor | string>('accent');\r\n\r\n    /** Progresso 0-100 (standard, informative). Omitido/null = indeterminate (standard);\r\n     *  0 explícito = \"0% completo\" (determinate). */\r\n    readonly progress = input(NaN, { transform: numberAttribute });\r\n\r\n    /** Texto custom dentro da bar — APENAS em standard small/medium.\r\n     *  Em outros types/sizes é ignorado silenciosamente (a bar é fina demais ou tem layout fixo). */\r\n    readonly text = input<string>('');\r\n\r\n    /** Mostrar % label inline (auto em small/medium de standard; outros precisam ativar). */\r\n    readonly showLabel = input(false, { transform: booleanAttribute });\r\n\r\n    /** Descrição do informative (texto do meio). */\r\n    readonly description = input<string>('');\r\n\r\n    /** Tempo estimado / ETA (texto da direita do informative). */\r\n    readonly timeEstimate = input<string>('');\r\n\r\n    /** Total de steps em segmented mode. Clamped pra mínimo 2 (1 step não faz sentido). */\r\n    readonly steps = input(4, { transform: numberAttribute });\r\n\r\n    /** Step atual em segmented (0-based; 0 = nada preenchido, steps = tudo). */\r\n    readonly current = input(0, { transform: numberAttribute });\r\n\r\n    /** Lista de segmentos coloridos em multi-level. Sum > 100 é normalizado proporcionalmente. */\r\n    readonly segments = input<ProgressSegment[]>([]);\r\n\r\n    /** aria-label descritivo (sempre setar pra a11y completa). */\r\n    readonly ariaLabel = input<string>('');\r\n\r\n    // ── Computed ────────────────────────────────────────────────────────────\r\n    // Indeterminate = progress NÃO definido (omitido/null → NaN após o transform).\r\n    // Progress=0 NÃO é indeterminate — é \"0% completo\" (estado válido).\r\n    readonly isIndeterminate = computed<boolean>(() => {\r\n        return this.type() === 'standard' && Number.isNaN(Number(this.progress()));\r\n    });\r\n\r\n    /** Progress numérico pra display/width — NaN (indeterminate/omitido) vira 0. */\r\n    readonly displayProgress = computed<number>(() => {\r\n        const p = Number(this.progress());\r\n        return Number.isNaN(p) ? 0 : p;\r\n    });\r\n\r\n    /** aria-valuenow — omitido em indeterminate (spec ARIA); step atual em segmented. */\r\n    readonly ariaValueNow = computed<number | null>(() => {\r\n        if (this.type() === 'segmented') return this.current();\r\n        if (this.isIndeterminate()) return null;\r\n        return this.displayProgress();\r\n    });\r\n\r\n    readonly progressWidth = computed<string>(() => {\r\n        const p = Math.min(Math.max(this.displayProgress(), 0), 100);\r\n        return `${p}%`;\r\n    });\r\n\r\n    /** Máscara do label da frente (.progress-text-fg): revela só o trecho que está\r\n     *  sobre o fill, deixando o resto pro label de trás (.progress-text-bg), que usa\r\n     *  a cor de contraste do track. É o que faz o texto trocar de cor na borda do fill. */\r\n    readonly labelClip = computed<string>(() =>\r\n        `inset(0 calc(100% - ${this.progressWidth()}) 0 0)`,\r\n    );\r\n\r\n    /** Steps efetivos (clamped pra ≥2 — 1 step ou 0 não faz sentido visual). */\r\n    readonly effectiveSteps = computed<number>(() =>\r\n        Math.max(2, Math.floor(Number(this.steps()) || 0)),\r\n    );\r\n\r\n    /** Array indexado pros *ngFor de segmented. */\r\n    readonly segmentArray = computed<number[]>(() =>\r\n        Array.from({ length: this.effectiveSteps() }, (_, i) => i),\r\n    );\r\n\r\n    isSegmentFilled(index: number): boolean {\r\n        return index < this.current();\r\n    }\r\n\r\n    /** Segments efetivos pra multi-level — normaliza valores se sum > 100 (preserva proporção). */\r\n    readonly effectiveSegments = computed<ProgressSegment[]>(() => {\r\n        const segs = this.segments();\r\n        if (!segs.length) return [];\r\n        const sum = segs.reduce((acc, s) => acc + Math.max(0, Number(s.value) || 0), 0);\r\n        if (sum <= 100) return segs;\r\n        // Proporcional: 110 vira 100, 200 vira 100 — preserva o ratio entre segments.\r\n        const factor = 100 / sum;\r\n        return segs.map(s => ({ ...s, value: Math.max(0, Number(s.value) || 0) * factor }));\r\n    });\r\n\r\n    /** Label automático mostrado dentro da bar em standard sm/md. */\r\n    readonly inlineLabel = computed<string>(() => {\r\n        if (this.text()) return this.text();\r\n        if (!this.showLabel() && !this.shouldAutoShowLabel()) return '';\r\n        return `${Math.round(this.displayProgress())}%`;\r\n    });\r\n\r\n    /** small/medium de standard mostram label automaticamente (Figma spec). */\r\n    private shouldAutoShowLabel(): boolean {\r\n        return this.type() === 'standard' && (this.size() === 'small' || this.size() === 'medium');\r\n    }\r\n\r\n    trackByIndex(index: number): number { return index; }\r\n}\r\n","<!-- ═══════════════════════════════════════════════════════════════════════\r\n     matcha-progress-bar — render condicional por type\r\n     ═══════════════════════════════════════════════════════════════════════ -->\r\n\r\n<!-- ═══ Standard ═══ -->\r\n<ng-container *ngIf=\"type() === 'standard'\">\r\n    <div class=\"progress\">\r\n        <!-- Indeterminate (sem [progress]): animação de scan via :before/:after no theme -->\r\n        <div *ngIf=\"isIndeterminate()\" class=\"progress-indeterminate\"></div>\r\n\r\n        <!-- Determinate: label duplicado + barra preenchida entre os dois.\r\n             O label NÃO pode viver dentro do .progress-fill: a largura do fill É o\r\n             progresso, então em 3% o texto vaza pro track e sai meio na cor do fill,\r\n             meio ilegível. Os dois labels cobrem o track INTEIRO (portanto alinhados\r\n             pixel a pixel) e o fill opaco fica entre eles no eixo z:\r\n               • -bg (z-1) atrás do fill  → só aparece no trecho NÃO preenchido\r\n               • -fg (z-3) na frente, recortado por clip-path na largura do progresso\r\n                 → só aparece sobre o fill\r\n             A cor troca exatamente na borda do fill, sem JS e sem mix-blend-mode. -->\r\n        <ng-container *ngIf=\"!isIndeterminate()\">\r\n            <div *ngIf=\"inlineLabel()\"\r\n                 class=\"progress-text progress-text-bg\"\r\n                 aria-hidden=\"true\">{{ inlineLabel() }}</div>\r\n\r\n            <div class=\"progress-fill\" [style.width]=\"progressWidth()\"></div>\r\n\r\n            <div *ngIf=\"inlineLabel()\"\r\n                 class=\"progress-text progress-text-fg\"\r\n                 aria-hidden=\"true\"\r\n                 [style.clip-path]=\"labelClip()\">{{ inlineLabel() }}</div>\r\n        </ng-container>\r\n    </div>\r\n</ng-container>\r\n\r\n<!-- ═══ Multi-level ═══ -->\r\n<!-- effectiveSegments normaliza sum > 100 proporcionalmente.\r\n     role=\"img\" + aria-label permite ao leitor de tela anunciar cada segment. -->\r\n<ng-container *ngIf=\"type() === 'multi-level'\">\r\n    <div class=\"progress progress--multi\">\r\n        <div *ngFor=\"let seg of effectiveSegments(); trackBy: trackByIndex\"\r\n             class=\"progress-segment-color\"\r\n             [attr.data-segment-color]=\"seg.color\"\r\n             [style.width.%]=\"seg.value\"\r\n             [attr.role]=\"seg.label ? 'img' : null\"\r\n             [attr.aria-label]=\"seg.label || null\">\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n\r\n<!-- ═══ Informative ═══ -->\r\n<ng-container *ngIf=\"type() === 'informative'\">\r\n    <div class=\"progress-info\">\r\n        <div class=\"progress-info__row\">\r\n            <span class=\"progress-info__percentage\">{{ displayProgress() }}%</span>\r\n            <span *ngIf=\"description()\" class=\"progress-info__description\">{{ description() }}</span>\r\n            <span *ngIf=\"timeEstimate()\" class=\"progress-info__eta\">{{ timeEstimate() }}</span>\r\n        </div>\r\n        <div class=\"progress progress--info-track\">\r\n            <div class=\"progress-fill\" [style.width]=\"progressWidth()\"></div>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n\r\n<!-- ═══ Segmented ═══ -->\r\n<ng-container *ngIf=\"type() === 'segmented'\">\r\n    <div class=\"progress-segmented\">\r\n        <div *ngFor=\"let i of segmentArray(); trackBy: trackByIndex\"\r\n             class=\"progress-segment\"\r\n             [class.is-filled]=\"isSegmentFilled(i)\">\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaProgressBarComponent } from './progress-bar/progress-bar.component';\r\nimport { MatchaCardModule } from '../matcha-card/card.module';\r\n\r\n@NgModule({\r\n  imports: [MatchaProgressBarComponent, MatchaCardModule],\r\n    exports: [MatchaProgressBarComponent]\r\n})\r\nexport class MatchaProgressBarModule { }\r\n\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  booleanAttribute,\r\n  input,\r\n  output,\r\n  signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-tab — Tab item de conteúdo. Filho de `<matcha-tabs>`.\r\n *\r\n *   <matcha-tab title=\"Geral\" icon=\"home\">conteúdo aqui</matcha-tab>\r\n *   <matcha-tab title=\"Avançado\" disabled>...</matcha-tab>\r\n *   <matcha-tab title=\"Inbox\" [badge]=\"3\">...</matcha-tab>\r\n *   <matcha-tab title=\"Editor\" closable (close)=\"onClose()\">...</matcha-tab>\r\n *\r\n * A11y canon: host vira tabpanel sempre — role/aria-labelledby/id setados\r\n * pelo parent. Hidden quando não ativo via [hidden] attr.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-tab',\r\n  templateUrl: './tab-item.component.html',\r\n  styleUrls: ['./tab-item.component.scss'],\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    'role': 'tabpanel',\r\n    '[attr.aria-labelledby]': 'uid() + \"-tab-\" + tabIndex()',\r\n    '[attr.id]': 'uid() + \"-tab-panel-\" + tabIndex()',\r\n    '[attr.tabindex]': 'active() ? 0 : null',\r\n    '[hidden]': '!active()',\r\n    '[class.matcha-tab-fade-in]': 'active()',\r\n  },\r\n})\r\nexport class MatchaTabItemComponent {\r\n  /** Label exibido no tab button. */\r\n  readonly title = input<string>('', { alias: 'title' });\r\n\r\n  /** Icon name opcional (matcha-icon). */\r\n  readonly icon = input<string>('');\r\n\r\n  /** Quando true, o tab não é selecionável (visual + keyboard). */\r\n  readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n  /** Badge numérica ou string mostrada ao lado do label (ex: contagem de notifs). */\r\n  readonly badge = input<string | number | null>(null);\r\n\r\n  /** Mostra botão de fechar (X) no tab. Útil pra editor-like / browser tabs. */\r\n  readonly closable = input(false, { transform: booleanAttribute });\r\n\r\n  /** Emit quando o consumer clica no X do tab closable. */\r\n  readonly close = output<void>();\r\n\r\n  /** State interno controlado pelo parent (matcha-tabs). */\r\n  private readonly _active = signal(false);\r\n  private readonly _tabIndex = signal(0);\r\n  private readonly _uid = signal('matcha-tabs');\r\n\r\n  readonly active = this._active.asReadonly();\r\n  readonly tabIndex = this._tabIndex.asReadonly();\r\n  readonly uid = this._uid.asReadonly();\r\n\r\n  /** Chamado pelo parent pra ativar/desativar o tab. */\r\n  setActive(value: boolean): void {\r\n    this._active.set(value);\r\n  }\r\n\r\n  /** Chamado pelo parent pra dizer qual é o index (pra wire aria-labelledby/id). */\r\n  setIndex(index: number): void {\r\n    this._tabIndex.set(index);\r\n  }\r\n\r\n  /** Chamado pelo parent pra setar o UID da instância (pra IDs únicos). */\r\n  setUid(uid: string): void {\r\n    this._uid.set(uid);\r\n  }\r\n\r\n  /** Disparado pelo parent quando consumer clica no X. */\r\n  emitClose(): void {\r\n    this.close.emit();\r\n  }\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n  AfterContentInit,\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChildren,\r\n  DestroyRef,\r\n  ElementRef,\r\n  HostListener,\r\n  QueryList,\r\n  ViewChildren,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  computed,\r\n  effect,\r\n  inject,\r\n  input,\r\n  numberAttribute,\r\n  output,\r\n  signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaTabItemComponent } from '../tab-item/tab-item.component';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type TabTipo = 'underline' | 'card';\r\nexport type TabOrientation = 'horizontal' | 'vertical';\r\n\r\nexport interface TabChangeEvent {\r\n  index: number;\r\n  tab?: MatchaTabItemComponent;\r\n}\r\n\r\n/** Contador estático pra IDs únicos por instância. */\r\nlet _matchaTabsUid = 0;\r\n\r\n/**\r\n * matcha-tabs — Tablist canon WAI-ARIA (Figma DSV3 15768:76).\r\n *\r\n * 2 tipos (Underline · Card) × 3 estados (Default · Selecionado · Disabled)\r\n * × Orientação Horizontal sempre · Vertical só pro Card.\r\n *\r\n * A11y canon:\r\n *   - role=\"tablist\" no host\r\n *   - role=\"tab\" em cada item + aria-selected + aria-controls\r\n *   - Roving tabindex (tabindex=0 no ativo, -1 nos outros)\r\n *   - Keyboard: ←/→ (horizontal) ou ↑/↓ (vertical) · Home/End · Enter/Space\r\n *   - Swipe touch em mobile (esquerda/direita troca tab)\r\n *\r\n *   <matcha-tabs [(selectedIndex)]=\"idx\" tipo=\"underline\">\r\n *     <matcha-tab title=\"Geral\" icon=\"home\">...</matcha-tab>\r\n *     <matcha-tab title=\"Avançado\" icon=\"settings\" [badge]=\"3\">...</matcha-tab>\r\n *     <matcha-tab title=\"Aba editor\" closable (close)=\"closeTab($event)\">...</matcha-tab>\r\n *   </matcha-tabs>\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-tabs',\r\n  templateUrl: './tabs.component.html',\r\n  styleUrls: ['./tabs.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, CommonModule],\r\n  host: {\r\n    'role': 'tablist',\r\n    '[attr.aria-orientation]': 'effectiveOrientation()',\r\n    '[attr.data-tipo]': 'tipo()',\r\n    '[attr.equal-width]': 'equalWidth() ? \"\" : null',\r\n  },\r\n})\r\nexport class MatchaTabsComponent implements AfterContentInit, AfterViewInit {\r\n  @ContentChildren(MatchaTabItemComponent) tabs!: QueryList<MatchaTabItemComponent>;\r\n  @ViewChildren('tabBtn') tabBtns?: QueryList<ElementRef<HTMLButtonElement>>;\r\n\r\n  /** Visual style — Underline (nav clássica) ou Card (icon card grid). */\r\n  readonly tipo = input<TabTipo>('underline');\r\n\r\n  /**\r\n   * Grid responsivo no mobile: quebra as tabs em 1, 2 ou 3 colunas e volta a\r\n   * scroll horizontal em >=1024px. Compat com a API do master (fix IN-39107),\r\n   * que cobria 2|3 — `1` (coluna única, tabs empilhadas) é aditivo.\r\n   */\r\n  readonly responsiveGrid = input<1 | 2 | 3 | null>(null);\r\n\r\n  /** Orientation — só faz sentido pro Card. Underline é sempre horizontal. */\r\n  readonly orientation = input<TabOrientation>('horizontal');\r\n\r\n  /** Índice do tab selecionado (0-based). Two-way bindable. */\r\n  readonly selectedIndex = input(0, { transform: numberAttribute });\r\n\r\n  /**\r\n   * @deprecated No-op desde 2026-08-04 — o scroll horizontal do Underline virou\r\n   * o comportamento padrão em qualquer viewport (a linha de tabs nunca vaza do\r\n   * container). Mantido por compatibilidade; passar `scrollable` não muda nada.\r\n   * A única configuração que troca o layout é `responsiveGrid`.\r\n   */\r\n  readonly scrollable = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Distribui largura igual entre tabs em modo Card (cada tab `flex: 1 1 0`).\r\n   * Útil quando os tabs funcionam como navegação fixa em row — ex: tabs de\r\n   * página com 6 seções (Perfil / Pessoais / Contatos / Igreja / etc).\r\n   * Default false — preserva comportamento atual (largura por conteúdo).\r\n   */\r\n  readonly equalWidth = input(false, { transform: booleanAttribute });\r\n\r\n  /** Emit quando o usuário seleciona um tab (sync com [(selectedIndex)]). */\r\n  readonly selectedIndexChange = output<number>();\r\n  readonly selectedTabChange   = output<TabChangeEvent>();\r\n\r\n  /** State interno do índice atual — espelha o input, mas pode ser alterado por click/keyboard. */\r\n  private readonly _currentIndex = signal(0);\r\n  readonly currentIndex = this._currentIndex.asReadonly();\r\n\r\n  /** Orientation efetiva — Underline é sempre horizontal (canon Figma). */\r\n  readonly effectiveOrientation = computed<TabOrientation>(() =>\r\n    this.tipo() === 'underline' ? 'horizontal' : this.orientation()\r\n  );\r\n\r\n  /** UID único pra evitar colisão de IDs entre múltiplas instâncias na mesma página. */\r\n  readonly uid = `matcha-tabs-${++_matchaTabsUid}`;\r\n\r\n  /** CSS vars pro sliding indicator do Underline (left/width). */\r\n  readonly indicatorLeft  = signal(0);\r\n  readonly indicatorWidth = signal(0);\r\n\r\n  private readonly _cdr = inject(ChangeDetectorRef);\r\n  private readonly _elRef = inject(ElementRef<HTMLElement>);\r\n  private readonly _destroyRef = inject(DestroyRef);\r\n\r\n  private _resizeObserver?: ResizeObserver;\r\n\r\n  // Touch swipe state\r\n  private _touchStartX = 0;\r\n  private _touchStartY = 0;\r\n  private static readonly SWIPE_THRESHOLD = 50;\r\n\r\n  constructor() {\r\n    // Sincroniza input → state. Se consumer mudar [selectedIndex], reflete.\r\n    effect(() => {\r\n      this._currentIndex.set(this.selectedIndex());\r\n    });\r\n\r\n    // Quando state muda, propaga pros tab-items (active flag) + update indicator + auto-scroll.\r\n    effect(() => {\r\n      const idx = this._currentIndex();\r\n      if (!this.tabs) return;\r\n      this.tabs.forEach((tab, i) => tab.setActive(i === idx));\r\n      queueMicrotask(() => {\r\n        this._updateIndicator();\r\n        this._scrollActiveIntoView();\r\n      });\r\n    });\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    // Sync inicial (index + active + uid) + re-sync se ContentChildren mudar.\r\n    this._syncAll();\r\n    this.tabs.changes\r\n      .pipe(takeUntilDestroyed(this._destroyRef))\r\n      .subscribe(() => {\r\n        this._syncAll();\r\n        // A QueryList de ContentChildren mudar NÃO marca este componente\r\n        // (OnPush) como dirty: o `*ngFor` do nav itera a QueryList, então sem\r\n        // markForCheck os botões só re-renderizavam quando algo mais sujava a\r\n        // view (troca de selectedIndex, clique). Sintoma: consumer adiciona uma\r\n        // tab e o botão dela não aparece até interagir com o tablist.\r\n        this._cdr.markForCheck();\r\n        // `_observeLayout` não precisa ser chamado aqui: a QueryList de\r\n        // ViewChildren (tabBtns) muda em seguida e a subscription dela re-observa.\r\n        queueMicrotask(() => this._updateIndicator());\r\n      });\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    queueMicrotask(() => this._updateIndicator());\r\n    this._observeLayout();\r\n    this.tabBtns?.changes\r\n      .pipe(takeUntilDestroyed(this._destroyRef))\r\n      .subscribe(() => this._observeLayout());\r\n    this._destroyRef.onDestroy(() => this._resizeObserver?.disconnect());\r\n  }\r\n\r\n  /**\r\n   * Re-mede o indicator quando o layout muda sem resize de janela. Trocar o\r\n   * conteúdo de um tab (ícone, badge, label) muda a largura dos itens sem\r\n   * disparar `window:resize` nem `tabs.changes` — sem isso a medida antiga fica\r\n   * valendo e o indicator aparece deslocado. Observa o nav (largura do\r\n   * container) e cada botão (largura do item).\r\n   */\r\n  private _observeLayout(): void {\r\n    if (typeof ResizeObserver === 'undefined') return;\r\n    this._resizeObserver?.disconnect();\r\n    this._resizeObserver = new ResizeObserver(() => this._updateIndicator());\r\n    const nav = this._elRef.nativeElement.querySelector('nav');\r\n    if (nav) this._resizeObserver.observe(nav);\r\n    this.tabBtns?.forEach(btn => this._resizeObserver?.observe(btn.nativeElement));\r\n  }\r\n\r\n  private _syncAll(): void {\r\n    const idx = this._currentIndex();\r\n    this.tabs.forEach((tab, i) => {\r\n      tab.setIndex(i);\r\n      tab.setUid(this.uid);\r\n      tab.setActive(i === idx);\r\n    });\r\n  }\r\n\r\n  /** Mede posição do tab ativo via offsetLeft/offsetWidth (mais previsível). */\r\n  private _updateIndicator(): void {\r\n    const idx = this._currentIndex();\r\n    const btn = this.tabBtns?.get(idx)?.nativeElement;\r\n    if (!btn) return;\r\n    this.indicatorLeft.set(btn.offsetLeft);\r\n    this.indicatorWidth.set(btn.offsetWidth);\r\n  }\r\n\r\n  /** Scroll horizontal se o tab ativo estiver fora do viewport visível. */\r\n  private _scrollActiveIntoView(): void {\r\n    const idx = this._currentIndex();\r\n    const btn = this.tabBtns?.get(idx)?.nativeElement;\r\n    if (!btn) return;\r\n    btn.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\r\n  }\r\n\r\n  selectTabByIndex(index: number): void {\r\n    const arr = this.tabs?.toArray() ?? [];\r\n    if (index < 0 || index >= arr.length) return;\r\n    if (arr[index].disabled()) return;\r\n\r\n    this._currentIndex.set(index);\r\n    this.selectedIndexChange.emit(index);\r\n    this.selectedTabChange.emit({ index, tab: arr[index] });\r\n\r\n    // Foca o novo tab ativo (roving tabindex).\r\n    queueMicrotask(() => this.tabBtns?.get(index)?.nativeElement.focus());\r\n  }\r\n\r\n  closeTab(event: Event, index: number): void {\r\n    event.stopPropagation();\r\n    const tab = this.tabs?.toArray()[index];\r\n    if (!tab) return;\r\n    tab.emitClose();\r\n  }\r\n\r\n  /** Keyboard nav (canon WAI-ARIA tablist). */\r\n  onTabKeydown(event: KeyboardEvent, currentIndex: number): void {\r\n    const total = this.tabs?.length ?? 0;\r\n    if (total === 0) return;\r\n\r\n    const isVertical = this.effectiveOrientation() === 'vertical';\r\n    const nextKey = isVertical ? 'ArrowDown' : 'ArrowRight';\r\n    const prevKey = isVertical ? 'ArrowUp'   : 'ArrowLeft';\r\n\r\n    let next: number | null = null;\r\n    switch (event.key) {\r\n      case nextKey: next = (currentIndex + 1) % total; break;\r\n      case prevKey: next = (currentIndex - 1 + total) % total; break;\r\n      case 'Home':  next = 0; break;\r\n      case 'End':   next = total - 1; break;\r\n      case 'Enter':\r\n      case ' ':\r\n        event.preventDefault();\r\n        this.selectTabByIndex(currentIndex);\r\n        return;\r\n      default: return;\r\n    }\r\n    event.preventDefault();\r\n    // Pula tabs disabled\r\n    const arr = this.tabs.toArray();\r\n    let safe = next!;\r\n    let attempts = 0;\r\n    while (arr[safe]?.disabled() && attempts < total) {\r\n      safe = (safe + (next! > currentIndex ? 1 : -1) + total) % total;\r\n      attempts++;\r\n    }\r\n    if (!arr[safe]?.disabled()) {\r\n      this.selectTabByIndex(safe);\r\n    }\r\n  }\r\n\r\n  /** Re-mede indicator quando viewport muda (window resize). */\r\n  @HostListener('window:resize')\r\n  onResize(): void {\r\n    this._updateIndicator();\r\n  }\r\n\r\n  /** Touch swipe gesture — canon mobile (iOS/Android). */\r\n  onTouchStart(e: TouchEvent): void {\r\n    if (e.touches.length !== 1) return;\r\n    this._touchStartX = e.touches[0].clientX;\r\n    this._touchStartY = e.touches[0].clientY;\r\n  }\r\n\r\n  onTouchEnd(e: TouchEvent): void {\r\n    if (e.changedTouches.length !== 1) return;\r\n    const dx = e.changedTouches[0].clientX - this._touchStartX;\r\n    const dy = e.changedTouches[0].clientY - this._touchStartY;\r\n    // Só dispara se gesto for predominantemente horizontal (evita scroll vertical conflict)\r\n    if (Math.abs(dx) < MatchaTabsComponent.SWIPE_THRESHOLD || Math.abs(dx) < Math.abs(dy)) return;\r\n\r\n    const total = this.tabs?.length ?? 0;\r\n    if (total === 0) return;\r\n    const dir = dx < 0 ? 1 : -1;\r\n    let next = this._currentIndex() + dir;\r\n    if (next < 0 || next >= total) return;\r\n    // Pula disabled\r\n    const arr = this.tabs.toArray();\r\n    let attempts = 0;\r\n    while (arr[next]?.disabled() && next >= 0 && next < total && attempts < total) {\r\n      next += dir;\r\n      attempts++;\r\n    }\r\n    if (next >= 0 && next < total && !arr[next]?.disabled()) {\r\n      this.selectTabByIndex(next);\r\n    }\r\n  }\r\n\r\n  trackByIndex(index: number): number { return index; }\r\n}\r\n","<nav [class]=\"tipo() === 'underline' ? 'matcha-tab-underline' : 'matcha-tab-card'\"\r\n     [class.matcha-tab-vertical]=\"effectiveOrientation() === 'vertical'\"\r\n     [class.matcha-tab-scrollable]=\"scrollable() && tipo() === 'underline'\"\r\n     [class.matcha-tab-equal-width]=\"equalWidth() && tipo() === 'card'\"\r\n     [class.tabs-nav-responsive-grid]=\"!!responsiveGrid()\"\r\n     [class.tabs-nav-responsive-grid-1]=\"responsiveGrid() === 1\"\r\n     [class.tabs-nav-responsive-grid-2]=\"responsiveGrid() === 2\"\r\n     [class.tabs-nav-responsive-grid-3]=\"responsiveGrid() === 3\"\r\n     role=\"presentation\"\r\n     [style.--matcha-tab-indicator-left.px]=\"indicatorLeft()\"\r\n     [style.--matcha-tab-indicator-width.px]=\"indicatorWidth()\">\r\n  <button *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\"\r\n          #tabBtn\r\n          type=\"button\"\r\n          class=\"matcha-tab-item\"\r\n          role=\"tab\"\r\n          [class.active]=\"tab.active()\"\r\n          [disabled]=\"tab.disabled()\"\r\n          [attr.aria-selected]=\"tab.active()\"\r\n          [attr.aria-disabled]=\"tab.disabled() ? 'true' : null\"\r\n          [attr.aria-controls]=\"uid + '-tab-panel-' + i\"\r\n          [attr.id]=\"uid + '-tab-' + i\"\r\n          [attr.tabindex]=\"tab.active() ? 0 : -1\"\r\n          (click)=\"selectTabByIndex(i)\"\r\n          (keydown)=\"onTabKeydown($event, i)\">\r\n    <matcha-icon *ngIf=\"tab.icon()\" [name]=\"tab.icon()\" size=\"md\" aria-hidden=\"true\"></matcha-icon>\r\n    <span class=\"matcha-tab-item__label\">{{ tab.title() }}</span>\r\n    <span *ngIf=\"tab.badge() !== null && tab.badge() !== undefined\"\r\n          class=\"matcha-tab-item__badge\"\r\n          aria-hidden=\"true\">\r\n      {{ tab.badge() }}\r\n    </span>\r\n    <span *ngIf=\"tab.closable()\"\r\n          class=\"matcha-tab-item__close\"\r\n          role=\"button\"\r\n          tabindex=\"-1\"\r\n          [attr.aria-label]=\"'Fechar ' + tab.title()\"\r\n          (click)=\"closeTab($event, i)\"\r\n          (keydown.enter)=\"closeTab($event, i)\"\r\n          (keydown.space)=\"closeTab($event, i)\">\r\n      <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\r\n        <path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"2\"\r\n              stroke-linecap=\"round\" fill=\"none\"/>\r\n      </svg>\r\n    </span>\r\n  </button>\r\n\r\n  <!-- Sliding indicator (só Underline) -->\r\n  <span *ngIf=\"tipo() === 'underline'\"\r\n        class=\"matcha-tab-indicator\"\r\n        aria-hidden=\"true\"></span>\r\n</nav>\r\n\r\n<div class=\"matcha-tabs__content\"\r\n     (touchstart)=\"onTouchStart($event)\"\r\n     (touchend)=\"onTouchEnd($event)\">\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaTabsComponent } from './tabs/tabs.component';\r\nimport { MatchaTabItemComponent } from './tab-item/tab-item.component';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\n\r\nexport { TabChangeEvent, TabTipo, TabOrientation } from './tabs/tabs.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaTabsComponent,\r\n    MatchaTabItemComponent,\r\n    MatchaIconModule\r\n  ],\r\n  exports: [\r\n    MatchaTabsComponent,\r\n    MatchaTabItemComponent\r\n  ]\r\n})\r\nexport class MatchaTabsModule { }\r\n","import { NgModule } from '@angular/core';\nimport { MatchaTextComponent } from './matcha-text.component';\n\n@NgModule({\n    imports: [MatchaTextComponent],\n    exports: [MatchaTextComponent],\n})\nexport class MatchaTextModule {}\n","import { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatchaFieldRangeComponent } from './field-range/field-range.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaFieldRangeComponent, ReactiveFormsModule],\r\n  exports: [MatchaFieldRangeComponent]\r\n})\r\nexport class MatchaFieldRangeModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatchaTimeComponent } from './time/time.component';\r\nimport { MatchaTimePanelComponent } from './time-panel/time-panel.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaTimeComponent, MatchaTimePanelComponent, ReactiveFormsModule],\r\n  exports: [MatchaTimeComponent, MatchaTimePanelComponent]\r\n})\r\nexport class MatchaTimeModule { }\r\n","import {\r\n  Component, Input, forwardRef, ViewEncapsulation,\r\n  ChangeDetectionStrategy, ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {\r\n  AbstractControl, ControlValueAccessor,\r\n  NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator\r\n} from '@angular/forms';\r\nimport { MatchaDateComponent } from '../../matcha-date/date/matcha-date.component';\r\nimport { MatchaTimeComponent } from '../../matcha-time/time/time.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-datetime: compõe matcha-date + matcha-time em um único campo.\r\n *\r\n * Formato do valor: 'YYYY-MM-DDTHH:mm' (ISO local, sem timezone).\r\n * Ex.: '2026-04-24T14:30'\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-datetime',\r\n  templateUrl: './matcha-datetime.component.html',\r\n  styleUrls: ['./matcha-datetime.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [CommonModule, FormsModule, MatchaDateComponent, MatchaTimeComponent],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MatchaDatetimeComponent),\r\n      multi: true\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: forwardRef(() => MatchaDatetimeComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class MatchaDatetimeComponent implements ControlValueAccessor, Validator {\r\n  @Input() datePlaceholder: string = '__/__/____';\r\n  @Input() timePlaceholder: string = '__:__';\r\n  @Input() min: string = '';                             // 'YYYY-MM-DDTHH:mm' opcional\r\n  @Input() max: string = '';\r\n  @Input() disabled: boolean = false;\r\n  @Input() showPicker: boolean = true;\r\n  @Input() separatorLabel: string = 'às';\r\n\r\n  datePart: string = '';                                  // 'YYYY-MM-DD'\r\n  timePart: string = '';                                  // 'HH:mm'\r\n  isDisabled: boolean = false;\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n  private onChange = (_: any) => {};\r\n  private onTouched = () => {};\r\n\r\n  // ── CVA ──────────────────────────────────────────────────\r\n  writeValue(value: any): void {\r\n    if (typeof value === 'string' && value) {\r\n      const [d, t] = value.split('T');\r\n      this.datePart = d || '';\r\n      this.timePart = (t || '').slice(0, 5);              // corta segundos se vierem\r\n    } else {\r\n      this.datePart = '';\r\n      this.timePart = '';\r\n    }\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  registerOnChange(fn: any): void { this.onChange = fn; }\r\n  registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  onDatePartChange(value: string | null): void {\r\n    this.datePart = value || '';\r\n    this.emit();\r\n  }\r\n\r\n  onTimePartChange(value: string | null): void {\r\n    this.timePart = value || '';\r\n    this.emit();\r\n  }\r\n\r\n  onBlur(): void {\r\n    this.onTouched();\r\n  }\r\n\r\n  private emit(): void {\r\n    if (this.datePart && this.timePart) {\r\n      this.onChange(`${this.datePart}T${this.timePart}`);\r\n    } else if (!this.datePart && !this.timePart) {\r\n      this.onChange(null);\r\n    } else {\r\n      // incompleto — emite null pra validator do host não aceitar\r\n      this.onChange(null);\r\n    }\r\n  }\r\n\r\n  // ── Derived inputs pros filhos ───────────────────────────\r\n  get dateMin(): string { return this.min ? this.min.split('T')[0] : ''; }\r\n  get dateMax(): string { return this.max ? this.max.split('T')[0] : ''; }\r\n  get timeMin(): string {\r\n    if (!this.min || !this.datePart) return '';\r\n    const [d, t] = this.min.split('T');\r\n    return d === this.datePart ? (t || '') : '';\r\n  }\r\n  get timeMax(): string {\r\n    if (!this.max || !this.datePart) return '';\r\n    const [d, t] = this.max.split('T');\r\n    return d === this.datePart ? (t || '') : '';\r\n  }\r\n\r\n  // ── Validator ────────────────────────────────────────────\r\n  validate(_control: AbstractControl): ValidationErrors | null {\r\n    const hasDate = !!this.datePart;\r\n    const hasTime = !!this.timePart;\r\n    if (hasDate && !hasTime) return { datetimeIncomplete: true };\r\n    if (!hasDate && hasTime) return { datetimeIncomplete: true };\r\n    return null;\r\n  }\r\n}\r\n","<div class=\"matcha-datetime-container\">\r\n  <div class=\"matcha-datetime-half matcha-datetime-half--date\">\r\n    <matcha-date\r\n      [ngModel]=\"datePart\"\r\n      (ngModelChange)=\"onDatePartChange($event)\"\r\n      [placeholder]=\"datePlaceholder\"\r\n      [min]=\"dateMin\"\r\n      [max]=\"dateMax\"\r\n      [disabled]=\"disabled || isDisabled\"\r\n      [showPicker]=\"showPicker\"\r\n      (blur)=\"onBlur()\">\r\n    </matcha-date>\r\n  </div>\r\n\r\n  <span class=\"matcha-datetime-separator\">{{ separatorLabel }}</span>\r\n\r\n  <div class=\"matcha-datetime-half matcha-datetime-half--time\">\r\n    <matcha-time\r\n      [ngModel]=\"timePart\"\r\n      (ngModelChange)=\"onTimePartChange($event)\"\r\n      [placeholder]=\"timePlaceholder\"\r\n      [min]=\"timeMin\"\r\n      [max]=\"timeMax\"\r\n      [disabled]=\"disabled || isDisabled\"\r\n      [showPicker]=\"showPicker\"\r\n      (blur)=\"onBlur()\">\r\n    </matcha-time>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDatetimeComponent } from './datetime/matcha-datetime.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule, MatchaDatetimeComponent],\r\n  exports: [MatchaDatetimeComponent]\r\n})\r\nexport class MatchaDatetimeModule {}\r\n","import { Injectable, computed, signal } from '@angular/core';\r\n\r\n/**\r\n * State service do matcha-stepper — sinalizes signals canon DSV3.\r\n *\r\n * Mantém steps definidos via `<matcha-step>` + activeStep (índice 0-based).\r\n * Quando consumer passa `[active]=` antes dos steps registrarem, guardamos em\r\n * `_pendingActiveStep` e aplicamos no setSteps (lifecycle ContentChildren).\r\n */\r\n@Injectable()\r\nexport class MatchaStepperStateService {\r\n  // ── State (signals) ─────────────────────────────────────────────────────\r\n  private readonly _steps = signal<string[]>([]);\r\n  private readonly _activeStep = signal<number>(0);\r\n  /** Steps desabilitados (bloqueados pra navegação) — canon Figma DSV3 estado=Disabled. */\r\n  private readonly _disabledSteps = signal<Set<number>>(new Set());\r\n  /** Steps em loading (modifier visual: spinner em vez de number/check). */\r\n  private readonly _loadingSteps = signal<Set<number>>(new Set());\r\n  private _pendingActiveStep: number | null = null;\r\n\r\n  // ── Public read-only signals ────────────────────────────────────────────\r\n  readonly steps         = this._steps.asReadonly();\r\n  readonly activeStep    = this._activeStep.asReadonly();\r\n  readonly disabledSteps = this._disabledSteps.asReadonly();\r\n  readonly loadingSteps  = this._loadingSteps.asReadonly();\r\n  readonly totalSteps    = computed(() => this._steps().length);\r\n  readonly canGoNext     = computed(() => this._activeStep() < this._steps().length - 1);\r\n  readonly canGoPrev     = computed(() => this._activeStep() > 0);\r\n\r\n  setSteps(steps: string[]): void {\r\n    this._steps.set(steps);\r\n    if (this._pendingActiveStep !== null) {\r\n      this.setActiveStep(this._pendingActiveStep);\r\n      this._pendingActiveStep = null;\r\n    }\r\n  }\r\n\r\n  setActiveStep(index: number): void {\r\n    const steps = this._steps();\r\n    if (steps.length === 0) {\r\n      this._pendingActiveStep = index;\r\n      return;\r\n    }\r\n    if (index >= 0 && index < steps.length) {\r\n      this._activeStep.set(index);\r\n    }\r\n  }\r\n\r\n  nextStep(): void {\r\n    if (this.canGoNext()) this._activeStep.update(s => s + 1);\r\n  }\r\n\r\n  prevStep(): void {\r\n    if (this.canGoPrev()) this._activeStep.update(s => s - 1);\r\n  }\r\n\r\n  /** Marca/desmarca um step como desabilitado. Visual: indicator+label muted + container opacity-50. */\r\n  setStepDisabled(index: number, disabled: boolean): void {\r\n    this._disabledSteps.update(set => {\r\n      const next = new Set(set);\r\n      if (disabled) next.add(index); else next.delete(index);\r\n      return next;\r\n    });\r\n  }\r\n\r\n  isStepDisabled(index: number): boolean {\r\n    return this._disabledSteps().has(index);\r\n  }\r\n\r\n  /**\r\n   * Marca/desmarca um step como loading. Visual: spinner no indicator (substitui\r\n   * number/check). Útil pra validação async / submissão por etapa.\r\n   */\r\n  setStepLoading(index: number, loading: boolean): void {\r\n    this._loadingSteps.update(set => {\r\n      const next = new Set(set);\r\n      if (loading) next.add(index); else next.delete(index);\r\n      return next;\r\n    });\r\n  }\r\n\r\n  isStepLoading(index: number): boolean {\r\n    return this._loadingSteps().has(index);\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  QueryList,\r\n  ViewChildren,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  computed,\r\n  inject,\r\n  input,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { sizeAlias } from '../../shared/size-alias';\r\nimport { MatchaStepperStateService } from '../stepper.service';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaTooltipDirective } from '../../matcha-tooltip/tooltip.directive';\r\n\r\nimport type { StepperOrientation } from '../stepper/stepper.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type StepperSize = 'small' | 'medium';\r\nexport type StepState = 'completo' | 'ativo' | 'pendente' | 'disabled';\r\nexport type StepperVariant = 'pills' | 'progress';\r\n\r\n/**\r\n * matcha-stepper-controller — Indicadores visuais dos steps (canon Figma DSV3 15842:58).\r\n *\r\n * 4 estados canon (completo/ativo/pendente/disabled) × 2 sizes (SM 24 / MD 32).\r\n * Click navega pro step (a menos que `disableNext=true` e o step é futuro,\r\n * ou o step esteja marcado como disabled via service.setStepDisabled(i, true)).\r\n *\r\n * A11y (canon WAI-ARIA Wizard pattern):\r\n *   - role=\"list\" no host; cada step item é role=\"listitem\"\r\n *   - `aria-current=\"step\"` no ativo (leitor anuncia \"etapa atual\")\r\n *   - Keyboard nav: Arrow (←/→ horizontal · ↑/↓ vertical) navega entre steps\r\n *     visualmente; Home/End pula pro primeiro/último; Enter/Space ativa\r\n *   - tabindex: 0 no ativo, -1 nos outros (roving tabindex — só 1 tab stop)\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-stepper-controller',\r\n  templateUrl: './stepper-controller.component.html',\r\n  styleUrls: ['./stepper-controller.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaIconComponent, MatchaTooltipDirective],\r\n  host: {\r\n    'role': 'list',\r\n    '[attr.aria-orientation]': 'orientation()',\r\n    '[attr.aria-label]': 'ariaLabel()',\r\n    '[attr.compact]': 'compact() ? \"\" : null',\r\n  },\r\n})\r\nexport class MatchaStepperControllerComponent {\r\n  /** Bloqueia navegação pra steps futuros (canon wizard linear). */\r\n  readonly disableNext = input(false, { transform: booleanAttribute });\r\n  /** Tamanho — small (compacto, indicator 24) ou medium (indicator 32). Aceita sm/md como aliases @deprecated. */\r\n  readonly size = input<StepperSize, string>('small', { transform: (v) => sizeAlias(v) as StepperSize });\r\n  /** Orientation — horizontal (default) ou vertical (sidebar wizard). */\r\n  readonly orientation = input<StepperOrientation>('horizontal');\r\n  /**\r\n   * Compact mode — esconde labels, mostra só os indicators. Auto-aplica em\r\n   * viewports <480px (CSS media query). Útil em headers mobile.\r\n   */\r\n  readonly compact = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Variant visual do controller:\r\n   *  - 'pills' (default): pills horizontais clicáveis com label+indicator (canon)\r\n   *  - 'progress': label dinâmico em cima + segmented bar embaixo + menu\r\n   *    dropdown clicável com lista de steps. Compacto, mobile-friendly,\r\n   *    cabe em toolbar-actions slot. Ideal pra wizard 5+ steps.\r\n   */\r\n  readonly variant = input<StepperVariant>('pills');\r\n\r\n  private readonly _state = inject(MatchaStepperStateService);\r\n\r\n  /** Steps + activeStep + errors do service (signals). */\r\n  readonly steps      = this._state.steps;\r\n  readonly activeStep = this._state.activeStep;\r\n\r\n  /** Referências aos buttons dos steps pra focar via keyboard nav. */\r\n  @ViewChildren('stepEl') stepEls?: QueryList<ElementRef<HTMLElement>>;\r\n\r\n  /** Computa o state visual de cada step (4 estados canon Figma DSV3). */\r\n  readonly getStepState = computed(() => (index: number): StepState => {\r\n    if (this._state.isStepDisabled(index)) return 'disabled';\r\n    if (index < this.activeStep())         return 'completo';\r\n    if (index === this.activeStep())       return 'ativo';\r\n    return 'pendente';\r\n  });\r\n\r\n  /** Step está em loading (modifier visual: spinner em vez do glyph). */\r\n  readonly isLoading = computed(() => (index: number): boolean => {\r\n    return this._state.isStepLoading(index);\r\n  });\r\n\r\n  /**\r\n   * aria-label dinâmico — anuncia \"Wizard, Etapa X de Y, atual: TITULO\".\r\n   * WCAG 4.1.2 (Name/Role/Value) + canon WAI-ARIA Wizard pattern.\r\n   */\r\n  readonly ariaLabel = computed(() => {\r\n    const total = this.steps().length;\r\n    if (total === 0) return 'Wizard';\r\n    const active = this.activeStep();\r\n    const currentTitle = this.steps()[active] ?? '';\r\n    return `Wizard, etapa ${active + 1} de ${total}: ${currentTitle}`;\r\n  });\r\n\r\n  goToStep(index: number): void {\r\n    if (this._state.isStepDisabled(index))                return;\r\n    if (this.disableNext() && this.activeStep() < index)  return;\r\n    this._state.setActiveStep(index);\r\n    // Foca o novo step ativo (roving tabindex pattern).\r\n    queueMicrotask(() => this.stepEls?.get(index)?.nativeElement.focus());\r\n  }\r\n\r\n  /** Keyboard nav — Arrow keys, Home/End, Enter/Space. */\r\n  onKeydown(event: KeyboardEvent, currentIndex: number): void {\r\n    const total = this.steps().length;\r\n    if (total === 0) return;\r\n\r\n    const isVertical = this.orientation() === 'vertical';\r\n    const nextKey = isVertical ? 'ArrowDown' : 'ArrowRight';\r\n    const prevKey = isVertical ? 'ArrowUp'   : 'ArrowLeft';\r\n\r\n    let next: number | null = null;\r\n    switch (event.key) {\r\n      case nextKey:\r\n        next = currentIndex >= total - 1 ? 0 : currentIndex + 1;\r\n        break;\r\n      case prevKey:\r\n        next = currentIndex <= 0 ? total - 1 : currentIndex - 1;\r\n        break;\r\n      case 'Home':\r\n        next = 0;\r\n        break;\r\n      case 'End':\r\n        next = total - 1;\r\n        break;\r\n      case 'Enter':\r\n      case ' ':\r\n        event.preventDefault();\r\n        this.goToStep(currentIndex);\r\n        return;\r\n      default: return;\r\n    }\r\n    event.preventDefault();\r\n    // Move foco visual sem mudar activeStep (apenas explora — Enter/Space confirma).\r\n    queueMicrotask(() => this.stepEls?.get(next!)?.nativeElement.focus());\r\n  }\r\n\r\n  trackByIndex(index: number): number { return index; }\r\n}\r\n","@if (variant() === 'progress') {\r\n  <!-- Progress variant: label dinâmico à direita + N botões-pill clicáveis.\r\n       Cada botão é um pill (visual + click no mesmo elemento), com tokens\r\n       canônicos DSV3 (disabled-bg empty · accent filled), idem\r\n       matcha-progress-bar[type=segmented]. Compacto, toolbar-actions slot. -->\r\n  <div class=\"step-progress\" [attr.aria-label]=\"ariaLabel()\">\r\n    <span class=\"step-progress-label\">{{ steps()[activeStep()] }}</span>\r\n    <div class=\"step-progress-bar\" role=\"list\">\r\n      @for (s of steps(); track $index; let i = $index) {\r\n        <button #stepEl type=\"button\"\r\n          class=\"step-progress-pill\"\r\n          role=\"listitem\"\r\n          [class.is-filled]=\"i <= activeStep()\"\r\n          [class.is-active]=\"i === activeStep()\"\r\n          [disabled]=\"getStepState()(i) === 'disabled' || (disableNext() && i > activeStep())\"\r\n          [attr.aria-current]=\"i === activeStep() ? 'step' : null\"\r\n          [attr.aria-label]=\"s + ', etapa ' + (i + 1) + ' de ' + steps().length\"\r\n          [attr.tabindex]=\"i === activeStep() ? 0 : -1\"\r\n          [matchaTooltip]=\"s\"\r\n          (click)=\"goToStep(i)\"\r\n          (keydown)=\"onKeydown($event, i)\">\r\n        </button>\r\n      }\r\n    </div>\r\n  </div>\r\n}\r\n@else {\r\n  <!-- Pills variant (canon): indicators + labels + connectors -->\r\n  <ng-container *ngFor=\"let step of steps(); let i = index; let last = last; trackBy: trackByIndex\">\r\n    <button\r\n      #stepEl\r\n      type=\"button\"\r\n      class=\"step-item\"\r\n      role=\"listitem\"\r\n      [class.step-item-completo]=\"getStepState()(i) === 'completo'\"\r\n      [class.step-item-ativo]=\"getStepState()(i) === 'ativo'\"\r\n      [class.step-item-pendente]=\"getStepState()(i) === 'pendente'\"\r\n      [class.step-item-disabled]=\"getStepState()(i) === 'disabled'\"\r\n      [class.step-item-loading]=\"isLoading()(i)\"\r\n      [class.step-clickable]=\"!disableNext() || i <= activeStep()\"\r\n      [disabled]=\"getStepState()(i) === 'disabled'\"\r\n      [attr.aria-current]=\"i === activeStep() ? 'step' : null\"\r\n      [attr.aria-disabled]=\"getStepState()(i) === 'disabled' ? 'true' : null\"\r\n      [attr.aria-busy]=\"isLoading()(i) ? 'true' : null\"\r\n      [attr.aria-label]=\"step + ', etapa ' + (i + 1) + ' de ' + steps().length\"\r\n      [attr.tabindex]=\"i === activeStep() ? 0 : -1\"\r\n      (click)=\"goToStep(i)\"\r\n      (keydown)=\"onKeydown($event, i)\">\r\n\r\n      <!-- Indicator circle: spinner (loading) · check (completo) · number (ativo/pendente/disabled) -->\r\n      <span\r\n        class=\"step-indicator\"\r\n        [class.step-sm]=\"size() === 'small'\"\r\n        [class.step-md]=\"size() === 'medium'\"\r\n        [ngClass]=\"'step-indicator-' + getStepState()(i)\">\r\n        @if (isLoading()(i)) {\r\n          <span class=\"step-spinner\" aria-hidden=\"true\">\r\n            <svg viewBox=\"0 0 24 24\" fill=\"none\">\r\n              <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2.5\"\r\n                      stroke-opacity=\"0.2\" fill=\"none\"/>\r\n              <path d=\"M21 12a9 9 0 0 1-9 9\" stroke=\"currentColor\" stroke-width=\"2.5\"\r\n                    stroke-linecap=\"round\" fill=\"none\"/>\r\n            </svg>\r\n          </span>\r\n        } @else {\r\n          @switch (getStepState()(i)) {\r\n            @case ('completo') {\r\n              <matcha-icon name=\"messaging-check\"\r\n                           [size]=\"size() === 'small' ? 'sm' : 'md'\"></matcha-icon>\r\n            }\r\n            @default {\r\n              <span aria-hidden=\"true\">{{ i + 1 }}</span>\r\n            }\r\n          }\r\n        }\r\n      </span>\r\n\r\n      <!-- Label (escondido em compact mode) -->\r\n      <span\r\n        class=\"step-label\"\r\n        [class.step-sm]=\"size() === 'small'\"\r\n        [class.step-md]=\"size() === 'medium'\"\r\n        [ngClass]=\"'step-label-' + getStepState()(i)\">\r\n        {{ step }}\r\n      </span>\r\n    </button>\r\n\r\n    <!-- Connector com fill animation -->\r\n    <div\r\n      *ngIf=\"!last\"\r\n      class=\"step-connector\"\r\n      aria-hidden=\"true\"\r\n      [class.step-connector-complete]=\"i < activeStep()\">\r\n    </div>\r\n  </ng-container>\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ViewEncapsulation,\r\n  effect,\r\n  inject,\r\n  input,\r\n  numberAttribute,\r\n} from '@angular/core';\r\nimport { MatchaStepperStateService } from '../stepper.service';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type StepperOrientation = 'horizontal' | 'vertical';\r\n\r\n/**\r\n * matcha-stepper — Container raiz do stepper. Provê o state service e propaga\r\n * orientation pros descendentes via host attribute (lido pelo SCSS).\r\n *\r\n *   <matcha-stepper [active]=\"currentStep\" orientation=\"horizontal\"\r\n *                   [disabledSteps]=\"[1]\" [loadingSteps]=\"[2]\">\r\n *     <matcha-stepper-controller></matcha-stepper-controller>\r\n *     <matcha-stepper-content>\r\n *       <matcha-step title=\"Cadastro\">...</matcha-step>\r\n *       <matcha-step title=\"Confirmação\">...</matcha-step>\r\n *     </matcha-stepper-content>\r\n *   </matcha-stepper>\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-stepper',\r\n  template: '<ng-content></ng-content>',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [MatchaStepperStateService],\r\n  standalone: true,\r\n  host: {\r\n    '[attr.orientation]': 'orientation()',\r\n    '[attr.role]': '\"group\"',\r\n    '[attr.aria-label]': 'ariaLabel() || null',\r\n  },\r\n})\r\nexport class MatchaStepperComponent {\r\n  /** Índice do step ativo (0-based). Reativo: setar muda o step exibido. */\r\n  readonly active = input(0, { transform: numberAttribute });\r\n\r\n  /** Orientation do stepper. Horizontal (default) ou vertical (sidebar wizard). */\r\n  readonly orientation = input<StepperOrientation>('horizontal');\r\n\r\n  /** aria-label do container (ex: \"Cadastro do bem · etapa X de Y\"). */\r\n  readonly ariaLabel = input<string>('');\r\n\r\n  /** Índices de steps desabilitados — sincroniza com service.setStepDisabled. */\r\n  readonly disabledSteps = input<number[]>([]);\r\n\r\n  /** Índices de steps em loading — sincroniza com service.setStepLoading. */\r\n  readonly loadingSteps = input<number[]>([]);\r\n\r\n  private readonly _state = inject(MatchaStepperStateService);\r\n\r\n  /** Expõe o service pra consumers que precisam de acesso programático além dos inputs. */\r\n  get state(): MatchaStepperStateService { return this._state; }\r\n\r\n  constructor() {\r\n    // Sincroniza active prop → service. Effect roda sempre que active() muda.\r\n    effect(() => {\r\n      this._state.setActiveStep(this.active());\r\n    });\r\n\r\n    // Sincroniza disabledSteps prop → service (set/unset diff).\r\n    effect(() => {\r\n      const desired = new Set(this.disabledSteps());\r\n      const current = this._state.disabledSteps();\r\n      // Set os novos\r\n      desired.forEach(i => { if (!current.has(i)) this._state.setStepDisabled(i, true); });\r\n      // Unset os removidos\r\n      current.forEach(i => { if (!desired.has(i)) this._state.setStepDisabled(i, false); });\r\n    });\r\n\r\n    // Sincroniza loadingSteps prop → service.\r\n    effect(() => {\r\n      const desired = new Set(this.loadingSteps());\r\n      const current = this._state.loadingSteps();\r\n      desired.forEach(i => { if (!current.has(i)) this._state.setStepLoading(i, true); });\r\n      current.forEach(i => { if (!desired.has(i)) this._state.setStepLoading(i, false); });\r\n    });\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  TemplateRef,\r\n  ViewChild,\r\n  input,\r\n} from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-step — Wrapper de conteúdo de um step (template-only, sem visual próprio).\r\n *\r\n * O conteúdo projetado vai pra um `<ng-template>` interno; o `MatchaStepperContentComponent`\r\n * descobre os steps via `@ContentChildren` e renderiza apenas o ativo.\r\n *\r\n *   <matcha-step title=\"Cadastro\">\r\n *     <form>...</form>\r\n *   </matcha-step>\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-step',\r\n  template: `<ng-template><ng-content></ng-content></ng-template>`,\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class StepComponent {\r\n  /** Label exibido no controller. Aceita string ou number-string. */\r\n  readonly title = input<string>('', { alias: 'title' });\r\n\r\n  /** Acessível pelo content component pra projetar conteúdo. */\r\n  @ViewChild(TemplateRef, { static: true }) template!: TemplateRef<unknown>;\r\n\r\n  /** @deprecated — use `title()`. Mantido pra compat (lia `.step` em vez de `.title`). */\r\n  get step(): string { return this.title(); }\r\n}\r\n","import {\r\n  AfterContentInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChildren,\r\n  QueryList,\r\n  DestroyRef,\r\n  inject,\r\n  signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StepComponent } from '../step/step.component';\r\nimport { MatchaStepperStateService } from '../stepper.service';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-stepper-content — Renderiza apenas o template do step ativo.\r\n *\r\n * Coleta `<matcha-step>` via `@ContentChildren`, sincroniza com o service\r\n * (setSteps) e troca o template renderizado conforme activeStep().\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-stepper-content',\r\n  template: `\r\n    @if (stepsArray().length > 0) {\r\n      <ng-container *ngTemplateOutlet=\"stepsArray()[activeStep()]?.template || null\"></ng-container>\r\n    }\r\n  `,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n})\r\nexport class MatchaStepperContentComponent implements AfterContentInit {\r\n  @ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\r\n\r\n  /** Array signalable dos steps (ordem do DOM). */\r\n  readonly stepsArray = signal<StepComponent[]>([]);\r\n\r\n  private readonly _state = inject(MatchaStepperStateService);\r\n  private readonly _destroyRef = inject(DestroyRef);\r\n\r\n  /** Re-exporta activeStep do service como signal local pro template. */\r\n  readonly activeStep = this._state.activeStep;\r\n\r\n  ngAfterContentInit(): void {\r\n    this._updateSteps();\r\n    // Re-coleta se ContentChildren mudar (e.g., *ngIf adiciona/remove steps).\r\n    this.steps.changes\r\n      .pipe(takeUntilDestroyed(this._destroyRef))\r\n      .subscribe(() => this._updateSteps());\r\n  }\r\n\r\n  private _updateSteps(): void {\r\n    const arr = this.steps.toArray();\r\n    this.stepsArray.set(arr);\r\n    this._state.setSteps(arr.map(s => s.title()));\r\n  }\r\n\r\n  nextStep(): void { this._state.nextStep(); }\r\n  prevStep(): void { this._state.prevStep(); }\r\n}\r\n","import { Directive, HostListener, inject } from '@angular/core';\r\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\r\n\r\n/**\r\n * [prevStep] — Directive pra botões \"Anterior\" dentro do `<matcha-stepper-content>`.\r\n *\r\n *   <button matcha-button variant=\"outline\" prevStep>Anterior</button>\r\n */\r\n@Directive({\r\n  selector: '[prevStep]',\r\n  standalone: true,\r\n})\r\nexport class PrevStepDirective {\r\n  private readonly _stepper = inject(MatchaStepperContentComponent, { optional: true });\r\n\r\n  @HostListener('click')\r\n  onClick(): void { this._stepper?.prevStep(); }\r\n}\r\n","import { Directive, HostListener, Optional, inject } from '@angular/core';\r\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\r\n\r\n/**\r\n * [nextStep] — Directive pra botões \"Próximo\" dentro do `<matcha-stepper-content>`.\r\n *\r\n *   <matcha-stepper-content>\r\n *     <matcha-step title=\"Passo 1\">\r\n *       <button matcha-button nextStep>Próximo</button>\r\n *     </matcha-step>\r\n *   </matcha-stepper-content>\r\n *\r\n * Sem dependência manual no service — usa o stepper-content via DI hierarchical.\r\n */\r\n@Directive({\r\n  selector: '[nextStep]',\r\n  standalone: true,\r\n})\r\nexport class NextStepDirective {\r\n  private readonly _stepper = inject(MatchaStepperContentComponent, { optional: true });\r\n\r\n  @HostListener('click')\r\n  onClick(): void { this._stepper?.nextStep(); }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaStepperControllerComponent, StepperSize } from './stepper-controller/stepper-controller.component';\r\nimport { MatchaStepperComponent } from './stepper/stepper.component';\r\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\r\nimport { StepComponent } from './step/step.component';\r\nimport { PrevStepDirective } from './prev-step.directive';\r\nimport { NextStepDirective } from './next-step.directive';\r\nimport { MatchaStepperStateService } from './stepper.service';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\n\r\nexport { StepperSize };\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaStepperControllerComponent,\r\n    MatchaStepperComponent,\r\n    MatchaStepperContentComponent,\r\n    StepComponent,\r\n    MatchaIconModule,\r\n    PrevStepDirective,\r\n    NextStepDirective\r\n  ],\r\n  exports: [\r\n    MatchaStepperControllerComponent,\r\n    MatchaStepperComponent,\r\n    MatchaStepperContentComponent,\r\n    StepComponent,\r\n    PrevStepDirective,\r\n    NextStepDirective\r\n  ],\r\n  providers: [MatchaStepperStateService]\r\n})\r\nexport class MatchaStepperModule {}\r\n","import { Injectable, NgZone, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class MatchaDropListService {\r\n  // --- Legacy drop zone registry (MatchaDropListComponent instances keyed by host element) ---\r\n  private dropZones = new Map<HTMLElement, any>();\r\n\r\n  // --- Named drop zone registry (MatchaDropZoneDirective instances keyed by id) ---\r\n  private namedDropZones = new Map<string | number, any>();\r\n\r\n  // --- Public drag state signals ---\r\n  readonly currentDragData = signal<any | null>(null);\r\n  readonly currentDragType = signal<string>('');\r\n\r\n  // --- Internal drag engine state ---\r\n  private activeDrag: { directive: any; sourceContainer: any } | null = null;\r\n  private ghostElement: HTMLElement | null = null;\r\n  private dragOffsetX = 0;\r\n  private dragOffsetY = 0;\r\n  private lastTargetContainer: any | null = null;\r\n  private globalListeners: (() => void)[] = [];\r\n  private hoverTimer: ReturnType<typeof setTimeout> | null = null;\r\n  private lastHoveredItemIndex = -1;\r\n  private hasMoved = false;\r\n  private startX = 0;\r\n  private startY = 0;\r\n\r\n  constructor(private ngZone: NgZone) {}\r\n\r\n  // --- Drop zone registry (used by MatchaDropListComponent) ---\r\n\r\n  registerDropZone(element: HTMLElement, component: any): void {\r\n    this.dropZones.set(element, component);\r\n  }\r\n\r\n  unregisterDropZone(element: HTMLElement): void {\r\n    this.dropZones.delete(element);\r\n  }\r\n\r\n  findDropZone(element: Element | null): any {\r\n    while (element) {\r\n      if (this.dropZones.has(element as HTMLElement)) {\r\n        return this.dropZones.get(element as HTMLElement);\r\n      }\r\n      element = element.parentElement;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  getAllDropZones(): any[] {\r\n    return Array.from(this.dropZones.values());\r\n  }\r\n\r\n  // --- Named drop zone registry (used by MatchaDropZoneDirective) ---\r\n\r\n  registerNamedDropZone(id: string | number, directive: any): void {\r\n    this.namedDropZones.set(id, directive);\r\n  }\r\n\r\n  unregisterNamedDropZone(id: string | number): void {\r\n    this.namedDropZones.delete(id);\r\n  }\r\n\r\n  // --- Drag engine ---\r\n\r\n  beginDrag(dragDirective: any, nativeEl: HTMLElement, event: MouseEvent | TouchEvent, groupEl?: HTMLElement): void {\r\n    if (this.activeDrag) return;\r\n\r\n    const clientX = this.getClientX(event);\r\n    const clientY = this.getClientY(event);\r\n    const rect = nativeEl.getBoundingClientRect();\r\n\r\n    const sourceContainer = this.findDropZone(nativeEl);\r\n    this.activeDrag = { directive: dragDirective, sourceContainer };\r\n    this.currentDragData.set(dragDirective.matchaDragData);\r\n    this.dragOffsetX = clientX - rect.left;\r\n    this.dragOffsetY = clientY - rect.top;\r\n    this.startX = clientX;\r\n    this.startY = clientY;\r\n    this.hasMoved = false;\r\n\r\n    this.currentDragType.set(dragDirective.matchaDragType ?? '');\r\n    sourceContainer?.onPointerDragStart(dragDirective);\r\n    this.createGhost(nativeEl, clientX, clientY, rect, groupEl);\r\n    this.setupGlobalListeners();\r\n  }\r\n\r\n  private createGhost(el: HTMLElement, clientX: number, clientY: number, rect: DOMRect, groupEl?: HTMLElement): void {\r\n    const ghost = document.createElement('div');\r\n    ghost.style.position = 'fixed';\r\n    ghost.style.left = '0';\r\n    ghost.style.top = '0';\r\n    ghost.style.width = `${rect.width}px`;\r\n    ghost.style.pointerEvents = 'none';\r\n    ghost.style.opacity = '0.85';\r\n    ghost.style.zIndex = '9999';\r\n    ghost.style.boxShadow = '0 8px 24px rgba(0,0,0,0.18)';\r\n    ghost.style.borderRadius = '4px';\r\n    ghost.style.transition = 'none';\r\n    ghost.style.transform = `translate(${clientX - this.dragOffsetX}px,${clientY - this.dragOffsetY}px)`;\r\n    ghost.classList.add('matcha-drag-ghost');\r\n\r\n    const cardClone = el.cloneNode(true) as HTMLElement;\r\n    cardClone.style.transition = 'none';\r\n    cardClone.style.transform = '';\r\n    cardClone.style.opacity = '';\r\n    ghost.appendChild(cardClone);\r\n\r\n    if (groupEl) {\r\n      const groupClone = groupEl.cloneNode(true) as HTMLElement;\r\n      groupClone.style.transition = 'none';\r\n      ghost.appendChild(groupClone);\r\n    }\r\n\r\n    document.body.appendChild(ghost);\r\n    this.ghostElement = ghost;\r\n  }\r\n\r\n  private setupGlobalListeners(): void {\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const onMove = (e: MouseEvent | TouchEvent) => this.onPointerMove(e);\r\n      const onUp = (e: MouseEvent | TouchEvent) => this.onPointerUp(e);\r\n\r\n      document.addEventListener('mousemove', onMove);\r\n      document.addEventListener('mouseup', onUp);\r\n      document.addEventListener('touchmove', onMove, { passive: false });\r\n      document.addEventListener('touchend', onUp);\r\n      document.addEventListener('touchcancel', onUp);\r\n\r\n      this.globalListeners = [\r\n        () => document.removeEventListener('mousemove', onMove),\r\n        () => document.removeEventListener('mouseup', onUp),\r\n        () => document.removeEventListener('touchmove', onMove),\r\n        () => document.removeEventListener('touchend', onUp),\r\n        () => document.removeEventListener('touchcancel', onUp),\r\n      ];\r\n    });\r\n  }\r\n\r\n  private onPointerMove(event: MouseEvent | TouchEvent): void {\r\n    if (!this.activeDrag || !this.ghostElement) return;\r\n    if (event.type === 'touchmove') event.preventDefault();\r\n\r\n    const clientX = this.getClientX(event);\r\n    const clientY = this.getClientY(event);\r\n\r\n    // Move ghost clone to follow the pointer\r\n    this.ghostElement.style.transform = `translate(${clientX - this.dragOffsetX}px,${clientY - this.dragOffsetY}px)`;\r\n\r\n    const dx = clientX - this.startX;\r\n    const dy = clientY - this.startY;\r\n    if (!this.hasMoved && dx * dx + dy * dy < 25) return; // 5px threshold\r\n    this.hasMoved = true;\r\n\r\n    // Temporarily hide ghost to hit-test elements beneath it\r\n    this.ghostElement.style.visibility = 'hidden';\r\n    const elements = document.elementsFromPoint(clientX, clientY);\r\n    this.ghostElement.style.visibility = '';\r\n\r\n    const target = this.findContainerFromElements(elements);\r\n\r\n    if (this.lastTargetContainer && this.lastTargetContainer !== target) {\r\n      this.ngZone.run(() => this.lastTargetContainer!.clearPlaceholder());\r\n      if (this.hoverTimer) { clearTimeout(this.hoverTimer); this.hoverTimer = null; }\r\n      this.lastHoveredItemIndex = -1;\r\n    }\r\n\r\n    if (target) {\r\n      this.ngZone.run(() => target.updatePlaceholder(clientX, clientY, this.activeDrag!.directive, this.activeDrag!.sourceContainer));\r\n\r\n      if (target.matchaDropListTreeMode) {\r\n        this.handleHoverExpand(clientX, clientY, target);\r\n      }\r\n    }\r\n\r\n    this.lastTargetContainer = target;\r\n  }\r\n\r\n  private onPointerUp(event: MouseEvent | TouchEvent): void {\r\n    if (!this.activeDrag) return;\r\n\r\n    if (!this.hasMoved) {\r\n      this.ngZone.run(() => this.cleanup());\r\n      return;\r\n    }\r\n\r\n    const clientX = this.getClientX(event);\r\n    const clientY = this.getClientY(event);\r\n\r\n    if (this.ghostElement) this.ghostElement.style.visibility = 'hidden';\r\n    const elements = document.elementsFromPoint(clientX, clientY);\r\n    const target = this.findContainerFromElements(elements);\r\n\r\n    // Check if drop is in a named drop zone (reparenting)\r\n    let namedDropTarget: any | null = null;\r\n    if (target?.matchaDropListTreeMode) {\r\n      namedDropTarget = this.findNamedDropZoneAt(clientX, clientY, elements);\r\n    }\r\n\r\n    // When the resolved drop list is nested inside the named zone, prefer finalizeDrop:\r\n    // it uses calculatedDropIndex for correct insertion and handles both reorder and cross-container transfer.\r\n    const targetIsInsideNamedZone = namedDropTarget && target &&\r\n      (namedDropTarget.elementRef.nativeElement as HTMLElement).contains(target.elementRef.nativeElement);\r\n\r\n    this.ngZone.run(() => {\r\n      if (namedDropTarget && !targetIsInsideNamedZone) {\r\n        namedDropTarget.handleDrop(this.activeDrag!.directive.matchaDragData, clientX, clientY);\r\n      } else if (target) {\r\n        target.finalizeDrop(this.activeDrag!.directive, this.activeDrag!.sourceContainer);\r\n      }\r\n      this.cleanup();\r\n    });\r\n  }\r\n\r\n  private findContainerFromElements(elements: Element[]): any | null {\r\n    for (const el of elements) {\r\n      const container = this.dropZones.get(el as HTMLElement);\r\n      if (container) return container;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  private findNamedDropZoneAt(clientX: number, clientY: number, elements: Element[]): any | null {\r\n    let bestDirective: any | null = null;\r\n    let bestIdx = Infinity;\r\n\r\n    for (const [, directive] of this.namedDropZones) {\r\n      const el: HTMLElement = directive.elementRef.nativeElement;\r\n      const idx = elements.indexOf(el);\r\n      if (idx >= 0 && idx < bestIdx) {\r\n        bestIdx = idx;\r\n        bestDirective = directive;\r\n      }\r\n    }\r\n\r\n    if (!bestDirective) {\r\n      let smallestArea = Infinity;\r\n      for (const [, directive] of this.namedDropZones) {\r\n        const el: HTMLElement = directive.elementRef.nativeElement;\r\n        const rect = el.getBoundingClientRect();\r\n        if (clientX >= rect.left && clientX <= rect.right &&\r\n            clientY >= rect.top && clientY <= rect.bottom) {\r\n          const area = rect.width * rect.height;\r\n          if (area < smallestArea) {\r\n            smallestArea = area;\r\n            bestDirective = directive;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    return bestDirective;\r\n  }\r\n\r\n  private handleHoverExpand(clientX: number, clientY: number, container: any): void {\r\n    const hoveredIndex = container.getItemIndexAt(clientX, clientY);\r\n    if (hoveredIndex !== this.lastHoveredItemIndex) {\r\n      this.lastHoveredItemIndex = hoveredIndex;\r\n      if (this.hoverTimer) {\r\n        clearTimeout(this.hoverTimer);\r\n        this.hoverTimer = null;\r\n      }\r\n      if (hoveredIndex >= 0) {\r\n        const delay = container.matchaDropListHoverExpandDelay ?? 500;\r\n        this.hoverTimer = setTimeout(() => {\r\n          this.ngZone.run(() => container.emitHoverExpand(hoveredIndex));\r\n        }, delay);\r\n      }\r\n    }\r\n  }\r\n\r\n  private cleanup(): void {\r\n    if (this.ghostElement) {\r\n      document.body.removeChild(this.ghostElement);\r\n      this.ghostElement = null;\r\n    }\r\n    this.activeDrag?.sourceContainer?.onPointerDragEnd();\r\n    if (this.lastTargetContainer) {\r\n      this.lastTargetContainer.clearPlaceholder();\r\n    }\r\n    this.globalListeners.forEach(fn => fn());\r\n    this.globalListeners = [];\r\n    this.activeDrag = null;\r\n    this.lastTargetContainer = null;\r\n    this.currentDragData.set(null);\r\n    this.currentDragType.set('');\r\n    if (this.hoverTimer) {\r\n      clearTimeout(this.hoverTimer);\r\n      this.hoverTimer = null;\r\n    }\r\n    this.lastHoveredItemIndex = -1;\r\n    this.hasMoved = false;\r\n  }\r\n\r\n  private getClientX(event: MouseEvent | TouchEvent): number {\r\n    if (event instanceof MouseEvent) return event.clientX;\r\n    const touch = (event as TouchEvent).touches[0] ?? (event as TouchEvent).changedTouches[0];\r\n    return touch?.clientX ?? 0;\r\n  }\r\n\r\n  private getClientY(event: MouseEvent | TouchEvent): number {\r\n    if (event instanceof MouseEvent) return event.clientY;\r\n    const touch = (event as TouchEvent).touches[0] ?? (event as TouchEvent).changedTouches[0];\r\n    return touch?.clientY ?? 0;\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  ElementRef,\r\n  Renderer2,\r\n  OnInit,\r\n  OnDestroy,\r\n  HostBinding,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDragDirective } from '../directives/drag.directive';\r\nimport { MatchaDropListService } from '../services/drop-list.service';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport interface MatchaDropListDroppedEvent<T = any> {\r\n  previousIndex: number;\r\n  currentIndex: number;\r\n  item: T;\r\n  container: MatchaDropListComponent;\r\n  previousContainer?: MatchaDropListComponent;\r\n  data: T[];\r\n}\r\n\r\nexport interface MatchaDropListConnectedToEvent<T = any> {\r\n  sourceData: T[];\r\n  targetData: T[];\r\n  item: T;\r\n  previousIndex: number;\r\n  currentIndex: number;\r\n}\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-drop-list',\r\n  templateUrl: './drop-list.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  imports: [CommonModule]\r\n})\r\nexport class MatchaDropListComponent<T = any> implements OnInit, OnDestroy {\r\n  @Input() matchaDropListData: T[] = [];\r\n  @Input() matchaDropListDisabled: boolean = false;\r\n  @Input() matchaDropListConnectedTo: MatchaDropListComponent[] = [];\r\n  @Input() matchaDropListSortingDisabled: boolean = false;\r\n  @Input() matchaDropListAcceptPredicate?: (item: any, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent) => boolean;\r\n  @Input() matchaDropListAcceptTypes: string[] = [];\r\n\r\n  // Tree mode inputs\r\n  @Input() matchaDropListTreeMode: boolean = false;\r\n  @Input() matchaDropListHoverExpandDelay: number = 500;\r\n  @Input() matchaDropListMaxDepth?: number;\r\n\r\n  @Output() matchaDropListDropped = new EventEmitter<MatchaDropListDroppedEvent<T>>();\r\n  @Output() matchaDropListHoverExpand = new EventEmitter<any>();\r\n\r\n  // Items registered via self-registration in MatchaDragDirective.ngOnInit().\r\n  // Sorted by DOM order on every read so translateY indices stay correct after reorders.\r\n  private _directDragItems: MatchaDragDirective[] = [];\r\n\r\n  get directDragItems(): MatchaDragDirective[] {\r\n    // Cópia ordenada por posição no DOM. NÃO muta `_directDragItems` (getter puro,\r\n    // lido várias vezes por mousemove) e usa um comparador consistente: elementos\r\n    // iguais ou desconectados → 0 (mantém a ordem de registro), senão os bits\r\n    // FOLLOWING/PRECEDING decidem. O `? -1 : 1` anterior nunca retornava 0 e\r\n    // violava o contrato de `sort` para pares iguais/ambíguos (nós recém-destruídos\r\n    // no meio de um drag), gerando ordem instável nos índices de drop/hover.\r\n    return [...this._directDragItems].sort((a, b) => {\r\n      const ae = a.elementRef.nativeElement;\r\n      const be = b.elementRef.nativeElement;\r\n      if (ae === be) return 0;\r\n      const pos = ae.compareDocumentPosition(be);\r\n      if (pos & Node.DOCUMENT_POSITION_DISCONNECTED) return 0;\r\n      if (pos & Node.DOCUMENT_POSITION_FOLLOWING) return -1;\r\n      if (pos & Node.DOCUMENT_POSITION_PRECEDING) return 1;\r\n      return 0;\r\n    });\r\n  }\r\n\r\n  @HostBinding('class.matcha-drop-list') get dropListClass() {\r\n    return true;\r\n  }\r\n\r\n  // Visual state\r\n  isReceivingDrag = false;\r\n  showDropIndicator = false;\r\n  dropIndicatorPosition = 0;\r\n  canAcceptDrop = true;\r\n\r\n  private calculatedDropIndex = 0;\r\n  private currentDragItem?: MatchaDragDirective;\r\n  private dragStartIndex: number = -1;\r\n  private sourceContainer?: MatchaDropListComponent;\r\n\r\n  constructor(\r\n    public elementRef: ElementRef<HTMLElement>,\r\n    private renderer: Renderer2,\r\n    private dropListService: MatchaDropListService\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.dropListService.registerDropZone(this.elementRef.nativeElement, this);\r\n  }\r\n\r\n  registerDragItem(item: MatchaDragDirective): void {\r\n    if (!this._directDragItems.includes(item)) {\r\n      this._directDragItems.push(item);\r\n    }\r\n  }\r\n\r\n  unregisterDragItem(item: MatchaDragDirective): void {\r\n    const idx = this._directDragItems.indexOf(item);\r\n    if (idx >= 0) this._directDragItems.splice(idx, 1);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.dropListService.unregisterDropZone(this.elementRef.nativeElement);\r\n  }\r\n\r\n  // --- Called by the drag engine (MatchaDropListService) ---\r\n\r\n  onPointerDragStart(dragItem: MatchaDragDirective): void {\r\n    if (this.matchaDropListDisabled) return;\r\n    this.currentDragItem = dragItem;\r\n    this.sourceContainer = this;\r\n    this.dragStartIndex = this.getDragItemIndex(dragItem);\r\n\r\n    this.matchaDropListConnectedTo.forEach(container => {\r\n      container.notifyDragStart(dragItem, this);\r\n    });\r\n  }\r\n\r\n  onPointerDragEnd(): void {\r\n    this.currentDragItem = undefined;\r\n    this.sourceContainer = undefined;\r\n    this.dragStartIndex = -1;\r\n\r\n    this.matchaDropListConnectedTo.forEach(container => container.notifyDragEnd());\r\n  }\r\n\r\n  updatePlaceholder(clientX: number, clientY: number, dragDirective: MatchaDragDirective, sourceContainer?: MatchaDropListComponent): void {\r\n    if (this.matchaDropListDisabled) return;\r\n\r\n    const isCrossContainer = sourceContainer && sourceContainer !== this;\r\n\r\n    // Type-based accept check\r\n    if (isCrossContainer && this.matchaDropListAcceptTypes.length > 0) {\r\n      const dragType = dragDirective.matchaDragType ?? '';\r\n      if (dragType && !this.matchaDropListAcceptTypes.includes(dragType)) {\r\n        this.isReceivingDrag = true;\r\n        this.canAcceptDrop = false;\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Predicate check: reject incoming cross-container drop before showing placeholder\r\n    if (isCrossContainer && this.matchaDropListAcceptPredicate) {\r\n      const canAccept = this.matchaDropListAcceptPredicate(dragDirective.matchaDragData, sourceContainer, this);\r\n      if (!canAccept) {\r\n        this.isReceivingDrag = true;\r\n        this.canAcceptDrop = false;\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Depth check\r\n    if (isCrossContainer && !this.isDepthAllowed(dragDirective)) {\r\n      this.isReceivingDrag = true;\r\n      this.canAcceptDrop = false;\r\n      return;\r\n    }\r\n\r\n    const allItems = this.directDragItems;\r\n    const allEls = allItems.map(d => d.elementRef.nativeElement);\r\n    const draggedEl = dragDirective.elementRef.nativeElement;\r\n    const isSameContainer = allEls.includes(draggedEl);\r\n    const draggedHeight = draggedEl.getBoundingClientRect().height;\r\n\r\n    // Calculate insert index ignoring the dragged item itself\r\n    let insertIndex = allEls.length;\r\n    for (let i = 0; i < allEls.length; i++) {\r\n      if (allEls[i] === draggedEl) continue;\r\n      const rect = allEls[i].getBoundingClientRect();\r\n      if (clientY < rect.top + rect.height / 2) {\r\n        insertIndex = i;\r\n        break;\r\n      }\r\n    }\r\n\r\n    // Adjust for the removed dragged item when it was before the insert point\r\n    if (isSameContainer) {\r\n      const draggedIndex = allEls.indexOf(draggedEl);\r\n      if (draggedIndex < insertIndex) {\r\n        insertIndex = Math.max(0, insertIndex - 1);\r\n      }\r\n    }\r\n\r\n    this.calculatedDropIndex = insertIndex;\r\n\r\n    // Apply translateY animations: only items strictly between source and target shift\r\n    allItems.forEach((item, rawIdx) => {\r\n      const el = item.elementRef.nativeElement;\r\n      el.style.transition = 'transform 150ms ease, opacity 150ms ease';\r\n      if (el === draggedEl) {\r\n        el.style.opacity = '0.25';\r\n        el.style.transform = '';\r\n        return;\r\n      }\r\n      el.style.opacity = '';\r\n      if (!isSameContainer) {\r\n        el.style.transform = rawIdx >= insertIndex ? `translateY(${draggedHeight}px)` : '';\r\n      } else {\r\n        const draggedIdx = allEls.indexOf(draggedEl);\r\n        if (insertIndex < draggedIdx) {\r\n          el.style.transform = (rawIdx >= insertIndex && rawIdx < draggedIdx)\r\n            ? `translateY(${draggedHeight}px)` : '';\r\n        } else {\r\n          el.style.transform = (rawIdx > draggedIdx && rawIdx <= insertIndex)\r\n            ? `translateY(-${draggedHeight}px)` : '';\r\n        }\r\n      }\r\n    });\r\n\r\n    // Extend container bottom for hit-test at last position (Fix E)\r\n    (this.getInnerContainer() as HTMLElement).style.paddingBottom = `${draggedHeight}px`;\r\n\r\n    this.isReceivingDrag = true;\r\n    this.canAcceptDrop = true;\r\n    this.showDropIndicator = false;\r\n  }\r\n\r\n  clearPlaceholder(): void {\r\n    (this.getInnerContainer() as HTMLElement).style.paddingBottom = '';\r\n    this.directDragItems.forEach(item => {\r\n      const el = item.elementRef.nativeElement;\r\n      el.style.transform = '';\r\n      el.style.opacity = '';\r\n      el.style.transition = '';\r\n    });\r\n    this.isReceivingDrag = false;\r\n    this.canAcceptDrop = true;\r\n    this.showDropIndicator = false;\r\n    this.calculatedDropIndex = 0;\r\n  }\r\n\r\n  private getInnerContainer(): Element {\r\n    return this.elementRef.nativeElement.querySelector('.matcha-drop-list-container')\r\n      ?? this.elementRef.nativeElement;\r\n  }\r\n\r\n  finalizeDrop(dragDirective: MatchaDragDirective, sourceContainer: MatchaDropListComponent): void {\r\n    if (this.matchaDropListDisabled) {\r\n      this.clearPlaceholder();\r\n      return;\r\n    }\r\n\r\n    // Save before clearPlaceholder resets it — used to guard same-position drops\r\n    const hadMovement = this.isReceivingDrag;\r\n\r\n    // Type-based accept check\r\n    if (sourceContainer !== this && this.matchaDropListAcceptTypes.length > 0) {\r\n      const dragType = dragDirective.matchaDragType ?? '';\r\n      if (dragType && !this.matchaDropListAcceptTypes.includes(dragType)) {\r\n        this.clearPlaceholder();\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Predicate check: reject cross-container drops that the target doesn't accept\r\n    if (sourceContainer !== this && this.matchaDropListAcceptPredicate) {\r\n      const canAccept = this.matchaDropListAcceptPredicate(dragDirective.matchaDragData, sourceContainer, this);\r\n      if (!canAccept) {\r\n        this.clearPlaceholder();\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Depth check\r\n    if (sourceContainer !== this && !this.isDepthAllowed(dragDirective)) {\r\n      this.clearPlaceholder();\r\n      return;\r\n    }\r\n\r\n    const dropIndex = this.calculatedDropIndex;\r\n    this.clearPlaceholder();\r\n\r\n    if (sourceContainer === this) {\r\n      const fromIndex = this.directDragItems.findIndex(d => d === dragDirective);\r\n      if (fromIndex >= 0 && hadMovement && !this.matchaDropListSortingDisabled && dropIndex !== fromIndex) {\r\n        this.reorderItems(fromIndex, dropIndex);\r\n      }\r\n    } else if (sourceContainer) {\r\n      this.transferItem(dragDirective, sourceContainer, this, dropIndex);\r\n    }\r\n  }\r\n\r\n  // --- Tree mode helpers (called by service) ---\r\n\r\n  getItemIndexAt(clientX: number, clientY: number): number {\r\n    const allEls = this.directDragItems.map(d => d.elementRef.nativeElement);\r\n    for (let i = 0; i < allEls.length; i++) {\r\n      const rect = allEls[i].getBoundingClientRect();\r\n      if (clientX >= rect.left && clientX <= rect.right &&\r\n          clientY >= rect.top && clientY <= rect.bottom) {\r\n        return i;\r\n      }\r\n    }\r\n    return -1;\r\n  }\r\n\r\n  emitHoverExpand(itemIndex: number): void {\r\n    const item = this.directDragItems[itemIndex];\r\n    if (item) {\r\n      this.matchaDropListHoverExpand.emit(item.matchaDragData);\r\n    }\r\n  }\r\n\r\n  // --- Cross-container communication (connected lists) ---\r\n\r\n  notifyDragStart(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent): void {\r\n    this.currentDragItem = dragItem;\r\n    this.sourceContainer = sourceContainer;\r\n    this.dragStartIndex = sourceContainer.getDragItemIndex(dragItem);\r\n  }\r\n\r\n  notifyDragEnd(): void {\r\n    this.currentDragItem = undefined;\r\n    this.sourceContainer = undefined;\r\n    this.dragStartIndex = -1;\r\n    this.isReceivingDrag = false;\r\n    this.showDropIndicator = false;\r\n    this.calculatedDropIndex = 0;\r\n  }\r\n\r\n  // --- Internal reorder/transfer ---\r\n\r\n  private reorderItems(fromIndex: number, toIndex: number): void {\r\n    const newData = [...this.matchaDropListData];\r\n    const [item] = newData.splice(fromIndex, 1);\r\n    // `updatePlaceholder` já compensou o item removido no cálculo de `toIndex`\r\n    // (quando `draggedIndex < toIndex`), então ele é o índice pós-remoção.\r\n    newData.splice(toIndex, 0, item);\r\n    this.matchaDropListData = newData;\r\n\r\n    this.matchaDropListDropped.emit({\r\n      previousIndex: fromIndex,\r\n      currentIndex: toIndex,\r\n      item,\r\n      container: this,\r\n      data: this.matchaDropListData\r\n    });\r\n  }\r\n\r\n  private transferItem(\r\n    dragItem: MatchaDragDirective,\r\n    sourceContainer: MatchaDropListComponent,\r\n    targetContainer: MatchaDropListComponent,\r\n    targetIndex: number\r\n  ): void {\r\n    const item = dragItem.matchaDragData;\r\n    const sourceIndex = sourceContainer.dragStartIndex;\r\n\r\n    const sourceData = [...sourceContainer.matchaDropListData];\r\n    sourceData.splice(sourceIndex, 1);\r\n    sourceContainer.matchaDropListData = sourceData;\r\n\r\n    const targetData = [...targetContainer.matchaDropListData];\r\n    targetData.splice(targetIndex, 0, item);\r\n    targetContainer.matchaDropListData = targetData;\r\n\r\n    targetContainer.matchaDropListDropped.emit({\r\n      previousIndex: sourceIndex,\r\n      currentIndex: targetIndex,\r\n      item,\r\n      container: targetContainer,\r\n      previousContainer: sourceContainer,\r\n      data: targetContainer.matchaDropListData\r\n    });\r\n\r\n    sourceContainer.matchaDropListDropped.emit({\r\n      previousIndex: sourceIndex,\r\n      currentIndex: -1,\r\n      item,\r\n      container: sourceContainer,\r\n      data: sourceContainer.matchaDropListData\r\n    });\r\n  }\r\n\r\n  getDragItemIndex(dragItem: MatchaDragDirective): number {\r\n    return this.directDragItems.indexOf(dragItem);\r\n  }\r\n\r\n  private isDepthAllowed(dragDirective?: MatchaDragDirective): boolean {\r\n    if (this.matchaDropListMaxDepth === undefined) return true;\r\n    let targetDepth = 1;\r\n    let el: HTMLElement | null = this.elementRef.nativeElement.parentElement;\r\n    while (el) {\r\n      if (el.classList.contains('matcha-drop-list')) targetDepth++;\r\n      el = el.parentElement;\r\n    }\r\n    const subtreeHeight = dragDirective?.matchaDragGroupEl\r\n      ? this.getGroupSubtreeHeight(dragDirective.matchaDragGroupEl)\r\n      : 0;\r\n    return targetDepth + subtreeHeight <= this.matchaDropListMaxDepth;\r\n  }\r\n\r\n  private getGroupSubtreeHeight(groupEl: HTMLElement): number {\r\n    let maxDepth = 0;\r\n    const traverse = (node: HTMLElement, depth: number): void => {\r\n      for (let i = 0; i < node.children.length; i++) {\r\n        const child = node.children[i] as HTMLElement;\r\n        const childDepth = child.classList.contains('matcha-drop-list') ? depth + 1 : depth;\r\n        if (childDepth > maxDepth) maxDepth = childDepth;\r\n        traverse(child, childDepth);\r\n      }\r\n    };\r\n    traverse(groupEl, 0);\r\n    return maxDepth;\r\n  }\r\n\r\n  // --- Kept for backward compat (no-ops with new engine) ---\r\n\r\n  onDragStart(dragItem: MatchaDragDirective, _event: any): void {\r\n    this.onPointerDragStart(dragItem);\r\n  }\r\n\r\n  onDragEnd(): void {\r\n    this.onPointerDragEnd();\r\n  }\r\n\r\n  handleTouchDragOver(_event: any): void {}\r\n\r\n  handleTouchDrop(_event: any, _dragItem: any): void {}\r\n}\r\n","<div class=\"matcha-drop-list-container\"\r\n     [class.matcha-drop-list-receiving]=\"isReceivingDrag\"\r\n     [class.matcha-drop-list-disabled]=\"matchaDropListDisabled\"\r\n     [class.matcha-drop-list-can-accept]=\"isReceivingDrag && canAcceptDrop\"\r\n     [class.matcha-drop-list-cannot-accept]=\"isReceivingDrag && !canAcceptDrop\">\r\n  <ng-content></ng-content>\r\n\r\n  <!-- Linha indicadora de drop -->\r\n  <div class=\"matcha-drop-indicator\"\r\n       [class.active]=\"showDropIndicator && canAcceptDrop\"\r\n       [style.top.px]=\"dropIndicatorPosition\">\r\n  </div>\r\n\r\n  <!-- Placeholder para lista vazia -->\r\n  <div *ngIf=\"isReceivingDrag && directDragItems.length === 0\"\r\n       class=\"matcha-drop-list-placeholder\">\r\n    <div class=\"matcha-drop-list-empty-placeholder\"\r\n         [class.can-accept]=\"canAcceptDrop\"\r\n         [class.cannot-accept]=\"!canAcceptDrop\">\r\n      <span [class.i-matcha-action_sign_success]=\"canAcceptDrop\"\r\n            [class.i-matcha-action_sign_error]=\"!canAcceptDrop\"\r\n            [class.color-green]=\"canAcceptDrop\"\r\n            [class.color-red]=\"!canAcceptDrop\"\r\n            class=\"i-size-lg\"></span>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Directive, ElementRef, EventEmitter, Input, OnChanges, OnInit, OnDestroy, Output, Renderer2, SimpleChanges, HostBinding, NgZone } from '@angular/core';\r\nimport { MatchaDropListService } from '../services/drop-list.service';\r\n\r\n@Directive({\r\n  selector: '[matchaDrag]',\r\n  standalone: false\r\n})\r\nexport class MatchaDragDirective implements OnChanges, OnInit, OnDestroy {\r\n  @Input() matchaDragData: any;\r\n  @Input() matchaDragDisabled: boolean = false;\r\n  @Input() matchaDragGroupEl: HTMLElement | null = null;\r\n  @Input() matchaDragType: string = '';\r\n\r\n  @Output() matchaDragStarted = new EventEmitter<void>();\r\n\r\n  @HostBinding('class.matcha-drag-item') get dragItemClass() {\r\n    return true;\r\n  }\r\n\r\n  @HostBinding('class.matcha-drag-disabled') get dragDisabledClass() {\r\n    return this.matchaDragDisabled;\r\n  }\r\n\r\n  private listeners: (() => void)[] = [];\r\n  private dragHandle?: HTMLElement;\r\n  private dropList?: any;\r\n\r\n  constructor(\r\n    public elementRef: ElementRef<HTMLElement>,\r\n    private renderer: Renderer2,\r\n    private ngZone: NgZone,\r\n    private dropListService: MatchaDropListService\r\n  ) {}\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    // `matchaDragDisabled` mudou em runtime → re-sincroniza listeners e estilos.\r\n    // Sem isto, um item criado com `matchaDragDisabled=true` nunca anexava os\r\n    // listeners e continuava sem drag mesmo depois de reabilitado (só o\r\n    // `ngOnInit` chamava `setupPointerEvents`).\r\n    if (changes['matchaDragDisabled'] && !changes['matchaDragDisabled'].firstChange) {\r\n      this.setupPointerEvents();\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.setupPointerEvents();\r\n    this.dropList = this.dropListService.findDropZone(this.elementRef.nativeElement);\r\n    (this.dropList as any)?.registerDragItem?.(this);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    (this.dropList as any)?.unregisterDragItem?.(this);\r\n    this.cleanupListeners();\r\n  }\r\n\r\n  setDropList(dropList: any): void {\r\n    this.dropList = dropList;\r\n  }\r\n\r\n  setDragHandle(handle: HTMLElement): void {\r\n    this.dragHandle = handle;\r\n    this.setupPointerEvents();\r\n  }\r\n\r\n  private setupPointerEvents(): void {\r\n    this.cleanupListeners();\r\n\r\n    const dragSource = this.dragHandle || this.elementRef.nativeElement;\r\n\r\n    if (this.matchaDragDisabled) {\r\n      // Reverte os hints visuais de arrasto — o estado pode ter sido setado\r\n      // depois do `ngOnInit` (ver `ngOnChanges`).\r\n      this.renderer.removeStyle(dragSource, 'cursor');\r\n      this.renderer.removeStyle(dragSource, 'touch-action');\r\n      this.renderer.removeStyle(dragSource, 'user-select');\r\n      this.renderer.removeStyle(dragSource, '-webkit-user-select');\r\n      return;\r\n    }\r\n\r\n    this.renderer.setStyle(dragSource, 'touch-action', 'none');\r\n    this.renderer.setStyle(dragSource, 'user-select', 'none');\r\n    this.renderer.setStyle(dragSource, '-webkit-user-select', 'none');\r\n    this.renderer.setStyle(dragSource, 'cursor', 'grab');\r\n\r\n    this.ngZone.runOutsideAngular(() => {\r\n      this.listeners.push(\r\n        this.renderer.listen(dragSource, 'mousedown', (event: MouseEvent) => {\r\n          if (event.button !== 0 || this.matchaDragDisabled) return;\r\n          event.preventDefault();\r\n          this.ngZone.run(() => {\r\n            this.dropListService.beginDrag(this, this.elementRef.nativeElement, event, this.matchaDragGroupEl ?? undefined);\r\n            this.matchaDragStarted.emit();\r\n          });\r\n        })\r\n      );\r\n\r\n      this.listeners.push(\r\n        this.renderer.listen(dragSource, 'touchstart', (event: TouchEvent) => {\r\n          if (this.matchaDragDisabled) return;\r\n          event.preventDefault();\r\n          this.ngZone.run(() => {\r\n            this.dropListService.beginDrag(this, this.elementRef.nativeElement, event, this.matchaDragGroupEl ?? undefined);\r\n            this.matchaDragStarted.emit();\r\n          });\r\n        })\r\n      );\r\n    });\r\n  }\r\n\r\n  private cleanupListeners(): void {\r\n    this.listeners.forEach(cleanup => cleanup());\r\n    this.listeners = [];\r\n  }\r\n}\r\n","import { Directive, ElementRef, OnInit, HostBinding } from '@angular/core';\r\nimport { MatchaDragDirective } from './drag.directive';\r\n\r\n@Directive({\r\n  selector: '[matchaDragHandle]',\r\n  standalone:false\r\n})\r\nexport class MatchaDragHandleDirective implements OnInit {\r\n\r\n  @HostBinding('class.matcha-drag-handle') get dragHandleClass() {\r\n    return true;\r\n  }\r\n\r\n  constructor(\r\n    private elementRef: ElementRef<HTMLElement>,\r\n    private dragDirective: MatchaDragDirective\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.dragDirective.setDragHandle(this.elementRef.nativeElement);\r\n  }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MatchaDropListService } from '../services/drop-list.service';\r\n\r\nexport interface MatchaDropZoneDroppedEvent<T = any> {\r\n  item: T;\r\n  clientX: number;\r\n  clientY: number;\r\n}\r\n\r\n@Directive({\r\n  selector: '[matchaDropZone]',\r\n  standalone: false\r\n})\r\nexport class MatchaDropZoneDirective implements OnInit, OnDestroy {\r\n  @Input({ required: true }) matchaDropZoneId!: string | number;\r\n  @Input() matchaDropZoneAcceptTypes: string[] = [];\r\n\r\n  @Output() matchaDropZoneDropped = new EventEmitter<MatchaDropZoneDroppedEvent>();\r\n\r\n  @HostBinding('class.matcha-drop-zone-cannot-accept')\r\n  get isDropRejected(): boolean {\r\n    const data = this.dropListService.currentDragData();\r\n    if (data == null) return false;\r\n    if (data?.id != null && String(data.id) === String(this.matchaDropZoneId)) return true;\r\n    if (this.matchaDropZoneAcceptTypes.length > 0) {\r\n      const dragType = this.dropListService.currentDragType();\r\n      return !!dragType && !this.matchaDropZoneAcceptTypes.includes(dragType);\r\n    }\r\n    return false;\r\n  }\r\n\r\n  constructor(\r\n    public elementRef: ElementRef<HTMLElement>,\r\n    private dropListService: MatchaDropListService\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.dropListService.registerNamedDropZone(this.matchaDropZoneId, this);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.dropListService.unregisterNamedDropZone(this.matchaDropZoneId);\r\n  }\r\n\r\n  handleDrop(item: any, clientX: number, clientY: number): void {\r\n    if (item?.id != null && String(item.id) === String(this.matchaDropZoneId)) return;\r\n    if (this.matchaDropZoneAcceptTypes.length > 0) {\r\n      const dragType = this.dropListService.currentDragType();\r\n      if (dragType && !this.matchaDropZoneAcceptTypes.includes(dragType)) return;\r\n    }\r\n    this.matchaDropZoneDropped.emit({ item, clientX, clientY });\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatchaDropListComponent } from './drop-list/drop-list.component';\r\nimport { MatchaDragDirective } from './directives/drag.directive';\r\nimport { MatchaDragHandleDirective } from './directives/drag-handle.directive';\r\nimport { MatchaDropZoneDirective } from './directives/drop-zone.directive';\r\nimport { MatchaDropListService } from './services/drop-list.service';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    MatchaDragDirective,\r\n    MatchaDragHandleDirective,\r\n    MatchaDropZoneDirective\r\n  ],\r\n  imports: [\r\n    MatchaDropListComponent,\r\n  ],\r\n  exports: [\r\n    MatchaDropListComponent,\r\n    MatchaDragDirective,\r\n    MatchaDragHandleDirective,\r\n    MatchaDropZoneDirective\r\n  ],\r\n  providers: [\r\n    MatchaDropListService\r\n  ]\r\n})\r\nexport class MatchaDropListModule { }\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatchaPhoneComponent } from \"./phone.component\";\r\n\r\n// dependencies\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatchaFormFieldModule } from '../matcha-form-field/matcha-form-field.module';\r\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\r\n@NgModule({\r\n  imports: [\r\n    MatchaPhoneComponent,\r\n    MatchaFormFieldModule,\r\n    FormsModule,\r\n    MatchaMaskModule\r\n  ],\r\n    exports: [MatchaPhoneComponent]\r\n})\r\nexport class MatchaPhoneModule { }\r\n","import { Component ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-page-layout',\r\n  templateUrl: './page-layout.component.html',\r\n  styleUrls: ['./page-layout.component.scss'],\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaPageLayoutComponent {\r\n\r\n}\r\n","<div class=\"matcha-page-layout\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, booleanAttribute } from '@angular/core';\r\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-page-footer — rodapé de ações de uma tela de formulário (criar/editar).\r\n *\r\n * É o irmão de página do `matcha-modal-footer`: mesma API declarativa, mesmo desenho (tudo\r\n * agrupado à direita, gap 16), mesma hierarquia de ênfase. Um rodapé de página e um rodapé de\r\n * diálogo passam a ser indistinguíveis, que é a intenção.\r\n *\r\n *   <form [formGroup]=\"form\" class=\"flex-column gap-outside\">\r\n *       <matcha-card class=\"flex-column gap-inside\">…</matcha-card>\r\n *\r\n *       <matcha-page-footer\r\n *           [cancelLabel]=\"'SHARED.GO_BACK' | translate\"\r\n *           [confirmLabel]=\"'SHARED.SAVE' | translate\"\r\n *           [confirmDisabled]=\"form.invalid\"\r\n *           [loading]=\"isSubmitting\"\r\n *           (cancelled)=\"navigateBack()\" (confirmed)=\"submit()\">\r\n *       </matcha-page-footer>\r\n *   </form>\r\n *\r\n * Os papéis, e nada além:\r\n *   - primária (salvar/publicar)  → sólida `accent`\r\n *   - secundária (voltar/cancelar) → `ghost` `basic`, não compete com a primária\r\n *   - destrutiva                   → sólida `danger` via `[destructive]`\r\n * Nenhum leva `size`: o default do matcha-button (40px) É o tamanho de ação de tela. Declarar\r\n * `size=\"small\"` aqui foi o desvio que existia em 57 templates até 2026-08-28.\r\n *\r\n * ORDEM DE PROJEÇÃO — a única divergência proposital em relação ao `matcha-modal-footer`. Lá o\r\n * `<ng-content>` vem ANTES do par cancel/confirm; aqui ele vem NO MEIO. Numa página a secundária é\r\n * \"Voltar\", que abre o grupo, e o que se projeta é uma ação intermediária (\"Salvar como rascunho\",\r\n * \"Excluir\") — projetar antes do Voltar a jogaria para fora do grupo. A ordem resultante é a do\r\n * canon `page-create.md`: Voltar · projetado · Salvar, com o CTA por último.\r\n *\r\n * O rodapé fica DENTRO do `<form>` (canon `page-create.md`), o que mantém o `[disabled]` ligado ao\r\n * mesmo FormGroup sem ponte. A primária é `type=\"button\"` como no modal: quem precisar do submit\r\n * nativo projeta o próprio botão em vez de receber o declarativo.\r\n *\r\n * Sem `matcha-divider` no topo, ao contrário do modal — lá ele separa o rodapé do conteúdo que\r\n * rola; numa página as seções já são cards separados por gap, e uma régua de largura total seria\r\n * peso visual novo.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-page-footer',\r\n    templateUrl: './page-footer.component.html',\r\n    styleUrls: ['./page-footer.component.scss'],\r\n    standalone: true,\r\n    imports: [MatchaButtonComponent],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaPageFooterComponent {\r\n    /** Rótulo da ação primária. Omita pra rodapé só com a secundária. */\r\n    @Input() confirmLabel: string | null = null;\r\n\r\n    /** Rótulo da ação secundária (voltar/cancelar). Omita pra rodapé de ação única. */\r\n    @Input() cancelLabel: string | null = null;\r\n\r\n    /** Estado de envio: spinner + bloqueio na primária (usa o `loading` nativo do matcha-button). */\r\n    @Input({ transform: booleanAttribute }) loading = false;\r\n\r\n    /** Bloqueia a primária sem spinner — o caso \"salvar só com formulário válido\". */\r\n    @Input({ transform: booleanAttribute }) confirmDisabled = false;\r\n\r\n    /** Ação primária é destrutiva: sólida em `danger` no lugar de `accent`. */\r\n    @Input({ transform: booleanAttribute }) destructive = false;\r\n\r\n    @Output() confirmed = new EventEmitter<void>();\r\n    @Output() cancelled = new EventEmitter<void>();\r\n}\r\n","<footer class=\"matcha-page-footer\">\r\n    <div class=\"matcha-page-footer__actions\">\r\n        <!-- Secundária primeiro: numa página ela é \"Voltar\", e é ela que abre o grupo. -->\r\n        @if (cancelLabel) {\r\n            <button matcha-button variant=\"ghost\" color=\"basic\" type=\"button\"\r\n                    (click)=\"cancelled.emit()\">\r\n                {{ cancelLabel }}\r\n            </button>\r\n        }\r\n\r\n        <!-- ng-content fora de bloco de controle de propósito: conteúdo projetado é instanciado\r\n             uma vez, e alternar @if em cima dele perde a projeção.\r\n\r\n             Fica ENTRE cancel e confirm (e não antes de tudo, como no modal) porque o que se\r\n             projeta numa página é ação intermediária — \"Salvar como rascunho\", \"Excluir\". -->\r\n        <ng-content></ng-content>\r\n\r\n        @if (confirmLabel) {\r\n            <button matcha-button type=\"button\"\r\n                    [color]=\"destructive ? 'danger' : 'accent'\"\r\n                    [loading]=\"loading\"\r\n                    [disabled]=\"confirmDisabled\"\r\n                    (click)=\"confirmed.emit()\">\r\n                {{ confirmLabel }}\r\n            </button>\r\n        }\r\n    </div>\r\n</footer>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaPageLayoutComponent } from './page-layout.component';\r\nimport { MatchaPageFooterComponent } from './page-footer/page-footer.component';\r\nimport { MatchaStepperModule } from '../matcha-stepper/stepper.module';\r\n\r\n@NgModule({\r\n  imports: [MatchaPageLayoutComponent, MatchaPageFooterComponent, MatchaStepperModule],\r\n    exports: [\r\n        MatchaPageLayoutComponent,\r\n        MatchaPageFooterComponent\r\n    ]\r\n})\r\nexport class MatchaPageLayoutModule { }\r\n","/*\r\nHOW TO USE ---------------------------------------------------------\r\nTEMPLATE:\r\n<!-- Elemento sentinela para detectar o scroll -->\r\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\r\n    <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\r\n    <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\r\n</option>\r\n*/\r\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-lazyload',\r\n  templateUrl: './lazyload.component.html',\r\n  styleUrl: './lazyload.component.scss',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaLazyloadComponent implements OnInit, OnDestroy{\r\n// Evento que será disparado quando o elemento entrar na área visível\r\n@Output() scrolledToEnd = new EventEmitter<void>();\r\n\r\nprivate observer!: IntersectionObserver;\r\n\r\nconstructor(private element: ElementRef) {}\r\n\r\nngOnInit(): void {\r\n  // Configura o observer para disparar quando 10% do elemento estiver visível\r\n  const options = {\r\n    root: null, // Usa a viewport\r\n    rootMargin: '0px',\r\n    threshold: 0.1\r\n  };\r\n\r\n  this.observer = new IntersectionObserver((entries) => {\r\n    entries.forEach(entry => {\r\n      if (entry.isIntersecting) {\r\n        this.scrolledToEnd.emit();\r\n      }\r\n    });\r\n  }, options);\r\n\r\n  this.observer.observe(this.element.nativeElement);\r\n}\r\n\r\nngOnDestroy(): void {\r\n  this.observer.disconnect();\r\n}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges ,ChangeDetectionStrategy } from '@angular/core';\r\nimport { Observable, Subscription, Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-lazyload-data',\r\n    templateUrl: './lazyload-data.component.html',\r\n    styleUrls: ['./lazyload-data.component.scss'],\r\n    styles: [`\r\n        :host {\r\n            height: 1px;\r\n            opacity: 0;\r\n        }\r\n    `],\r\n    standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaLazyloadDataComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n    /**\r\n     * Função que carrega os dados com base no número da página.\r\n     * Deve retornar um Observable com um array de itens.\r\n     */\r\n    @Input() loadData!: (page: number) => Observable<any[]>;\r\n\r\n    /**\r\n     * Lista inicial (opcional) para iniciar a agregação.\r\n     */\r\n    @Input() initialList: any[] = [];\r\n\r\n    /**\r\n     * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\r\n     */\r\n    @Input() threshold = 0.1;\r\n\r\n    /**\r\n     * Root margin para o Intersection Observer (padrão: '0px').\r\n     * Use valores como '100px' para acionar 100px antes do elemento aparecer.\r\n     * Aceita valores como: '10px', '10px 20px', '10% 5% 0px 5%'\r\n     */\r\n    @Input() rootMargin = '0px';\r\n\r\n    /**\r\n     * Chave para resetar a diretiva (para componentes como select).\r\n     */\r\n    @Input() resetKey: any;\r\n\r\n    /**\r\n     * Novo input para o autocomplete, onde será aplicado o debounce.\r\n     */\r\n    @Input() searchTerm: any;\r\n\r\n    /**\r\n     * Emite a lista acumulada de itens.\r\n     */\r\n    @Output() aggregatedData = new EventEmitter<any[]>();\r\n\r\n    /**\r\n     * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\r\n     *\r\n     * @deprecated Praticamente inalcançável: a condição é\r\n     * `aggregatedList.length === 1 && aggregatedList[0] === searchTerm` — identidade\r\n     * ESTRITA, sem normalização, sem trim, sem comparar propriedade. Como `loadData`\r\n     * quase sempre resolve com objetos (`{id, name}`) e `searchTerm` é string,\r\n     * `objeto === string` nunca é verdadeiro e o evento nunca dispara. Só funciona quando\r\n     * `loadData` devolve um array de strings.\r\n     *\r\n     * Para \"match exato\" de verdade em campo de seleção, use\r\n     * `matcha-field type=\"autocomplete\"` com `[autoSelectOnBlur]=\"true\"` — o match é feito\r\n     * pelo `findOptionByText()` do matcha-autocomplete, normalizado (ignora acento, case e\r\n     * pontuação) e sobre as options reais, não sobre a lista crua.\r\n     */\r\n    @Output() exactMatch = new EventEmitter<any>();\r\n\r\n    private aggregatedList: any[] = [];\r\n    private currentPage = 0;\r\n    private observer!: IntersectionObserver;\r\n\r\n    // Subscription para as chamadas do loadData\r\n    private dataSubscription = new Subscription();\r\n    // Subscription exclusiva para o debounce do searchTerm\r\n    private searchSubscription = new Subscription();\r\n    // Subject para aplicar debounce no searchTerm\r\n    private searchTermSubject: Subject<any> = new Subject();\r\n\r\n    constructor(private element: ElementRef) { }\r\n\r\n    ngOnInit(): void {\r\n        this.initialize();\r\n\r\n        // Configura o Intersection Observer para carregamento via scroll\r\n        const options = {\r\n            root: null,\r\n            rootMargin: this.rootMargin,\r\n            threshold: this.threshold\r\n        };\r\n\r\n        this.observer = new IntersectionObserver(entries => {\r\n            entries.forEach(entry => {\r\n                if (entry.isIntersecting) {\r\n                    this.loadNextPage();\r\n                }\r\n            });\r\n        }, options);\r\n\r\n        this.observer.observe(this.element.nativeElement);\r\n\r\n        // Inscreve para receber alterações do searchTerm com debounce\r\n        this.searchSubscription = this.searchTermSubject.pipe(\r\n            debounceTime(300)\r\n        ).subscribe(() => {\r\n            // Reseta e carrega a primeira página após o debounce\r\n            this.resetData();\r\n            this.loadNextPage();\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes['resetKey'] && !changes['resetKey'].firstChange) {\r\n            this.resetData();\r\n        }\r\n\r\n        if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\r\n            // Emite o novo valor para o Subject e aguarda o debounce\r\n            this.searchTermSubject.next(changes['searchTerm'].currentValue);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Inicializa ou reinicializa a lista agregada e o contador de página.\r\n     */\r\n    private initialize(): void {\r\n        this.aggregatedList = [...this.initialList];\r\n        this.currentPage = 0;\r\n        this.aggregatedData.emit(this.aggregatedList);\r\n        this.checkExactMatch();\r\n    }\r\n\r\n    /**\r\n     * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\r\n     */\r\n    private resetData(): void {\r\n        // Cancela as assinaturas das chamadas de loadData\r\n        this.dataSubscription.unsubscribe();\r\n        this.dataSubscription = new Subscription();\r\n\r\n        // Re-inicializa a lista e o contador\r\n        this.initialize();\r\n    }\r\n\r\n    /**\r\n     * Carrega a próxima página de dados utilizando a função loadData.\r\n     */\r\n    private loadNextPage(): void {\r\n        if (!this.loadData) {\r\n            return;\r\n        }\r\n        this.currentPage++;\r\n        const dataObservable = this.loadData(this.currentPage);\r\n        const sub = dataObservable.subscribe(data => {\r\n            if (data && data.length) {\r\n                this.aggregatedList = [...this.aggregatedList, ...data];\r\n                this.aggregatedData.emit(this.aggregatedList);\r\n                this.checkExactMatch();\r\n            }\r\n        });\r\n        this.dataSubscription.add(sub);\r\n    }\r\n\r\n    /**\r\n     * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\r\n     * Se sim, emite o output exactMatch com esse item.\r\n     */\r\n    private checkExactMatch(): void {\r\n        if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\r\n            this.exactMatch.emit(this.aggregatedList[0]);\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.observer.disconnect();\r\n        this.dataSubscription.unsubscribe();\r\n        this.searchSubscription.unsubscribe();\r\n    }\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaLazyloadComponent } from './lazyload/lazyload.component';\r\nimport { MatchaLazyloadDataComponent } from './lazyload-data/lazyload-data.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaLazyloadComponent, MatchaLazyloadDataComponent],\r\n    exports: [MatchaLazyloadComponent, MatchaLazyloadDataComponent]\r\n})\r\nexport class MatchaLazyloadModule { }\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ElementRef,\r\n    booleanAttribute,\r\n    computed,\r\n    effect,\r\n    forwardRef,\r\n    inject,\r\n    input,\r\n    output,\r\n    signal,\r\n    viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaRadioColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info';\r\n\r\nlet _idCounter = 0;\r\n\r\n/**\r\n * matcha-radio — Botão de seleção única (Figma DSV3 14354:184).\r\n *\r\n * Sempre dentro de matcha-radio-group em produção. 5 estados (default/hover/\r\n * focus/error/disabled) × 2 checks (off/on). Touch target 36×36 (pillshape)\r\n * + glyph 24×24 (wrapper) + vector 18×18 (input nativo).\r\n *\r\n *   <matcha-radio-group [(ngModel)]=\"canal\">\r\n *     <matcha-radio value=\"email\">Email</matcha-radio>\r\n *     <matcha-radio value=\"sms\">SMS</matcha-radio>\r\n *   </matcha-radio-group>\r\n *\r\n * Suporta description, hint (com error), required — paridade com matcha-checkbox.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-radio',\r\n    templateUrl: './radio.component.html',\r\n    styleUrls: ['./radio.component.scss'],\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MatchaRadioComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        // attr.color refletido no DOM pra o SCSS casar com [color=\"...\"]\r\n        // (signals inputs NÃO sincronizam automaticamente com atributos HTML).\r\n        '[attr.color]': 'color()',\r\n        '[attr.disabled]': 'isDisabled() ? \"true\" : null',\r\n        '[attr.error]': 'error() ? \"true\" : null',\r\n        '[class.matcha-radio-error]': 'error()',\r\n    },\r\n})\r\nexport class MatchaRadioComponent implements ControlValueAccessor {\r\n    /** ID único — usado em <input id> + <label for> + aria-describedby. */\r\n    readonly radioId = `matcha-radio-${++_idCounter}`;\r\n\r\n    private readonly inputElement = viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n    // ── Inputs (signals) ────────────────────────────────────────────────\r\n    /** Cor do glyph quando checked. Só accent + 6 semânticas (DSV3 canônico). */\r\n    color = input<MatchaRadioColor>('accent');\r\n\r\n    /** Valor associado. O radio-group seleciona aquele cujo value casa com [(ngModel)]. */\r\n    value = input<unknown>(null);\r\n\r\n    /** Atributo name do <input>. Auto-preenchido pelo radio-group. */\r\n    name = input<string>('');\r\n\r\n    /** Bloqueia interação + opacity 0.5 (Figma DSV3). */\r\n    disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /** Aplica visual de erro (border + dot danger). */\r\n    error = input(false, { transform: booleanAttribute });\r\n\r\n    /** Marca como obrigatório (asterisco visual + atributo required + aria-required). */\r\n    required = input(false, { transform: booleanAttribute });\r\n\r\n    /** Texto de apoio abaixo do label (caption 11/14). */\r\n    description = input<string>('');\r\n\r\n    /** Mensagem condicional. Renderiza apenas com error=true (cor danger). */\r\n    hint = input<string>('');\r\n\r\n    /** Estado de seleção declarativo. Use [(checked)] em standalone; em group, parent controla. */\r\n    checked = input(false, { transform: booleanAttribute });\r\n\r\n    // ── Internal state ──────────────────────────────────────────────────\r\n    /** Fonte da verdade do estado checked — separado do input pra evitar loop em CVA. */\r\n    private readonly _internalChecked = signal(false);\r\n\r\n    /** Disabled vindo do CVA (FormControl.disable()) — combina com input disabled. */\r\n    private readonly _cvaDisabled = signal(false);\r\n\r\n    /** Disabled efetivo (input OU CVA). */\r\n    readonly isDisabled = computed(() => this.disabled() || this._cvaDisabled());\r\n\r\n    /** Checked efetivo — read pelo template e pelo radio-group. */\r\n    readonly isChecked = computed(() => this._internalChecked());\r\n\r\n    // ── Outputs (signals) ───────────────────────────────────────────────\r\n    /** Emitido em interação real do usuário. Carrega { source, value }. */\r\n    readonly change = output<{ source: MatchaRadioComponent; value: unknown }>();\r\n\r\n    /** Emitido quando checked muda (interação ou writeValue). Lê via [(checked)]. */\r\n    readonly checkedChange = output<boolean>();\r\n\r\n    /** ARIA helpers — IDs combinados pra describedby. */\r\n    readonly describedBy = computed(() => {\r\n        const ids: string[] = [];\r\n        if (this.description()) ids.push(`${this.radioId}-desc`);\r\n        if (this.error() && this.hint()) ids.push(`${this.radioId}-hint`);\r\n        return ids.join(' ') || null;\r\n    });\r\n\r\n    // ── DI ──────────────────────────────────────────────────────────────\r\n    private readonly elRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n    // CVA — chamado pelo parent (radio-group ou FormControl direto)\r\n    private cvaChange: (v: unknown) => void = () => {};\r\n    private cvaTouched: () => void = () => {};\r\n\r\n    constructor() {\r\n        // Sync declarativo: [checked]=\"value\" inicializa o estado interno.\r\n        // Effect re-roda se o consumer mudar checked dinamicamente.\r\n        effect(() => {\r\n            this._internalChecked.set(this.checked());\r\n        });\r\n\r\n        inject(DestroyRef).onDestroy(() => {\r\n            // placeholder — nenhum recurso pendente\r\n        });\r\n    }\r\n\r\n    // ── ControlValueAccessor ────────────────────────────────────────────\r\n    writeValue(value: unknown): void {\r\n        // CVA do FormControl. Compara com value(); se casa, marca checked.\r\n        // Não dispara cvaChange (evita loop).\r\n        const next = this.value() !== null ? this.value() === value : !!value;\r\n        this._internalChecked.set(next);\r\n    }\r\n\r\n    registerOnChange(fn: (v: unknown) => void): void { this.cvaChange = fn; }\r\n    registerOnTouched(fn: () => void): void { this.cvaTouched = fn; }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this._cvaDisabled.set(isDisabled);\r\n    }\r\n\r\n    // ── Public API (para o radio-group setar imperativamente) ──────────────\r\n    /** Setter usado pelo radio-group para sincronizar checked com value. */\r\n    setChecked(checked: boolean): void {\r\n        if (this._internalChecked() === checked) return;\r\n        this._internalChecked.set(checked);\r\n        this.checkedChange.emit(checked);\r\n    }\r\n\r\n    get nativeElement(): HTMLElement {\r\n        return this.elRef.nativeElement;\r\n    }\r\n\r\n    // ── Click handler ──────────────────────────────────────────────────\r\n    onInputChange(event: Event): void {\r\n        if (this.isDisabled()) return;\r\n        event.stopPropagation();\r\n\r\n        this._internalChecked.set(true);\r\n        this.cvaTouched();\r\n\r\n        const outVal = this.value() !== null ? this.value() : true;\r\n        this.cvaChange(outVal);\r\n\r\n        this.checkedChange.emit(true);\r\n        this.change.emit({ source: this, value: outVal });\r\n    }\r\n}\r\n","<label class=\"matcha-radio-wrapper\" [for]=\"radioId\">\r\n    <span class=\"matcha-radio-touch\" matchaRipple>\r\n        <input #input\r\n               type=\"radio\"\r\n               class=\"matcha-radio-input\"\r\n               [id]=\"radioId\"\r\n               [attr.name]=\"name() || null\"\r\n               [value]=\"value()\"\r\n               [checked]=\"isChecked()\"\r\n               [disabled]=\"isDisabled()\"\r\n               [required]=\"required() || null\"\r\n               [attr.aria-describedby]=\"describedBy()\"\r\n               [attr.aria-invalid]=\"error() ? 'true' : null\"\r\n               (change)=\"onInputChange($event)\">\r\n    </span>\r\n\r\n    <span class=\"matcha-radio-text\">\r\n        <span class=\"matcha-radio-label\">\r\n            <ng-content></ng-content>\r\n            @if (required()) {\r\n                <span class=\"matcha-radio-required\" aria-hidden=\"true\">*</span>\r\n            }\r\n        </span>\r\n        @if (description()) {\r\n            <span class=\"matcha-radio-description\" [id]=\"radioId + '-desc'\">{{ description() }}</span>\r\n        }\r\n        @if (error() && hint()) {\r\n            <span class=\"matcha-radio-hint\" [id]=\"radioId + '-hint'\">{{ hint() }}</span>\r\n        }\r\n    </span>\r\n</label>\r\n","import {\r\n    AfterContentInit,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    OutputRefSubscription,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    contentChildren,\r\n    effect,\r\n    forwardRef,\r\n    inject,\r\n    input,\r\n    output,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaRadioComponent } from '../radio/radio.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nlet _nextUniqueId = 0;\r\n\r\n/**\r\n * matcha-radio-group — Container de matcha-radio (seleção única).\r\n *\r\n * Coordena os children automaticamente: aplica `name` único, sincroniza\r\n * `value` ↔ `checked` dos radios, propaga `disabled`, expõe via CVA pra\r\n * Reactive Forms / ngModel.\r\n *\r\n *   <matcha-radio-group [(ngModel)]=\"canal\">\r\n *     <matcha-radio value=\"email\">Email</matcha-radio>\r\n *     <matcha-radio value=\"sms\">SMS</matcha-radio>\r\n *   </matcha-radio-group>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-radio-group',\r\n    template: '<ng-content></ng-content>',\r\n    styleUrls: ['./radio-group.component.scss'],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MatchaRadioGroupComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n    host: {\r\n        'role': 'radiogroup',\r\n        '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\r\n    },\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n})\r\nexport class MatchaRadioGroupComponent implements AfterContentInit, ControlValueAccessor {\r\n    // ── Inputs ──────────────────────────────────────────────────────────\r\n    /** Valor selecionado no grupo. Two-way via [(ngModel)] / [(value)]. */\r\n    readonly value = input<unknown>(null);\r\n\r\n    /** Nome compartilhado entre os children. Auto-gerado se omitido. */\r\n    readonly name = input<string>(`matcha-radio-group-${++_nextUniqueId}`);\r\n\r\n    /** Desabilita TODOS os radios do grupo. */\r\n    readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n    // ── Outputs ─────────────────────────────────────────────────────────\r\n    readonly change = output<{ source: MatchaRadioComponent; value: unknown }>();\r\n    readonly valueChange = output<unknown>();\r\n\r\n    // ── Content ─────────────────────────────────────────────────────────\r\n    private readonly radios = contentChildren(MatchaRadioComponent, { descendants: true });\r\n\r\n    // ── Internal state — fonte da verdade de value (writeValue + interação) ──\r\n    private _internalValue: unknown = null;\r\n    /** Espelha o último valor VISTO no input `value` — inicializado com o default do input\r\n     *  pra distinguir \"o consumer mudou [value]\" de \"o effect rodou a primeira vez\". */\r\n    private _lastInputValue: unknown = null;\r\n    private _cvaDisabled = false;\r\n    private _isInitialized = false;\r\n    private _radioSubs: OutputRefSubscription[] = [];\r\n\r\n    /** Disabled efetivo — input OR CVA. */\r\n    readonly isDisabled = (): boolean => this.disabled() || this._cvaDisabled;\r\n\r\n    // CVA\r\n    private cvaChange: (v: unknown) => void = () => {};\r\n    private cvaTouched: () => void = () => {};\r\n\r\n    constructor() {\r\n        // Sync input value → internal (declarativo, p/ first render)\r\n        effect(() => {\r\n            const v = this.value();\r\n            // Só sobrescreve _internalValue se o input mudou explicitamente. Sem esta\r\n            // guarda o effect rodava DEPOIS do writeValue do CVA e devolvia _internalValue\r\n            // pro default do input (null): com Reactive Forms/ngModel o control tinha valor\r\n            // e a tela abria sem nenhum radio marcado. Escritas posteriores no control\r\n            // funcionavam, só a seleção INICIAL se perdia.\r\n            if (v === this._lastInputValue) return;\r\n            this._lastInputValue = v;\r\n            this._internalValue = v;\r\n            if (this._isInitialized) this.applySelectionToRadios();\r\n        });\r\n\r\n        // Sync disabled → todos os radios\r\n        effect(() => {\r\n            const disabled = this.isDisabled();\r\n            this.radios().forEach(r => {\r\n                // matcha-radio aceita [disabled] via input — aqui mutamos via CVA\r\n                // (radio expõe setDisabledState).\r\n                r.setDisabledState(disabled);\r\n            });\r\n        });\r\n\r\n        // Sync name → todos os radios (radio.name é signal input — não tem setter público).\r\n        // Workaround: setar via attribute no DOM via ElementRef.\r\n        effect(() => {\r\n            const n = this.name();\r\n            this.radios().forEach(r => {\r\n                const inp = r.nativeElement.querySelector('input[type=\"radio\"]') as HTMLInputElement | null;\r\n                if (inp && inp.name !== n) inp.name = n;\r\n            });\r\n        });\r\n\r\n        // Re-subscribe quando a lista de children muda (add/remove dinâmico)\r\n        effect(() => {\r\n            const list = this.radios();\r\n            this.unsubscribeRadios();\r\n            list.forEach(radio => {\r\n                const sub = radio.change.subscribe(event => {\r\n                    this.cvaTouched();\r\n                    if (this._internalValue !== event.value) {\r\n                        this._internalValue = event.value;\r\n                        this.applySelectionToRadios();\r\n                        this.cvaChange(event.value);\r\n                        this.valueChange.emit(event.value);\r\n                        this.change.emit(event);\r\n                    }\r\n                });\r\n                this._radioSubs.push(sub);\r\n            });\r\n            // Aplica seleção inicial nos radios recém-projetados\r\n            if (this._isInitialized) this.applySelectionToRadios();\r\n        });\r\n\r\n        inject(DestroyRef).onDestroy(() => this.unsubscribeRadios());\r\n    }\r\n\r\n    ngAfterContentInit(): void {\r\n        this._isInitialized = true;\r\n        this.applySelectionToRadios();\r\n    }\r\n\r\n    // ── ControlValueAccessor ────────────────────────────────────────────\r\n    writeValue(value: unknown): void {\r\n        this._internalValue = value;\r\n        if (this._isInitialized) this.applySelectionToRadios();\r\n    }\r\n\r\n    registerOnChange(fn: (v: unknown) => void): void { this.cvaChange = fn; }\r\n    registerOnTouched(fn: () => void): void { this.cvaTouched = fn; }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this._cvaDisabled = isDisabled;\r\n        this.radios().forEach(r => r.setDisabledState(this.isDisabled()));\r\n    }\r\n\r\n    // ── Internal helpers ────────────────────────────────────────────────\r\n    private applySelectionToRadios(): void {\r\n        this.radios().forEach(r => {\r\n            r.setChecked(r.value() === this._internalValue);\r\n        });\r\n    }\r\n\r\n    private unsubscribeRadios(): void {\r\n        this._radioSubs.forEach(sub => sub.unsubscribe());\r\n        this._radioSubs = [];\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\r\nimport { MatchaRadioComponent } from './radio/radio.component';\r\nimport { MatchaRadioGroupComponent } from './radio-group/radio-group.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaRadioComponent,\r\n    MatchaRadioGroupComponent,\r\n    MatchaRippleModule\r\n  ],\r\n    exports: [\r\n        MatchaRadioComponent,\r\n        MatchaRadioGroupComponent\r\n    ],\r\n})\r\nexport class MatchaRadioModule { }\r\n","import { Component, Input, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nconst STATUS_LABEL: Record<'none' | 'online' | 'offline' | 'busy', string> = {\r\n  none:    '',\r\n  online:  'online',\r\n  offline: 'offline',\r\n  busy:    'ocupado',\r\n};\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-avatar',\r\n  templateUrl: './avatar.component.html',\r\n  styleUrls: ['./avatar.component.scss'],\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaAvatarComponent {\r\n  @Input() src: string = '';\r\n  @Input() name: string = '';\r\n  @Input() status: 'none' | 'online' | 'offline' | 'busy' = 'none';\r\n\r\n  /**\r\n   * Cor do avatar. 'primary' (semântico, token de marca) + 6 valores da palette\r\n   * decorativa Figma DSV3 + 'neutral' (cinza). Aplica em Initials (bg + fg) e\r\n   * Placeholder (cor do disco vazado). Photo ignora.\r\n   *\r\n   * - Default 'primary' — acompanha o token de marca (`--matcha-color-primary`),\r\n   *   inclusive quando customizado por tenant. Os 6 valores de palette (ex.:\r\n   *   'light-blue') são decorativos e fixos — use quando quiser especificamente\r\n   *   aquela cor (ex.: variedade visual num avatar-group).\r\n   * - 'neutral' — cinza icon/default; usar pra placeholder discreto.\r\n   */\r\n  @Input() color: 'primary' | 'pink' | 'teal' | 'purple' | 'yellow' | 'orange' | 'light-blue' | 'neutral' = 'primary';\r\n\r\n  // Canonical 5-step size by extension: tiny(24) small(40) medium(56) large(80) huge(96).\r\n  // Abbreviations (xs/sm/md/lg/xl/2xl) are RESERVED for breakpoints and accepted here only\r\n  // as @deprecated aliases, mapped BY PIXEL SIZE so existing usages keep their dimensions\r\n  // (the old 32px `sm` tier is dropped → snaps to the nearest, tiny/24px).\r\n  private _size: string = 'medium';\r\n  @Input()\r\n  get size(): string { return this._size; }\r\n  set size(value: string) {\r\n    const aliases: Record<string, string> = {\r\n      xs: 'tiny',\r\n      sm: 'tiny',\r\n      md: 'small',\r\n      lg: 'medium',\r\n      xl: 'large',\r\n      '2xl': 'huge',\r\n    };\r\n    this._size = aliases[value] || value || 'medium';\r\n  }\r\n\r\n  private _disabled = false;\r\n  @Input()\r\n  set disabled(value: boolean | string) {\r\n    this._disabled = value != null && `${value}` !== 'false';\r\n  }\r\n  get disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n  /**\r\n   * Ring colored ao redor do avatar (default = sem ring).\r\n   *\r\n   * Aceita:\r\n   *  - `'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'neutral'`\r\n   *    → resolvido inteiro no tema via seletor de atributo (`matcha-avatar[ring=\"x\"]`),\r\n   *    sem custom property nem lookup no componente. Halo (glow externo) só em\r\n   *    accent/success/warn/danger; primary/neutral só têm o anel sólido.\r\n   *  - CSS color literal (hex, var, rgb...) → único caso que passa pela custom\r\n   *    property `--matcha-avatar-ring-color` (não dá pra enumerar seletor de\r\n   *    atributo pra cor arbitrária). Sem halo.\r\n   *\r\n   * Renderizado via box-shadow externo (não ocupa layout).\r\n   *\r\n   * Débito DSV3: ainda não está como prop no Figma matcha/avatar - code-only\r\n   * por enquanto. Documentado em `project_dsv3_debts_2026-05-20`.\r\n   */\r\n  @Input() ring: string | null = null;\r\n\r\n  /**\r\n   * Layout do avatar quando há `matcha-avatar-name`/`matcha-avatar-caption`/\r\n   * conteúdo genérico projetado ao lado da bolinha:\r\n   * - `'inline'` (default) — bolinha + texto lado a lado (linha de lista/tabela).\r\n   * - `'stacked'` — bolinha + texto abaixo, centralizado, tipografia maior\r\n   *   (hero/profile header).\r\n   *\r\n   * Sem nada projetado, não tem efeito visual — a bolinha sozinha renderiza\r\n   * igual em ambos os casos.\r\n   */\r\n  @Input() orientation: 'inline' | 'stacked' = 'inline';\r\n\r\n  public get initials(): string {\r\n    if (!this.name.trim()) return '';\r\n\r\n    const words = this.name.trim().split(/\\s+/);\r\n\r\n    if (this.size === 'tiny') {\r\n      return words[0].charAt(0).toUpperCase();\r\n    }\r\n\r\n    if (words.length >= 2) {\r\n      return (words[0].charAt(0) + words[1].charAt(0)).toUpperCase();\r\n    } else if (words.length === 1 && words[0].length >= 2) {\r\n      return words[0].substring(0, 2).toUpperCase();\r\n    } else {\r\n      return words[0].charAt(0).toUpperCase();\r\n    }\r\n  }\r\n\r\n  public get hasImage(): boolean {\r\n    return !!(this.src && this.src.trim() !== '');\r\n  }\r\n\r\n  public get hasName(): boolean {\r\n    return !!(this.name && this.name.trim() !== '');\r\n  }\r\n\r\n  public get showDefaultIcon(): boolean {\r\n    return !this.hasImage && !this.hasName;\r\n  }\r\n\r\n  public get hasStatus(): boolean {\r\n    return this.status !== 'none';\r\n  }\r\n\r\n  // ── A11y ───────────────────────────────────────────────────────────────────\r\n  /**\r\n   * Label completo pro screen reader. Inclui nome (ou fallback) + status quando\r\n   * presente. Ex.: \"Maria Silva, online · Usuário desabilitado\".\r\n   */\r\n  public get a11yLabel(): string {\r\n    const base = this.hasName ? this.name : 'Usuário sem nome';\r\n    const status = this.hasStatus ? `, ${STATUS_LABEL[this.status]}` : '';\r\n    const disabled = this.disabled ? ' · indisponível' : '';\r\n    return `${base}${status}${disabled}`;\r\n  }\r\n\r\n  // Host bindings — role=img + aria-label dinâmico + aria-disabled. Avatar é\r\n  // tratado como imagem semântica (WAI-ARIA Avatar Pattern).\r\n  @HostBinding('attr.role') hostRole = 'img';\r\n  @HostBinding('attr.aria-label')    get hostAriaLabel()    { return this.a11yLabel; }\r\n  @HostBinding('attr.aria-disabled') get hostAriaDisabled() { return this.disabled || null; }\r\n\r\n  /** Marca host pra theme aplicar ring — seletor de atributo (matcha-avatar[ring=\"x\"]) pros 6 tokens conhecidos, fallback literal abaixo pro resto. */\r\n  @HostBinding('attr.ring') get hostRing() { return this.ring || null; }\r\n\r\n  /** Custom property só consumida pelo branch de fallback do tema (ring literal, não um dos 6 tokens semânticos — esses resolvem via var(--matcha-color-x) direto no CSS, sem passar por aqui). */\r\n  @HostBinding('style.--matcha-avatar-ring-color') get ringColorVar() {\r\n    return this.ring;\r\n  }\r\n\r\n  // Host bindings — size/color/status/disabled/placeholder refletidos como\r\n  // atributo do host (mesmo padrão do `ring` acima e do `outline`/`link` do\r\n  // matcha-button) em vez de classe dinâmica: estado visual inteiro visível\r\n  // direto no elemento no devtools, sem abrir a lista de classes de um span\r\n  // interno. O CSS do tema seleciona por `matcha-avatar[attr=\"x\"]`.\r\n  @HostBinding('attr.size') get hostSize() { return this.size; }\r\n  @HostBinding('attr.color') get hostColor() { return this.hasImage ? null : this.color; }\r\n  @HostBinding('attr.status') get hostStatus() { return this.hasStatus ? this.status : null; }\r\n  @HostBinding('attr.disabled') get hostDisabled() { return this.disabled ? '' : null; }\r\n  @HostBinding('attr.placeholder') get hostPlaceholder() { return this.showDefaultIcon ? '' : null; }\r\n  @HostBinding('attr.orientation') get hostOrientation() { return this.orientation; }\r\n}\r\n","<span class=\"matcha-avatar\">\r\n    <!--\r\n        Conteúdo visual interno é decorativo (aria-hidden) porque o host span\r\n        já tem role=img + aria-label com nome+status. Evita screen reader ler\r\n        \"Maria, Maria, MA\" (duplicado).\r\n    -->\r\n\r\n    <!-- Photo -->\r\n    <img *ngIf=\"hasImage\"\r\n         [src]=\"src\"\r\n         alt=\"\"\r\n         aria-hidden=\"true\"\r\n         class=\"matcha-avatar-image\">\r\n\r\n    <!-- Initials -->\r\n    <span *ngIf=\"!hasImage && hasName\"\r\n          aria-hidden=\"true\"\r\n          class=\"matcha-avatar-initials\">{{ initials }}</span>\r\n\r\n    <!-- Placeholder — Figma: disco neutro + silhueta vazada (evenodd cutout). -->\r\n    <svg *ngIf=\"showDefaultIcon\"\r\n         aria-hidden=\"true\"\r\n         focusable=\"false\"\r\n         class=\"matcha-avatar-icon\"\r\n         viewBox=\"0 0 56 56\"\r\n         fill=\"none\"\r\n         xmlns=\"http://www.w3.org/2000/svg\">\r\n        <path fill-rule=\"evenodd\"\r\n              clip-rule=\"evenodd\"\r\n              d=\"M28 0C12.544 0 0 12.544 0 28C0 43.456 12.544 56 28 56C43.456 56 56 43.456 56 28C56 12.544 43.456 0 28 0ZM28.0022 8.4C32.6502 8.4 36.4022 12.152 36.4022 16.8C36.4022 21.448 32.6502 25.2 28.0022 25.2C23.3542 25.2 19.6022 21.448 19.6022 16.8C19.6022 12.152 23.3542 8.4 28.0022 8.4ZM28.0022 48.1601C21.0022 48.1601 14.8142 44.5761 11.2022 39.1441C11.2862 33.5721 22.4022 30.5201 28.0022 30.5201C33.5742 30.5201 44.7182 33.5721 44.8022 39.1441C41.1902 44.5761 35.0022 48.1601 28.0022 48.1601Z\"\r\n              fill=\"currentColor\"/>\r\n    </svg>\r\n\r\n    <!--\r\n        Status indicator: bolinha visual. SR já anuncia o status via aria-label\r\n        do host (ex.: \"Maria, online\") — não duplicamos como SR-only.\r\n    -->\r\n    <span *ngIf=\"hasStatus\" class=\"matcha-avatar-status\" aria-hidden=\"true\"></span>\r\n</span>\r\n<div class=\"matcha-avatar-text\">\r\n    <ng-content select=\"matcha-avatar-name\"></ng-content>\r\n    <ng-content select=\"matcha-avatar-caption\"></ng-content>\r\n    <ng-content></ng-content>\r\n</div>\r\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  QueryList,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAvatarComponent } from '../avatar/avatar.component';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\n\n/**\n * `matcha-avatar-group` — empilhamento horizontal de `matcha-avatar` com\n * overlap + contador de overflow (\"+N\"). Substitui a composição manual\n * (SCSS local) de avatar-group feita nas telas.\n *\n * Projeta os `<matcha-avatar>` filhos — o consumidor mantém controle total\n * sobre cada um (foto/nome/cor/tamanho). O grupo só decide **quantos** ficam\n * visíveis (`max`) e calcula o \"+N\" do restante.\n *\n * @example\n *   <matcha-avatar-group [max]=\"4\">\n *     <matcha-avatar size=\"medium\" name=\"Ana Silva\"></matcha-avatar>\n *     <matcha-avatar size=\"medium\" name=\"Pedro Costa\" color=\"teal\"></matcha-avatar>\n *     <matcha-avatar size=\"medium\" name=\"Maria Santos\" color=\"purple\"></matcha-avatar>\n *     <matcha-avatar size=\"medium\" name=\"João Lima\" color=\"orange\"></matcha-avatar>\n *     <matcha-avatar size=\"medium\" name=\"Extra\"></matcha-avatar>\n *   </matcha-avatar-group>\n */\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n  selector: 'matcha-avatar-group',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './avatar-group.component.html',\n  styleUrls: ['./avatar-group.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'matcha-avatar-group' },\n})\nexport class MatchaAvatarGroupComponent implements AfterContentInit {\n  /** Nº máximo de avatares visíveis — o resto vira \"+N\". Default 5. */\n  @Input() max = 5;\n\n  @ContentChildren(MatchaAvatarComponent, { read: ElementRef })\n  private avatarRefs!: QueryList<ElementRef<HTMLElement>>;\n\n  overflowCount = 0;\n\n  constructor(private readonly cdr: ChangeDetectorRef) {}\n\n  ngAfterContentInit(): void {\n    this.updateVisibility();\n    this.avatarRefs.changes.subscribe(() => this.updateVisibility());\n  }\n\n  private updateVisibility(): void {\n    const items = this.avatarRefs.toArray();\n    items.forEach((ref, i) => {\n      ref.nativeElement.style.display = i < this.max ? '' : 'none';\n    });\n    this.overflowCount = Math.max(0, items.length - this.max);\n    this.cdr.markForCheck();\n  }\n}\n","<ng-content></ng-content>\n<span *ngIf=\"overflowCount > 0\" class=\"matcha-avatar-group__more\">+{{ overflowCount }}</span>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-avatar-name',\r\n  template: '<ng-content></ng-content>',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaAvatarNameComponent {}\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-avatar-caption',\r\n  template: '<ng-content></ng-content>',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaAvatarCaptionComponent {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaAvatarComponent } from './avatar/avatar.component';\r\nimport { MatchaAvatarGroupComponent } from './avatar-group/avatar-group.component';\r\nimport { MatchaAvatarNameComponent } from './avatar-name/avatar-name.component';\r\nimport { MatchaAvatarCaptionComponent } from './avatar-caption/avatar-caption.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaAvatarComponent, MatchaAvatarGroupComponent, MatchaAvatarNameComponent, MatchaAvatarCaptionComponent],\r\n  exports: [MatchaAvatarComponent, MatchaAvatarGroupComponent, MatchaAvatarNameComponent, MatchaAvatarCaptionComponent]\r\n})\r\nexport class MatchaAvatarModule { }\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ElementRef,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    computed,\r\n    effect,\r\n    inject,\r\n    input,\r\n    model,\r\n    output,\r\n    signal,\r\n} from '@angular/core';\r\nimport { MatchaFocusTrap } from '../../matcha-a11y/matcha-a11y.utils';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type DrawerMode = 'over' | 'push' | 'side';\r\nexport type DrawerPosition = 'start' | 'end' | 'bottom';\r\n\r\n/**\r\n * matcha-drawer — sidenav / sliding panel canônico (Figma DSV3).\r\n *\r\n * Modos: over (modal + backdrop + focus trap) · push (empurra content) · side (side-by-side).\r\n * Posições: start (left LTR) · end (right LTR) · bottom (sheet inferior).\r\n *\r\n * **A11y:**\r\n * - role=\"dialog\" + aria-modal=true em mode=over (semantic modal)\r\n * - role=\"complementary\" nos demais modos (landmark navegável por leitor)\r\n * - aria-hidden=true quando totalmente fechado (não anuncia conteúdo invisível)\r\n * - Focus trap reativo a `mode + opened` (ativa em over+open, deactiva caso contrário)\r\n * - Focus return ao fechar (foco volta pro elemento que abriu — UX correta)\r\n * - ESC fecha (respeita disableClose; bloqueado dispara shake como feedback visual)\r\n *\r\n * **Animação:** CSS-only via `transform: translate3d`. `transitionend` no host\r\n * sincroniza estado (`_animating`) e resolve a Promise do `toggle()`.\r\n *\r\n * **Shake feedback:** quando ESC ou backdrop click são bloqueados por\r\n * `disableClose=true`, dispara animação shake (400ms) sinalizando que a ação\r\n * foi capturada mas não pode prosseguir.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-drawer',\r\n    templateUrl: './drawer.component.html',\r\n    styleUrls: ['./drawer.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-drawer',\r\n        '[class.matcha-drawer-end]':       'position() === \"end\"',\r\n        '[class.matcha-drawer-bottom]':    'position() === \"bottom\"',\r\n        '[class.matcha-drawer-over]':      'mode() === \"over\"',\r\n        '[class.matcha-drawer-push]':      'mode() === \"push\"',\r\n        '[class.matcha-drawer-side]':      'mode() === \"side\"',\r\n        '[class.matcha-drawer-opened]':    'opened()',\r\n        '[class.matcha-drawer-shake]':     'shaking()',\r\n        '[class.matcha-drawer--dragging]': 'dragging()',\r\n        '[attr.role]':        'mode() === \"over\" ? \"dialog\" : \"complementary\"',\r\n        '[attr.aria-modal]':  'mode() === \"over\" ? \"true\" : null',\r\n        '[attr.aria-hidden]': '!visible() ? \"true\" : null',\r\n        '[attr.aria-label]':  'ariaLabel()',\r\n        '[style.width]':      'computedWidth()',\r\n        '[style.visibility]': 'visible() ? \"visible\" : \"hidden\"',\r\n        'tabindex': '-1',\r\n        '(keydown.escape)':   'onEscape($event)',\r\n        '(transitionend)':    'onTransitionEnd($event)',\r\n    },\r\n})\r\nexport class MatchaDrawerComponent {\r\n    /** Posição da entrada. start = left (LTR) · end = right (LTR) · bottom = sheet full-width. */\r\n    readonly position = input<DrawerPosition>('start');\r\n\r\n    /** Modo de exibição. over = modal + backdrop · push = empurra content · side = side-by-side. */\r\n    readonly mode = input<DrawerMode>('over');\r\n\r\n    /** Bloqueia fechar via ESC e backdrop click. ESC/backdrop disparam shake como feedback. */\r\n    readonly disableClose = input(false, { transform: booleanAttribute });\r\n\r\n    /** Foca o drawer ao abrir (default true). Aplicado após animação completar. */\r\n    readonly autoFocus = input(true, { transform: booleanAttribute });\r\n\r\n    /** Largura (CSS value). Default = sidebar-submenu token. Bottom ignora e usa 100%. */\r\n    readonly width = input<string>('var(--matcha-grid-sidebar-submenu, 216px)');\r\n\r\n    /** aria-label (descrição do drawer pra leitor de tela). */\r\n    readonly ariaLabel = input<string>('Menu de navegação');\r\n\r\n    /** Estado open/closed (two-way: `[(opened)]`). */\r\n    readonly opened = model<boolean>(false);\r\n\r\n    /** Início da animação de abrir (antes do transform completar). */\r\n    readonly openedStart = output<void>();\r\n    /** Início da animação de fechar. */\r\n    readonly closedStart = output<void>();\r\n    /** Animação de abrir concluída (transitionend, não setTimeout). */\r\n    readonly openedEnd = output<void>();\r\n    /** Animação de fechar concluída. */\r\n    readonly closedEnd = output<void>();\r\n\r\n    private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly _animating = signal(false);\r\n    private readonly _shaking = signal(false);\r\n    private readonly _dragging = signal(false);\r\n    private _previousFocus: HTMLElement | null = null;\r\n    private _focusTrap: MatchaFocusTrap | null = null;\r\n    private _pendingResolve: (() => void) | null = null;\r\n    private _shakeTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n    // ── Modal lock state (scroll-lock + inert siblings) — só em mode=over ──\r\n    private _prevBodyOverflow: string = '';\r\n    private _prevBodyPaddingRight: string = '';\r\n    private _inertedSiblings: HTMLElement[] = [];\r\n    private _modalLocked = false;\r\n\r\n    // ── Drag-to-dismiss (bottom sheet) state ──\r\n    private _dragStartY = 0;\r\n    private _dragStartTime = 0;\r\n    private _dragDeltaY = 0;\r\n    private _dragPointerId: number | null = null;\r\n    private _onDragMove = (e: PointerEvent) => this.onDragMove(e);\r\n    private _onDragEnd = (e: PointerEvent) => this.onDragEnd(e);\r\n\r\n    /** Visível durante animação OU aberto (esconde do AT/tab order quando fechado). */\r\n    readonly visible = computed(() => this.opened() || this._animating());\r\n\r\n    /** Estado de animação read-only (signal exposto). */\r\n    readonly animating = this._animating.asReadonly();\r\n\r\n    /** Estado de shake read-only (feedback visual de disableClose). */\r\n    readonly shaking = this._shaking.asReadonly();\r\n\r\n    /** Estado de drag em andamento (bottom sheet). */\r\n    readonly dragging = this._dragging.asReadonly();\r\n\r\n    readonly computedWidth = computed(() =>\r\n        this.position() === 'bottom' ? '100%' : (this.width() || 'var(--matcha-grid-sidebar-submenu, 216px)'),\r\n    );\r\n\r\n    constructor() {\r\n        // Estado modal reativo (over + open): focus trap + scroll-lock + inert\r\n        // siblings. Tudo num único effect pra coerência. Cobre: open, close,\r\n        // mode change durante drawer aberto, destroy.\r\n        effect(() => {\r\n            const isOpen = this.opened();\r\n            const isOver = this.mode() === 'over';\r\n            const shouldBeModal = isOpen && isOver;\r\n\r\n            // Focus trap\r\n            if (shouldBeModal && !this._focusTrap) {\r\n                this._focusTrap = new MatchaFocusTrap(this.elementRef.nativeElement);\r\n                this._focusTrap.activate();\r\n            } else if (!shouldBeModal && this._focusTrap) {\r\n                this._focusTrap.deactivate();\r\n                this._focusTrap = null;\r\n            }\r\n\r\n            // Scroll-lock body + inert siblings (modal isolation)\r\n            if (shouldBeModal && !this._modalLocked) {\r\n                this.lockBodyScroll();\r\n                this.inertSiblings();\r\n                this._modalLocked = true;\r\n            } else if (!shouldBeModal && this._modalLocked) {\r\n                this.unlockBodyScroll();\r\n                this.uninertSiblings();\r\n                this._modalLocked = false;\r\n            }\r\n        });\r\n\r\n        // Cleanup determinístico em destroy.\r\n        this.destroyRef.onDestroy(() => {\r\n            this._focusTrap?.deactivate();\r\n            this._focusTrap = null;\r\n            if (this._shakeTimer) {\r\n                clearTimeout(this._shakeTimer);\r\n                this._shakeTimer = null;\r\n            }\r\n            // Garante restauração se destroy ocorrer com modal aberto.\r\n            if (this._modalLocked) {\r\n                this.unlockBodyScroll();\r\n                this.uninertSiblings();\r\n                this._modalLocked = false;\r\n            }\r\n            // Drag cleanup\r\n            this.cancelDrag();\r\n            this._previousFocus = null;\r\n            this._pendingResolve = null;\r\n        });\r\n    }\r\n\r\n    /** Acesso ao elemento DOM raiz (usado pelo container pra calcular margens). */\r\n    get nativeElement(): HTMLElement {\r\n        return this.elementRef.nativeElement;\r\n    }\r\n\r\n    /**\r\n     * API pública — toggle programático. Resolve quando a animação termina\r\n     * (transitionend real, não setTimeout). Chamadas concorrentes (toggle\r\n     * durante animação OU já no estado alvo) resolvem imediatamente.\r\n     */\r\n    toggle(isOpen: boolean = !this.opened()): Promise<void> {\r\n        if (this.opened() === isOpen) return Promise.resolve();\r\n        if (this._animating()) return Promise.resolve();\r\n\r\n        this._animating.set(true);\r\n\r\n        if (isOpen) {\r\n            // Captura foco anterior pra restaurar no close. Pode ser null (nada focado).\r\n            const active = document.activeElement;\r\n            this._previousFocus = active instanceof HTMLElement ? active : null;\r\n            this.openedStart.emit();\r\n        } else {\r\n            this.closedStart.emit();\r\n        }\r\n        this.opened.set(isOpen);\r\n\r\n        // Promise resolve via _pendingResolve, chamado em onTransitionEnd\r\n        // (single source of truth pro fim da animação — evita listeners duplos).\r\n        return new Promise<void>(resolve => {\r\n            this._pendingResolve = resolve;\r\n        });\r\n    }\r\n\r\n    open(): Promise<void> { return this.toggle(true); }\r\n\r\n    /**\r\n     * Fecha o drawer. Se `disableClose=true`, dispara shake (feedback visual)\r\n     * e retorna Promise.resolve() sem animar. Use `forceClose()` pra bypassar.\r\n     */\r\n    close(): Promise<void> {\r\n        if (this.disableClose()) {\r\n            this.shake();\r\n            return Promise.resolve();\r\n        }\r\n        return this.toggle(false);\r\n    }\r\n\r\n    /** Força fechar bypassando disableClose. Use em cleanup/navegação programática. */\r\n    forceClose(): Promise<void> { return this.toggle(false); }\r\n\r\n    /**\r\n     * Dispara animação shake (400ms) — feedback visual de \"ação capturada mas\r\n     * bloqueada\". Usado pelo container quando ESC/backdrop click são bloqueados\r\n     * por disableClose. Public pra também ser invocável programaticamente.\r\n     */\r\n    shake(): void {\r\n        this._shaking.set(true);\r\n        if (this._shakeTimer) clearTimeout(this._shakeTimer);\r\n        this._shakeTimer = setTimeout(() => {\r\n            this._shaking.set(false);\r\n            this._shakeTimer = null;\r\n        }, 400);\r\n    }\r\n\r\n    onEscape(event: KeyboardEvent): void {\r\n        if (this.mode() !== 'over') return;\r\n        if (!this.opened()) return;\r\n        event.stopPropagation();\r\n        if (this.disableClose()) {\r\n            this.shake();\r\n            return;\r\n        }\r\n        // close() já trata disableClose internamente, mas o early return acima\r\n        // evita chamada redundante quando drawer está em mode=over + disableClose.\r\n        this.toggle(false);\r\n    }\r\n\r\n    onTransitionEnd(event: TransitionEvent): void {\r\n        // Filtra: só responde ao próprio host (não bubble de filhos) e só ao transform\r\n        // (animação que decide aberto/fechado — ignora transitions de visibility/width/etc).\r\n        if (event.target !== this.elementRef.nativeElement) return;\r\n        if (event.propertyName !== 'transform') return;\r\n\r\n        this._animating.set(false);\r\n\r\n        if (this.opened()) {\r\n            if (this.autoFocus()) this.elementRef.nativeElement.focus();\r\n            this.openedEnd.emit();\r\n        } else {\r\n            // Focus trap já deactivated via effect (mode/opened reativos).\r\n            this._previousFocus?.focus();\r\n            this._previousFocus = null;\r\n            this.closedEnd.emit();\r\n        }\r\n\r\n        this._pendingResolve?.();\r\n        this._pendingResolve = null;\r\n    }\r\n\r\n    // ── Scroll-lock — previne scroll na page atrás do drawer over ────────\r\n    // Compensa o gap do scrollbar via padding-right pra não causar layout shift.\r\n    private lockBodyScroll(): void {\r\n        const body = document.body;\r\n        const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\r\n        this._prevBodyOverflow = body.style.overflow;\r\n        this._prevBodyPaddingRight = body.style.paddingRight;\r\n        body.style.overflow = 'hidden';\r\n        if (scrollbarWidth > 0) body.style.paddingRight = `${scrollbarWidth}px`;\r\n    }\r\n\r\n    private unlockBodyScroll(): void {\r\n        document.body.style.overflow = this._prevBodyOverflow;\r\n        document.body.style.paddingRight = this._prevBodyPaddingRight;\r\n    }\r\n\r\n    // ── Inert siblings — screen readers e keyboard ignoram fora do drawer ──\r\n    // WAI-ARIA APG dialog pattern. Inert TODOS os children do body exceto a\r\n    // árvore que contém este drawer (drawer permanece acessível).\r\n    private inertSiblings(): void {\r\n        // Encontra ancestral direto do body (subindo do drawer).\r\n        let ancestor: HTMLElement | null = this.elementRef.nativeElement;\r\n        while (ancestor && ancestor.parentElement && ancestor.parentElement !== document.body) {\r\n            ancestor = ancestor.parentElement;\r\n        }\r\n        if (!ancestor || ancestor.parentElement !== document.body) return;\r\n\r\n        Array.from(document.body.children).forEach(child => {\r\n            if (child !== ancestor && child instanceof HTMLElement && !child.hasAttribute('inert')) {\r\n                child.setAttribute('inert', '');\r\n                this._inertedSiblings.push(child);\r\n            }\r\n        });\r\n    }\r\n\r\n    private uninertSiblings(): void {\r\n        this._inertedSiblings.forEach(el => el.removeAttribute('inert'));\r\n        this._inertedSiblings = [];\r\n    }\r\n\r\n    // ── Drag-to-dismiss (bottom sheet) ────────────────────────────────────\r\n    // Disparado pelo handle (matcha-drawer__handle pointerdown). Só funciona\r\n    // em position=bottom + opened. Tracks deltaY, aplica transform 1:1 com\r\n    // o dedo. Em release: threshold 80px OU velocity > 0.5px/ms fecha;\r\n    // caso contrário, snap back via remoção do inline transform (CSS retoma).\r\n    onDragStart(event: PointerEvent): void {\r\n        // Guards\r\n        if (this.position() !== 'bottom') return;\r\n        if (!this.opened()) return;\r\n        if (this._animating()) return;\r\n        if (event.button !== 0 && event.pointerType === 'mouse') return; // só primário\r\n\r\n        this._dragStartY = event.clientY;\r\n        this._dragStartTime = performance.now();\r\n        this._dragDeltaY = 0;\r\n        this._dragPointerId = event.pointerId;\r\n        this._dragging.set(true);\r\n\r\n        // Captura o pointer pra continuar recebendo events mesmo se sair do handle\r\n        const target = event.currentTarget as HTMLElement;\r\n        try { target.setPointerCapture(event.pointerId); } catch {}\r\n\r\n        // Listeners no document — pega pointermove/up mesmo fora do handle\r\n        document.addEventListener('pointermove', this._onDragMove);\r\n        document.addEventListener('pointerup', this._onDragEnd);\r\n        document.addEventListener('pointercancel', this._onDragEnd);\r\n\r\n        event.preventDefault();\r\n    }\r\n\r\n    private onDragMove(event: PointerEvent): void {\r\n        if (this._dragPointerId !== event.pointerId) return;\r\n\r\n        const deltaY = event.clientY - this._dragStartY;\r\n        // Só rastreia drag pra baixo (positivo). Resistência elástica acima.\r\n        this._dragDeltaY = deltaY > 0 ? deltaY : deltaY * 0.2;\r\n\r\n        // Aplica transform inline — sobrepõe o CSS .matcha-drawer-opened.\r\n        this.elementRef.nativeElement.style.transform = `translate3d(0, ${this._dragDeltaY}px, 0)`;\r\n    }\r\n\r\n    private onDragEnd(event: PointerEvent): void {\r\n        if (this._dragPointerId !== event.pointerId) return;\r\n\r\n        const deltaY = this._dragDeltaY;\r\n        const elapsed = performance.now() - this._dragStartTime;\r\n        const velocity = elapsed > 0 ? deltaY / elapsed : 0;\r\n\r\n        const drawerHeight = this.elementRef.nativeElement.offsetHeight;\r\n        const distanceThreshold = drawerHeight * 0.25; // 25% da altura\r\n        const velocityThreshold = 0.5; // px/ms\r\n\r\n        const shouldClose = deltaY > distanceThreshold || velocity > velocityThreshold;\r\n\r\n        // Limpa state SEMPRE (independente de close ou snap-back)\r\n        this.cancelDrag();\r\n\r\n        if (shouldClose) {\r\n            this.close();\r\n        } else {\r\n            // Snap back — remove inline transform pra CSS .matcha-drawer-opened\r\n            // retomar com transition normal.\r\n            this.elementRef.nativeElement.style.transform = '';\r\n        }\r\n\r\n        event.preventDefault();\r\n    }\r\n\r\n    private cancelDrag(): void {\r\n        if (!this._dragging()) return;\r\n        this._dragging.set(false);\r\n        this._dragPointerId = null;\r\n        this._dragDeltaY = 0;\r\n        document.removeEventListener('pointermove', this._onDragMove);\r\n        document.removeEventListener('pointerup', this._onDragEnd);\r\n        document.removeEventListener('pointercancel', this._onDragEnd);\r\n    }\r\n}\r\n","<!-- 3 slots + drag handle (bottom sheet). Slots vazios auto-hide via :has().\r\n     Default <ng-content> é fallback pro body — back-compat com uso legacy.\r\n     Handle só renderiza em position=bottom (CSS display: none default; block via .matcha-drawer-bottom).\r\n-->\r\n<div class=\"matcha-drawer__handle\"\r\n     role=\"separator\"\r\n     aria-orientation=\"horizontal\"\r\n     aria-label=\"Arraste pra fechar\"\r\n     (pointerdown)=\"onDragStart($event)\">\r\n</div>\r\n<div class=\"matcha-drawer__slot matcha-drawer__slot--header\">\r\n    <ng-content select=\"[matcha-drawer-header]\"></ng-content>\r\n</div>\r\n<div class=\"matcha-drawer__slot matcha-drawer__slot--body\">\r\n    <ng-content select=\"[matcha-drawer-body]\"></ng-content>\r\n    <ng-content></ng-content>\r\n</div>\r\n<div class=\"matcha-drawer__slot matcha-drawer__slot--footer\">\r\n    <ng-content select=\"[matcha-drawer-footer]\"></ng-content>\r\n</div>\r\n","import { Directive, ElementRef, inject } from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-drawer-content — wrapper do conteúdo principal da página em drawer-container.\r\n *\r\n * Em mode=push/side, o container ajusta `margin-left/right` deste elemento\r\n * pra que o conteúdo não fique sob o drawer aberto.\r\n *\r\n * Aceita element selector (`<matcha-drawer-content>`) ou attribute selector\r\n * (`<div matcha-drawer-content>`) — escolha o que for mais semântico.\r\n */\r\n@Directive({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-drawer-content, [matcha-drawer-content]',\r\n    standalone: true,\r\n    host: {\r\n        'class': 'matcha-drawer-content',\r\n    },\r\n})\r\nexport class MatchaDrawerContentComponent {\r\n    private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n    /** Acesso ao elemento DOM raiz (usado pelo container pra ajustar margens). */\r\n    get nativeElement(): HTMLElement {\r\n        return this.elementRef.nativeElement;\r\n    }\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ViewEncapsulation,\r\n    afterNextRender,\r\n    computed,\r\n    contentChild,\r\n    contentChildren,\r\n    effect,\r\n    inject,\r\n} from '@angular/core';\r\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { merge } from 'rxjs';\r\nimport { MatchaDrawerComponent } from '../drawer/drawer.component';\r\nimport { MatchaDrawerContentComponent } from '../drawer-content/drawer-content.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\ndeclare const ngDevMode: boolean;\r\n\r\n/**\r\n * matcha-drawer-container — orquestrador de drawers + content.\r\n *\r\n * Responsabilidades:\r\n * 1. Coordena ESC global (fecha drawers em mode=over com disableClose=false;\r\n *    dispara shake quando bloqueado).\r\n * 2. Renderiza backdrop quando há drawer over aberto. Click no backdrop fecha\r\n *    (ou shake se disableClose).\r\n * 3. Aplica margin-left/right no `<matcha-drawer-content>` quando drawer\r\n *    em mode=push/side está aberto. Recalcula via ResizeObserver quando o\r\n *    drawer redimensiona (responsive width, token change, viewport).\r\n *\r\n * Limite de uso: máx 2 drawers (start + end). >2 dispara console.error em dev mode.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-drawer-container',\r\n    templateUrl: './drawer-container.component.html',\r\n    styleUrls: ['./drawer-container.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-drawer-container',\r\n        '[class.matcha-drawer-container-has-open]': 'hasOpenDrawer()',\r\n        '(document:keydown.escape)': 'onDocumentEscape()',\r\n    },\r\n})\r\nexport class MatchaDrawerContainerComponent {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n\r\n    readonly drawers = contentChildren(MatchaDrawerComponent);\r\n    readonly content = contentChild(MatchaDrawerContentComponent);\r\n\r\n    readonly hasOpenDrawer = computed(() =>\r\n        this.drawers().some(d => d.opened()),\r\n    );\r\n\r\n    /** Há backdrop visível? Mostra quando algum drawer em mode=over está aberto. */\r\n    readonly hasBackdrop = computed(() =>\r\n        this.drawers().some(d => d.opened() && d.mode() === 'over'),\r\n    );\r\n\r\n    constructor() {\r\n        // Validação dev-only: máx 2 drawers (start + end)\r\n        effect(() => {\r\n            const count = this.drawers().length;\r\n            if (typeof ngDevMode !== 'undefined' && ngDevMode && count > 2) {\r\n                console.error(\r\n                    `[matcha-drawer-container] Máximo 2 drawers permitidos (start + end). ` +\r\n                    `Encontrados: ${count}.`,\r\n                );\r\n            }\r\n        });\r\n\r\n        // Subscreve eventos open/close pra recalcular margens do content.\r\n        effect((onCleanup) => {\r\n            const drawers = this.drawers();\r\n            if (drawers.length === 0) return;\r\n\r\n            const events$ = merge(\r\n                ...drawers.flatMap(d => [\r\n                    outputToObservable(d.openedStart),\r\n                    outputToObservable(d.closedEnd),\r\n                ]),\r\n            );\r\n            const sub = events$\r\n                .pipe(takeUntilDestroyed(this.destroyRef))\r\n                .subscribe(() => this.updateContentMargins());\r\n\r\n            // Recalcula imediatamente (drawers podem inicializar em opened=true)\r\n            this.updateContentMargins();\r\n\r\n            onCleanup(() => sub.unsubscribe());\r\n        });\r\n\r\n        // ResizeObserver: drawer width pode mudar dinamicamente (token resize,\r\n        // breakpoint observable, [width] bound). Recalcula margens em qualquer\r\n        // mudança de tamanho do drawer aberto em mode=push/side.\r\n        effect((onCleanup) => {\r\n            const drawers = this.drawers();\r\n            if (drawers.length === 0 || typeof ResizeObserver === 'undefined') return;\r\n\r\n            const ro = new ResizeObserver(() => this.updateContentMargins());\r\n            for (const d of drawers) ro.observe(d.nativeElement);\r\n\r\n            onCleanup(() => ro.disconnect());\r\n        });\r\n\r\n        // Primeira renderização: garante margens corretas após view content init.\r\n        afterNextRender(() => this.updateContentMargins());\r\n    }\r\n\r\n    /**\r\n     * Fecha drawers em mode=over ao pressionar ESC global. Bloqueados por\r\n     * disableClose disparam shake (feedback visual).\r\n     */\r\n    onDocumentEscape(): void {\r\n        for (const d of this.drawers()) {\r\n            if (!d.opened() || d.mode() !== 'over') continue;\r\n            if (d.disableClose()) {\r\n                d.shake();\r\n            } else {\r\n                d.close();\r\n            }\r\n        }\r\n    }\r\n\r\n    /** Click no backdrop — mesmo comportamento do ESC. */\r\n    onBackdropClick(): void {\r\n        this.onDocumentEscape();\r\n    }\r\n\r\n    /**\r\n     * Fecha todos drawers abertos. `force=true` ignora disableClose\r\n     * (pra cleanup/navegação programática).\r\n     *\r\n     * Retorna Promise.all das animações de fechar — resolve quando todas\r\n     * as transições terminam.\r\n     */\r\n    closeAll(options: { force?: boolean } = {}): Promise<void[]> {\r\n        const force = options.force === true;\r\n        return Promise.all(\r\n            this.drawers()\r\n                .filter(d => d.opened())\r\n                .map(d => force ? d.forceClose() : d.close())\r\n        );\r\n    }\r\n\r\n    /**\r\n     * Calcula e aplica margin-left/right no content baseado em drawers\r\n     * push/side abertos. Usa offsetWidth real (sem magic numbers).\r\n     */\r\n    private updateContentMargins(): void {\r\n        const content = this.content();\r\n        if (!content) return;\r\n\r\n        let left = 0;\r\n        let right = 0;\r\n\r\n        for (const drawer of this.drawers()) {\r\n            const mode = drawer.mode();\r\n            if (!drawer.opened() || (mode !== 'push' && mode !== 'side')) continue;\r\n\r\n            const width = drawer.nativeElement.offsetWidth;\r\n            if (drawer.position() === 'start') left = width;\r\n            else if (drawer.position() === 'end') right = width;\r\n        }\r\n\r\n        const el = content.nativeElement;\r\n        el.style.marginLeft = left ? `${left}px` : '';\r\n        el.style.marginRight = right ? `${right}px` : '';\r\n    }\r\n}\r\n","@if (hasBackdrop()) {\r\n    <div class=\"matcha-drawer-backdrop\" (click)=\"onBackdropClick()\"></div>\r\n}\r\n\r\n<ng-content select=\"matcha-drawer\"></ng-content>\r\n\r\n<div class=\"matcha-drawer-content-container\">\r\n    <ng-content select=\"matcha-drawer-content\"></ng-content>\r\n</div>\r\n","import { Injectable, OnDestroy, PLATFORM_ID, Inject } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { BehaviorSubject, Observable, fromEvent, of } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, startWith, map } from 'rxjs/operators';\r\n\r\nexport interface BreakpointState {\r\n  matches: boolean;\r\n  breakpoint: string;\r\n}\r\n\r\n/**\r\n * Serviço singleton para observação de breakpoints CSS\r\n * Funciona tanto no browser quanto no servidor (SSR)\r\n */\r\n@Injectable({\r\n  providedIn: 'root' // Singleton garantido pelo Angular\r\n})\r\nexport class MatchaBreakpointObserver implements OnDestroy {\r\n  private breakpointSubject = new BehaviorSubject<BreakpointState>({\r\n    matches: false,\r\n    breakpoint: ''\r\n  });\r\n\r\n  private resizeSubscription: any;\r\n  private isBrowser: boolean;\r\n  private currentBreakpoints = new Map<string, boolean>();\r\n\r\n  constructor(@Inject(PLATFORM_ID) private platformId: Object) {\r\n    this.isBrowser = isPlatformBrowser(this.platformId);\r\n\r\n    if (this.isBrowser) {\r\n      this.setupResizeListener();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.resizeSubscription) {\r\n      this.resizeSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Observa um breakpoint específico\r\n   * @param breakpoint - String no formato CSS media query (ex: '(max-width: 768px)')\r\n   * @returns Observable<BreakpointState>\r\n   */\r\n  observe(breakpoint: string): Observable<BreakpointState> {\r\n    if (!this.isBrowser) {\r\n      // No servidor, retorna um observable que emite false\r\n      return of({ matches: false, breakpoint });\r\n    }\r\n\r\n    // Emite o estado inicial\r\n    const initialState = this.getState(breakpoint);\r\n\r\n    return this.breakpointSubject.asObservable().pipe(\r\n      startWith(initialState),\r\n      map(() => this.getState(breakpoint)),\r\n      distinctUntilChanged((prev, curr) =>\r\n        prev.matches === curr.matches && prev.breakpoint === curr.breakpoint\r\n      )\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Verifica se um breakpoint específico está ativo\r\n   * @param breakpoint - String no formato CSS media query\r\n   * @returns boolean\r\n   */\r\n  isMatched(breakpoint: string): boolean {\r\n    if (!this.isBrowser) {\r\n      return false;\r\n    }\r\n    return this.checkBreakpoint(breakpoint);\r\n  }\r\n\r\n  /**\r\n   * Obtém o estado atual do breakpoint\r\n   * @param breakpoint - String no formato CSS media query\r\n   * @returns BreakpointState\r\n   */\r\n  getState(breakpoint: string): BreakpointState {\r\n    return {\r\n      matches: this.isMatched(breakpoint),\r\n      breakpoint\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Observa múltiplos breakpoints simultaneamente\r\n   * @param breakpoints - Array de strings de breakpoints\r\n   * @returns Observable<Map<string, boolean>>\r\n   */\r\n  observeMultiple(breakpoints: string[]): Observable<Map<string, boolean>> {\r\n    if (!this.isBrowser) {\r\n      const emptyMap = new Map<string, boolean>();\r\n      breakpoints.forEach(bp => emptyMap.set(bp, false));\r\n      return of(emptyMap);\r\n    }\r\n\r\n    return this.breakpointSubject.asObservable().pipe(\r\n      startWith({ matches: false, breakpoint: '' }),\r\n      map(() => {\r\n        const result = new Map<string, boolean>();\r\n        breakpoints.forEach(bp => {\r\n          result.set(bp, this.checkBreakpoint(bp));\r\n        });\r\n        return result;\r\n      }),\r\n      distinctUntilChanged((prev, curr) => {\r\n        if (prev.size !== curr.size) return false;\r\n        for (const [key, value] of prev) {\r\n          if (curr.get(key) !== value) return false;\r\n        }\r\n        return true;\r\n      })\r\n    );\r\n  }\r\n\r\n  private setupResizeListener(): void {\r\n    if (!this.isBrowser) return;\r\n\r\n    // Usa fromEvent para criar um observable do evento resize\r\n    this.resizeSubscription = fromEvent(window, 'resize')\r\n      .pipe(\r\n        debounceTime(100) // Debounce para evitar muitas chamadas\r\n      )\r\n      .subscribe(() => {\r\n        // Limpa o cache de breakpoints\r\n        this.currentBreakpoints.clear();\r\n\r\n        // Emite um novo evento para forçar reavaliação\r\n        this.breakpointSubject.next({\r\n          matches: false,\r\n          breakpoint: ''\r\n        });\r\n      });\r\n  }\r\n\r\n  private checkBreakpoint(breakpoint: string): boolean {\r\n    if (!this.isBrowser) return false;\r\n\r\n    // Verifica cache primeiro\r\n    if (this.currentBreakpoints.has(breakpoint)) {\r\n      return this.currentBreakpoints.get(breakpoint)!;\r\n    }\r\n\r\n    try {\r\n      // Remove parênteses se existirem\r\n      const cleanBreakpoint = breakpoint.replace(/[()]/g, '');\r\n\r\n      // Extrai o valor numérico e a condição\r\n      const match = cleanBreakpoint.match(/(max-width|min-width|max-height|min-height):\\s*(\\d+)px/);\r\n\r\n      if (!match) {\r\n        console.warn(`Breakpoint inválido: ${breakpoint}`);\r\n        this.currentBreakpoints.set(breakpoint, false);\r\n        return false;\r\n      }\r\n\r\n      const [, condition, value] = match;\r\n      const numericValue = parseInt(value, 10);\r\n      const windowWidth = window.innerWidth;\r\n      const windowHeight = window.innerHeight;\r\n\r\n      let result = false;\r\n      switch (condition) {\r\n        case 'max-width':\r\n          result = windowWidth <= numericValue;\r\n          break;\r\n        case 'min-width':\r\n          result = windowWidth >= numericValue;\r\n          break;\r\n        case 'max-height':\r\n          result = windowHeight <= numericValue;\r\n          break;\r\n        case 'min-height':\r\n          result = windowHeight >= numericValue;\r\n          break;\r\n        default:\r\n          result = false;\r\n      }\r\n\r\n      // Armazena no cache\r\n      this.currentBreakpoints.set(breakpoint, result);\r\n      return result;\r\n    } catch (error) {\r\n      console.error('Erro ao verificar breakpoint:', error);\r\n      this.currentBreakpoints.set(breakpoint, false);\r\n      return false;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Método utilitário para criar breakpoints comuns\r\n   */\r\n  static createBreakpoint(width: number, condition: 'max' | 'min' = 'max'): string {\r\n    const prefix = condition === 'max' ? 'max-width' : 'min-width';\r\n    return `(${prefix}: ${width}px)`;\r\n  }\r\n\r\n  /**\r\n   * Breakpoints pré-definidos para facilitar o uso\r\n   */\r\n  static readonly BREAKPOINTS = {\r\n    XS: '(max-width: 480px)',\r\n    SM: '(max-width: 768px)',\r\n    MD: '(max-width: 1024px)',\r\n    LG: '(max-width: 1200px)',\r\n    XL: '(max-width: 1440px)',\r\n    MOBILE: '(max-width: 768px)',\r\n    TABLET: '(min-width: 769px) and (max-width: 1024px)',\r\n    DESKTOP: '(min-width: 1025px)'\r\n  } as const;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaDrawerComponent } from './drawer/drawer.component';\r\nimport { MatchaDrawerContainerComponent } from './drawer-container/drawer-container.component';\r\nimport { MatchaDrawerContentComponent } from './drawer-content/drawer-content.component';\r\nimport { MatchaButtonModule } from '../matcha-button/button.module';\r\nimport { MatchaBreakpointObserver } from '../matcha-breakpoint-observable/breakpoint-observer.service';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaDrawerComponent,\r\n    MatchaDrawerContainerComponent,\r\n    MatchaDrawerContentComponent,\r\n    MatchaButtonModule\r\n  ],\r\n  providers: [\r\n    MatchaBreakpointObserver\r\n  ],\r\n  exports: [\r\n    MatchaDrawerComponent,\r\n    MatchaDrawerContainerComponent,\r\n    MatchaDrawerContentComponent\r\n  ]\r\n})\r\nexport class MatchaDrawerModule { }\r\n","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild ,ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-copy-button',\r\n  templateUrl: './copy-button.component.html',\r\n  styleUrls: ['./copy-button.component.scss'],\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, MatchaButtonComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CopyButtonComponent {\r\n\r\n  @Input() type: string = 'Código';\r\n  @Input() size: 'tiny' | 'small' | 'medium' | 'large' = 'tiny';\r\n  @Input() icon: string = 'copy-out';\r\n  @Input() position: 'absolute' | 'relative' = 'absolute';\r\n  @Input() customClass: string = '';\r\n\r\n  @Output() copied = new EventEmitter<{text: string, type: string}>();\r\n\r\n  // Propriedade para controlar o ícone do botão\r\n  currentIcon: string = this.icon;\r\n  isCopied: boolean = false;\r\n\r\n  // Método para copiar código para a área de transferência\r\n  async copyToClipboard() {\r\n    // Busca o componente matcha-highlight pai\r\n    const highlightComponent = this.elementRef.nativeElement.closest('matcha-highlight');\r\n\r\n    // Primeiro tenta encontrar textarea (para casos onde ainda não foi processado)\r\n    let textarea = highlightComponent?.querySelector('textarea');\r\n    let textToCopy = '';\r\n\r\n    if (textarea) {\r\n      // Se encontrou textarea, usa o valor dela\r\n      textToCopy = textarea.value;\r\n    } else {\r\n      // Se não encontrou textarea, procura pelo código destacado\r\n      const codeElement = highlightComponent?.querySelector('code.highlight');\r\n      if (codeElement) {\r\n        textToCopy = codeElement.textContent || codeElement.innerText || '';\r\n      } else {\r\n        console.warn('Nenhum conteúdo encontrado para copiar');\r\n        return;\r\n      }\r\n    }\r\n\r\n    if (!textToCopy.trim()) {\r\n      console.warn('Conteúdo vazio para copiar');\r\n      return;\r\n    }\r\n\r\n    try {\r\n      await navigator.clipboard.writeText(textToCopy);\r\n      console.log(`Código ${this.type} copiado para a área de transferência!`);\r\n      this.copied.emit({ text: textToCopy, type: this.type });\r\n\r\n      // Feedback visual temporário\r\n      this.showCopyFeedback();\r\n    } catch (err) {\r\n      console.error('Erro ao copiar código:', err);\r\n      // Fallback para navegadores mais antigos\r\n      this.fallbackCopyToClipboard(textToCopy);\r\n    }\r\n  }\r\n\r\n  // Fallback para navegadores que não suportam clipboard API\r\n  private fallbackCopyToClipboard(textToCopy: string) {\r\n    // Cria um textarea temporário para usar o método antigo\r\n    const tempTextarea = document.createElement('textarea');\r\n    tempTextarea.value = textToCopy;\r\n    tempTextarea.style.position = 'fixed';\r\n    tempTextarea.style.left = '-999999px';\r\n    tempTextarea.style.top = '-999999px';\r\n    document.body.appendChild(tempTextarea);\r\n\r\n    tempTextarea.focus();\r\n    tempTextarea.select();\r\n    tempTextarea.setSelectionRange(0, 99999); // Para mobile\r\n\r\n    try {\r\n      document.execCommand('copy');\r\n      console.log('Código copiado para a área de transferência!');\r\n      this.copied.emit({ text: textToCopy, type: this.type });\r\n      this.showCopyFeedback();\r\n    } catch (err) {\r\n      console.error('Erro ao copiar código:', err);\r\n    } finally {\r\n      document.body.removeChild(tempTextarea);\r\n    }\r\n  }\r\n\r\n  // Feedback visual quando copiado\r\n  private showCopyFeedback() {\r\n    const button = this.elementRef.nativeElement.querySelector('button');\r\n    if (button) {\r\n      const originalText = button.title;\r\n      button.title = 'Copiado!';\r\n\r\n      // Muda o ícone para checked\r\n      this.isCopied = true;\r\n      this.currentIcon = 'action_done';\r\n\r\n      setTimeout(() => {\r\n        button.title = originalText;\r\n        button.style.transform = '';\r\n\r\n        // Volta para o ícone original após 2 segundos\r\n        setTimeout(() => {\r\n          this.isCopied = false;\r\n          this.currentIcon = this.icon;\r\n        }, 3000);\r\n      }, 1000);\r\n    }\r\n  }\r\n\r\n  // Método para obter as classes CSS do botão\r\n  getButtonClasses(): string {\r\n    let classes = `position-${this.position} top-8 right-8 m-8 z-index-10`;\r\n\r\n    if (this.customClass) {\r\n      classes += ` ${this.customClass}`;\r\n    }\r\n\r\n    return classes;\r\n  }\r\n\r\n  constructor(private elementRef: ElementRef) {}\r\n}\r\n","<button\r\n    matcha-button\r\n    [size]=\"size\"\r\n    pill=\"true\"\r\n    icon=\"true\"\r\n    [class]=\"getButtonClasses()\"\r\n    (click)=\"copyToClipboard()\"\r\n    [title]=\"'Copiar código ' + type\">\r\n    <matcha-icon [name]=\"currentIcon\" [size]=\"size === 'tiny' ? 'small' : size\"></matcha-icon>\r\n</button>\r\n\r\n\r\n","import { Component, ContentChild, ElementRef, HostBinding, Input, OnDestroy, OnInit ,ChangeDetectionStrategy } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CopyButtonComponent } from './copy-button/copy-button.component';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n// Prism.js é carregado no módulo highlight.module.ts\r\n\r\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector : 'matcha-highlight',\r\n    template : `\r\n        <matcha-copy-button [type]=\"lang\" class=\"copy-button\"></matcha-copy-button>\r\n        <div class=\"matcha-highlight-container\">\r\n            <div class=\"highlight-content\">\r\n                <ng-content></ng-content>\r\n            </div>\r\n        </div>\r\n    `,\r\n    standalone: true,\r\n    imports: [CopyButtonComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaHighlightComponent implements OnInit, OnDestroy\r\n{\r\n    // Source\r\n    @ContentChild('source', {static: true})\r\n    source!: ElementRef;\r\n\r\n    // Lang\r\n    @Input('lang')\r\n    lang!: string;\r\n\r\n    // Path\r\n    @Input('path')\r\n    path!: string;\r\n\r\n    // Theme\r\n    @Input('theme') theme: string = '';\r\n    @HostBinding('attr.theme') get themeAttr(): string { return this.theme; }\r\n\r\n    // Private\r\n    private _unsubscribeAll: Subject<any>;\r\n\r\n    /**\r\n     * Constructor\r\n     *\r\n     * @param {ElementRef} _elementRef\r\n     * @param {HttpClient} _httpClient\r\n     */\r\n    constructor(\r\n        private _elementRef: ElementRef,\r\n        private _httpClient: HttpClient\r\n    )\r\n    {\r\n        // Set the private defaults\r\n        this._unsubscribeAll = new Subject();\r\n    }\r\n\r\n    // -----------------------------------------------------------------------------------------------------\r\n    // @ Lifecycle hooks\r\n    // -----------------------------------------------------------------------------------------------------\r\n\r\n    /**\r\n     * On init\r\n     */\r\n    ngOnInit(): void\r\n    {\r\n        // Aplicar tema\r\n        // this.applyTheme();\r\n\r\n        // If there is no language defined, return...\r\n        if ( !this.lang )\r\n        {\r\n            return;\r\n        }\r\n\r\n        // If the path is defined...\r\n        if ( this.path )\r\n        {\r\n            // Get the source\r\n            this._httpClient.get(this.path, {responseType: 'text'})\r\n                .pipe(takeUntil(this._unsubscribeAll))\r\n                .subscribe((response) => {\r\n\r\n                    // Highlight it\r\n                    this.highlight(response);\r\n                });\r\n        }\r\n\r\n        // If the path is not defined and the source element exists...\r\n        if ( !this.path && this.source )\r\n        {\r\n            // Highlight it\r\n            this.highlight(this.source.nativeElement.value);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * On destroy\r\n     */\r\n    ngOnDestroy(): void\r\n    {\r\n        // Unsubscribe from all subscriptions\r\n        this._unsubscribeAll.next(null);\r\n        this._unsubscribeAll.complete();\r\n    }\r\n\r\n    // -----------------------------------------------------------------------------------------------------\r\n    // @ Public methods\r\n    // -----------------------------------------------------------------------------------------------------\r\n\r\n    /**\r\n     * Apply theme to the component\r\n     */\r\n    // applyTheme(): void\r\n    // {\r\n    //     const element = this._elementRef.nativeElement;\r\n\r\n    //     // Remove existing theme classes\r\n    //     element.classList.remove('theme-matcha', 'theme-default', 'theme-dark', 'theme-coy', 'theme-funky', 'theme-okaidia', 'theme-solarizedlight', 'theme-tomorrow', 'theme-twilight');\r\n\r\n    //     // Add new theme class\r\n    //     element.classList.add(`theme-${this.theme}`);\r\n    // }\r\n\r\n    /**\r\n     * Carrega o PrismJS dinamicamente\r\n     */\r\n    private async loadPrismJS(): Promise<void> {\r\n        return new Promise((resolve, reject) => {\r\n            // Verifica se já está carregado\r\n            if (typeof (window as any).Prism !== 'undefined') {\r\n                resolve();\r\n                return;\r\n            }\r\n\r\n            // Carrega o PrismJS principal\r\n            const script = document.createElement('script');\r\n            script.src = '/assets/prismjs/prism.js';\r\n            script.onload = () => {\r\n                // Carrega os componentes de linguagem\r\n                this.loadPrismComponent('/assets/prismjs/components/prism-javascript.js');\r\n                this.loadPrismComponent('/assets/prismjs/components/prism-css.js');\r\n                this.loadPrismComponent('/assets/prismjs/components/prism-markup.js');\r\n\r\n                resolve();\r\n            };\r\n            script.onerror = () => {\r\n                console.error('Erro ao carregar PrismJS');\r\n                reject(new Error('Erro ao carregar PrismJS'));\r\n            };\r\n            document.head.appendChild(script);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Carrega um componente do PrismJS\r\n     */\r\n    private loadPrismComponent(src: string): void {\r\n        const script = document.createElement('script');\r\n        script.src = src;\r\n        document.head.appendChild(script);\r\n    }\r\n\r\n    /**\r\n     * Highlight the given source code\r\n     *\r\n     * @param sourceCode\r\n     */\r\n    async highlight(sourceCode: string): Promise<void>\r\n    {\r\n        // Carrega o PrismJS dinamicamente se não estiver disponível\r\n        if (typeof (window as any).Prism === 'undefined') {\r\n            await this.loadPrismJS();\r\n        }\r\n\r\n        const Prism = (window as any).Prism;\r\n\r\n        // Check if Prism is available\r\n        if (typeof Prism === 'undefined') {\r\n            console.error('Prism.js is not loaded');\r\n            this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\r\n            return;\r\n        }\r\n\r\n        // Check if the language is supported\r\n        if (!Prism.languages[this.lang]) {\r\n            this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\r\n            return;\r\n        }\r\n\r\n        // Split the source into lines\r\n        const sourceLines = sourceCode.split('\\n');\r\n\r\n\r\n        // Verificar se o array não está vazio\r\n        if (sourceLines.length === 0) {\r\n            this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\r\n            return;\r\n        }\r\n        // Remove the first and the last line of the source\r\n        // code if they are blank lines. This way, the html\r\n        // can be formatted properly while using matcha-highlight\r\n        // component\r\n        if (sourceLines.length > 0 && sourceLines[0] && !sourceLines[0].trim())\r\n        {\r\n            sourceLines.shift();\r\n        }\r\n\r\n        if (sourceLines.length > 0 && sourceLines[sourceLines.length - 1] && !sourceLines[sourceLines.length - 1].trim())\r\n        {\r\n            sourceLines.pop();\r\n        }\r\n\r\n        // Find the first non-whitespace char index in\r\n\r\n        // Verificar novamente se o array não está vazio após remoções\r\n        if (sourceLines.length === 0) {\r\n            this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\r\n            return;\r\n        }\r\n        // the first line of the source code\r\n        const indexOfFirstChar = sourceLines[0].search(/\\S|$/);\r\n\r\n        // Generate the trimmed source\r\n        let source = '';\r\n\r\n        // Iterate through all the lines\r\n        sourceLines.forEach((line: string, index: number) => {\r\n\r\n            // Trim the beginning white space depending on the index\r\n            // and concat the source code\r\n            source = source + line.substr(indexOfFirstChar, line.length);\r\n\r\n            // If it's not the last line...\r\n            if ( index !== sourceLines.length - 1 )\r\n            {\r\n                // Add a line break at the end\r\n                source = source + '\\n';\r\n            }\r\n        });\r\n\r\n        // Generate the highlighted code\r\n        const highlightedCode = Prism.highlight(source, Prism.languages[this.lang], this.lang);\r\n\r\n        // Replace the innerHTML of the highlight-content div with the highlighted code\r\n        const highlightContent = this._elementRef.nativeElement.querySelector('.highlight-content');\r\n        if (highlightContent) {\r\n            highlightContent.innerHTML =\r\n                '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\r\n        } else {\r\n            // Fallback: if highlight-content doesn't exist, use the old method\r\n            this._elementRef.nativeElement.innerHTML =\r\n                '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatchaHighlightComponent } from './highlight.component';\r\nimport { CopyButtonComponent } from './copy-button/copy-button.component';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaButtonModule } from '../matcha-button/button.module';\r\n\r\n// Prism.js será carregado dinamicamente no componente quando necessário\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaHighlightComponent,\r\n    CopyButtonComponent,\r\n    MatchaIconModule,\r\n    MatchaButtonModule\r\n  ],\r\n    exports: [\r\n        MatchaHighlightComponent,\r\n        CopyButtonComponent\r\n    ],\r\n})\r\nexport class MatchaHighlightModule\r\n{\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ElementRef,\r\n    booleanAttribute,\r\n    computed,\r\n    forwardRef,\r\n    inject,\r\n    input,\r\n    model,\r\n    output,\r\n    signal,\r\n    viewChild,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaSliderColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info';\r\n\r\nexport interface SliderOptions {\r\n    floor?: number;\r\n    ceil?: number;\r\n    step?: number;\r\n    disabled?: boolean;\r\n    pushRange?: boolean;\r\n    noSwitching?: boolean;\r\n    minRange?: number;\r\n    maxRange?: number;\r\n    animate?: boolean;\r\n    showSelectionBar?: boolean;\r\n    hidePointerLabels?: boolean;\r\n    hideLimitLabels?: boolean;\r\n    keyboardSupport?: boolean;\r\n    enforceRange?: boolean;\r\n    enforceStep?: boolean;\r\n    /** Formata o valor exibido nos pointer labels e nos floor/ceil. */\r\n    format?: (value: number) => string;\r\n    /** Texto humanizado pra leitor de tela (a11y) — fallback usa format(value). */\r\n    translate?: (value: number) => string;\r\n}\r\n\r\n/**\r\n * matcha-slider — Controle deslizante de valor numérico (Figma DSV3 1:1).\r\n *\r\n * Suporta single value e range — modo é detectado automaticamente quando\r\n * [highValue] é setado (não nulo). Pointer Events API garante suporte\r\n * unificado a mouse + touch + pen.\r\n *\r\n *   <!-- Single -->\r\n *   <matcha-slider [(value)]=\"vol\" color=\"accent\"\r\n *                  [options]=\"{ floor: 0, ceil: 100, step: 5 }\">\r\n *   </matcha-slider>\r\n *\r\n *   <!-- Range -->\r\n *   <matcha-slider [(value)]=\"low\" [(highValue)]=\"high\"\r\n *                  [options]=\"{ floor: 0, ceil: 1000, step: 10 }\">\r\n *   </matcha-slider>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-slider',\r\n    templateUrl: './slider.component.html',\r\n    styleUrl: './slider.component.scss',\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MatchaSliderComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class MatchaSliderComponent implements ControlValueAccessor {\r\n    // ── Inputs (signals) ────────────────────────────────────────────────────\r\n    /** Valor único (single) ou valor baixo (range). Two-way via [(value)]. */\r\n    readonly value = model<number>(0);\r\n\r\n    /** Valor alto (range mode). null/undefined = single mode. Two-way via [(highValue)]. */\r\n    readonly highValue = model<number | null>(null);\r\n\r\n    /** Config object — floor/ceil/step + opções avançadas. */\r\n    readonly options = input<SliderOptions>({});\r\n\r\n    /** Cor semântica DSV3 (6 opções). */\r\n    readonly color = input<MatchaSliderColor>('accent');\r\n\r\n    /** Bloqueia interação. Aceita string (atributo) ou boolean. */\r\n    readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n    // ── Outputs ─────────────────────────────────────────────────────────────\r\n    /** Disparado durante a interação ativa do user — útil pra preview em tempo real. */\r\n    readonly userChange = output<number>();\r\n\r\n    /** Disparado ao soltar o pointer (commit final — fetch, save, etc.). */\r\n    readonly userChangeEnd = output<number>();\r\n\r\n    // ── Internal state ──────────────────────────────────────────────────────\r\n    private readonly sliderRef = viewChild<ElementRef<HTMLElement>>('sliderElement');\r\n    private readonly _cvaDisabled = signal(false);\r\n\r\n    /** Estado de drag — atua como host class binding (.dragging). */\r\n    readonly isDragging = signal(false);\r\n\r\n    private draggingPointer: 'low' | 'high' | null = null;\r\n    private activePointerId: number | null = null;\r\n    private animationFrameId: number | null = null;\r\n\r\n    // ── Default options ─────────────────────────────────────────────────────\r\n    private readonly defaultOptions: SliderOptions = {\r\n        floor: 0,\r\n        ceil: 100,\r\n        step: 1,\r\n        disabled: false,\r\n        pushRange: false,\r\n        noSwitching: false,\r\n        minRange: 0,\r\n        maxRange: 0,\r\n        animate: true,\r\n        showSelectionBar: true,\r\n        hidePointerLabels: false,\r\n        hideLimitLabels: false,\r\n        keyboardSupport: true,\r\n        enforceRange: false,\r\n        enforceStep: false,\r\n        format: (v: number) => v.toString(),\r\n        translate: (v: number) => v.toString(),\r\n    };\r\n\r\n    // ── Computed signals ────────────────────────────────────────────────────\r\n    readonly mergedOptions = computed<SliderOptions>(() => ({\r\n        ...this.defaultOptions,\r\n        ...this.options(),\r\n    }));\r\n\r\n    /** Range mode quando highValue não é null/undefined. */\r\n    readonly isRange = computed(() => this.highValue() !== null && this.highValue() !== undefined);\r\n\r\n    /** Disabled efetivo — combina input + CVA + options.disabled. */\r\n    readonly isDisabled = computed(() =>\r\n        this.disabled() || this._cvaDisabled() || !!this.mergedOptions().disabled,\r\n    );\r\n\r\n    readonly percentage = computed(() => this.valueToPercentage(this.value()));\r\n    readonly highPercentage = computed(() =>\r\n        this.highValue() !== null ? this.valueToPercentage(this.highValue()!) : 100,\r\n    );\r\n\r\n    readonly selectionBarStyle = computed<{ left: string; width: string }>(() => {\r\n        if (this.isRange()) {\r\n            const left = Math.min(this.percentage(), this.highPercentage());\r\n            const width = Math.abs(this.highPercentage() - this.percentage());\r\n            return { left: `${left}%`, width: `${width}%` };\r\n        }\r\n        return { left: '0%', width: `${this.percentage()}%` };\r\n    });\r\n\r\n    readonly isAtMaxValue = computed(() => {\r\n        const ceil = this.mergedOptions().ceil ?? 100;\r\n        return this.isRange() ? (this.highValue() ?? ceil) >= ceil : this.value() >= ceil;\r\n    });\r\n\r\n    readonly isAtMinValue = computed(() => {\r\n        const floor = this.mergedOptions().floor ?? 0;\r\n        if (this.isRange()) {\r\n            return this.value() <= floor || (this.highValue() ?? floor) <= floor;\r\n        }\r\n        return this.value() <= floor;\r\n    });\r\n\r\n    // ── ControlValueAccessor ────────────────────────────────────────────────\r\n    private cvaChange: (v: number | [number, number]) => void = () => { };\r\n    private cvaTouched: () => void = () => { };\r\n\r\n    constructor() {\r\n        inject(DestroyRef).onDestroy(() => {\r\n            this.cancelAnimationFrame();\r\n            this.isDragging.set(false);\r\n        });\r\n    }\r\n\r\n    writeValue(value: number | [number, number] | null): void {\r\n        if (Array.isArray(value)) {\r\n            this.value.set(value[0] ?? 0);\r\n            this.highValue.set(value[1] ?? this.mergedOptions().ceil ?? 100);\r\n        } else if (typeof value === 'number') {\r\n            this.value.set(value);\r\n            // Não força saída do range mode — preserva [highValue] explícito.\r\n        }\r\n    }\r\n\r\n    registerOnChange(fn: (v: number | [number, number]) => void): void { this.cvaChange = fn; }\r\n    registerOnTouched(fn: () => void): void { this.cvaTouched = fn; }\r\n    setDisabledState(isDisabled: boolean): void { this._cvaDisabled.set(isDisabled); }\r\n\r\n    // ── Pointer Events (mouse + touch + pen unificado) ──────────────────────\r\n    /**\r\n     * Pointer down num thumb específico — captura o pointer pra que pointermove/up\r\n     * continuem chegando neste elemento mesmo quando o cursor sai dele.\r\n     */\r\n    onPointerDown(event: PointerEvent, isHigh: boolean = false): void {\r\n        if (this.isDisabled()) return;\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n\r\n        this.isDragging.set(true);\r\n        this.draggingPointer = isHigh ? 'high' : 'low';\r\n        this.activePointerId = event.pointerId;\r\n\r\n        const target = event.currentTarget as HTMLElement;\r\n        target.setPointerCapture(event.pointerId);\r\n    }\r\n\r\n    /**\r\n     * Pointer move — só processa se este pointer está em drag ativo.\r\n     * rAF garante 60fps natural sem throttle manual.\r\n     */\r\n    onPointerMove(event: PointerEvent, isHigh: boolean = false): void {\r\n        if (!this.isDragging() || event.pointerId !== this.activePointerId) return;\r\n        // Garante que o handler é chamado pelo pointer correto (segurança em casos\r\n        // de captura cruzada entre 2 thumbs em modo range).\r\n        const expectedPointer: 'low' | 'high' = isHigh ? 'high' : 'low';\r\n        if (this.draggingPointer !== expectedPointer) return;\r\n\r\n        this.cancelAnimationFrame();\r\n        this.animationFrameId = requestAnimationFrame(() => {\r\n            const rect = this.sliderRef()?.nativeElement.getBoundingClientRect();\r\n            if (!rect) return;\r\n            const newValue = this.calculateValueFromPosition(event.clientX, rect);\r\n            if (this.isRange()) {\r\n                if (this.draggingPointer === 'low') this.updateLowValue(newValue);\r\n                else this.updateHighValue(newValue);\r\n            } else {\r\n                this.updateSingleValue(newValue);\r\n            }\r\n        });\r\n    }\r\n\r\n    /** Pointer up/cancel — fim do drag. Emite userChangeEnd + commit do CVA. */\r\n    onPointerUp(event: PointerEvent, _isHigh: boolean = false): void {\r\n        if (event.pointerId !== this.activePointerId) return;\r\n        this.isDragging.set(false);\r\n        this.draggingPointer = null;\r\n        this.activePointerId = null;\r\n        this.cancelAnimationFrame();\r\n\r\n        this.cvaTouched();\r\n        this.userChangeEnd.emit(this.value());\r\n        this.cvaChange(this.isRange() ? [this.value(), this.highValue()!] : this.value());\r\n    }\r\n\r\n    /** Click/tap no track — move o pointer mais próximo até a posição. */\r\n    onTrackPointerDown(event: PointerEvent): void {\r\n        if (this.isDisabled()) return;\r\n        const rect = this.sliderRef()?.nativeElement.getBoundingClientRect();\r\n        if (!rect) return;\r\n        const newValue = this.calculateValueFromPosition(event.clientX, rect);\r\n\r\n        if (this.isRange()) {\r\n            const lowDist = Math.abs(newValue - this.value());\r\n            const highDist = Math.abs(newValue - (this.highValue() ?? 0));\r\n            if (lowDist <= highDist) this.updateLowValue(newValue);\r\n            else this.updateHighValue(newValue);\r\n        } else {\r\n            this.updateSingleValue(newValue);\r\n        }\r\n    }\r\n\r\n    // ── Keyboard ────────────────────────────────────────────────────────────\r\n    /**\r\n     * Teclado — Arrow/Home/End/PageUp/PageDown.\r\n     * isHigh determina QUAL thumb o keydown afeta (corrigido vs versão antiga\r\n     * que usava snap-to-nearest, podendo mover o thumb errado em range mode).\r\n     */\r\n    onKeyDown(event: KeyboardEvent, isHigh: boolean = false): void {\r\n        if (this.isDisabled() || !this.mergedOptions().keyboardSupport) return;\r\n\r\n        const m = this.mergedOptions();\r\n        const step = m.step ?? 1;\r\n        const currentValue = isHigh ? (this.highValue() ?? 0) : this.value();\r\n        let newValue = currentValue;\r\n\r\n        switch (event.key) {\r\n            case 'ArrowRight':\r\n            case 'ArrowUp':\r\n                newValue = currentValue + step;\r\n                break;\r\n            case 'ArrowLeft':\r\n            case 'ArrowDown':\r\n                newValue = currentValue - step;\r\n                break;\r\n            case 'Home':\r\n                newValue = m.floor ?? 0;\r\n                break;\r\n            case 'End':\r\n                newValue = m.ceil ?? 100;\r\n                break;\r\n            case 'PageUp':\r\n                newValue = currentValue + (step * 10);\r\n                break;\r\n            case 'PageDown':\r\n                newValue = currentValue - (step * 10);\r\n                break;\r\n            default:\r\n                return;\r\n        }\r\n        event.preventDefault();\r\n\r\n        if (this.isRange() && isHigh) this.updateHighValue(newValue);\r\n        else if (this.isRange()) this.updateLowValue(newValue);\r\n        else this.updateSingleValue(newValue);\r\n    }\r\n\r\n    // ── Public template helpers ─────────────────────────────────────────────\r\n    getPointerStyle(isHigh: boolean = false): { left: string } {\r\n        return { left: `${isHigh ? this.highPercentage() : this.percentage()}%` };\r\n    }\r\n\r\n    formatValue(value: number): string {\r\n        const fmt = this.mergedOptions().format;\r\n        return fmt ? fmt(value) : value.toString();\r\n    }\r\n\r\n    /**\r\n     * aria-valuetext só é emitido quando format() retorna algo diferente do número\r\n     * cru — evita redundância com aria-valuenow nos casos default.\r\n     */\r\n    ariaValueText(value: number): string | null {\r\n        const formatted = this.formatValue(value);\r\n        return formatted === String(value) ? null : formatted;\r\n    }\r\n\r\n    // ── Update values (com clamp + minRange/maxRange/noSwitching) ───────────\r\n    private updateSingleValue(newValue: number): void {\r\n        const m = this.mergedOptions();\r\n        const clamped = Math.max(m.floor ?? 0, Math.min(m.ceil ?? 100, newValue));\r\n        if (clamped !== this.value()) {\r\n            this.value.set(clamped);\r\n            this.userChange.emit(clamped);\r\n            this.cvaChange(clamped);\r\n        }\r\n    }\r\n\r\n    private updateLowValue(newValue: number): void {\r\n        const m = this.mergedOptions();\r\n        const floor = m.floor ?? 0;\r\n        const ceil = m.ceil ?? 100;\r\n        const high = this.highValue() ?? ceil;\r\n        const minRange = m.minRange ?? 0;\r\n        const maxRange = m.maxRange ?? 0;\r\n\r\n        let clamped = Math.max(floor, Math.min(ceil, newValue));\r\n        if (maxRange > 0) clamped = Math.min(clamped, high - maxRange);\r\n        if (minRange > 0) clamped = Math.max(clamped, high - minRange);\r\n        if (m.noSwitching) clamped = Math.min(clamped, high);\r\n\r\n        if (clamped !== this.value()) {\r\n            this.value.set(clamped);\r\n            this.userChange.emit(clamped);\r\n            this.cvaChange([clamped, high]);\r\n        }\r\n    }\r\n\r\n    private updateHighValue(newValue: number): void {\r\n        const m = this.mergedOptions();\r\n        const floor = m.floor ?? 0;\r\n        const ceil = m.ceil ?? 100;\r\n        const low = this.value();\r\n        const minRange = m.minRange ?? 0;\r\n        const maxRange = m.maxRange ?? 0;\r\n\r\n        let clamped = Math.max(floor, Math.min(ceil, newValue));\r\n        if (maxRange > 0) clamped = Math.min(clamped, low + maxRange);\r\n        if (minRange > 0) clamped = Math.max(clamped, low + minRange);\r\n        if (m.noSwitching) clamped = Math.max(clamped, low);\r\n\r\n        if (clamped !== this.highValue()) {\r\n            this.highValue.set(clamped);\r\n            this.userChange.emit(clamped);\r\n            this.cvaChange([low, clamped]);\r\n        }\r\n    }\r\n\r\n    // ── Position math ───────────────────────────────────────────────────────\r\n    private valueToPercentage(value: number): number {\r\n        const m = this.mergedOptions();\r\n        const floor = m.floor ?? 0;\r\n        const ceil = m.ceil ?? 100;\r\n        if (ceil === floor) return 0;\r\n        return ((value - floor) / (ceil - floor)) * 100;\r\n    }\r\n\r\n    private percentageToValue(percentage: number): number {\r\n        const m = this.mergedOptions();\r\n        const floor = m.floor ?? 0;\r\n        const ceil = m.ceil ?? 100;\r\n        const value = (percentage / 100) * (ceil - floor) + floor;\r\n        return this.snapToStep(value);\r\n    }\r\n\r\n    private snapToStep(value: number): number {\r\n        const step = this.mergedOptions().step ?? 1;\r\n        return Math.round(value / step) * step;\r\n    }\r\n\r\n    private calculateValueFromPosition(clientX: number, rect: DOMRect): number {\r\n        const x = clientX - rect.left;\r\n        const pct = Math.max(0, Math.min(100, (x / rect.width) * 100));\r\n        return this.percentageToValue(pct);\r\n    }\r\n\r\n    private cancelAnimationFrame(): void {\r\n        if (this.animationFrameId !== null) {\r\n            cancelAnimationFrame(this.animationFrameId);\r\n            this.animationFrameId = null;\r\n        }\r\n    }\r\n}\r\n","<div class=\"matcha-slider\"\r\n     [class.disabled]=\"isDisabled()\"\r\n     [class.range]=\"isRange()\"\r\n     [class.dragging]=\"isDragging()\"\r\n     [attr.data-color]=\"color()\"\r\n     #sliderElement>\r\n\r\n    <!-- Floor / Ceil labels (escala visível abaixo do track) -->\r\n    <div class=\"limit-labels\" *ngIf=\"!mergedOptions().hideLimitLabels\">\r\n        <span class=\"floor-label\" [style.visibility]=\"isAtMinValue() ? 'hidden' : 'visible'\">\r\n            {{ formatValue(mergedOptions().floor || 0) }}\r\n        </span>\r\n        <span class=\"ceil-label\" [style.visibility]=\"isAtMaxValue() ? 'hidden' : 'visible'\">\r\n            {{ formatValue(mergedOptions().ceil || 100) }}\r\n        </span>\r\n    </div>\r\n\r\n    <!-- Track + selection bar + pointers -->\r\n    <div class=\"slider-track\" (pointerdown)=\"onTrackPointerDown($event)\">\r\n\r\n        <div class=\"selection-bar\"\r\n             *ngIf=\"mergedOptions().showSelectionBar\"\r\n             [style]=\"selectionBarStyle()\">\r\n        </div>\r\n\r\n        <!-- Low pointer (single mode usa este) -->\r\n        <div class=\"pointer low-pointer\"\r\n             [style]=\"getPointerStyle(false)\"\r\n             [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n             role=\"slider\"\r\n             [attr.aria-valuemin]=\"mergedOptions().floor\"\r\n             [attr.aria-valuemax]=\"mergedOptions().ceil\"\r\n             [attr.aria-valuenow]=\"value()\"\r\n             [attr.aria-valuetext]=\"ariaValueText(value())\"\r\n             [attr.aria-disabled]=\"isDisabled()\"\r\n             [attr.aria-label]=\"isRange() ? 'Valor mínimo' : null\"\r\n             (pointerdown)=\"onPointerDown($event, false)\"\r\n             (pointermove)=\"onPointerMove($event, false)\"\r\n             (pointerup)=\"onPointerUp($event, false)\"\r\n             (pointercancel)=\"onPointerUp($event, false)\"\r\n             (keydown)=\"onKeyDown($event, false)\">\r\n\r\n            <div class=\"pointer-label\" *ngIf=\"!mergedOptions().hidePointerLabels\">\r\n                {{ formatValue(value()) }}\r\n            </div>\r\n        </div>\r\n\r\n        <!-- High pointer (range mode only) -->\r\n        <div class=\"pointer high-pointer\"\r\n             *ngIf=\"isRange()\"\r\n             [style]=\"getPointerStyle(true)\"\r\n             [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n             role=\"slider\"\r\n             [attr.aria-valuemin]=\"mergedOptions().floor\"\r\n             [attr.aria-valuemax]=\"mergedOptions().ceil\"\r\n             [attr.aria-valuenow]=\"highValue()\"\r\n             [attr.aria-valuetext]=\"ariaValueText(highValue() ?? 0)\"\r\n             [attr.aria-disabled]=\"isDisabled()\"\r\n             aria-label=\"Valor máximo\"\r\n             (pointerdown)=\"onPointerDown($event, true)\"\r\n             (pointermove)=\"onPointerMove($event, true)\"\r\n             (pointerup)=\"onPointerUp($event, true)\"\r\n             (pointercancel)=\"onPointerUp($event, true)\"\r\n             (keydown)=\"onKeyDown($event, true)\">\r\n\r\n            <div class=\"pointer-label\" *ngIf=\"!mergedOptions().hidePointerLabels\">\r\n                {{ formatValue(highValue() ?? 0) }}\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatchaSliderComponent } from './slider/slider.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaSliderComponent, FormsModule],\r\n  exports: [MatchaSliderComponent]\r\n})\r\nexport class MatchaSliderModule { }\r\n\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  HostListener,\r\n  OnDestroy,\r\n  OutputRefSubscription,\r\n  forwardRef,\r\n  signal,\r\n  effect,\r\n  contentChildren,\r\n  inject,\r\n  input,\r\n  model,\r\n  output,\r\n  computed,\r\n  booleanAttribute,\r\n  ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaChipComponent, MATCHA_CHIP_LIST } from '../chip/chip.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaChipListOrientation = 'horizontal' | 'vertical';\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-chip-list',\r\n  standalone: true,\r\n  templateUrl: './chip-list.component.html',\r\n  styleUrls: ['./chip-list.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MatchaChipListComponent),\r\n      multi: true,\r\n    },\r\n    // Disponibiliza o context pra chips filhos (DI). Substitui mutação direta\r\n    // de chip.interactive/disabled (impossível com signal inputs read-only).\r\n    {\r\n      provide: MATCHA_CHIP_LIST,\r\n      useExisting: forwardRef(() => MatchaChipListComponent),\r\n    },\r\n  ],\r\n  host: {\r\n    'class': 'matcha-chip-list',\r\n    'role': 'listbox',\r\n    '[class.matcha-chip-list-disabled]': 'effectiveDisabled()',\r\n    '[attr.aria-multiselectable]': 'multiple() ? \"true\" : null',\r\n    '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null',\r\n  },\r\n})\r\nexport class MatchaChipListComponent implements ControlValueAccessor, OnDestroy {\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n  /** Permite múltiplos chips selecionados ao mesmo tempo. */\r\n  multiple = input(false, { transform: booleanAttribute });\r\n\r\n  /** Habilita seleção em todos os chips filhos (propaga via DI MATCHA_CHIP_LIST). */\r\n  interactive = input(false, { transform: booleanAttribute });\r\n\r\n  /** Disabled via input. Combinado com setDisabledState() do FormControl em effectiveDisabled. */\r\n  disabled = input(false, { transform: booleanAttribute });\r\n\r\n  /** Orientação visual da lista (afeta keyboard nav: horizontal ↔ vertical). */\r\n  orientation = input<MatchaChipListOrientation>('horizontal');\r\n\r\n  /** Valor(es) selecionado(s). Two-way via [(value)]. Single = unknown, multiple = unknown[]. */\r\n  value = model<unknown>(null);\r\n\r\n  /** Emit quando a seleção muda. Mesmo payload do value. */\r\n  change = output<unknown>();\r\n\r\n  /** Emit quando um chip filho dispara (removed). */\r\n  removed = output<MatchaChipComponent>();\r\n\r\n  /** Chips filhos via contentChildren signal. Rebroadcasts quando lista muda. */\r\n  chips = contentChildren(MatchaChipComponent, { descendants: true });\r\n\r\n  // ── Estado interno ─────────────────────────────────────────────────────\r\n  private _formDisabled = signal(false);\r\n  effectiveDisabled = computed(() => this.disabled() || this._formDisabled());\r\n\r\n  private _focusedChipIndex = 0;\r\n  private _chipSubs: OutputRefSubscription[] = [];\r\n  /** Assinar `chip.selected` pega TODA mudança, inclusive a que a lista faz. */\r\n  private _writingChipSelection = false;\r\n\r\n  // ── ControlValueAccessor ───────────────────────────────────────────────\r\n  private _onChange: (value: unknown) => void = () => {};\r\n  private _onTouched: () => void = () => {};\r\n\r\n  writeValue(value: unknown): void { this.value.set(value); }\r\n  registerOnChange(fn: (value: unknown) => void): void { this._onChange = fn; }\r\n  registerOnTouched(fn: () => void): void { this._onTouched = fn; }\r\n  setDisabledState(isDisabled: boolean): void { this._formDisabled.set(isDisabled); }\r\n\r\n  constructor() {\r\n    // Sempre que value externo OU o conjunto de chips muda, sincroniza\r\n    // o selected dos chips. Chips usam selected.set() (model) — não setter direto.\r\n    effect(() => {\r\n      const chips = this.chips();\r\n      const value = this.value();\r\n      const multi = this.multiple();\r\n      this._syncSelectionFromValue(chips, value, multi);\r\n    });\r\n\r\n    // Quando chips mudam, reassina events. interactive/disabled propagam via DI\r\n    // (chips consomem MATCHA_CHIP_LIST e fazem effectiveInteractive/Disabled).\r\n    //\r\n    // IN-41941: `model()` declara a output `selectedChange` nos METADADOS do componente,\r\n    // pro template do pai bindar — não existe propriedade com esse nome na instância. Ler\r\n    // `chip.selectedChange` dava undefined, e o `.subscribe` lançava TypeError dentro deste\r\n    // effect assim que a lista tinha qualquer chip filho: erro engolido pelo change\r\n    // detection, console do consumidor cheio de exceção, e a subscrição de `removed` (linha\r\n    // seguinte, essa sim uma output de verdade) nunca criada.\r\n    //\r\n    // Quem expõe `subscribe` é o próprio ModelSignal `selected`, que implementa OutputRef.\r\n    // Assinar ele pega TODA mudança, inclusive as que esta lista faz — daí o guard\r\n    // `_writingChipSelection` em `_writeChipSelection`.\r\n    effect(() => {\r\n      const chips = this.chips();\r\n      this._cleanupChipSubs();\r\n      chips.forEach(chip => {\r\n        const subSelChange = chip.selected.subscribe(() => this._onChipSelectionChange(chip));\r\n        const subRm = chip.removed.subscribe(() => this._onChipRemoved(chip));\r\n        this._chipSubs.push(subSelChange, subRm);\r\n      });\r\n    });\r\n  }\r\n\r\n  // ── Sync helpers ───────────────────────────────────────────────────────\r\n  private _syncSelectionFromValue(\r\n    chips: readonly MatchaChipComponent[],\r\n    value: unknown,\r\n    multi: boolean,\r\n  ): void {\r\n    // Chip DECORATIVO nao tem `value`. Sem este guard, `c.value() === value` comparava\r\n    // undefined com undefined (o value da lista tambem comeca undefined) e dava TRUE:\r\n    // todo chip sem valor nascia selecionado, renderizando no estado \"On\" (fundo accent)\r\n    // sem ninguem ter selecionado nada. Era o caso das tags de categoria do painel.\r\n    const hasValue = (chip: MatchaChipComponent) => chip.value() !== undefined && chip.value() !== null;\r\n\r\n    this._writeChipSelection(() => {\r\n      if (multi && Array.isArray(value)) {\r\n        chips.forEach(c => c.selected.set(hasValue(c) && value.includes(c.value())));\r\n      } else {\r\n        chips.forEach(c => c.selected.set(hasValue(c) && c.value() === value));\r\n      }\r\n    });\r\n  }\r\n\r\n  /** Escreve `selected` nos chips sem voltar por _onChipSelectionChange. */\r\n  private _writeChipSelection(write: () => void): void {\r\n    this._writingChipSelection = true;\r\n    try {\r\n      write();\r\n    } finally {\r\n      this._writingChipSelection = false;\r\n    }\r\n  }\r\n\r\n  private _onChipSelectionChange(chip: MatchaChipComponent): void {\r\n    if (this.effectiveDisabled() || this._writingChipSelection) return;\r\n\r\n    if (!this.multiple()) {\r\n      // Sob o guard: sem ele o deselect reentra aqui pelo chip antigo e\r\n      // derruba a seleção nova.\r\n      this._writeChipSelection(() => {\r\n        this.chips().forEach(c => {\r\n          if (c !== chip && c.selected()) c.selected.set(false);\r\n        });\r\n      });\r\n    }\r\n\r\n    this._publishValue();\r\n    this._onTouched();\r\n  }\r\n\r\n  private _onChipRemoved(chip: MatchaChipComponent): void {\r\n    if (this.effectiveDisabled()) return;\r\n    if (chip.selected()) {\r\n      this._writeChipSelection(() => chip.selected.set(false));\r\n      this._publishValue();\r\n    }\r\n    this.removed.emit(chip);\r\n    this._onTouched();\r\n  }\r\n\r\n  private _publishValue(): void {\r\n    const chips = this.chips();\r\n    const next = this.multiple()\r\n      ? chips.filter(c => c.selected()).map(c => c.value())\r\n      : (chips.find(c => c.selected())?.value() ?? null);\r\n\r\n    this.value.set(next);\r\n    this._onChange(next);\r\n    this.change.emit(next);\r\n  }\r\n\r\n  private _cleanupChipSubs(): void {\r\n    this._chipSubs.forEach(s => s.unsubscribe());\r\n    this._chipSubs = [];\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._cleanupChipSubs();\r\n  }\r\n\r\n  // ── Keyboard navigation ────────────────────────────────────────────────\r\n  @HostListener('keydown', ['$event'])\r\n  _handleKeydown(event: KeyboardEvent): void {\r\n    const chips = this.chips();\r\n    if (this.effectiveDisabled() || chips.length === 0) return;\r\n\r\n    const isHorizontal = this.orientation() === 'horizontal';\r\n    const prevKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';\r\n    const nextKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';\r\n\r\n    switch (event.key) {\r\n      case prevKey:\r\n        if (this._focusedChipIndex > 0) {\r\n          this._focusedChipIndex--;\r\n          chips[this._focusedChipIndex].focus();\r\n          event.preventDefault();\r\n        }\r\n        break;\r\n      case nextKey:\r\n        if (this._focusedChipIndex < chips.length - 1) {\r\n          this._focusedChipIndex++;\r\n          chips[this._focusedChipIndex].focus();\r\n          event.preventDefault();\r\n        }\r\n        break;\r\n      case 'Home':\r\n        this._focusedChipIndex = 0;\r\n        chips[0].focus();\r\n        event.preventDefault();\r\n        break;\r\n      case 'End':\r\n        this._focusedChipIndex = chips.length - 1;\r\n        chips[this._focusedChipIndex].focus();\r\n        event.preventDefault();\r\n        break;\r\n    }\r\n  }\r\n}\r\n","<div class=\"matcha-chip-list-wrapper\" [class.matcha-chip-list-vertical]=\"orientation() === 'vertical'\">\r\n  <ng-content></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { MatchaChipComponent } from './chip/chip.component';\r\nimport { MatchaChipListComponent } from './chip-list/chip-list.component';\r\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaChipComponent,\r\n    MatchaChipListComponent,\r\n    MatchaDividerModule,\r\n    MatchaIconModule\r\n  ],\r\n    exports: [\r\n        MatchaChipComponent,\r\n        MatchaChipListComponent\r\n    ],\r\n})\r\nexport class MatchaChipModule {}\r\n","import { Component, HostBinding, Input ,ChangeDetectionStrategy } from '@angular/core';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-list, matcha-nav-list',\r\n  templateUrl: './list.component.html',\r\n  styleUrls: ['./list.component.scss'],\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaListComponent {\r\n  @Input() dense: boolean = false;\r\n  @Input() disabled: boolean = false;\r\n\r\n  @HostBinding('class.matcha-list') hostClass = true;\r\n  @HostBinding('class.matcha-list-dense') get isDense() { return this.dense; }\r\n  @HostBinding('attr.role') role = 'list';\r\n}\r\n","<ng-content></ng-content>\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-list-item — item de lista canônico.\r\n *\r\n * Slots projetados (variant \"data\" pattern):\r\n *   • [matcha-list-item-leading]  — ícone, avatar, rank pill, badge\r\n *   • [matcha-list-item-thumb]    — imagem 16:9 (proporção canônica de mídia, 64×36 default)\r\n *   • <ng-content default>        — conteúdo principal (title, meta, descrição)\r\n *   • [matcha-list-item-trailing] — chevron, badge, número, action button\r\n *\r\n * Slots vazios são automaticamente escondidos via `:empty`. Backward-compat\r\n * preservada: consumidores antigos sem slots nomeados continuam funcionando\r\n * (todo o conteúdo cai no slot default).\r\n *\r\n * Exemplos:\r\n *\r\n * Padrão simples (1 linha):\r\n *   <matcha-list-item>\r\n *     <span>Texto da linha</span>\r\n *   </matcha-list-item>\r\n *\r\n * Variant \"data\" (lista densa com thumb + meta + actions):\r\n *   <matcha-list-item lines=\"2\">\r\n *     <span matcha-list-item-leading>1</span>\r\n *     <img matcha-list-item-thumb src=\"...\" />\r\n *     <span>Título da mídia</span>\r\n *     <span matcha-list-item-trailing>80</span>\r\n *   </matcha-list-item>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-list-item, a[matcha-list-item], button[matcha-list-item]',\r\n    templateUrl: './list-item.component.html',\r\n    styleUrls: ['./list-item.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaListItemComponent {\r\n    @Input({ transform: booleanAttribute }) disabled = false;\r\n    @Input({ transform: booleanAttribute }) active = false;\r\n    /** 1 (compacto, 48px) ou 2 (com meta abaixo do título, 64px). */\r\n    @Input() lines: 1 | 2 = 1;\r\n\r\n    @HostBinding('class.matcha-list-item') hostClass = true;\r\n    @HostBinding('class.matcha-list-item--disabled') get isDisabled() { return this.disabled; }\r\n    @HostBinding('class.matcha-list-item--active') get isActive() { return this.active; }\r\n    @HostBinding('class.matcha-list-item--two-line') get isTwoLine() { return this.lines === 2; }\r\n    @HostBinding('attr.role') role = 'listitem';\r\n}\r\n","<div class=\"matcha-list-item__leading\">\r\n    <ng-content select=\"[matcha-list-item-leading]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"matcha-list-item__thumb\">\r\n    <ng-content select=\"[matcha-list-item-thumb]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"matcha-list-item__content\">\r\n    <ng-content></ng-content>\r\n</div>\r\n\r\n<div class=\"matcha-list-item__trailing\">\r\n    <ng-content select=\"[matcha-list-item-trailing]\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaListComponent } from './list/list.component';\r\nimport { MatchaListItemComponent } from './list-item/list-item.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaListComponent, MatchaListItemComponent],\r\n  exports: [MatchaListComponent, MatchaListItemComponent]\r\n})\r\nexport class MatchaListModule {}\r\n","import {\r\n  ApplicationRef,\r\n  ComponentRef,\r\n  EmbeddedViewRef,\r\n  Injectable,\r\n  Injector,\r\n  Renderer2,\r\n  RendererFactory2,\r\n  Type,\r\n  createComponent,\r\n  inject,\r\n} from '@angular/core';\r\nimport {\r\n  MatchaSnackBarComponent,\r\n  SnackBarAction,\r\n  SnackBarPosition,\r\n  SnackBarStatus,\r\n  SnackBarType,\r\n} from './snack-bar/snack-bar.component';\r\n\r\n/**\r\n * Config canônica DSV3 — title + description + action + status.\r\n * Espelha as props do componente Figma `matcha/snackbar`.\r\n */\r\nexport interface MatchaSnackBarConfig {\r\n  /** Título (semibold). */\r\n  title?: string;\r\n  /** Descrição (regular). */\r\n  description?: string;\r\n  /** Status canon DSV3. Aceita 'default' como alias de 'neutral' (legacy). */\r\n  status?: SnackBarStatus;\r\n  /** Duração em ms. 0 = persistente. Default 5000. */\r\n  duration?: number;\r\n  /** Posição: 'top' (default) | 'bottom'. */\r\n  position?: SnackBarPosition;\r\n  /** Mostra ícone leading. Default true. */\r\n  showIcon?: boolean;\r\n  /** Mostra botão close. Default true. */\r\n  showClose?: boolean;\r\n  /** CTA Action (Outline SM canon Figma). */\r\n  action?: SnackBarAction;\r\n\r\n  // ── Legacy props (deprecated, mas funcionam) ────────────────────────────\r\n  /** @deprecated — use `status`. */\r\n  type?: SnackBarType;\r\n  /** @deprecated — passe via `data` se precisar de payload custom. */\r\n  data?: unknown;\r\n  /** @deprecated — classes panel extras (não-canônico DSV3). */\r\n  panelClass?: string | string[];\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MatchaSnackBarService {\r\n  private _activeSnackBar: ComponentRef<MatchaSnackBarComponent> | null = null;\r\n  private _renderer: Renderer2;\r\n  private _appRef = inject(ApplicationRef);\r\n  private _injector = inject(Injector);\r\n\r\n  constructor(rendererFactory: RendererFactory2) {\r\n    this._renderer = rendererFactory.createRenderer(null, null);\r\n  }\r\n\r\n  /**\r\n   * Exibe um snackbar.\r\n   *\r\n   * API canônica (recomendada):\r\n   *   show({ title: 'Bem cadastrado', description: '...', status: 'success', action: {...} })\r\n   *\r\n   * API legacy (compat):\r\n   *   show('Mensagem', { type: 'success' })   // message vira description\r\n   */\r\n  show(titleOrConfig: string | MatchaSnackBarConfig, legacyConfig: MatchaSnackBarConfig = {}): MatchaSnackBarService {\r\n    this.dismiss();\r\n\r\n    // Desambiguar — string = legacy (titleOrConfig é a mensagem, segundo arg é config).\r\n    const config: MatchaSnackBarConfig = typeof titleOrConfig === 'string'\r\n      ? { ...legacyConfig, description: titleOrConfig }\r\n      : titleOrConfig;\r\n\r\n    const componentRef = createComponent(MatchaSnackBarComponent, {\r\n      environmentInjector: this._appRef.injector,\r\n      elementInjector: this._injector,\r\n    });\r\n\r\n    // Signal-based inputs requerem `setInput()` em vez de assignment direto.\r\n    const rawStatus = config.status ?? config.type ?? 'info';\r\n    const finalStatus: SnackBarStatus = rawStatus === 'default' ? 'neutral' : (rawStatus as SnackBarStatus);\r\n\r\n    componentRef.setInput('title',       config.title ?? '');\r\n    componentRef.setInput('description', config.description ?? '');\r\n    componentRef.setInput('status',      finalStatus);\r\n    componentRef.setInput('position',    config.position ?? 'top');\r\n    componentRef.setInput('duration',    config.duration ?? 5000);\r\n    componentRef.setInput('showIcon',    config.showIcon ?? true);\r\n    componentRef.setInput('showClose',   config.showClose ?? true);\r\n    componentRef.setInput('action',      config.action ?? null);\r\n\r\n    const element = (componentRef.hostView as EmbeddedViewRef<unknown>).rootNodes[0];\r\n    this._renderer.appendChild(document.body, element);\r\n    this._appRef.attachView(componentRef.hostView);\r\n\r\n    this._activeSnackBar = componentRef;\r\n    return this;\r\n  }\r\n\r\n  // ── Status shortcuts (canon DSV3) ────────────────────────────────────────\r\n  success(titleOrDesc: string, config: MatchaSnackBarConfig = {}): MatchaSnackBarService {\r\n    return this.show({ description: titleOrDesc, ...config, status: 'success' });\r\n  }\r\n  error(titleOrDesc: string, config: MatchaSnackBarConfig = {}): MatchaSnackBarService {\r\n    return this.show({ description: titleOrDesc, ...config, status: 'error' });\r\n  }\r\n  warning(titleOrDesc: string, config: MatchaSnackBarConfig = {}): MatchaSnackBarService {\r\n    return this.show({ description: titleOrDesc, ...config, status: 'warning' });\r\n  }\r\n  info(titleOrDesc: string, config: MatchaSnackBarConfig = {}): MatchaSnackBarService {\r\n    return this.show({ description: titleOrDesc, ...config, status: 'info' });\r\n  }\r\n  idea(titleOrDesc: string, config: MatchaSnackBarConfig = {}): MatchaSnackBarService {\r\n    return this.show({ description: titleOrDesc, ...config, status: 'idea' });\r\n  }\r\n  neutral(titleOrDesc: string, config: MatchaSnackBarConfig = {}): MatchaSnackBarService {\r\n    return this.show({ description: titleOrDesc, ...config, status: 'neutral' });\r\n  }\r\n\r\n  /** @deprecated — pattern legado. Use show() com config completa. */\r\n  openFromComponent<T>(_component: Type<T>, config: MatchaSnackBarConfig & { data?: { message?: string } } = {}): void {\r\n    this.show(config.data?.message || '', config);\r\n  }\r\n\r\n  dismiss(): void {\r\n    if (this._activeSnackBar) {\r\n      this._appRef.detachView(this._activeSnackBar.hostView);\r\n      this._activeSnackBar.destroy();\r\n      this._activeSnackBar = null;\r\n    }\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  DestroyRef,\r\n  HostBinding,\r\n  HostListener,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  computed,\r\n  effect,\r\n  inject,\r\n  input,\r\n  numberAttribute,\r\n  signal,\r\n} from '@angular/core';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\r\nimport { MatchaIconButtonComponent } from '../../matcha-icon-button/icon-button.component';\r\nimport { MatchaSnackBarService } from '../snack-bar.service';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * Status canon DSV3 (5 — espelha Figma `matcha/snackbar` Status variant).\r\n * Mapeamento legacy → novo:\r\n *   - 'default'  → 'neutral' (legacy alias)\r\n *   - 'warning'  → 'warning' (== Figma \"Alerta\")\r\n *   - 'info'     → 'info'    (== Figma \"Neutro\" com icon info)\r\n */\r\nexport type SnackBarStatus = 'success' | 'error' | 'warning' | 'info' | 'idea' | 'neutral';\r\nexport type SnackBarPosition = 'top' | 'bottom';\r\n\r\n/** @deprecated alias legado — use `SnackBarStatus`. */\r\nexport type SnackBarType = SnackBarStatus | 'default';\r\n\r\n/**\r\n * Ação inline (CTA \"Outline SM\" canon Figma).\r\n *\r\n * - `onClick` retornar `false` cancela o auto-dismiss (snackbar continua visível).\r\n * - Retornar `Promise` → snackbar mostra loading state na action até resolver.\r\n *   Resolver com `false` cancela dismiss; qualquer outro valor (ou void) dispara dismiss.\r\n */\r\nexport interface SnackBarAction {\r\n  label: string;\r\n  onClick: () => void | boolean | Promise<void | boolean>;\r\n  /** Ícone leading opcional (matcha-icon name). */\r\n  icon?: string;\r\n}\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-snack-bar',\r\n  templateUrl: './snack-bar.component.html',\r\n  styleUrls: ['./snack-bar.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, MatchaButtonComponent, MatchaIconButtonComponent],\r\n  host: {\r\n    'aria-atomic': 'true',\r\n  },\r\n})\r\nexport class MatchaSnackBarComponent {\r\n  // ── Inputs (signal-based, Angular 17+ canon) ─────────────────────────────\r\n  readonly status      = input<SnackBarStatus>('info');\r\n  readonly position    = input<SnackBarPosition>('top');\r\n  readonly title       = input<string>('');\r\n  readonly description = input<string>('');\r\n  readonly duration    = input(5000, { transform: numberAttribute });\r\n  readonly showIcon    = input(true, { transform: booleanAttribute });\r\n  readonly showClose   = input(true, { transform: booleanAttribute });\r\n  readonly action      = input<SnackBarAction | null>(null);\r\n\r\n  // ── State ─────────────────────────────────────────────────────────────────\r\n  readonly visible = signal(false);\r\n  readonly actionLoading = signal(false);\r\n  private _timeoutId: ReturnType<typeof setTimeout> | null = null;\r\n  private _service = inject(MatchaSnackBarService);\r\n  private _destroyRef = inject(DestroyRef);\r\n  /** Elemento que tinha foco antes do snackbar abrir — restaurado no close. */\r\n  private _previousFocus: HTMLElement | null = null;\r\n\r\n  // ── ARIA dinâmico ─────────────────────────────────────────────────────────\r\n  /** error → assertive (interrompe leitura); demais → polite. WCAG 4.1.3. */\r\n  readonly ariaLive = computed(() => this.status() === 'error' ? 'assertive' : 'polite');\r\n  readonly ariaRole = computed(() => this.status() === 'error' ? 'alert' : 'status');\r\n\r\n  // ── Host bindings ─────────────────────────────────────────────────────────\r\n  @HostBinding('attr.color')      get colorAttr()      { return this.status() === 'idea' ? 'info' : this.status(); }\r\n  @HostBinding('attr.position')   get positionAttr()   { return this.position(); }\r\n  @HostBinding('attr.role')       get roleAttr()       { return this.ariaRole(); }\r\n  @HostBinding('attr.aria-live')  get ariaLiveAttr()   { return this.ariaLive(); }\r\n  @HostBinding('class.matcha-snack-bar-visible') get visibleClass() { return this.visible(); }\r\n\r\n  constructor() {\r\n    // Capture do foco anterior pra restaurar no dismiss (a11y — anti-pattern\r\n    // perder foco quando elemento focado de fora é dismissado).\r\n    this._previousFocus = (document.activeElement as HTMLElement) || null;\r\n\r\n    // Animação in-frame (next paint).\r\n    requestAnimationFrame(() => this.visible.set(true));\r\n    this._scheduleAutoDismiss();\r\n\r\n    // Re-schedule quando duration muda (config dinâmica).\r\n    effect(() => {\r\n      void this.duration();\r\n      if (this.visible()) {\r\n        this._cancelTimer();\r\n        this._scheduleAutoDismiss();\r\n      }\r\n    });\r\n\r\n    this._destroyRef.onDestroy(() => {\r\n      this._cancelTimer();\r\n      // Restaura foco (se ainda válido — elemento pode ter sido removido).\r\n      if (this._previousFocus?.isConnected) {\r\n        this._previousFocus.focus({ preventScroll: true });\r\n      }\r\n    });\r\n  }\r\n\r\n  // ── Pause-on-hover/focus (WCAG SC 2.2.2 — Pause/Stop/Hide) ──────────────\r\n  @HostListener('mouseenter')\r\n  @HostListener('focusin')\r\n  pauseAutoDismiss(): void { this._cancelTimer(); }\r\n\r\n  @HostListener('mouseleave')\r\n  @HostListener('focusout', ['$event'])\r\n  resumeAutoDismiss(event?: FocusEvent): void {\r\n    // Em focusout, só resume se o foco saiu do snackbar (não foi pra child).\r\n    if (event && event.relatedTarget instanceof Node) {\r\n      const host = event.currentTarget as HTMLElement;\r\n      if (host?.contains(event.relatedTarget)) return;\r\n    }\r\n    this._scheduleAutoDismiss();\r\n  }\r\n\r\n  // ── ESC global pra dismiss (escape hatch canônico WAI-ARIA) ─────────────\r\n  @HostListener('document:keydown.escape', ['$event'])\r\n  onEscape(event: KeyboardEvent): void {\r\n    if (!this.visible()) return;\r\n    event.stopPropagation();\r\n    this.close();\r\n  }\r\n\r\n  // ── Swipe-to-dismiss (touch — canon Material/iOS) ───────────────────────\r\n  private touchStartX = 0;\r\n  private touchStartY = 0;\r\n  private readonly SWIPE_THRESHOLD = 60;\r\n\r\n  @HostListener('touchstart', ['$event'])\r\n  onTouchStart(event: TouchEvent): void {\r\n    const t = event.touches[0];\r\n    if (!t) return;\r\n    this.touchStartX = t.clientX;\r\n    this.touchStartY = t.clientY;\r\n  }\r\n\r\n  @HostListener('touchend', ['$event'])\r\n  onTouchEnd(event: TouchEvent): void {\r\n    const t = event.changedTouches[0];\r\n    if (!t) return;\r\n    const dx = t.clientX - this.touchStartX;\r\n    const dy = t.clientY - this.touchStartY;\r\n    // Só dismiss em swipe horizontal (vertical = scroll natural do user).\r\n    if (Math.abs(dy) > Math.abs(dx)) return;\r\n    if (Math.abs(dx) < this.SWIPE_THRESHOLD) return;\r\n    this.close();\r\n  }\r\n\r\n  private _cancelTimer(): void {\r\n    if (this._timeoutId) {\r\n      clearTimeout(this._timeoutId);\r\n      this._timeoutId = null;\r\n    }\r\n  }\r\n\r\n  private _scheduleAutoDismiss(): void {\r\n    if (this.duration() > 0 && !this.actionLoading()) {\r\n      this._timeoutId = setTimeout(() => this.close(), this.duration());\r\n    }\r\n  }\r\n\r\n  async onActionClick(): Promise<void> {\r\n    const action = this.action();\r\n    if (!action || this.actionLoading()) return;\r\n\r\n    // Pausa o timer enquanto action processa (especialmente útil pra async).\r\n    this._cancelTimer();\r\n\r\n    const result = action.onClick();\r\n    let finalResult: void | boolean;\r\n\r\n    if (result instanceof Promise) {\r\n      this.actionLoading.set(true);\r\n      try {\r\n        finalResult = await result;\r\n      } finally {\r\n        this.actionLoading.set(false);\r\n      }\r\n    } else {\r\n      finalResult = result;\r\n    }\r\n\r\n    // Handler retornou explicitamente `false` → cancela dismiss, re-agenda timer.\r\n    if (finalResult === false) {\r\n      this._scheduleAutoDismiss();\r\n      return;\r\n    }\r\n    this.close();\r\n  }\r\n\r\n  close(): void {\r\n    this._cancelTimer();\r\n    this.visible.set(false);\r\n    // Aguarda fade-out antes de detach (300ms — alinhado com transition).\r\n    setTimeout(() => this._service.dismiss(), 300);\r\n  }\r\n\r\n  /** Mapa status → icon name (Material Symbols outlined default). */\r\n  readonly icon = computed(() => {\r\n    const map: Record<SnackBarStatus, string> = {\r\n      success: 'check_circle',\r\n      error:   'error',\r\n      warning: 'warning',\r\n      info:    'info',\r\n      idea:    'lightbulb',\r\n      neutral: 'info',\r\n    };\r\n    return map[this.status()] || 'info';\r\n  });\r\n}\r\n","<!-- Hover/focus/touch handlers ficam no host (HostListener) — não precisa\r\n     duplicar aqui. role/aria-live setados via HostBinding dinâmico (alert vs\r\n     status conforme severidade). -->\r\n<div class=\"matcha-snack-bar-content\">\r\n\r\n    <!-- Icon leading (24×24 outlined) — toggle via showIcon. -->\r\n    @if (showIcon()) {\r\n        <span class=\"matcha-snack-bar-icon\" aria-hidden=\"true\">\r\n            <matcha-icon [name]=\"icon()\" size=\"md\"></matcha-icon>\r\n        </span>\r\n    }\r\n\r\n    <!-- Body: Title (semibold) + Description (regular). -->\r\n    <div class=\"matcha-snack-bar-body\">\r\n        @if (title()) {\r\n            <span class=\"matcha-snack-bar-title\">{{ title() }}</span>\r\n        }\r\n        @if (description()) {\r\n            <span class=\"matcha-snack-bar-description\">{{ description() }}</span>\r\n        }\r\n    </div>\r\n\r\n    <!-- CTA Action (Outline SM canon Figma). Cor herda via CSS custom props\r\n         do theme (--matcha-button-color-*). Loading async via [loading]. -->\r\n    @if (action(); as a) {\r\n        <button matcha-button\r\n                variant=\"outline\"\r\n                size=\"sm\"\r\n                class=\"matcha-snack-bar-action\"\r\n                type=\"button\"\r\n                [loading]=\"actionLoading()\"\r\n                (click)=\"onActionClick()\">\r\n            @if (a.icon && !actionLoading()) {\r\n                <matcha-icon [name]=\"a.icon\" size=\"sm\"></matcha-icon>\r\n            }\r\n            {{ a.label }}\r\n        </button>\r\n    }\r\n\r\n    <!-- Close (Ghost SM icon-button canon Figma). -->\r\n    @if (showClose()) {\r\n        <button matcha-icon-button\r\n                variant=\"ghost\"\r\n                size=\"sm\"\r\n                class=\"matcha-snack-bar-close\"\r\n                type=\"button\"\r\n                aria-label=\"Fechar notificação\"\r\n                (click)=\"close()\">\r\n            <matcha-icon name=\"close\" size=\"sm\"></matcha-icon>\r\n        </button>\r\n    }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaSnackBarComponent } from './snack-bar/snack-bar.component';\r\nimport { MatchaSnackBarService } from './snack-bar.service';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\n\r\n@NgModule({\r\n  imports: [MatchaSnackBarComponent, MatchaIconModule],\r\n  exports: [MatchaSnackBarComponent],\r\n  providers: [MatchaSnackBarService]\r\n})\r\nexport class MatchaSnackBarModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatchaAutocompleteModule } from './matcha-autocomplete/matcha-autocomplete.module';\r\nimport { MatchaOptionModule } from './matcha-option/matcha-option.module';\r\nimport { MatchaPanelModule } from './matcha-panel/matcha-panel.module';\r\nimport { MatchaSelectModule } from './matcha-select/matcha-select.module';\r\nimport { MatchaSelectMultipleModule } from './matcha-select-multiple/matcha-select-multiple.module';\r\nimport { MatchaAccordionModule } from './matcha-accordion/accordion.module';\r\nimport { MatchaButtonModule } from './matcha-button/button.module';\r\nimport { MatchaButtonToggleModule } from './matcha-button-toggle/button-toggle.module';\r\nimport { MatchaCardModule } from './matcha-card/card.module';\r\nimport { MatchaCheckboxModule } from './matcha-checkbox/checkbox.module';\r\nimport { MatchaDividerModule } from './matcha-divider/divider.module';\r\nimport { MatchaElevationModule } from './matcha-elevation/elevation.module';\r\nimport { MatchaFieldModule } from './matcha-field/matcha-field.module';\r\nimport { MatchaFormFieldModule } from './matcha-form-field/matcha-form-field.module';\r\nimport { MatchaHintTextModule } from './matcha-hint-text/hint.module';\r\nimport { MatchaIconModule } from './matcha-icon/icon.module';\r\nimport { MatchaInfiniteScrollModule } from './matcha-infinite-scroll/matcha-infinite-scroll.module';\r\nimport { MatchaMasonryModule } from './matcha-masonry/masonry.module';\r\nimport { MatchaModalModule } from './matcha-modal/matcha-modal.module';\r\nimport { MatchaOverflowDraggableComponent } from './matcha-overflow-draggable/matcha-overflow-draggable.component';\r\nimport { MatchaPaginatorModule } from './matcha-paginator/paginator.module';\r\nimport { MatchaRippleModule } from './matcha-ripple/ripple.module';\r\nimport { MatchaSlideToggleModule } from './matcha-slide-toggle/slide-toggle.module';\r\nimport { MatchaMenuModule } from './matcha-menu/matcha-menu.module';\r\n\r\nimport { MatchaSpinModule } from './matcha-spin/spin.module';\r\nimport { MatchaSpinnerModule } from './matcha-spinner/spinner.module';\r\nimport { MatchaProgressBarModule } from './matcha-progress-bar/progress-bar.module';\r\nimport { MatchaTabsModule } from './matcha-tabs/tabs.module';\r\nimport { MatchaTitleModule } from './matcha-title/title.module';\r\nimport { MatchaTextModule } from './matcha-text/matcha-text.module';\r\nimport { MatchaTooltipModule } from './matcha-tooltip/tooltip.module';\r\nimport { MatchaFieldRangeModule } from './matcha-field-range/field-range.module';\r\nimport { MatchaTimeModule } from './matcha-time/time.module';\r\nimport { MatchaDatetimeModule } from './matcha-datetime/matcha-datetime.module';\r\nimport { MatchaStepperModule } from './matcha-stepper/stepper.module';\r\nimport { MatchaDropListModule } from './matcha-drop-list/drop-list.module';\r\nimport { MatchaPhoneModule } from './matcha-phone/phone.module';\r\nimport { MatchaPageLayoutModule } from './matcha-page-layout/page-layout.module';\r\nimport { MatchaLazyloadModule } from './matcha-lazyload/lazyload.module';\r\nimport { MatchaRadioModule } from './matcha-radio/radio.module';\r\nimport { MatchaAvatarModule } from './matcha-avatar/avatar.module';\r\nimport { MatchaDrawerModule } from './matcha-drawer/drawer.module';\r\nimport { MatchaHighlightModule } from './matcha-highlight/highlight.module';\r\nimport { MatchaSliderModule } from './matcha-slider/slider.module';\r\nimport { MatchaMaskModule } from './matcha-mask/matcha-mask.module';\r\nimport { MatchaChipModule } from './matcha-chip/chip.module';\r\nimport { MatchaListModule } from './matcha-list/list.module';\r\nimport { MatchaSnackBarModule } from './matcha-snack-bar/snack-bar.module';\r\n@NgModule({\r\n    imports: [\r\n        MatchaOverflowDraggableComponent,\r\n        MatchaAccordionModule,\r\n        MatchaAutocompleteModule,\r\n        MatchaOptionModule,\r\n        MatchaPanelModule,\r\n        MatchaSelectModule,\r\n        MatchaSelectMultipleModule,\r\n        MatchaButtonModule,\r\n        MatchaButtonToggleModule,\r\n        MatchaCardModule,\r\n        MatchaCheckboxModule,\r\n        MatchaRadioModule,\r\n        MatchaDividerModule,\r\n        MatchaElevationModule,\r\n        MatchaFieldModule,\r\n        MatchaFormFieldModule,\r\n        MatchaHintTextModule,\r\n        MatchaIconModule,\r\n        MatchaInfiniteScrollModule,\r\n        MatchaLazyloadModule,\r\n        MatchaPhoneModule,\r\n        MatchaMasonryModule,\r\n        MatchaModalModule,\r\n        MatchaPaginatorModule,\r\n        MatchaRippleModule,\r\n        MatchaSlideToggleModule,\r\n        MatchaSliderModule,\r\n        MatchaSpinModule,\r\n        MatchaSpinnerModule,\r\n        MatchaProgressBarModule,\r\n        MatchaStepperModule,\r\n        MatchaTabsModule,\r\n        MatchaTitleModule,\r\n        MatchaTextModule,\r\n        MatchaTooltipModule,\r\n        MatchaFieldRangeModule,\r\n        MatchaTimeModule,\r\n        MatchaDatetimeModule,\r\n        MatchaDropListModule,\r\n        MatchaPageLayoutModule,\r\n        MatchaDrawerModule,\r\n        MatchaHighlightModule,\r\n        MatchaMaskModule,\r\n        MatchaChipModule,\r\n        MatchaMenuModule,\r\n        MatchaListModule,\r\n        MatchaSnackBarModule\r\n    ],\r\n    exports: [\r\n        MatchaOverflowDraggableComponent,\r\n        MatchaAccordionModule,\r\n        MatchaAutocompleteModule,\r\n        MatchaOptionModule,\r\n        MatchaPanelModule,\r\n        MatchaSelectModule,\r\n        MatchaSelectMultipleModule,\r\n        MatchaButtonModule,\r\n        MatchaButtonToggleModule,\r\n        MatchaCardModule,\r\n        MatchaCheckboxModule,\r\n        MatchaRadioModule,\r\n        MatchaDividerModule,\r\n        MatchaElevationModule,\r\n        MatchaFieldModule,\r\n        MatchaFormFieldModule,\r\n        MatchaHintTextModule,\r\n        MatchaIconModule,\r\n        MatchaInfiniteScrollModule,\r\n        MatchaLazyloadModule,\r\n        MatchaPhoneModule,\r\n        MatchaMasonryModule,\r\n        MatchaModalModule,\r\n        MatchaPaginatorModule,\r\n        MatchaRippleModule,\r\n        MatchaSlideToggleModule,\r\n        MatchaSliderModule,\r\n        MatchaSpinModule,\r\n        MatchaSpinnerModule,\r\n        MatchaProgressBarModule,\r\n        MatchaStepperModule,\r\n        MatchaTabsModule,\r\n        MatchaTitleModule,\r\n        MatchaTextModule,\r\n        MatchaTooltipModule,\r\n        MatchaFieldRangeModule,\r\n        MatchaTimeModule,\r\n        MatchaDatetimeModule,\r\n        MatchaDropListModule,\r\n        MatchaPageLayoutModule,\r\n        MatchaAvatarModule,\r\n        MatchaDrawerModule,\r\n        MatchaHighlightModule,\r\n        MatchaMaskModule,\r\n        MatchaChipModule,\r\n        MatchaMenuModule,\r\n        MatchaListModule,\r\n        MatchaSnackBarModule\r\n    ],\r\n})\r\nexport class MatchaComponentsModule { }\r\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    booleanAttribute,\n    input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\n\n/**\n * matcha-contact — átomo de EXIBIÇÃO de contato: ícone (whatsapp/telefone) +\n * número. Quando `hasWhatsapp`, o número vira link `https://api.whatsapp.com`.\n *\n * NÃO confundir com `matcha-phone` (input de formulário com bandeira/país).\n * Este é só leitura/exibição — pensado pra reuso em tabela (via\n * `td[matcha-cell-contact]`) e em cards, mesmo átomo nos dois contextos.\n *\n * A formatação/máscara do número é responsabilidade do consumidor — este\n * componente só exibe o texto recebido em `phone` (o link usa só os dígitos).\n *\n * @example\n *   <matcha-contact [phone]=\"'(11) 91234-5678'\" [hasWhatsapp]=\"true\"></matcha-contact>\n */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-contact',\n    standalone: true,\n    imports: [CommonModule, MatchaIconComponent],\n    templateUrl: './contact.component.html',\n    styleUrls: ['./contact.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'matcha-contact' },\n})\nexport class MatchaContactComponent {\n    /** Número já formatado — este componente não aplica máscara. */\n    readonly phone = input<string>('');\n\n    /** Tem WhatsApp — troca o ícone (+ cor success) e transforma o número em link. */\n    readonly hasWhatsapp = input(false, { transform: booleanAttribute });\n\n    get hasPhone(): boolean {\n        return !!(this.phone() && this.phone().trim() !== '');\n    }\n\n    get isWhatsapp(): boolean {\n        return this.hasWhatsapp() && this.hasPhone;\n    }\n\n    get iconName(): string {\n        return this.isWhatsapp ? 'whatsapp' : 'phone';\n    }\n\n    /** Link wa.me com só os dígitos do número (remove máscara e `+`). */\n    get whatsappHref(): string {\n        return `https://api.whatsapp.com/send?phone=${this.phone().replace(/\\D/g, '')}`;\n    }\n}\n","<matcha-icon\n    [name]=\"iconName\"\n    size=\"sm\"\n    class=\"matcha-contact__icon\"\n    [class.is-whatsapp]=\"isWhatsapp\"\n    aria-hidden=\"true\">\n</matcha-icon>\n\n@if (hasPhone) {\n    @if (isWhatsapp) {\n        <a class=\"matcha-contact__value matcha-contact__link\"\n           [href]=\"whatsappHref\"\n           target=\"_blank\"\n           rel=\"noopener\"\n           (click)=\"$event.stopPropagation()\">{{ phone() }}</a>\n    } @else {\n        <span class=\"matcha-contact__value\">{{ phone() }}</span>\n    }\n} @else {\n    <span class=\"matcha-contact__empty\">—</span>\n}\n","import { NgModule } from '@angular/core';\nimport { MatchaContactComponent } from './contact/contact.component';\n\n@NgModule({\n    imports: [MatchaContactComponent],\n    exports: [MatchaContactComponent],\n})\nexport class MatchaContactModule {}\n","import { NgModule } from '@angular/core';\r\nimport { MatchaBreakpointObserver } from './breakpoint-observer.service';\r\n\r\n/**\r\n * Módulo para o MatchaBreakpointObserver\r\n *\r\n * Este módulo fornece o serviço MatchaBreakpointObserver que pode ser usado\r\n * em qualquer parte da aplicação para observar breakpoints CSS.\r\n *\r\n * O serviço é um singleton (providedIn: 'root') e não precisa ser importado\r\n * explicitamente, mas este módulo pode ser usado para organização.\r\n */\r\n@NgModule({\r\n  imports: [\r\n\r\n  ],\r\n  providers: [\r\n    // O serviço já é providedIn: 'root', mas incluímos aqui para clareza\r\n    MatchaBreakpointObserver\r\n  ]\r\n})\r\nexport class MatchaBreakpointObservableModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconButtonComponent } from './icon-button.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaIconButtonComponent],\r\n    exports: [MatchaIconButtonComponent],\r\n})\r\nexport class MatchaIconButtonModule {}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-link — Texto-link inline com estilo do DS.\r\n *\r\n * Substitui o padrão legacy `<button matcha-button link=\"true\">`.\r\n * Aplica em `<a>` (navegação) OU `<button>` (ação sem fundo/borda).\r\n *\r\n * Exemplos:\r\n *   <a matcha-link color=\"primary\" href=\"/home\">Voltar ao início</a>\r\n *   <button matcha-link color=\"accent\" (click)=\"openDetails()\">Ver detalhes</button>\r\n *   <a matcha-link color=\"danger\" size=\"small\" href=\"#\">Cancelar solicitação</a>\r\n *\r\n * Semântica: preferir `<a>` quando navega; `<button>` quando aciona JS.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: '[matcha-link]',\r\n    template: '<ng-content></ng-content>',\r\n    styleUrls: ['../matcha-button/button/button.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-button',\r\n        '[attr.link]': '\"\"',\r\n    },\r\n})\r\nexport class MatchaLinkComponent {\r\n    /** Tamanho canônico: 'tiny'|'small'|'medium'|'large'|'huge'. Abreviações xs/sm/md/lg/xl aceitas como aliases @deprecated. */\r\n    @Input({ transform: (v: string) => sizeAlias(v) }) size: string = 'medium';\r\n\r\n    /** Cor semântica. Default: primary (links geralmente usam primary/accent). */\r\n    @Input() color: string = 'primary';\r\n\r\n    /** Underline permanente (default: só em hover, como a convenção web). */\r\n    @Input() underline: boolean | string = false;\r\n\r\n    @HostBinding('attr.color') get colorAttr() { return this.color; }\r\n    @HostBinding('attr.size') get sizeAttr() { return this.size; }\r\n    @HostBinding('class.matcha-link--underline') get underlineClass() { return this.isTruthy(this.underline); }\r\n\r\n    private isTruthy(v: boolean | string): boolean {\r\n        return v === true || (typeof v === 'string' && v !== 'false' && v !== '');\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaLinkComponent } from './link.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaLinkComponent],\r\n    exports: [MatchaLinkComponent],\r\n})\r\nexport class MatchaLinkModule {}\r\n","import { Directive, Input, OnInit, OnChanges, OnDestroy, ElementRef, Renderer2, booleanAttribute } from '@angular/core';\r\n\r\n/**\r\n * matcha-badge — Badge indicator (dot, count, label)\r\n *\r\n * Usage:\r\n *   <button matcha-button [matchaBadge]=\"5\" matchaBadgeColor=\"danger\">Notifications</button>\r\n *   <matcha-icon name=\"notification\" matchaBadge matchaBadgeType=\"dot\"></matcha-icon>\r\n *   <span [matchaBadge]=\"'New'\" matchaBadgeType=\"label\" matchaBadgeColor=\"accent\">Feature</span>\r\n */\r\n@Directive({\r\n  selector: '[matchaBadge]',\r\n  standalone: true\r\n})\r\nexport class MatchaBadgeDirective implements OnInit, OnChanges, OnDestroy {\r\n  /** Badge content — number for count, string for label, empty/true for dot */\r\n  @Input() matchaBadge: string | number | boolean = '';\r\n\r\n  /** Badge type: 'dot' | 'count' | 'label' (auto-detected from content if not set) */\r\n  @Input() matchaBadgeType: 'dot' | 'count' | 'label' | null = null;\r\n\r\n  /** Badge color: 'accent' | 'danger' | 'warn' | 'success' | 'info' */\r\n  @Input() matchaBadgeColor: 'accent' | 'danger' | 'warn' | 'success' | 'info' = 'accent';\r\n\r\n  /** Badge position */\r\n  @Input() matchaBadgePosition: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\r\n\r\n  /** Hide badge */\r\n  @Input({ transform: booleanAttribute }) matchaBadgeHidden = false;\r\n\r\n  /** Inline badge (no absolute positioning) */\r\n  @Input({ transform: booleanAttribute }) matchaBadgeInline = false;\r\n\r\n  private badgeElement: HTMLElement | null = null;\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private renderer: Renderer2\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.updateBadge();\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    this.updateBadge();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.badgeElement) {\r\n      this.renderer.removeChild(this.elementRef.nativeElement, this.badgeElement);\r\n      this.badgeElement = null;\r\n    }\r\n  }\r\n\r\n  private get resolvedType(): string {\r\n    if (this.matchaBadgeType) return this.matchaBadgeType;\r\n    if (this.matchaBadge === '' || this.matchaBadge === true) return 'dot';\r\n    if (typeof this.matchaBadge === 'number') return 'count';\r\n    return 'label';\r\n  }\r\n\r\n  private updateBadge(): void {\r\n    if (!this.badgeElement) {\r\n      this.createBadge();\r\n    }\r\n\r\n    if (!this.badgeElement) return;\r\n\r\n    const type = this.resolvedType;\r\n    const host = this.elementRef.nativeElement;\r\n\r\n    // Host needs relative positioning\r\n    if (!this.matchaBadgeInline) {\r\n      this.renderer.setStyle(host, 'position', 'relative');\r\n      this.renderer.setStyle(host, 'overflow', 'visible');\r\n    }\r\n\r\n    // Reset classes via Renderer2 (SSR-safe)\r\n    this.renderer.setAttribute(this.badgeElement, 'class', 'matcha-badge');\r\n\r\n    // Type\r\n    this.renderer.addClass(this.badgeElement, `matcha-badge--${type}`);\r\n\r\n    // Color\r\n    this.renderer.addClass(this.badgeElement, `matcha-badge--${this.matchaBadgeColor}`);\r\n\r\n    // Position\r\n    if (!this.matchaBadgeInline) {\r\n      this.renderer.addClass(this.badgeElement, `matcha-badge--${this.matchaBadgePosition}`);\r\n    } else {\r\n      this.renderer.addClass(this.badgeElement, 'matcha-badge--inline');\r\n    }\r\n\r\n    // Hidden\r\n    if (this.matchaBadgeHidden) {\r\n      this.renderer.addClass(this.badgeElement, 'matcha-badge--hidden');\r\n    }\r\n\r\n    // Content\r\n    if (type === 'count') {\r\n      const count = Number(this.matchaBadge);\r\n      this.renderer.setProperty(this.badgeElement, 'textContent', count > 99 ? '99+' : String(count));\r\n    } else if (type === 'label') {\r\n      this.renderer.setProperty(this.badgeElement, 'textContent', String(this.matchaBadge));\r\n    } else {\r\n      this.renderer.setProperty(this.badgeElement, 'textContent', '');\r\n    }\r\n  }\r\n\r\n  private createBadge(): void {\r\n    this.badgeElement = this.renderer.createElement('span');\r\n    this.renderer.appendChild(this.elementRef.nativeElement, this.badgeElement);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaBadgeDirective } from './matcha-badge.directive';\r\n\r\n@NgModule({\r\n  imports: [MatchaBadgeDirective],\r\n  exports: [MatchaBadgeDirective]\r\n})\r\nexport class MatchaBadgeModule {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    booleanAttribute,\r\n    computed,\r\n    input,\r\n    output,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/** Cores de feedback canônicas — cobrem os 5 papéis semânticos + fallback neutro. */\r\nexport type MatchaStatusPillColor =\r\n    | 'success'\r\n    | 'warning'\r\n    | 'danger'\r\n    | 'info'\r\n    | 'disabled'\r\n    | 'neutral';\r\n\r\n/**\r\n * matcha-status-pill — Pill semântica de estado.\r\n *\r\n * Anatomia: dot (8px) + label + (opcional) edit icon trailing.\r\n *\r\n * `color` — cor de feedback direta, resolvida 100% em SCSS (seletor de\r\n * atributo `[color=\"...\"]` no tema, sem lógica condicional em TS):\r\n *   • success  → verde   • warning  → amarelo  • danger → vermelho\r\n *   • info     → azul    • disabled → cinza (tokens de disabled)\r\n *   • neutral  → cinza itálico (tokens de text-muted, dot opaco) — fallback/\r\n *     ausência de status. Default.\r\n *\r\n * O componente só entende **cores de feedback** (papéis visuais do DS) — não\r\n * carrega semântica de domínio (ex.: \"membro ativo\"). Quem consome resolve o\r\n * mapeamento de negócio → cor na própria tela (ex.: `colorFor(row.status)`).\r\n *\r\n * Boolean [interactive] vira cursor pointer + role=button + (click) emit.\r\n * Boolean [showEditIcon] revela ícone trailing pra indicar editabilidade.\r\n * Boolean [hideLabel] — modo dot-only: colapsa o chrome de pill (padding/\r\n * border/bg), sobra só a bolinha colorida. Label continua no DOM pra leitores\r\n * de tela (visualmente oculto via sr-only), não é removido — a informação\r\n * some visualmente, não semanticamente. Uso: status compacto em cards/listas\r\n * densas onde o texto do label já aparece em outro elemento próximo.\r\n *\r\n * Figma DSV3: matcha/status-pill (fileKey i04CyWczuVctwRjE5VbJh7, nodeId 19682:37).\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-status-pill',\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaIconComponent],\r\n    templateUrl: './status-pill.component.html',\r\n    styleUrls: ['./status-pill.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[attr.color]': 'color()',\r\n        '[attr.hide-label]': 'hideLabel() ? \"\" : null',\r\n        '[attr.interactive]': 'interactive() ? \"\" : null',\r\n        '[attr.disabled]': 'disabled() ? \"\" : null',\r\n        '[attr.role]': 'interactive() ? \"button\" : null',\r\n        '[attr.tabindex]': 'interactive() && !disabled() ? \"0\" : null',\r\n        '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n        '[class.matcha-status-pill]': 'true',\r\n        '(click)': 'onHostClick($event)',\r\n        '(keydown.enter)': 'onHostKey($event)',\r\n        '(keydown.space)': 'onHostKey($event)',\r\n    },\r\n})\r\nexport class MatchaStatusPillComponent {\r\n    /** Cor de feedback. Default 'neutral' (cinza itálico — fallback/ausência de status). */\r\n    readonly color = input<MatchaStatusPillColor>('neutral');\r\n\r\n    /** Texto do label. */\r\n    readonly label = input<string>('');\r\n\r\n    /** Dot-only — esconde label + chrome do pill, sobra só a bolinha colorida\r\n     *  (cor herda do `color`). Uso: status compacto em cards/listas densas. */\r\n    readonly hideLabel = input(false, { transform: booleanAttribute });\r\n\r\n    /** Mostra ícone de edit no trailing — indica que o estado é editável. */\r\n    readonly showEditIcon = input(false, { transform: booleanAttribute });\r\n\r\n    /** Pill clicável (role=button, cursor pointer, foco). */\r\n    readonly interactive = input(false, { transform: booleanAttribute });\r\n\r\n    /** Estado disabled. Bloqueia click + aria-disabled. */\r\n    readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /** Pulse 1x ao montar — chama atenção sem virar ruído contínuo. */\r\n    readonly pulseOnLoad = input(true, { transform: booleanAttribute });\r\n\r\n    /** Emit em click/Enter/Space quando interactive e não disabled. */\r\n    readonly pillClick = output<MouseEvent | KeyboardEvent>();\r\n\r\n    /** Computed: pulse só roda se input truthy. */\r\n    readonly shouldPulse = computed(() => this.pulseOnLoad());\r\n\r\n    onHostClick(event: MouseEvent): void {\r\n        if (!this.interactive() || this.disabled()) return;\r\n        this.pillClick.emit(event);\r\n    }\r\n\r\n    onHostKey(event: KeyboardEvent): void {\r\n        if (!this.interactive() || this.disabled()) return;\r\n        event.preventDefault();\r\n        this.pillClick.emit(event);\r\n    }\r\n}\r\n","<span class=\"matcha-status-pill__dot\" aria-hidden=\"true\"\r\n      [class.matcha-status-pill__dot--pulse]=\"shouldPulse()\"></span>\r\n\r\n<span class=\"matcha-status-pill__label\"\r\n      [class.matcha-status-pill__label--sr-only]=\"hideLabel()\">{{ label() }}</span>\r\n\r\n@if (showEditIcon() && !hideLabel()) {\r\n    <matcha-icon class=\"matcha-status-pill__edit\"\r\n                 name=\"edit\"\r\n                 size=\"sm\"\r\n                 aria-hidden=\"true\">\r\n    </matcha-icon>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaStatusPillComponent } from './status-pill/status-pill.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaStatusPillComponent],\r\n    exports: [MatchaStatusPillComponent],\r\n})\r\nexport class MatchaStatusPillModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaCalendarComponent } from './calendar/matcha-calendar.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaCalendarComponent],\r\n  exports: [MatchaCalendarComponent],\r\n})\r\nexport class MatchaCalendarModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatchaDateComponent } from './date/matcha-date.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaDateComponent, FormsModule],\r\n  exports: [\r\n    MatchaDateComponent\r\n  ]\r\n})\r\nexport class MatchaDateModule { }\r\n\r\n","import {\r\n  Component,\r\n  ChangeDetectionStrategy,\r\n  booleanAttribute,\r\n  computed,\r\n  input,\r\n  numberAttribute,\r\n} from '@angular/core';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport type MatchaEmptyStateSize = 'default' | 'compact';\r\n\r\nexport type MatchaEmptyStateVariant =\r\n  | 'default'\r\n  | 'success'\r\n  | 'warning'\r\n  | 'error'\r\n  | 'info';\r\n\r\nexport type MatchaEmptyStateHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\r\n\r\n/**\r\n * matcha-empty-state — placeholder visual quando não há dados.\r\n *\r\n * Estados típicos: lista vazia, busca sem resultado, primeiro acesso,\r\n * sem permissão. Sempre explica O QUE falta e O QUE fazer.\r\n *\r\n * Uso:\r\n *   <matcha-empty-state\r\n *     icon=\"search\"\r\n *     title=\"Nenhum resultado\"\r\n *     description=\"Ajuste os filtros para tentar novamente\">\r\n *     <button matcha-button color=\"accent\">Limpar filtros</button>\r\n *   </matcha-empty-state>\r\n *\r\n * Tamanhos canônicos do Figma DSV3 (matcha/empty-state):\r\n *  - 'compact' (280px) — **PADRÃO**; cards, modais, abas e listas\r\n *  - 'default' (400px) — opt-in, quando o vazio é o conteúdo principal da rota\r\n *\r\n * Variantes semânticas (extensão DSV3):\r\n *  - 'default' — neutro (cinza)\r\n *  - 'success' / 'warning' / 'error' / 'info' — colorem o container do ícone\r\n *\r\n * Slots:\r\n *  - [matchaEmptyStateMedia] — ilustração ou imagem customizada (substitui o icon)\r\n *  - <ng-content> default — botões de ação (1 primário recomendado, suporta múltiplos com gap)\r\n *\r\n * Recomendação: em `size=\"compact\"`, use o botão de ação com `size=\"sm\"` para\r\n * preservar a hierarquia visual (o componente não impõe automaticamente).\r\n *\r\n * A11y: heading level configurável (1-6, padrão 3). `live=true` ativa\r\n * role=\"status\" + aria-live=\"polite\" para anunciar transições dinâmicas.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-empty-state',\r\n  standalone: true,\r\n  templateUrl: './empty-state.component.html',\r\n  imports: [MatchaIconComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    'class': 'matcha-empty-state',\r\n    '[attr.size]': 'effectiveSize()',\r\n    '[attr.variant]': 'variant() !== \"default\" ? variant() : null',\r\n    '[attr.role]': 'live() ? \"status\" : null',\r\n    '[attr.aria-live]': 'live() ? \"polite\" : null',\r\n    '[attr.aria-labelledby]': 'titleId',\r\n    '[class.matcha-empty-state--compact]': \"effectiveSize() === 'compact'\",\r\n  },\r\n})\r\nexport class MatchaEmptyStateComponent {\r\n  /** Nome do ícone (matcha-icon). Vazio = sem ícone. Ignorado se [matchaEmptyStateMedia] for projetado. */\r\n  icon = input<string>('');\r\n\r\n  /** Título principal — explica O QUE falta. */\r\n  title = input<string>('');\r\n\r\n  /** Descrição secundária — instrui O QUE fazer. Opcional. */\r\n  description = input<string>('');\r\n\r\n  /**\r\n   * Tamanho visual. **Padrão `compact` (280px)** — cabe em card, modal, aba e\r\n   * lista sem esticar. Use `size=\"default\"` (400px) explicitamente quando o\r\n   * estado vazio for o conteúdo principal de uma rota e precisar de presença.\r\n   *\r\n   * O default era `'default'` até 22.30.x. Mudou porque, na prática, o consumidor\r\n   * escrevia `size=\"compact\"` em quase todo uso — o default estava do lado errado.\r\n   */\r\n  size = input<MatchaEmptyStateSize>('compact');\r\n\r\n  /**\r\n   * Variante semântica — colore o container do ícone.\r\n   * - 'default' (neutro)\r\n   * - 'success' (positivo, ex.: \"Tudo em dia\")\r\n   * - 'warning' (atenção, ex.: \"Limite próximo\")\r\n   * - 'error' (falha, ex.: \"Não foi possível carregar\")\r\n   * - 'info' (informativo, ex.: \"Recurso indisponível\")\r\n   */\r\n  variant = input<MatchaEmptyStateVariant>('default');\r\n\r\n  /**\r\n   * Nível semântico do título (h1-h6). Default 3 — ajuste conforme a hierarquia\r\n   * da página. Em telas onde o empty state é o conteúdo principal, use 1 ou 2.\r\n   */\r\n  headingLevel = input<MatchaEmptyStateHeadingLevel>(3, { transform: numberAttribute as any });\r\n\r\n  /**\r\n   * Ativa anúncio dinâmico para leitores de tela (role=\"status\" + aria-live=\"polite\").\r\n   * Use quando o empty state aparece como resultado de uma ação (busca sem resultado,\r\n   * filtro aplicado). Default false (estático) para evitar leitura repetida.\r\n   */\r\n  live = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * @deprecated Use `size=\"compact\"` em vez de `compact=true`. Mantido por compatibilidade.\r\n   */\r\n  compact = input(false, { transform: booleanAttribute });\r\n\r\n  /** Tamanho efetivo (combina size + compat compact). */\r\n  effectiveSize = computed<MatchaEmptyStateSize>(() =>\r\n    this.compact() ? 'compact' : this.size()\r\n  );\r\n\r\n  /** ID único para aria-labelledby apontar do host pro título. */\r\n  private static _idCounter = 0;\r\n  private readonly _id = ++MatchaEmptyStateComponent._idCounter;\r\n  readonly titleId = `matcha-empty-state-title-${this._id}`;\r\n}\r\n","<!-- Slot: ilustração custom (substitui o icon prop quando presente) -->\r\n<ng-content select=\"[matchaEmptyStateMedia]\"></ng-content>\r\n\r\n@if (icon()) {\r\n    <div class=\"matcha-empty-state__icon-container\" aria-hidden=\"true\">\r\n        <matcha-icon class=\"matcha-empty-state__icon\" [name]=\"icon()\"></matcha-icon>\r\n    </div>\r\n}\r\n\r\n<div class=\"matcha-empty-state__text\">\r\n    @switch (headingLevel()) {\r\n        @case (1) { <h1 class=\"matcha-empty-state__title\" [id]=\"titleId\">{{ title() }}</h1> }\r\n        @case (2) { <h2 class=\"matcha-empty-state__title\" [id]=\"titleId\">{{ title() }}</h2> }\r\n        @case (4) { <h4 class=\"matcha-empty-state__title\" [id]=\"titleId\">{{ title() }}</h4> }\r\n        @case (5) { <h5 class=\"matcha-empty-state__title\" [id]=\"titleId\">{{ title() }}</h5> }\r\n        @case (6) { <h6 class=\"matcha-empty-state__title\" [id]=\"titleId\">{{ title() }}</h6> }\r\n        @default  { <h3 class=\"matcha-empty-state__title\" [id]=\"titleId\">{{ title() }}</h3> }\r\n    }\r\n    @if (description()) {\r\n        <p class=\"matcha-empty-state__description\">{{ description() }}</p>\r\n    }\r\n</div>\r\n\r\n<div class=\"matcha-empty-state__action\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  inject,\r\n} from '@angular/core';\r\nimport { MatchaDragDirective } from './directives/drag.directive';\r\nimport { MatchaDropListService } from './services/drop-list.service';\r\n\r\nexport interface MatchaDropListDroppedEvent<T = any> {\r\n  previousIndex: number;\r\n  currentIndex: number;\r\n  item: T;\r\n  container: MatchaDropContainerBase;\r\n  previousContainer?: MatchaDropContainerBase;\r\n  data: T[];\r\n}\r\n\r\nexport interface MatchaDropListConnectedToEvent<T = any> {\r\n  sourceData: T[];\r\n  targetData: T[];\r\n  item: T;\r\n  previousIndex: number;\r\n  currentIndex: number;\r\n}\r\n\r\n/**\r\n * Base compartilhada de drop-container do motor de drag-and-drop Matcha.\r\n *\r\n * Concentra TODA a mecânica plana (registro de drag items, placeholder com\r\n * translateY, reorder intra-container, transfer cross-container, listas\r\n * conectadas, filtros de accept). É consumida por:\r\n *\r\n * - {@link MatchaDropListComponent} — container plano público (sortable/kanban);\r\n * - o branch interno do `matcha-tree-view` — adiciona tree mode (profundidade,\r\n *   hover-expand, reparenting) sobrescrevendo os ganchos abaixo.\r\n *\r\n * O {@link MatchaDropListService} fala com qualquer container via duck-typing\r\n * (`matchaDropListTreeMode`, `updatePlaceholder`, `finalizeDrop`, …), então esta\r\n * base define os membros que o serviço lê. Ganchos de árvore têm default neutro\r\n * (flat = sem limite de profundidade, sem tree mode).\r\n *\r\n * `@Directive()` sem seletor: padrão Angular para herdar `@Input`/`@Output`/\r\n * `@HostBinding` em subclasses decoradas.\r\n */\r\n@Directive()\r\nexport abstract class MatchaDropContainerBase<T = any> implements OnInit, OnDestroy {\r\n  @Input() matchaDropListData: T[] = [];\r\n  @Input() matchaDropListDisabled: boolean = false;\r\n  @Input() matchaDropListConnectedTo: MatchaDropContainerBase[] = [];\r\n  @Input() matchaDropListSortingDisabled: boolean = false;\r\n  @Input() matchaDropListAcceptPredicate?: (item: any, sourceContainer: MatchaDropContainerBase, targetContainer: MatchaDropContainerBase) => boolean;\r\n  @Input() matchaDropListAcceptTypes: string[] = [];\r\n\r\n  @Output() matchaDropListDropped = new EventEmitter<MatchaDropListDroppedEvent<T>>();\r\n\r\n  /**\r\n   * Flag lida pelo serviço para ativar hover-expand/reparenting. Default `false`\r\n   * (container plano). O branch de árvore sobrescreve para `true`.\r\n   */\r\n  matchaDropListTreeMode = false;\r\n\r\n  // Items registered via self-registration in MatchaDragDirective.ngOnInit().\r\n  // Sorted by DOM order on every read so translateY indices stay correct after reorders.\r\n  protected _directDragItems: MatchaDragDirective[] = [];\r\n\r\n  get directDragItems(): MatchaDragDirective[] {\r\n    // Cópia ordenada por posição no DOM. NÃO muta `_directDragItems` (getter puro,\r\n    // lido várias vezes por mousemove) e usa um comparador consistente: elementos\r\n    // iguais ou desconectados → 0 (mantém a ordem de registro), senão os bits\r\n    // FOLLOWING/PRECEDING decidem. O `? -1 : 1` anterior nunca retornava 0 e\r\n    // violava o contrato de `sort` para pares iguais/ambíguos (nós recém-destruídos\r\n    // no meio de um drag), gerando ordem instável nos índices de drop/hover.\r\n    return [...this._directDragItems].sort((a, b) => {\r\n      const ae = a.elementRef.nativeElement;\r\n      const be = b.elementRef.nativeElement;\r\n      if (ae === be) return 0;\r\n      const pos = ae.compareDocumentPosition(be);\r\n      if (pos & Node.DOCUMENT_POSITION_DISCONNECTED) return 0;\r\n      if (pos & Node.DOCUMENT_POSITION_FOLLOWING) return -1;\r\n      if (pos & Node.DOCUMENT_POSITION_PRECEDING) return 1;\r\n      return 0;\r\n    });\r\n  }\r\n\r\n  @HostBinding('class.matcha-drop-list') get dropListClass() {\r\n    return true;\r\n  }\r\n\r\n  // Visual state\r\n  isReceivingDrag = false;\r\n  showDropIndicator = false;\r\n  dropIndicatorPosition = 0;\r\n  canAcceptDrop = true;\r\n\r\n  protected calculatedDropIndex = 0;\r\n  protected currentDragItem?: MatchaDragDirective;\r\n  dragStartIndex: number = -1;\r\n  protected sourceContainer?: MatchaDropContainerBase;\r\n\r\n  readonly elementRef = inject(ElementRef<HTMLElement>);\r\n  protected readonly dropListService = inject(MatchaDropListService);\r\n\r\n  ngOnInit() {\r\n    this.dropListService.registerDropZone(this.elementRef.nativeElement, this);\r\n  }\r\n\r\n  registerDragItem(item: MatchaDragDirective): void {\r\n    if (!this._directDragItems.includes(item)) {\r\n      this._directDragItems.push(item);\r\n    }\r\n  }\r\n\r\n  unregisterDragItem(item: MatchaDragDirective): void {\r\n    const idx = this._directDragItems.indexOf(item);\r\n    if (idx >= 0) this._directDragItems.splice(idx, 1);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.dropListService.unregisterDropZone(this.elementRef.nativeElement);\r\n  }\r\n\r\n  // --- Called by the drag engine (MatchaDropListService) ---\r\n\r\n  onPointerDragStart(dragItem: MatchaDragDirective): void {\r\n    if (this.matchaDropListDisabled) return;\r\n    this.currentDragItem = dragItem;\r\n    this.sourceContainer = this;\r\n    this.dragStartIndex = this.getDragItemIndex(dragItem);\r\n\r\n    this.matchaDropListConnectedTo.forEach(container => {\r\n      container.notifyDragStart(dragItem, this);\r\n    });\r\n  }\r\n\r\n  onPointerDragEnd(): void {\r\n    this.currentDragItem = undefined;\r\n    this.sourceContainer = undefined;\r\n    this.dragStartIndex = -1;\r\n\r\n    this.matchaDropListConnectedTo.forEach(container => container.notifyDragEnd());\r\n  }\r\n\r\n  updatePlaceholder(clientX: number, clientY: number, dragDirective: MatchaDragDirective, sourceContainer?: MatchaDropContainerBase): void {\r\n    if (this.matchaDropListDisabled) return;\r\n\r\n    const isCrossContainer = sourceContainer && sourceContainer !== this;\r\n\r\n    // Type-based accept check\r\n    if (isCrossContainer && this.matchaDropListAcceptTypes.length > 0) {\r\n      const dragType = dragDirective.matchaDragType ?? '';\r\n      if (dragType && !this.matchaDropListAcceptTypes.includes(dragType)) {\r\n        this.isReceivingDrag = true;\r\n        this.canAcceptDrop = false;\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Predicate check: reject incoming cross-container drop before showing placeholder\r\n    if (isCrossContainer && this.matchaDropListAcceptPredicate) {\r\n      const canAccept = this.matchaDropListAcceptPredicate(dragDirective.matchaDragData, sourceContainer, this);\r\n      if (!canAccept) {\r\n        this.isReceivingDrag = true;\r\n        this.canAcceptDrop = false;\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Depth check (tree mode only; flat containers always allow)\r\n    if (isCrossContainer && !this.isDepthAllowed(dragDirective)) {\r\n      this.isReceivingDrag = true;\r\n      this.canAcceptDrop = false;\r\n      return;\r\n    }\r\n\r\n    const allItems = this.directDragItems;\r\n    const allEls = allItems.map(d => d.elementRef.nativeElement);\r\n    const draggedEl = dragDirective.elementRef.nativeElement;\r\n    const isSameContainer = allEls.includes(draggedEl);\r\n    const draggedHeight = draggedEl.getBoundingClientRect().height;\r\n\r\n    // Calculate insert index ignoring the dragged item itself\r\n    let insertIndex = allEls.length;\r\n    for (let i = 0; i < allEls.length; i++) {\r\n      if (allEls[i] === draggedEl) continue;\r\n      const rect = allEls[i].getBoundingClientRect();\r\n      if (clientY < rect.top + rect.height / 2) {\r\n        insertIndex = i;\r\n        break;\r\n      }\r\n    }\r\n\r\n    // Adjust for the removed dragged item when it was before the insert point\r\n    if (isSameContainer) {\r\n      const draggedIndex = allEls.indexOf(draggedEl);\r\n      if (draggedIndex < insertIndex) {\r\n        insertIndex = Math.max(0, insertIndex - 1);\r\n      }\r\n    }\r\n\r\n    this.calculatedDropIndex = insertIndex;\r\n\r\n    // Apply translateY animations: only items strictly between source and target shift\r\n    allItems.forEach((item, rawIdx) => {\r\n      const el = item.elementRef.nativeElement;\r\n      el.style.transition = 'transform 150ms ease, opacity 150ms ease';\r\n      if (el === draggedEl) {\r\n        el.style.opacity = '0.25';\r\n        el.style.transform = '';\r\n        return;\r\n      }\r\n      el.style.opacity = '';\r\n      if (!isSameContainer) {\r\n        el.style.transform = rawIdx >= insertIndex ? `translateY(${draggedHeight}px)` : '';\r\n      } else {\r\n        const draggedIdx = allEls.indexOf(draggedEl);\r\n        if (insertIndex < draggedIdx) {\r\n          el.style.transform = (rawIdx >= insertIndex && rawIdx < draggedIdx)\r\n            ? `translateY(${draggedHeight}px)` : '';\r\n        } else {\r\n          el.style.transform = (rawIdx > draggedIdx && rawIdx <= insertIndex)\r\n            ? `translateY(-${draggedHeight}px)` : '';\r\n        }\r\n      }\r\n    });\r\n\r\n    // Extend container bottom for hit-test at last position (Fix E)\r\n    (this.getInnerContainer() as HTMLElement).style.paddingBottom = `${draggedHeight}px`;\r\n\r\n    this.isReceivingDrag = true;\r\n    this.canAcceptDrop = true;\r\n    this.showDropIndicator = false;\r\n  }\r\n\r\n  clearPlaceholder(): void {\r\n    (this.getInnerContainer() as HTMLElement).style.paddingBottom = '';\r\n    this.directDragItems.forEach(item => {\r\n      const el = item.elementRef.nativeElement;\r\n      el.style.transform = '';\r\n      el.style.opacity = '';\r\n      el.style.transition = '';\r\n    });\r\n    this.isReceivingDrag = false;\r\n    this.canAcceptDrop = true;\r\n    this.showDropIndicator = false;\r\n    this.calculatedDropIndex = 0;\r\n  }\r\n\r\n  protected getInnerContainer(): Element {\r\n    return this.elementRef.nativeElement.querySelector('.matcha-drop-list-container')\r\n      ?? this.elementRef.nativeElement;\r\n  }\r\n\r\n  finalizeDrop(dragDirective: MatchaDragDirective, sourceContainer: MatchaDropContainerBase): void {\r\n    if (this.matchaDropListDisabled) {\r\n      this.clearPlaceholder();\r\n      return;\r\n    }\r\n\r\n    // Save before clearPlaceholder resets it — used to guard same-position drops\r\n    const hadMovement = this.isReceivingDrag;\r\n\r\n    // Type-based accept check\r\n    if (sourceContainer !== this && this.matchaDropListAcceptTypes.length > 0) {\r\n      const dragType = dragDirective.matchaDragType ?? '';\r\n      if (dragType && !this.matchaDropListAcceptTypes.includes(dragType)) {\r\n        this.clearPlaceholder();\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Predicate check: reject cross-container drops that the target doesn't accept\r\n    if (sourceContainer !== this && this.matchaDropListAcceptPredicate) {\r\n      const canAccept = this.matchaDropListAcceptPredicate(dragDirective.matchaDragData, sourceContainer, this);\r\n      if (!canAccept) {\r\n        this.clearPlaceholder();\r\n        return;\r\n      }\r\n    }\r\n\r\n    // Depth check (tree mode only)\r\n    if (sourceContainer !== this && !this.isDepthAllowed(dragDirective)) {\r\n      this.clearPlaceholder();\r\n      return;\r\n    }\r\n\r\n    const dropIndex = this.calculatedDropIndex;\r\n    this.clearPlaceholder();\r\n\r\n    if (sourceContainer === this) {\r\n      const fromIndex = this.directDragItems.findIndex(d => d === dragDirective);\r\n      if (fromIndex >= 0 && hadMovement && !this.matchaDropListSortingDisabled && dropIndex !== fromIndex) {\r\n        this.reorderItems(fromIndex, dropIndex);\r\n      }\r\n    } else if (sourceContainer) {\r\n      this.transferItem(dragDirective, sourceContainer, this, dropIndex);\r\n    }\r\n  }\r\n\r\n  // --- Cross-container communication (connected lists) ---\r\n\r\n  notifyDragStart(dragItem: MatchaDragDirective, sourceContainer: MatchaDropContainerBase): void {\r\n    this.currentDragItem = dragItem;\r\n    this.sourceContainer = sourceContainer;\r\n    this.dragStartIndex = sourceContainer.getDragItemIndex(dragItem);\r\n  }\r\n\r\n  notifyDragEnd(): void {\r\n    this.currentDragItem = undefined;\r\n    this.sourceContainer = undefined;\r\n    this.dragStartIndex = -1;\r\n    this.isReceivingDrag = false;\r\n    this.showDropIndicator = false;\r\n    this.calculatedDropIndex = 0;\r\n  }\r\n\r\n  // --- Internal reorder/transfer ---\r\n\r\n  protected reorderItems(fromIndex: number, toIndex: number): void {\r\n    const newData = [...this.matchaDropListData];\r\n    const [item] = newData.splice(fromIndex, 1);\r\n    // `updatePlaceholder` já compensou o item removido no cálculo de `toIndex`\r\n    // (quando `draggedIndex < toIndex`), então ele é o índice pós-remoção.\r\n    newData.splice(toIndex, 0, item);\r\n    this.matchaDropListData = newData;\r\n\r\n    this.matchaDropListDropped.emit({\r\n      previousIndex: fromIndex,\r\n      currentIndex: toIndex,\r\n      item,\r\n      container: this,\r\n      data: this.matchaDropListData\r\n    });\r\n  }\r\n\r\n  protected transferItem(\r\n    dragItem: MatchaDragDirective,\r\n    sourceContainer: MatchaDropContainerBase,\r\n    targetContainer: MatchaDropContainerBase,\r\n    targetIndex: number\r\n  ): void {\r\n    const item = dragItem.matchaDragData;\r\n    const sourceIndex = sourceContainer.dragStartIndex;\r\n\r\n    const sourceData = [...sourceContainer.matchaDropListData];\r\n    sourceData.splice(sourceIndex, 1);\r\n    sourceContainer.matchaDropListData = sourceData;\r\n\r\n    const targetData = [...targetContainer.matchaDropListData];\r\n    targetData.splice(targetIndex, 0, item);\r\n    targetContainer.matchaDropListData = targetData;\r\n\r\n    targetContainer.matchaDropListDropped.emit({\r\n      previousIndex: sourceIndex,\r\n      currentIndex: targetIndex,\r\n      item,\r\n      container: targetContainer,\r\n      previousContainer: sourceContainer,\r\n      data: targetContainer.matchaDropListData\r\n    });\r\n\r\n    sourceContainer.matchaDropListDropped.emit({\r\n      previousIndex: sourceIndex,\r\n      currentIndex: -1,\r\n      item,\r\n      container: sourceContainer,\r\n      data: sourceContainer.matchaDropListData\r\n    });\r\n  }\r\n\r\n  getDragItemIndex(dragItem: MatchaDragDirective): number {\r\n    return this.directDragItems.indexOf(dragItem);\r\n  }\r\n\r\n  /**\r\n   * Gancho de profundidade. Container plano nunca limita; o branch de árvore\r\n   * sobrescreve para validar `maxDepth` contra a altura da subtree arrastada.\r\n   */\r\n  protected isDepthAllowed(_dragDirective?: MatchaDragDirective): boolean {\r\n    return true;\r\n  }\r\n\r\n  // --- Kept for backward compat (no-ops with the pointer engine) ---\r\n\r\n  onDragStart(dragItem: MatchaDragDirective, _event: any): void {\r\n    this.onPointerDragStart(dragItem);\r\n  }\r\n\r\n  onDragEnd(): void {\r\n    this.onPointerDragEnd();\r\n  }\r\n\r\n  handleTouchDragOver(_event: any): void {}\r\n\r\n  handleTouchDrop(_event: any, _dragItem: any): void {}\r\n}\r\n","import { InjectionToken, TemplateRef } from '@angular/core';\r\nimport { MatchaTreeNodeContext } from './tree-node.directive';\r\nimport { MatchaDropListDroppedEvent } from '../matcha-drop-list/drop-container.base';\r\n\r\n/**\r\n * Contrato que o `matcha-tree-view` (container raiz) expõe aos branches\r\n * recursivos internos. Injetado via {@link MATCHA_TREE_CONTROLLER} pra evitar\r\n * import circular branch ↔ container e prop-drilling de config pela recursão.\r\n */\r\nexport interface MatchaTreeController<T = any> {\r\n  /** Template de linha projetado (`*matchaTreeNode`). */\r\n  nodeTemplateRef(): TemplateRef<MatchaTreeNodeContext<T>> | null;\r\n\r\n  // --- Acessores do modelo de dados ---\r\n  childrenOf(node: T): T[];\r\n  hasChildren(node: T): boolean;\r\n  idOf(node: T): string | number;\r\n  isExpanded(node: T): boolean;\r\n  isDisabled(): boolean;\r\n  hoverExpandDelayMs(): number;\r\n  /** `true` enquanto os filhos do nó estão sendo buscados (lido de `loadingKey`). */\r\n  isLoading(node: T): boolean;\r\n  /**\r\n   * `true` no único nó que carrega `tabindex=0` (roving tabindex). A árvore\r\n   * inteira é UMA parada de Tab; dentro dela navega-se com as setas, que é o\r\n   * que o padrão ARIA de `tree` exige.\r\n   */\r\n  isTabbable(node: T): boolean;\r\n  /** `true` no nó selecionado (`[(selected)]`); vai pro `aria-selected` do treeitem. */\r\n  isSelected(node: T): boolean;\r\n\r\n  // --- Drag-and-drop tipado ---\r\n  /** Tipo de arraste do nó (lido de `dragTypeKey`); `undefined` = sem tipo. */\r\n  dragTypeOf(node: T): string | undefined;\r\n  /** Tipos que o nó aceita receber como filho; `[]` = aceita qualquer um. */\r\n  acceptTypesFor(node: T): string[];\r\n  /** `false` quando o nó não pode ser arrastado (além do `disabled` global). */\r\n  canDrag(node: T): boolean;\r\n\r\n  /**\r\n   * `true` quando o recuo para de crescer neste nível (`[maxIndentLevel]`):\r\n   * o bloco de filhos não recua nem desenha guia, e o contexto entrega\r\n   * `clamped` pra linha sinalizar a profundidade real (ex.: badge L5+).\r\n   */\r\n  isIndentClamped(level: number): boolean;\r\n\r\n  /** Monta o contexto do template pra um nó num dado nível. */\r\n  nodeContext(node: T, level: number, isLast: boolean): MatchaTreeNodeContext<T>;\r\n\r\n  /** `trackBy` do `@for` — id quando existe, identidade do objeto quando não. */\r\n  trackNode(node: T): unknown;\r\n\r\n  // --- Validação de profundidade (tree mode) ---\r\n  /** `true` se o nó (com sua subtree) cabe quando posicionado em `nodeLevel`. */\r\n  canPlaceAt(node: T, nodeLevel: number): boolean;\r\n  /**\r\n   * `true` se `target` é o próprio `node` ou um descendente dele. Um branch\r\n   * cujo pai seja isso NÃO pode receber `node`: seria soltar o nó dentro de si\r\n   * mesmo, e a árvore o perderia.\r\n   */\r\n  isSelfOrDescendant(node: T, target: T | null): boolean;\r\n\r\n  /** `true` se `targetId` é o próprio nó ou um descendente dele (guarda de ciclo). */\r\n  isSelfOrDescendant(node: T, targetId: string | number): boolean;\r\n\r\n  // --- Mutações (atualizam a árvore central + emitem outputs) ---\r\n  /** Reorder/transfer reportado pelo motor num branch (parent `null` = raiz). */\r\n  onBranchDrop(event: MatchaDropListDroppedEvent<T>, parentNode: T | null): void;\r\n  /** Reparent: solta `node` dentro dos filhos de `targetParent` (no nível `targetLevel`). */\r\n  reparentInto(targetParent: T, node: T, targetLevel: number): void;\r\n  /** Hover-to-expand de um nó durante o drag. */\r\n  requestHoverExpand(node: T): void;\r\n}\r\n\r\nexport const MATCHA_TREE_CONTROLLER = new InjectionToken<MatchaTreeController>('MATCHA_TREE_CONTROLLER');\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDropListModule } from '../../matcha-drop-list/drop-list.module';\r\nimport { MatchaDragDirective } from '../../matcha-drop-list/directives/drag.directive';\r\nimport { MatchaDropContainerBase } from '../../matcha-drop-list/drop-container.base';\r\nimport { MATCHA_TREE_CONTROLLER } from '../tree-controller';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * Branch recursivo **interno** do `matcha-tree-view`. Cada instância é o\r\n * drop-container de UM nível da árvore: estende {@link MatchaDropContainerBase}\r\n * (toda a mecânica de drag/sort/transfer) e liga o **tree mode** — profundidade,\r\n * hover-to-expand e reparenting.\r\n *\r\n * Não é API pública. O consumidor só usa `<matcha-tree-view>`.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-tree-branch',\r\n  templateUrl: './tree-branch.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  // Não se auto-importa mais: a recursão passa por <matcha-tree-children>,\r\n  // que é quem instancia o próximo branch. Isso quebra o ciclo branch↔branch.\r\n  imports: [CommonModule, MatchaDropListModule],\r\n  // Estado do drop no HOST (o drop-list plano põe num div interno): é o que o\r\n  // tema lê pra pintar a linha do PAI como Recebendo/Recusado via :has().\r\n  host: {\r\n    '[class.matcha-drop-list-receiving]': 'isReceivingDrag',\r\n    '[class.matcha-drop-list-can-accept]': 'isReceivingDrag && canAcceptDrop',\r\n    '[class.matcha-drop-list-cannot-accept]': 'isReceivingDrag && !canAcceptDrop',\r\n  },\r\n})\r\nexport class MatchaTreeBranchComponent<T = any> extends MatchaDropContainerBase<T> {\r\n  /** Profundidade hierárquica deste nível (raiz = 1). */\r\n  @Input() level = 1;\r\n  /** Nó pai cujos filhos este branch lista (`null` na raiz). */\r\n  @Input() parentNode: T | null = null;\r\n\r\n  protected readonly controller = inject(MATCHA_TREE_CONTROLLER);\r\n  private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n  /** Contexto da row. */\r\n  protected contextFor(node: T, isLast: boolean) {\r\n    return this.controller.nodeContext(node, this.level, isLast);\r\n  }\r\n\r\n  /** Tree mode sempre ligado neste container (vs. o matcha-drop-list plano). */\r\n  override matchaDropListTreeMode = true;\r\n\r\n  // O branch é OnPush e o motor mexe em `isReceivingDrag`/`canAcceptDrop` (campos\r\n  // simples) direto — sem markForCheck o alvo de drop e seus estados não re-renderizam\r\n  // durante o drag. (IN-42506)\r\n  override updatePlaceholder(\r\n    clientX: number,\r\n    clientY: number,\r\n    dragDirective: MatchaDragDirective,\r\n    sourceContainer?: MatchaDropContainerBase<T>,\r\n  ): void {\r\n    super.updatePlaceholder(clientX, clientY, dragDirective, sourceContainer as any);\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  override clearPlaceholder(): void {\r\n    super.clearPlaceholder();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  /** Lido pelo motor pra agendar o hover-to-expand. */\r\n  get matchaDropListHoverExpandDelay(): number {\r\n    return this.controller.hoverExpandDelayMs();\r\n  }\r\n\r\n  /**\r\n   * `true` enquanto há um drag ativo em qualquer ponto da árvore (sinal do serviço).\r\n   * Um branch VAZIO (nó expandido sem filhos, lazy-load, árvore vazia) tem ~2px de\r\n   * altura, então o alvo de drop só aparecia depois que o cursor já o acertava\r\n   * (`isReceivingDrag`) — impossível de mirar. Com isto o alvo é renderizado durante\r\n   * todo o drag, não só quando já está sob o cursor. (IN-42506)\r\n   */\r\n  get isDragActive(): boolean {\r\n    return this.dropListService.currentDragData() != null;\r\n  }\r\n\r\n  // --- Tree hooks chamados pelo motor (MatchaDropListService) ---\r\n\r\n  /**\r\n   * Índice do item sob o cursor (hit-test em DOM order), **ignorando o nó que\r\n   * está sendo arrastado** — sem isso, pausar sobre a linha de origem disparava\r\n   * o hover-to-expand no próprio nó em movimento.\r\n   */\r\n  getItemIndexAt(clientX: number, clientY: number): number {\r\n    const dragged = this.dropListService.currentDragData();\r\n    const items = this.directDragItems;\r\n    for (let i = 0; i < items.length; i++) {\r\n      if (dragged != null && items[i].matchaDragData === dragged) continue;\r\n      const rect = items[i].elementRef.nativeElement.getBoundingClientRect();\r\n      if (clientX >= rect.left && clientX <= rect.right &&\r\n          clientY >= rect.top && clientY <= rect.bottom) {\r\n        return i;\r\n      }\r\n    }\r\n    return -1;\r\n  }\r\n\r\n  /** Pede ao container pra expandir o nó sob o cursor (após o delay de hover). */\r\n  emitHoverExpand(itemIndex: number): void {\r\n    const item = this.directDragItems[itemIndex];\r\n    if (item) this.controller.requestHoverExpand(item.matchaDragData as T);\r\n  }\r\n\r\n  /**\r\n   * Gancho de aceitação do motor (é chamado antes de abrir espaço e antes de\r\n   * soltar, e também barra o `transferItem` — faltava no caminho de transfer,\r\n   * só `reparentInto` checava). Duas regras: profundidade máxima e NUNCA\r\n   * receber o próprio nó arrastado nem um ancestral dele — este branch lista\r\n   * os filhos de `parentNode`; se `parentNode` está dentro do que se arrasta,\r\n   * soltar aqui seria enfiar o nó em si mesmo, e ele sumiria da árvore.\r\n   */\r\n  protected override isDepthAllowed(dragDirective?: MatchaDragDirective): boolean {\r\n    if (!dragDirective) return true;\r\n    const node = dragDirective.matchaDragData as T;\r\n    if (this.controller.isSelfOrDescendant(node, this.parentNode)) return false;\r\n    return this.controller.canPlaceAt(node, this.level);\r\n  }\r\n\r\n}\r\n","@for (node of matchaDropListData; track controller.trackNode(node); let last = $last) {\r\n    <!-- Este wrapper é o nó ARIA da árvore, não a row projetada: quem controla\r\n         role/aria/tabindex é o DS, então nenhuma composição do consumer\r\n         consegue quebrar a semântica nem o foco por teclado. -->\r\n    <div class=\"matcha-tree-view__node\"\r\n         [class.is-last]=\"last\"\r\n         [class.is-selected]=\"controller.isSelected(node)\"\r\n         [attr.aria-selected]=\"controller.isSelected(node) ? true : null\"\r\n         role=\"treeitem\"\r\n         [attr.data-tree-id]=\"controller.idOf(node)\"\r\n         [attr.aria-level]=\"level\"\r\n         [attr.aria-expanded]=\"controller.hasChildren(node) ? controller.isExpanded(node) : null\"\r\n         [attr.tabindex]=\"controller.isTabbable(node) ? 0 : -1\"\r\n         matchaDrag\r\n         [matchaDragData]=\"node\"\r\n         [matchaDragType]=\"controller.dragTypeOf(node) ?? ''\"\r\n         [matchaDragDisabled]=\"controller.isDisabled() || !controller.canDrag(node)\">\r\n\r\n        <ng-container\r\n            *ngTemplateOutlet=\"controller.nodeTemplateRef(); context: contextFor(node, last)\">\r\n        </ng-container>\r\n    </div>\r\n}\r\n\r\n<!-- Não há linha indicadora entre irmãos: o motor abre o ESPAÇO do item\r\n     arrastado (translateY nos irmãos) e mantém o fantasma na origem. -->\r\n@if ((isReceivingDrag || isDragActive) && directDragItems.length === 0) {\r\n    <div class=\"matcha-drop-list-empty-placeholder\"\r\n         aria-hidden=\"true\"\r\n         [class.can-accept]=\"!isReceivingDrag || canAcceptDrop\"\r\n         [class.cannot-accept]=\"isReceivingDrag && !canAcceptDrop\"></div>\r\n}\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n/**\r\n * Contexto exposto ao template de linha do `matcha-tree-view`.\r\n *\r\n * Usado tanto no `let-` quanto no `$implicit`, então `<ng-template matchaTreeNode\r\n * let-node>` e `<ng-template matchaTreeNode let-node=\"node\">` funcionam igual.\r\n */\r\nexport interface MatchaTreeNodeContext<T = any> {\r\n  /** O nó atual (também disponível como `$implicit`). */\r\n  $implicit: T;\r\n  /** O nó atual. */\r\n  node: T;\r\n  /** Profundidade hierárquica 1..N — repasse pro `[level]` do tree-view-item. */\r\n  level: number;\r\n  /** Estado expandido do nó (controlado pelo container). */\r\n  expanded: boolean;\r\n  /**\r\n   * `true` se o nó tem filhos. Por default deriva de `children.length`, mas com\r\n   * `[hasChildrenKey]` no container passa a ler um contador do próprio nó\r\n   * (ex.: `numchild`) — é o que permite mostrar o chevron ANTES de buscar os\r\n   * filhos, em árvore com carregamento sob demanda.\r\n   */\r\n  hasChildren: boolean;\r\n  /**\r\n   * `true` enquanto os filhos deste nó estão sendo buscados. Lido de\r\n   * `[loadingKey]`; use pra trocar o chevron por um spinner.\r\n   */\r\n  loading: boolean;\r\n  /** `true` se este nó é o último irmão (a guia para no centro da linha dele). */\r\n  isLast: boolean;\r\n  /** `true` se este é o nó selecionado (`[(selected)]` do container). Repasse pro `[selected]` do item. */\r\n  selected: boolean;\r\n  /**\r\n   * `true` quando o recuo travou antes deste nível (`[maxIndentLevel]`): a\r\n   * linha está no mesmo recuo do pai, então mostre a profundidade real de\r\n   * outro jeito (o padrão é o cargo com prefixo \"L5+\").\r\n   */\r\n  clamped: boolean;\r\n  /** Alterna expandido/colapsado do nó (use no chevron). */\r\n  toggle: () => void;\r\n}\r\n\r\n/**\r\n * Marca o `<ng-template>` que renderiza a linha de cada nó da árvore.\r\n *\r\n * ```html\r\n * <matcha-tree-view [data]=\"tree\">\r\n *   <ng-template matchaTreeNode let-node let-level=\"level\" let-expanded=\"expanded\">\r\n *     <matcha-tree-view-item [level]=\"level\" [expanded]=\"expanded\"> … </matcha-tree-view-item>\r\n *   </ng-template>\r\n * </matcha-tree-view>\r\n * ```\r\n */\r\n@Directive({\r\n  selector: '[matchaTreeNode]',\r\n  standalone: true,\r\n})\r\nexport class MatchaTreeNodeDirective<T = any> {\r\n  readonly templateRef = inject(TemplateRef<MatchaTreeNodeContext<T>>);\r\n\r\n  /** Type guard pra inferência do contexto no template. */\r\n  static ngTemplateContextGuard<T>(\r\n    _dir: MatchaTreeNodeDirective<T>,\r\n    _ctx: unknown,\r\n  ): _ctx is MatchaTreeNodeContext<T> {\r\n    return true;\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  Injector,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  afterNextRender,\r\n  booleanAttribute,\r\n  contentChild,\r\n  forwardRef,\r\n  input,\r\n  inject,\r\n  isDevMode,\r\n  model,\r\n  numberAttribute,\r\n  output,\r\n  signal,\r\n} from '@angular/core';\r\nimport { MatchaTreeBranchComponent } from '../tree-branch/tree-branch.component';\r\nimport { MatchaTreeNodeContext, MatchaTreeNodeDirective } from '../tree-node.directive';\r\nimport { MATCHA_TREE_CONTROLLER, MatchaTreeController } from '../tree-controller';\r\nimport { MatchaDropListDroppedEvent } from '../../matcha-drop-list/drop-container.base';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport interface MatchaTreeNodeMovedEvent<T = any> {\r\n  node: T;\r\n  previousIndex: number;\r\n  currentIndex: number;\r\n  /** Pai onde o nó foi solto (`null` = raiz). */\r\n  parent: T | null;\r\n}\r\n\r\nexport interface MatchaTreeNodeReparentedEvent<T = any> {\r\n  node: T;\r\n  newParent: T;\r\n}\r\n\r\n/**\r\n * Textos anunciados no `aria-live` do container após mutações por teclado.\r\n * Recebem o rótulo do nó (lido de `[labelKey]`) e posições 1-based.\r\n */\r\nexport interface MatchaTreeAnnouncements {\r\n  moved: (label: string, position: number, total: number) => string;\r\n  reparented: (label: string, parentLabel: string) => string;\r\n  movedToRoot: (label: string, position: number, total: number) => string;\r\n}\r\n\r\nexport const MATCHA_TREE_DEFAULT_ANNOUNCEMENTS: MatchaTreeAnnouncements = {\r\n  moved: (label, position, total) => `${label} movido para a posição ${position} de ${total}`,\r\n  reparented: (label, parentLabel) => `${label} movido para dentro de ${parentLabel}`,\r\n  movedToRoot: (label, position, total) => `${label} movido para a raiz, posição ${position} de ${total}`,\r\n};\r\n\r\n/**\r\n * Nó expandido ou colapsado pelo usuário. `expanded` já é o estado NOVO, e o\r\n * container já o gravou em `[data]` — o evento existe pro consumer reagir\r\n * (tipicamente buscar os filhos quando `expanded` é `true`).\r\n */\r\nexport interface MatchaTreeNodeToggledEvent<T = any> {\r\n  node: T;\r\n  expanded: boolean;\r\n  /** Profundidade do nó que alternou (raiz = 1). */\r\n  level: number;\r\n}\r\n\r\n/**\r\n * `matcha-tree-view` — árvore hierárquica **data-driven** com drag-and-drop.\r\n *\r\n * O container é dono da árvore: você passa `[data]` (nós com filhos) e UM\r\n * `<ng-template matchaTreeNode>` pra linha; ele cuida da recursão, expand/colapso,\r\n * reordenação, **reparenting**, **hover-to-expand** e **limite de profundidade**.\r\n * A composição da linha continua livre via `matcha-tree-view-item`.\r\n *\r\n * ```html\r\n * <matcha-tree-view [(data)]=\"tree\" [maxDepth]=\"4\"\r\n *                   (nodeReparented)=\"onReparent($event)\">\r\n *   <ng-template matchaTreeNode let-node let-level=\"level\" let-expanded=\"expanded\" let-toggle=\"toggle\">\r\n *     <matcha-tree-view-item [level]=\"level\" [expanded]=\"expanded\">\r\n *       <span matchaTreeViewGrip><matcha-icon library=\"matcha\" name=\"drag-bars\" size=\"sm\" /></span>\r\n *       <button matcha-icon-button (click)=\"toggle()\"> <matcha-icon name=\"chevron-right\" /> </button>\r\n *       <span>{{ node.name }}</span>\r\n *     </matcha-tree-view-item>\r\n *   </ng-template>\r\n * </matcha-tree-view>\r\n * ```\r\n *\r\n * Motor de DnD reusa o {@link MatchaDropListComponent} (engine compartilhado);\r\n * tree mode (reparenting, hover-expand, depth) vive aqui, não mais no drop-list.\r\n *\r\n * **Teclado** (padrão ARIA `tree`): a árvore é UMA parada de Tab; dentro dela\r\n * ↑/↓ navegam, → expande, ← colapsa/sobe, Home/End vão aos extremos e\r\n * Enter/Espaço alternam. **Alt+↑ / Alt+↓ reordenam o nó entre os irmãos e\r\n * Alt+→ / Alt+← mudam o pai** (vira filho do irmão anterior / sobe pro nível\r\n * do pai) — o arraste sem mouse, emitido em `(nodeMoved)`/`(nodeReparented)`\r\n * como o drop, e anunciado no `aria-live` do container.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-tree-view',\r\n  templateUrl: './tree-view.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  imports: [MatchaTreeBranchComponent],\r\n  host: {\r\n    class: 'matcha-tree-view',\r\n    role: 'tree',\r\n    // Passo do recuo, herdado por toda a árvore. Fonte única: o bloco de filhos\r\n    // e a guia leem daqui, e o item não tem input próprio quando está dentro.\r\n    '[style.--matcha-tree-view-indent-step.px]': 'indentStep()',\r\n    '[class.matcha-tree-view--guides]': 'indentGuides()',\r\n    '(keydown)': 'onKeydown($event)',\r\n    '(focusin)': 'onFocusIn($event)',\r\n  },\r\n  providers: [\r\n    { provide: MATCHA_TREE_CONTROLLER, useExisting: forwardRef(() => MatchaTreeViewComponent) },\r\n  ],\r\n})\r\nexport class MatchaTreeViewComponent<T = any> implements MatchaTreeController<T> {\r\n  /** Árvore de nós (two-way: `[(data)]`). Cada nó tem id, filhos e estado expandido. */\r\n  data = model<T[]>([]);\r\n\r\n  /** Propriedade que guarda o array de filhos em cada nó. */\r\n  childrenKey = input<string>('children');\r\n  /** Propriedade identificadora única de cada nó. */\r\n  idKey = input<string>('id');\r\n  /** Propriedade que guarda o estado expandido de cada nó. */\r\n  expandedKey = input<string>('expanded');\r\n  /** Propriedade com o rótulo legível do nó (pros anúncios de leitor de tela). */\r\n  labelKey = input<string>('name');\r\n\r\n  /**\r\n   * Id do nó selecionado (two-way: `[(selected)]`). O container leva\r\n   * `aria-selected` ao treeitem e entrega `selected` no contexto da linha —\r\n   * repasse pro `[selected]` do item pra barra e tinta de seleção.\r\n   */\r\n  selected = model<string | number | null>(null);\r\n\r\n  /** Textos do `aria-live` após mutações por teclado. Troque pra outro idioma. */\r\n  announcements = input<MatchaTreeAnnouncements>(MATCHA_TREE_DEFAULT_ANNOUNCEMENTS);\r\n\r\n  /**\r\n   * Propriedade que diz se o nó TEM filhos, independente de já tê-los carregado\r\n   * (ex.: `'numchild'`, um contador que vem do backend). Sem valor, `hasChildren`\r\n   * deriva de `children.length` — o que só funciona com a árvore toda em memória.\r\n   * É este input que viabiliza o chevron antes do primeiro fetch.\r\n   */\r\n  hasChildrenKey = input<string | undefined>(undefined);\r\n  /** Propriedade que guarda o estado \"buscando filhos\" de cada nó. */\r\n  loadingKey = input<string>('loading');\r\n\r\n  /** Profundidade máxima permitida (raiz = 1). Sem valor / inválido = ilimitado. */\r\n  maxDepth = input<number | undefined, unknown>(undefined, {\r\n    // Valor não numérico → `numberAttribute` devolve `NaN`; sem esta guarda,\r\n    // `canPlaceAt` faz `x <= NaN` (sempre false) e bloqueia TODO drop da árvore.\r\n    // `< 1` também não faz sentido (raiz é nível 1) → tratamos como ilimitado.\r\n    transform: (v: unknown) => {\r\n      const n = numberAttribute(v);\r\n      return Number.isFinite(n) && n >= 1 ? n : undefined;\r\n    },\r\n  });\r\n  /**\r\n   * Nível a partir do qual o recuo (e as colunas de conector) param de crescer.\r\n   * O nível REAL do nó segue intacto no contexto — o clamp é só visual, pra\r\n   * árvore profunda não fugir da tela. Sem valor = sem clamp.\r\n   */\r\n  maxIndentLevel = input<number | undefined, unknown>(undefined, { transform: (v: unknown) => v == null ? undefined : numberAttribute(v) });\r\n  /** ms de hover sobre um nó (durante drag) antes de expandi-lo. */\r\n  hoverExpandDelay = input<number, unknown>(500, { transform: numberAttribute });\r\n  /** Desabilita o drag de toda a árvore. */\r\n  disabled = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Desenha a **guia de recuo**: uma vertical contínua por nível, alinhada ao\r\n   * centro do controle de expandir do pai. Substitui o organograma de cotovelos\r\n   * `├ └`: um traço por nível em vez de dois por linha, e continuidade por\r\n   * estrutura (a guia é um traço no bloco de filhos) em vez de emenda por\r\n   * transbordo. Desligada = só o recuo, sem traço.\r\n   */\r\n  indentGuides = input(false, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Recuo por nível em px, aplicado no bloco de filhos. Default 32 = a largura\r\n   * do controle de expandir, então o conteúdo de cada nível cai exatamente onde\r\n   * o chevron do pai estava. Em telas estreitas o tema reduz pra 16px sozinho.\r\n   */\r\n  indentStep = input<number, unknown>(32, { transform: numberAttribute });\r\n\r\n  /** Propriedade que guarda o tipo de arraste do nó (pro DnD tipado). */\r\n  dragTypeKey = input<string | undefined>(undefined);\r\n  /**\r\n   * Tipos que um nó aceita receber como filho. `[]` (default) = aceita qualquer\r\n   * um. Devolver `[]` pra um nó específico também o exclui como destino de\r\n   * reparent quando `dragTypeKey` está configurado.\r\n   */\r\n  acceptTypes = input<(node: T) => string[]>(() => []);\r\n  /** `false` impede o arraste daquele nó específico (o `disabled` é global). */\r\n  nodeDraggable = input<(node: T) => boolean>(() => true);\r\n\r\n  /** Reordenação/transfer de um nó (após drop). */\r\n  nodeMoved = output<MatchaTreeNodeMovedEvent<T>>();\r\n  /** Reparenting: nó virou filho de outro nó. */\r\n  nodeReparented = output<MatchaTreeNodeReparentedEvent<T>>();\r\n  /** Nó expandido automaticamente por hover durante o drag. */\r\n  hoverExpand = output<T>();\r\n  /**\r\n   * Nó expandido/colapsado pelo usuário. É o gancho de carregamento sob demanda:\r\n   * ao receber `expanded: true` com `childrenLoaded` falso, busque os filhos e\r\n   * escreva de volta em `[data]`.\r\n   */\r\n  nodeToggled = output<MatchaTreeNodeToggledEvent<T>>();\r\n\r\n  private nodeTpl = contentChild(MatchaTreeNodeDirective<T>);\r\n  private host: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n  // =====================================================================\r\n  // MatchaTreeController — acessores\r\n  // =====================================================================\r\n\r\n  nodeTemplateRef() {\r\n    return this.nodeTpl()?.templateRef ?? null;\r\n  }\r\n\r\n  childrenOf(node: T): T[] {\r\n    const kids = (node as any)?.[this.childrenKey()];\r\n    return Array.isArray(kids) ? kids : [];\r\n  }\r\n\r\n  /**\r\n   * Roving tabindex: exatamente UM nó tabbable. Enquanto o usuário não focou\r\n   * nada, é o primeiro nó da árvore — assim a árvore é uma parada de Tab e\r\n   * nunca uma armadilha de N paradas.\r\n   */\r\n  isTabbable(node: T): boolean {\r\n    const id = this.focusedId();\r\n    if (id == null) {\r\n      const first = this.data()[0];\r\n      return !!first && this.sameId(this.idOf(first), this.idOf(node));\r\n    }\r\n    return this.sameId(id, this.idOf(node));\r\n  }\r\n\r\n  isIndentClamped(level: number): boolean {\r\n    const max = this.maxIndentLevel();\r\n    return max != null && level > max;\r\n  }\r\n\r\n  isSelected(node: T): boolean {\r\n    const id = this.selected();\r\n    return id != null && this.sameId(id, this.idOf(node));\r\n  }\r\n\r\n  isLoading(node: T): boolean {\r\n    return !!(node as any)?.[this.loadingKey()];\r\n  }\r\n\r\n  dragTypeOf(node: T): string | undefined {\r\n    const key = this.dragTypeKey();\r\n    if (!key) return undefined;\r\n    const type = (node as any)?.[key];\r\n    return type == null ? undefined : String(type);\r\n  }\r\n\r\n  acceptTypesFor(node: T): string[] {\r\n    const types = this.acceptTypes()(node) ?? [];\r\n    // Com DnD tipado, `[]` significa \"não recebe ninguém\" (é o que a doc\r\n    // promete e o que a Hierarquia precisa: célula e membro não recebem). A\r\n    // zona rejeita quando o tipo não está na lista, então uma lista com um\r\n    // tipo impossível rejeita tudo. Sem dragTypeKey, `[]` segue aceitando.\r\n    if (types.length === 0 && this.dragTypeKey()) return [MatchaTreeViewComponent.NO_TYPE];\r\n    return types;\r\n  }\r\n\r\n  /** Tipo que nenhum nó tem: usado pra fechar uma zona de reparent. */\r\n  private static readonly NO_TYPE = '\\u0000none';\r\n\r\n  canDrag(node: T): boolean {\r\n    return this.nodeDraggable()(node) !== false;\r\n  }\r\n\r\n  hasChildren(node: T): boolean {\r\n    // Com hasChildrenKey a resposta vem do próprio nó (contador do backend), o que\r\n    // mantém o chevron correto enquanto os filhos ainda não foram buscados.\r\n    const key = this.hasChildrenKey();\r\n    if (key) {\r\n      const raw = (node as any)?.[key];\r\n      return typeof raw === 'number' ? raw > 0 : !!raw;\r\n    }\r\n    return this.childrenOf(node).length > 0;\r\n  }\r\n\r\n  idOf(node: T): string | number {\r\n    return (node as any)?.[this.idKey()];\r\n  }\r\n\r\n  isExpanded(node: T): boolean {\r\n    return !!(node as any)?.[this.expandedKey()];\r\n  }\r\n\r\n  isDisabled(): boolean {\r\n    return this.disabled();\r\n  }\r\n\r\n  hoverExpandDelayMs(): number {\r\n    return this.hoverExpandDelay();\r\n  }\r\n\r\n  private _missingIdWarned = false;\r\n\r\n  /**\r\n   * `trackBy` do `@for`. Usa o id quando existe (estável entre re-criações do\r\n   * objeto). Sem id, rastreia por **identidade do objeto** — chave única, evita o\r\n   * `NG0955` (chaves duplicadas) que vários nós sem id causavam. (IN-42509)\r\n   */\r\n  trackNode(node: T): unknown {\r\n    const id = this.idOf(node);\r\n    if (id == null) {\r\n      if (isDevMode() && !this._missingIdWarned) {\r\n        this._missingIdWarned = true;\r\n        console.warn(\r\n          `[matcha-tree-view] Um nó não tem a chave de id \"${this.idKey()}\". ` +\r\n          `Reparent, expand/colapso e track por id não funcionam sem id — o nó é rastreado ` +\r\n          `por identidade de objeto (fallback). Defina [idKey] ou garanta o campo em todos os nós.`,\r\n        );\r\n      }\r\n      return node;\r\n    }\r\n    return id;\r\n  }\r\n\r\n  nodeContext(node: T, level: number, isLast: boolean): MatchaTreeNodeContext<T> {\r\n    return {\r\n      $implicit: node,\r\n      node,\r\n      level,\r\n      expanded: this.isExpanded(node),\r\n      hasChildren: this.hasChildren(node),\r\n      loading: this.isLoading(node),\r\n      isLast,\r\n      selected: this.isSelected(node),\r\n      clamped: this.isIndentClamped(level),\r\n      toggle: () => this.toggleExpanded(node, level),\r\n    };\r\n  }\r\n\r\n  canPlaceAt(node: T, nodeLevel: number): boolean {\r\n    const max = this.maxDepth();\r\n    if (max == null) return true;\r\n    return nodeLevel + this.subtreeDepth(node) <= max;\r\n  }\r\n\r\n  // =====================================================================\r\n  // MatchaTreeController — mutações (imutáveis; emitem outputs + dataChange)\r\n  // =====================================================================\r\n\r\n  onBranchDrop(event: MatchaDropListDroppedEvent<T>, parentNode: T | null): void {\r\n    // Um transfer cross-parent chega em DOIS eventos: inserção (`currentIndex >= 0`)\r\n    // no branch de destino + remoção (`currentIndex === -1`) no branch de origem.\r\n    // Cada evento carrega um snapshot parcial da árvore que NÃO compõe com o outro\r\n    // — aplicar os dois com `data.set()` faz o segundo clobberar o primeiro (o nó\r\n    // some, ou a alteração no destino é descartada). Tratamos o par como UMA\r\n    // operação atômica: só a inserção mexe na árvore; a remoção é no-op.\r\n    if (event.currentIndex < 0) return;\r\n\r\n    const parentId = parentNode == null ? null : this.idOf(parentNode);\r\n    const crossParent = !!event.previousContainer && event.previousContainer !== event.container;\r\n\r\n    if (!crossParent) {\r\n      // Reordenação dentro do mesmo branch — o snapshot do evento é completo.\r\n      const next = parentId == null\r\n        ? event.data\r\n        : this.replaceChildren(this.data(), parentId, event.data);\r\n      this.data.set(next);\r\n      this.nodeMoved.emit({\r\n        node: event.item,\r\n        previousIndex: event.previousIndex,\r\n        currentIndex: event.currentIndex,\r\n        parent: parentNode,\r\n      });\r\n      return;\r\n    }\r\n\r\n    // Move cross-parent (inclui reparenting sobre um nó que já tem filhos) — um\r\n    // único caminho atômico, com guarda de ciclo, para os dois entry points.\r\n    this.relocateNode(event.item, parentNode, parentId, event.currentIndex, event.previousIndex);\r\n  }\r\n\r\n  reparentInto(targetParent: T, node: T, targetLevel: number): void {\r\n    const targetId = this.idOf(targetParent);\r\n    // Sem self-drop nem ciclo (soltar num próprio descendente).\r\n    if (this.isSelfOrDescendantId(node, targetId)) return;\r\n    if (!this.canPlaceAt(node, targetLevel)) return;\r\n\r\n    // A zona de reparent não tem índice — vira o último filho do alvo.\r\n    const index = this.childrenOf(targetParent).length;\r\n    this.relocateNode(node, targetParent, targetId, index, -1);\r\n  }\r\n\r\n  /**\r\n   * Move `node` (com sua subtree) para ser filho de `newParent` no índice dado\r\n   * (`newParentId == null` = raiz). Atômico e imutável: barra ciclo (soltar num\r\n   * descendente de si) e emite `nodeMoved` — e `nodeReparented` quando há novo pai.\r\n   * A profundidade (`maxDepth`) já é barrada antes daqui (motor de DnD /\r\n   * `reparentInto`); a guarda de ciclo é a que faltava no caminho de transfer.\r\n   *\r\n   * Não confundir com o `moveNode(node, delta)` público (Alt+↑/↓): este é o\r\n   * caminho interno de drop/reparent, indexado e com pai explícito.\r\n   */\r\n  private relocateNode(\r\n    node: T,\r\n    newParent: T | null,\r\n    newParentId: string | number | null,\r\n    index: number,\r\n    previousIndex: number,\r\n  ): void {\r\n    if (newParentId != null && this.isSelfOrDescendant(node, newParentId)) return;\r\n\r\n    const { nodes: pruned, removed } = this.removeNode(this.data(), this.idOf(node));\r\n    if (!removed) return;\r\n\r\n    const tree = newParentId == null\r\n      ? this.insertAt(pruned, index, node)\r\n      : this.addChildAt(pruned, newParentId, node, index);\r\n    this.data.set(tree);\r\n\r\n    this.nodeMoved.emit({ node, previousIndex, currentIndex: index, parent: newParent });\r\n    if (newParent != null) this.nodeReparented.emit({ node, newParent });\r\n  }\r\n\r\n  requestHoverExpand(node: T): void {\r\n    if (this.isExpanded(node)) return;\r\n    this.data.set(this.setExpanded(this.data(), this.idOf(node), true));\r\n    this.hoverExpand.emit(node);\r\n  }\r\n\r\n  toggleExpanded(node: T, level = 1): void {\r\n    const expanded = !this.isExpanded(node);\r\n    this.data.set(this.setExpanded(this.data(), this.idOf(node), expanded));\r\n    this.nodeToggled.emit({ node, expanded, level });\r\n  }\r\n\r\n  /**\r\n   * Move `node` uma posição entre os irmãos (`delta` -1 = sobe, +1 = desce).\r\n   * Respeita `disabled`, `nodeDraggable` e as bordas da lista. É o que o\r\n   * teclado usa (Alt+↑/↓), e serve ao consumer que quer botões \"subir/descer\".\r\n   * Emite `nodeMoved` como um drop faria. Devolve `false` quando nada mudou.\r\n   */\r\n  moveNode(node: T, delta: -1 | 1): boolean {\r\n    if (this.disabled() || !this.canDrag(node)) return false;\r\n    const found = this.parentOf(this.data(), this.idOf(node));\r\n    if (!found) return false;\r\n    const { parent, siblings } = found;\r\n    const from = siblings.findIndex(s => this.sameId(this.idOf(s), this.idOf(node)));\r\n    const to = from + delta;\r\n    if (to < 0 || to >= siblings.length) return false;\r\n\r\n    const next = [...siblings];\r\n    next.splice(from, 1);\r\n    next.splice(to, 0, node);\r\n    this.data.set(parent == null ? next : this.replaceChildren(this.data(), this.idOf(parent), next));\r\n    this.nodeMoved.emit({ node, previousIndex: from, currentIndex: to, parent });\r\n    this.announce(this.announcements().moved(this.labelOf(node), to + 1, next.length));\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * Torna `node` o último filho do irmão imediatamente anterior (Alt+→).\r\n   * Respeita `disabled`, `nodeDraggable`, `maxDepth` e os tipos aceitos pelo\r\n   * novo pai. Emite `nodeReparented`. `false` quando não há irmão anterior ou\r\n   * o destino não aceita.\r\n   */\r\n  indentNode(node: T): boolean {\r\n    if (this.disabled() || !this.canDrag(node)) return false;\r\n    const found = this.parentOf(this.data(), this.idOf(node));\r\n    if (!found) return false;\r\n    const idx = found.siblings.findIndex(s => this.sameId(this.idOf(s), this.idOf(node)));\r\n    const newParent = found.siblings[idx - 1];\r\n    if (!newParent || !this.accepts(newParent, node)) return false;\r\n    const targetLevel = this.levelOf(this.idOf(newParent)) + 1;\r\n    if (!this.canPlaceAt(node, targetLevel)) return false;\r\n\r\n    let tree = this.removeNode(this.data(), this.idOf(node)).nodes;\r\n    tree = this.addChildAt(tree, this.idOf(newParent), node, this.childrenOf(newParent).length);\r\n    this.data.set(tree);\r\n    this.nodeReparented.emit({ node, newParent });\r\n    this.announce(this.announcements().reparented(this.labelOf(node), this.labelOf(newParent)));\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * Sobe `node` um nível: vira irmão do pai, logo abaixo dele (Alt+←). Na raiz\r\n   * não faz nada. Emite `nodeReparented` (avô existe) ou `nodeMoved` com\r\n   * `parent: null` (chegou à raiz).\r\n   */\r\n  outdentNode(node: T): boolean {\r\n    if (this.disabled() || !this.canDrag(node)) return false;\r\n    const found = this.parentOf(this.data(), this.idOf(node));\r\n    if (!found || found.parent == null) return false;\r\n    const parent = found.parent;\r\n    const grand = this.parentOf(this.data(), this.idOf(parent));\r\n    if (!grand) return false;\r\n    if (grand.parent != null && !this.accepts(grand.parent, node)) return false;\r\n\r\n    const removed = this.removeNode(this.data(), this.idOf(node)).nodes;\r\n    const parentSiblings = this.parentOf(removed, this.idOf(parent))!.siblings;\r\n    const at = parentSiblings.findIndex(s => this.sameId(this.idOf(s), this.idOf(parent))) + 1;\r\n    const next = [...parentSiblings];\r\n    next.splice(at, 0, node);\r\n    this.data.set(grand.parent == null ? next : this.replaceChildren(removed, this.idOf(grand.parent), next));\r\n\r\n    if (grand.parent == null) {\r\n      this.nodeMoved.emit({ node, previousIndex: -1, currentIndex: at, parent: null });\r\n      this.announce(this.announcements().movedToRoot(this.labelOf(node), at + 1, next.length));\r\n    } else {\r\n      this.nodeReparented.emit({ node, newParent: grand.parent });\r\n      this.announce(this.announcements().reparented(this.labelOf(node), this.labelOf(grand.parent)));\r\n    }\r\n    return true;\r\n  }\r\n\r\n  /** `true` se `parent` aceita receber `node` (tipos do DnD tipado). */\r\n  private accepts(parent: T, node: T): boolean {\r\n    const types = this.acceptTypesFor(parent);\r\n    if (types.length === 0) return true;\r\n    const type = this.dragTypeOf(node);\r\n    return type != null && types.includes(type);\r\n  }\r\n\r\n  /** Profundidade (raiz = 1) do nó com `id`; 0 se não achar. */\r\n  private levelOf(id: string | number, nodes: T[] = this.data(), level = 1): number {\r\n    for (const n of nodes) {\r\n      if (this.sameId(this.idOf(n), id)) return level;\r\n      const deeper = this.levelOf(id, this.childrenOf(n), level + 1);\r\n      if (deeper) return deeper;\r\n    }\r\n    return 0;\r\n  }\r\n\r\n  private labelOf(node: T): string {\r\n    const raw = (node as any)?.[this.labelKey()];\r\n    return raw == null ? String(this.idOf(node)) : String(raw);\r\n  }\r\n\r\n  /** Mensagem corrente do `aria-live`. */\r\n  protected liveMessage = signal('');\r\n\r\n  private announce(message: string): void {\r\n    // Repetir a mesma frase não re-anuncia em alguns leitores; limpa antes.\r\n    this.liveMessage.set('');\r\n    afterNextRender(() => this.liveMessage.set(message), { injector: this.injector });\r\n  }\r\n\r\n  private readonly injector = inject(Injector);\r\n\r\n  /**\r\n   * Devolve o foco à row do nó depois que a lista re-renderizar. A row é a\r\n   * mesma (track por id), mas o foco se perde quando ela troca de pai.\r\n   */\r\n  private refocus(node: T): void {\r\n    const id = String(this.idOf(node));\r\n    afterNextRender(() => this.rows().find(r => r.dataset['treeId'] === id)?.focus(), { injector: this.injector });\r\n  }\r\n\r\n  /** Pai e lista de irmãos do nó com `id` (`parent: null` = raiz). */\r\n  private parentOf(nodes: T[], id: string | number, parent: T | null = null): { parent: T | null; siblings: T[] } | null {\r\n    if (nodes.some(n => this.sameId(this.idOf(n), id))) return { parent, siblings: nodes };\r\n    for (const n of nodes) {\r\n      const deeper = this.parentOf(this.childrenOf(n), id, n);\r\n      if (deeper) return deeper;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  // =====================================================================\r\n  // Helpers de árvore (imutáveis; clonam só o caminho até o nó alvo)\r\n  // =====================================================================\r\n\r\n  /**\r\n   * Compara dois ids. Ids nullish (nó sem a `idKey`) **nunca** casam — nem entre\r\n   * si — pra `removeNode`/`setExpanded`/`isSelfOrDescendant`… não pegarem o nó\r\n   * errado quando vários nós não têm id (`String(undefined) === String(undefined)`\r\n   * era `true`). (IN-42509)\r\n   */\r\n  private sameId(a: unknown, b: unknown): boolean {\r\n    return a != null && b != null && String(a) === String(b);\r\n  }\r\n\r\n  private subtreeDepth(node: T): number {\r\n    const kids = this.childrenOf(node);\r\n    if (!kids.length) return 0;\r\n    // `reduce` em vez de `Math.max(...spread)` — o spread estoura\r\n    // (`RangeError`) num nó com dezenas de milhares de filhos diretos.\r\n    return 1 + kids.reduce((max, k) => Math.max(max, this.subtreeDepth(k)), 0);\r\n  }\r\n\r\n  isSelfOrDescendant(node: T, target: T | null): boolean;\r\n  isSelfOrDescendant(node: T, targetId: string | number): boolean;\r\n  isSelfOrDescendant(node: T, targetOrId: T | string | number | null): boolean {\r\n    if (targetOrId == null) return false;\r\n    const targetId: string | number = typeof targetOrId === 'object'\r\n      ? this.idOf(targetOrId as T)\r\n      : (targetOrId as string | number);\r\n    return this.isSelfOrDescendantId(node, targetId);\r\n  }\r\n\r\n  private isSelfOrDescendantId(node: T, targetId: string | number): boolean {\r\n    if (this.sameId(this.idOf(node), targetId)) return true;\r\n    return this.childrenOf(node).some(child => this.isSelfOrDescendantId(child, targetId));\r\n  }\r\n\r\n  // =====================================================================\r\n  // Teclado — padrão ARIA de `tree`. A árvore é UMA parada de Tab; dentro\r\n  // dela as setas navegam, e é isso que faltava pro role=\"tree\" não ser uma\r\n  // promessa vazia pra quem usa leitor de tela ou não usa mouse.\r\n  // =====================================================================\r\n\r\n  /** Nó que detém o tabindex 0. `null` = ninguém focou ainda (usa o primeiro). */\r\n  private focusedId = signal<string | number | null>(null);\r\n\r\n  private rows(): HTMLElement[] {\r\n    // DOM order = ordem visual, e só o que está expandido existe no DOM.\r\n    return Array.from(this.host.nativeElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"]'));\r\n  }\r\n\r\n  private nodeOfEl(el: HTMLElement | null): T | null {\r\n    const id = el?.dataset?.['treeId'];\r\n    return id == null ? null : this.findById(this.data(), id);\r\n  }\r\n\r\n  private findById(nodes: T[], id: string | number): T | null {\r\n    for (const n of nodes) {\r\n      if (this.sameId(this.idOf(n), id)) return n;\r\n      const deeper = this.findById(this.childrenOf(n), id);\r\n      if (deeper) return deeper;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  private focusRow(el: HTMLElement | undefined): void {\r\n    if (!el) return;\r\n    const node = this.nodeOfEl(el);\r\n    if (node) this.focusedId.set(this.idOf(node));\r\n    el.focus();\r\n  }\r\n\r\n  /** Mantém o roving em dia quando o foco chega por clique ou por Tab. */\r\n  protected onFocusIn(event: FocusEvent): void {\r\n    const row = (event.target as HTMLElement)?.closest<HTMLElement>('[role=\"treeitem\"]');\r\n    const node = this.nodeOfEl(row);\r\n    if (node) this.focusedId.set(this.idOf(node));\r\n  }\r\n\r\n  protected onKeydown(event: KeyboardEvent): void {\r\n    const target = event.target as HTMLElement;\r\n    // Não sequestrar setas de campos de texto projetados dentro da row.\r\n    if (target.closest('input, textarea, select, [contenteditable=\"true\"]')) return;\r\n\r\n    const row = target.closest<HTMLElement>('[role=\"treeitem\"]');\r\n    if (!row) return;\r\n    const all = this.rows();\r\n    const i = all.indexOf(row);\r\n    if (i < 0) return;\r\n    const node = this.nodeOfEl(row);\r\n\r\n    // Alt+setas = o arraste sem mouse. ↑/↓ reordenam entre irmãos; → vira filho\r\n    // do irmão anterior; ← sobe pro nível do pai. Sem Alt, as setas movem o foco.\r\n    if (event.altKey && node && event.key.startsWith('Arrow')) {\r\n      const moved =\r\n        event.key === 'ArrowUp' ? this.moveNode(node, -1) :\r\n        event.key === 'ArrowDown' ? this.moveNode(node, 1) :\r\n        event.key === 'ArrowRight' ? this.indentNode(node) :\r\n        this.outdentNode(node);\r\n      if (moved) this.refocus(node);\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      return;\r\n    }\r\n\r\n    switch (event.key) {\r\n      case 'ArrowDown':\r\n        this.focusRow(all[i + 1]); break;\r\n      case 'ArrowUp':\r\n        this.focusRow(all[i - 1]); break;\r\n      case 'Home':\r\n        this.focusRow(all[0]); break;\r\n      case 'End':\r\n        this.focusRow(all[all.length - 1]); break;\r\n      case 'ArrowRight': {\r\n        if (!node) return;\r\n        // Fechado com filhos: abre. Já aberto: entra no primeiro filho.\r\n        if (this.hasChildren(node) && !this.isExpanded(node)) this.toggleExpanded(node, Number(row.getAttribute('aria-level')) || 1);\r\n        else this.focusRow(all[i + 1]);\r\n        break;\r\n      }\r\n      case 'ArrowLeft': {\r\n        if (!node) return;\r\n        // Aberto: fecha. Fechado (ou folha): sobe pro pai.\r\n        if (this.hasChildren(node) && this.isExpanded(node)) this.toggleExpanded(node, Number(row.getAttribute('aria-level')) || 1);\r\n        else this.focusRow(this.parentRowOf(all, i));\r\n        break;\r\n      }\r\n      case 'Enter':\r\n      case ' ': {\r\n        if (!node || !this.hasChildren(node)) return;\r\n        this.toggleExpanded(node, Number(row.getAttribute('aria-level')) || 1);\r\n        break;\r\n      }\r\n      default: return;\r\n    }\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n  }\r\n\r\n  /** Sobe até a primeira linha de nível menor — o pai visual. */\r\n  private parentRowOf(all: HTMLElement[], i: number): HTMLElement | undefined {\r\n    const level = Number(all[i].getAttribute('aria-level')) || 1;\r\n    for (let k = i - 1; k >= 0; k--) {\r\n      if ((Number(all[k].getAttribute('aria-level')) || 1) < level) return all[k];\r\n    }\r\n    return undefined;\r\n  }\r\n\r\n  private replaceChildren(nodes: T[], parentId: string | number, newChildren: T[]): T[] {\r\n    const key = this.childrenKey();\r\n    return nodes.map(n => {\r\n      if (this.sameId(this.idOf(n), parentId)) {\r\n        return { ...(n as any), [key]: newChildren } as T;\r\n      }\r\n      const kids = this.childrenOf(n);\r\n      if (kids.length) {\r\n        return { ...(n as any), [key]: this.replaceChildren(kids, parentId, newChildren) } as T;\r\n      }\r\n      return n;\r\n    });\r\n  }\r\n\r\n  private removeNode(nodes: T[], id: string | number): { nodes: T[]; removed: T | null } {\r\n    const key = this.childrenKey();\r\n    let removed: T | null = null;\r\n    const out: T[] = [];\r\n    for (const n of nodes) {\r\n      if (this.sameId(this.idOf(n), id)) {\r\n        removed = n;\r\n        continue;\r\n      }\r\n      const kids = this.childrenOf(n);\r\n      if (kids.length) {\r\n        const r = this.removeNode(kids, id);\r\n        if (r.removed) {\r\n          removed = r.removed;\r\n          out.push({ ...(n as any), [key]: r.nodes } as T);\r\n          continue;\r\n        }\r\n      }\r\n      out.push(n);\r\n    }\r\n    return { nodes: out, removed };\r\n  }\r\n\r\n  private insertAt(nodes: T[], index: number, child: T): T[] {\r\n    const i = Math.max(0, Math.min(index, nodes.length));\r\n    return [...nodes.slice(0, i), child, ...nodes.slice(i)];\r\n  }\r\n\r\n  private addChildAt(nodes: T[], parentId: string | number, child: T, index: number): T[] {\r\n    const key = this.childrenKey();\r\n    const expKey = this.expandedKey();\r\n    return nodes.map(n => {\r\n      const kids = this.childrenOf(n);\r\n      if (this.sameId(this.idOf(n), parentId)) {\r\n        return { ...(n as any), [key]: this.insertAt(kids, index, child), [expKey]: true } as T;\r\n      }\r\n      if (kids.length) {\r\n        return { ...(n as any), [key]: this.addChildAt(kids, parentId, child, index) } as T;\r\n      }\r\n      return n;\r\n    });\r\n  }\r\n\r\n  private setExpanded(nodes: T[], id: string | number, value: boolean): T[] {\r\n    const key = this.childrenKey();\r\n    const expKey = this.expandedKey();\r\n    return nodes.map(n => {\r\n      if (this.sameId(this.idOf(n), id)) {\r\n        return { ...(n as any), [expKey]: value } as T;\r\n      }\r\n      const kids = this.childrenOf(n);\r\n      if (kids.length) {\r\n        return { ...(n as any), [key]: this.setExpanded(kids, id, value) } as T;\r\n      }\r\n      return n;\r\n    });\r\n  }\r\n}\r\n","<!-- Projeta o <ng-template matchaTreeNode> (não renderiza DOM; só instancia a\r\n     diretiva pra contentChild encontrá-la). As linhas são estampadas pelos branches. -->\r\n<ng-content></ng-content>\r\n\r\n<!-- Anuncia as mutações por teclado (reordenar, mudar de pai) pra leitor de\r\n     tela. Visualmente oculta; o texto vem de [announcements]. -->\r\n<div class=\"matcha-tree-view__live\" aria-live=\"polite\" aria-atomic=\"true\">{{ liveMessage() }}</div>\r\n\r\n<matcha-tree-branch\r\n    class=\"matcha-tree-view__root\"\r\n    [matchaDropListData]=\"data()\"\r\n    [level]=\"1\"\r\n    [parentNode]=\"null\"\r\n    (matchaDropListDropped)=\"onBranchDrop($event, null)\">\r\n</matcha-tree-branch>\r\n","import { Directive, ElementRef } from '@angular/core';\r\n\r\n/**\r\n * Marker directive — sinaliza qual elemento dentro de `<matcha-tree-view-item>`\r\n * é o drag handle. O componente faz auto-wire com o `matchaDrag` parent (se houver).\r\n *\r\n * Uso:\r\n *   <matcha-tree-view-item [level]=\"2\">\r\n *     <span matchaTreeViewGrip><matcha-icon library=\"matcha\" name=\"drag-bars\" /></span>\r\n *     <span>Item label</span>\r\n *   </matcha-tree-view-item>\r\n *\r\n * Sem `matchaTreeViewGrip`, a row inteira vira draggable (default do matchaDrag).\r\n */\r\n@Directive({\r\n    selector: '[matchaTreeViewGrip]',\r\n    standalone: true,\r\n    host: {\r\n        class: 'matcha-tree-view-item__grip',\r\n        '[attr.aria-hidden]': '\"true\"',\r\n    },\r\n})\r\nexport class MatchaTreeViewGripDirective {\r\n    constructor(public elementRef: ElementRef<HTMLElement>) {}\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    HostListener,\r\n    Optional,\r\n    booleanAttribute,\r\n    computed,\r\n    contentChild,\r\n    effect,\r\n    inject,\r\n    input,\r\n    numberAttribute,\r\n    output,\r\n} from '@angular/core';\r\nimport { MatchaDragDirective } from '../../matcha-drop-list/directives/drag.directive';\r\nimport { MatchaTreeViewGripDirective } from '../grip.directive';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\nimport { MATCHA_TREE_CONTROLLER } from '../tree-controller';\r\n\r\n/**\r\n * `numberAttribute` que cai no default em vez de propagar `NaN` — entrada não\r\n * numérica em `[level]`/`[indentStep]` deixava `indentPx` = `NaNpx` e\r\n * `aria-level=\"NaN\"`.\r\n */\r\nconst numberOr = (fallback: number) => (v: unknown): number => {\r\n    const n = numberAttribute(v);\r\n    return Number.isFinite(n) ? n : fallback;\r\n};\r\n\r\n/**\r\n * Cor de nível (1-indexed). Use `MATCHA_TREE_VIEW_LEVEL_COLORS[level - 1].dot`\r\n * em `--matcha-tree-view-level-color` (cicla a cada 4 níveis).\r\n *\r\n * Origem: Figma DSV3 matcha/tree-view — a cor de nível vai no dot (ou no anel\r\n * do avatar). O cargo é TEXTO neutro, então `badge` e `badgeText` não têm mais\r\n * uso no padrão.\r\n *\r\n * @deprecated `badge` e `badgeText`: colorir o cargo por nível é redundante com\r\n * o recuo e saiu do padrão em 2026-09. Serão removidos na próxima major; use só `dot`.\r\n */\r\nexport const MATCHA_TREE_VIEW_LEVEL_COLORS = [\r\n    // Cor por nível = paleta chart categórica (mode-aware, sem semântica de feedback).\r\n    { dot: 'var(--matcha-color-chart-series-1)', badge: 'var(--matcha-color-chart-series-1-alpha)', badgeText: 'var(--matcha-color-chart-series-1)' }, // L1\r\n    { dot: 'var(--matcha-color-chart-series-2)', badge: 'var(--matcha-color-chart-series-2-alpha)', badgeText: 'var(--matcha-color-chart-series-2)' }, // L2\r\n    { dot: 'var(--matcha-color-chart-series-3)', badge: 'var(--matcha-color-chart-series-3-alpha)', badgeText: 'var(--matcha-color-chart-series-3)' }, // L3\r\n    { dot: 'var(--matcha-color-chart-series-4)', badge: 'var(--matcha-color-chart-series-4-alpha)', badgeText: 'var(--matcha-color-chart-series-4)' }, // L4\r\n] as const;\r\n\r\n\r\n/**\r\n * matcha-tree-view-item — Slot row indentado por nível hierárquico.\r\n *\r\n * Composição livre: o componente fornece **apenas** o frame (indent + estados)\r\n * e projeta qualquer conteúdo via `<ng-content>`. Use [matchaTreeViewGrip] num\r\n * elemento interno pra ele virar o drag handle (auto-wired com `matchaDrag` parent).\r\n *\r\n * **Filosofia**: você monta como precisar. O componente não impõe dot / badge /\r\n * stats / actions. Compõe com primitivos do DS (matcha-chip, matcha-avatar,\r\n * matcha-icon-button, etc.) na ordem que fizer sentido pro seu use case.\r\n *\r\n * **Uso básico:**\r\n * ```html\r\n * <matcha-tree-view-item [level]=\"2\">\r\n *   <span matchaTreeViewGrip>\r\n *     <matcha-icon library=\"matcha\" name=\"drag-bars\" size=\"sm\"></matcha-icon>\r\n *   </span>\r\n *   <span class=\"my-dot\"></span>\r\n *   <span class=\"my-name\">Rodolfo G.</span>\r\n *   <matcha-chip>Líder</matcha-chip>\r\n * </matcha-tree-view-item>\r\n * ```\r\n *\r\n * **Com DnD** (matcha-drop-list externo):\r\n * ```html\r\n * <matcha-drop-list [matchaDropListData]=\"items\" (matchaDropListDropped)=\"onDrop($event)\">\r\n *   <div *ngFor=\"let item of items\" matchaDrag [matchaDragData]=\"item\">\r\n *     <matcha-tree-view-item [level]=\"item.level\">\r\n *       <span matchaTreeViewGrip>⠿</span>\r\n *       <span>{{ item.name }}</span>\r\n *     </matcha-tree-view-item>\r\n *   </div>\r\n * </matcha-drop-list>\r\n * ```\r\n *\r\n * **Responsividade**: row usa `min-height` (não height fixo). Container queries\r\n * reduzem indentStep automaticamente em < 480px. Tudo dentro de `flex-wrap: nowrap`\r\n * por default — consumer pode override em CSS via `--matcha-tree-view-item-wrap`.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-tree-view-item',\r\n    standalone: true,\r\n    templateUrl: './tree-view-item.component.html',\r\n    imports: [],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        class: 'matcha-tree-view-item',\r\n        '[attr.level]': 'level()',\r\n        '[attr.expanded]': 'expanded() ? \"\" : null',\r\n        '[attr.disabled]': 'disabled() ? \"\" : null',\r\n        '[attr.selected]': 'selected() ? \"\" : null',\r\n        '[attr.clickable]': 'rowClickable() ? \"\" : null',\r\n        '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n        '[style.--matcha-tree-view-item-indent]': 'indentPx() + \"px\"',\r\n        // Dentro do container quem é o treeitem é o wrapper que o branch\r\n        // renderiza — ele tem role, aria-level, aria-expanded e o roving\r\n        // tabindex. Repetir aqui criaria dois nós de árvore aninhados e um\r\n        // segundo ponto de foco por linha. Fora do container o item assume.\r\n        '[attr.role]': 'insideContainer ? null : \"treeitem\"',\r\n        '[attr.aria-level]': 'insideContainer ? null : level()',\r\n        '[attr.aria-expanded]': 'insideContainer || !expanded() ? null : true',\r\n        '[attr.aria-selected]': 'insideContainer || !selected() ? null : true',\r\n        '[attr.tabindex]': 'insideContainer ? null : (rowClickable() && !disabled() ? 0 : null)',\r\n    },\r\n})\r\nexport class MatchaTreeViewItemComponent {\r\n    /**\r\n     * Profundidade hierárquica (1..N, sem cap). Define o indent visual: `(level - 1) × indentStep`.\r\n     * Cores do nível (dot/badge) ficam por conta do consumer — use `MATCHA_TREE_VIEW_LEVEL_COLORS`\r\n     * pra matching com Figma DSV3.\r\n     */\r\n    level = input<number, unknown>(1, { transform: numberOr(1) });\r\n\r\n    /** Indent por nível em px. Default 28 (Figma). Reduz pra 16px em containers < 480px. */\r\n    indentStep = input<number, unknown>(28, { transform: numberOr(28) });\r\n\r\n    /** Estado expandido — controla aria-expanded. */\r\n    expanded = input(false, { transform: booleanAttribute });\r\n\r\n    /** Desabilita interação; visual por token (text/disabled), sem opacidade no wrapper. */\r\n    disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /** Linha selecionada: barra de 2px accent à esquerda + tinta neutra. */\r\n    selected = input(false, { transform: booleanAttribute });\r\n\r\n    /** Row inteira fica clicável (cursor pointer, focus visible, tabindex 0, Enter/Space). */\r\n    rowClickable = input(false, { transform: booleanAttribute });\r\n\r\n    /** Emite ao clicar/Enter/Space na row (apenas se rowClickable=true). */\r\n    rowClick = output<void>();\r\n\r\n    /**\r\n     * Recuo em px. Zero quando o item está DENTRO do `matcha-tree-view`: lá o\r\n     * recuo é do bloco de filhos (aninhado), e é isso que torna a guia vertical\r\n     * contínua por estrutura em vez de emendada por transbordo. Fora do\r\n     * container, o item recua sozinho por `(level - 1) × indentStep` — é o modo\r\n     * de quem monta a árvore à mão, com uma lista achatada.\r\n     *\r\n     * Não é flag nem modo: o item descobre o contexto por injeção.\r\n     */\r\n    indentPx = computed(() =>\r\n        this.insideContainer ? 0 : Math.max(0, this.level() - 1) * this.indentStep());\r\n\r\n    /**\r\n     * Auto-detect do drag handle via [matchaTreeViewGrip] projetado.\r\n     * Quando há `matchaDrag` parent (DI Optional), registra o grip como handle.\r\n     */\r\n    private gripDir = contentChild(MatchaTreeViewGripDirective);\r\n\r\n    /** `true` quando existe um `matcha-tree-view` acima (recuo é dele). */\r\n    protected readonly insideContainer = !!inject(MATCHA_TREE_CONTROLLER, { optional: true });\r\n\r\n    constructor(@Optional() private parentDrag?: MatchaDragDirective) {\r\n        effect(() => {\r\n            if (!this.parentDrag) return;\r\n            const grip = this.gripDir();\r\n            if (grip?.elementRef?.nativeElement) {\r\n                this.parentDrag.setDragHandle(grip.elementRef.nativeElement);\r\n            }\r\n        });\r\n    }\r\n\r\n    @HostListener('click')\r\n    onHostClick(): void {\r\n        if (this.disabled() || !this.rowClickable()) return;\r\n        this.rowClick.emit();\r\n    }\r\n\r\n    @HostListener('keydown.enter', ['$event'])\r\n    @HostListener('keydown.space', ['$event'])\r\n    onHostActivate(event: KeyboardEvent): void {\r\n        if (this.disabled() || !this.rowClickable()) return;\r\n        event.preventDefault();\r\n        this.rowClick.emit();\r\n    }\r\n}\r\n","@if (indentPx() > 0) {\r\n    <div class=\"matcha-tree-view-item__indent\"\r\n         [style.width.px]=\"indentPx()\"\r\n         aria-hidden=\"true\"></div>\r\n}\r\n\r\n<div class=\"matcha-tree-view-item__row\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { Directive, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { MatchaDropListService } from '../matcha-drop-list/services/drop-list.service';\r\nimport { MATCHA_TREE_CONTROLLER } from './tree-controller';\r\n\r\nexport interface MatchaReparentDroppedEvent<T = any> {\r\n  item: T;\r\n  clientX: number;\r\n  clientY: number;\r\n}\r\n\r\n/**\r\n * Zona de reparenting **interna** do `matcha-tree-view`. Aplicada no wrapper dos\r\n * filhos de cada nó: quando um item é solto dentro do nó (em vez de reordenado\r\n * entre irmãos), o motor chama `handleDrop` e a árvore move o item como filho.\r\n *\r\n * Não é API pública — substitui a antiga `matchaDropZone` (que era exposta pelo\r\n * matcha-drop-list). O consumidor do tree-view não interage com isto: o container\r\n * cuida do reparenting a partir do `[data]`.\r\n */\r\n@Directive({\r\n  selector: '[matchaReparentZone]',\r\n  standalone: true,\r\n})\r\nexport class MatchaReparentZoneDirective<T = any> implements OnInit, OnDestroy {\r\n  @Input({ required: true }) matchaReparentZoneId!: string | number;\r\n  @Input() matchaReparentZoneAcceptTypes: string[] = [];\r\n\r\n  @Output() matchaReparentDropped = new EventEmitter<MatchaReparentDroppedEvent<T>>();\r\n\r\n  readonly elementRef = inject(ElementRef<HTMLElement>);\r\n  private readonly dropListService = inject(MatchaDropListService);\r\n  /**\r\n   * Presente quando a zona vive dentro de um `matcha-tree-view` (sempre, hoje).\r\n   * Usado pra resolver o id do nó arrastado pela `idKey` da árvore — o `.id`\r\n   * literal não funciona com `[idKey]` customizado (ex.: `\"uuid\"`). (IN-42508)\r\n   */\r\n  private readonly treeController = inject(MATCHA_TREE_CONTROLLER, { optional: true });\r\n\r\n  /**\r\n   * Id do item arrastado resolvido pelo MESMO acessor que gerou o\r\n   * `matchaReparentZoneId` (`controller.idOf`, que respeita `[idKey]`). Ler\r\n   * `data.id` cru fazia a comparação falhar em toda árvore que não usa `id`\r\n   * como chave: `isSelfZone` nunca ficava `true` e a moldura de Recusado\r\n   * voltava a pintar a própria subárvore de quem estava sendo arrastado. Sem\r\n   * controller, cai no `.id` literal (mesmo fallback do `wouldCycle`).\r\n   */\r\n  private isOwnId(item: unknown): boolean {\r\n    if (item == null) return false;\r\n    const id = this.treeController ? this.treeController.idOf(item as any) : (item as any)?.id;\r\n    return id != null && String(id) === String(this.matchaReparentZoneId);\r\n  }\r\n\r\n  /**\r\n   * Mesmo guard que o `accepts()` do container aplica no Alt+→: numa zona\r\n   * tipada, um nó SEM tipo é recusado.\r\n   *\r\n   * O motor guarda string vazia quando o nó não tem tipo (o template manda\r\n   * `dragTypeOf(node) ?? ''`), e o teste anterior era `if (dragType && ...)` —\r\n   * `''` é falsy, então o arraste com mouse passava enquanto o teclado\r\n   * recusava o mesmo movimento. A premissa da entrega é que Alt+setas fazem\r\n   * exatamente o que o drop faz.\r\n   */\r\n  private acceptsCurrentDragType(): boolean {\r\n    if (this.matchaReparentZoneAcceptTypes.length === 0) return true;\r\n    const dragType = this.dropListService.currentDragType() || undefined;\r\n    return dragType != null && this.matchaReparentZoneAcceptTypes.includes(dragType);\r\n  }\r\n\r\n  // Lido pelo motor (duck-typing) — coerente com a antiga MatchaDropZoneDirective.\r\n  get matchaDropZoneAcceptTypes(): string[] {\r\n    return this.matchaReparentZoneAcceptTypes;\r\n  }\r\n\r\n  /**\r\n   * O item arrastado é o próprio dono desta zona (ou um ancestral): rejeitar é\r\n   * óbvio e não merece moldura. Classe separada pra o tema NÃO pintar Recusado\r\n   * na subárvore de quem está sendo arrastado.\r\n   */\r\n  @HostBinding('class.matcha-drop-zone-self')\r\n  get isSelfZone(): boolean {\r\n    return this.isOwnId(this.dropListService.currentDragData());\r\n  }\r\n\r\n  @HostBinding('class.matcha-drop-zone-cannot-accept')\r\n  get isDropRejected(): boolean {\r\n    const data = this.dropListService.currentDragData();\r\n    if (data == null) return false;\r\n    if (this.wouldCycle(data)) return true;\r\n    return !this.acceptsCurrentDragType();\r\n  }\r\n\r\n  /**\r\n   * `true` se soltar `node` nesta zona criaria um ciclo — o dono da zona é o\r\n   * próprio `node` ou um descendente dele. O id é resolvido pela `idKey` da\r\n   * árvore (via controller); sem controller, cai no `.id` literal (só self).\r\n   */\r\n  private wouldCycle(node: any): boolean {\r\n    if (node == null) return false;\r\n    if (this.treeController?.isSelfOrDescendant) {\r\n      return this.treeController.isSelfOrDescendant(node, this.matchaReparentZoneId);\r\n    }\r\n    return this.isOwnId(node);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.dropListService.registerNamedDropZone(this.matchaReparentZoneId, this);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.dropListService.unregisterNamedDropZone(this.matchaReparentZoneId);\r\n  }\r\n\r\n  /** Chamado pelo motor quando um item é solto nesta zona (reparenting). */\r\n  handleDrop(item: any, clientX: number, clientY: number): void {\r\n    if (this.wouldCycle(item)) return;\r\n    if (!this.acceptsCurrentDragType()) return;\r\n    this.matchaReparentDropped.emit({ item, clientX, clientY });\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatchaTreeBranchComponent } from '../tree-branch/tree-branch.component';\r\nimport { MATCHA_TREE_CONTROLLER } from '../tree-controller';\r\nimport { MatchaReparentDroppedEvent, MatchaReparentZoneDirective } from '../reparent-zone.directive';\r\n\r\n/**\r\n * `matcha-tree-children` — ponto de inserção dos filhos de um nó, posicionado\r\n * pelo **consumer** dentro do próprio template da row.\r\n *\r\n * É o **único** mecanismo de recursão do `matcha-tree-view`: o container não\r\n * decide onde os filhos entram, quem decide é o template da row. Não há modo,\r\n * flag nem variante — as três formas de árvore do painel saem de onde você\r\n * posiciona este componente:\r\n *\r\n * | onde você põe | o que sai |\r\n * |---|---|\r\n * | depois do `matcha-tree-view-item` | lista indentada, filhos irmãos da row |\r\n * | dentro do card da row | contenção aninhada (Hierarquia, Pastas) |\r\n * | não põe, e renderiza outro conteúdo | nó-painel (a célula que abre membros) |\r\n *\r\n * Omitir em TODOS os ramos faz a árvore virar uma lista de raízes — que é o\r\n * comportamento correto, não um bug: sem outlet não há recursão.\r\n *\r\n * ```html\r\n * <matcha-tree-view [(data)]=\"tree\">\r\n *   <ng-template matchaTreeNode let-node let-level=\"level\" let-expanded=\"expanded\">\r\n *     <matcha-card>\r\n *       <span>{{ node.name }}</span>\r\n *       @if (node.type === 'cell') {\r\n *         <app-cell-panel [cell]=\"node\"></app-cell-panel>\r\n *       } @else {\r\n *         <matcha-tree-children [node]=\"node\" [level]=\"level\" />\r\n *       }\r\n *     </matcha-card>\r\n *   </ng-template>\r\n * </matcha-tree-view>\r\n * ```\r\n */\r\n@Component({\r\n  selector: 'matcha-tree-children',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  imports: [MatchaTreeBranchComponent, MatchaReparentZoneDirective],\r\n  host: { class: 'matcha-tree-view__children-host' },\r\n  template: `\r\n    @if (controller.isExpanded(node) && node !== null) {\r\n      <div class=\"matcha-tree-view__children\"\r\n           [class.is-clamped]=\"controller.isIndentClamped(level + 1)\"\r\n           role=\"group\"\r\n           matchaReparentZone\r\n           [matchaReparentZoneId]=\"controller.idOf(node)\"\r\n           [matchaReparentZoneAcceptTypes]=\"controller.acceptTypesFor(node)\"\r\n           (matchaReparentDropped)=\"onReparent($event)\">\r\n        <matcha-tree-branch\r\n          [matchaDropListData]=\"controller.childrenOf(node)\"\r\n          [level]=\"level + 1\"\r\n          [parentNode]=\"node\"\r\n          (matchaDropListDropped)=\"controller.onBranchDrop($event, node)\">\r\n        </matcha-tree-branch>\r\n      </div>\r\n    }\r\n  `,\r\n})\r\nexport class MatchaTreeChildrenComponent<T = any> {\r\n  /** Nó cujos filhos serão renderizados aqui — o `node` do contexto da row. */\r\n  @Input({ required: true }) node!: T;\r\n  /** Nível do nó (o `level` do contexto da row); os filhos entram em `level + 1`. */\r\n  @Input() level = 1;\r\n  protected readonly controller = inject(MATCHA_TREE_CONTROLLER);\r\n\r\n  protected onReparent(event: MatchaReparentDroppedEvent<T>): void {\r\n    this.controller.reparentInto(this.node, event.item, this.level + 1);\r\n  }\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    booleanAttribute,\r\n    input,\r\n} from '@angular/core';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\nexport type MatchaIconBadgeColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info' | 'neutral'\r\n    | 'palette-purple' | 'palette-pink' | 'palette-teal' | 'palette-light-blue' | 'palette-orange' | 'palette-yellow';\r\n// Canonical by extension; sm/md/lg accepted as @deprecated aliases (1:1, value-preserving).\r\nexport type MatchaIconBadgeSize = 'small' | 'medium' | 'large';\r\n\r\n/**\r\n * matcha-icon-badge — bubble colorido com ícone dentro (Figma DSV3 19058:570).\r\n *\r\n * Espelha 1:1 o `matcha/icon-badge` consolidado: 5 cores × 3 sizes = 15 variantes\r\n * (state Disabled removido do axis Figma — vira boolean prop, opacity 0.4).\r\n *\r\n * Usar em: KPIs hero, tiles do financeiro, leading slot de banners/cards.\r\n * Não é botão clicável (use `matcha-icon-button` pra ações). Decorativo:\r\n * prefira `aria-hidden=\"true\"` no consumer.\r\n *\r\n * Exemplos:\r\n *   <matcha-icon-badge color=\"accent\" size=\"medium\">\r\n *     <matcha-icon name=\"prayer\"></matcha-icon>\r\n *   </matcha-icon-badge>\r\n *\r\n *   <matcha-icon-badge color=\"warn\" size=\"small\" disabled>\r\n *     <matcha-icon name=\"warning\"></matcha-icon>\r\n *   </matcha-icon-badge>\r\n *\r\n * Tokens DSV3 (todos canônicos do Figma):\r\n *   • Container: 32 (small) · 40 (medium) · 48 (large) · radius pill\r\n *   • Glyph: 16 (small) · 20 (medium) · 24 (large)\r\n *   • Background colors:\r\n *       accent  → matcha/color/accent/alpha (10%)\r\n *       primary → matcha/color/primary/alpha (10%)\r\n *       success → matcha/color/feedback/success-alpha (10%)\r\n *       warn    → matcha/color/feedback/warn-alpha (10%)\r\n *       neutral → matcha/color/surface/card-alpha (50%)\r\n *   • Glyph color:\r\n *       4 cores semânticas → matcha/color/{cor}/default (currentColor)\r\n *       neutral → matcha/color/icon/default\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-icon-badge',\r\n    template: `<ng-content></ng-content>`,\r\n    styleUrls: ['./icon-badge.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-icon-badge',\r\n        '[attr.color]':    'color()',\r\n        '[attr.size]':     'size()',\r\n        '[attr.disabled]': 'disabled() ? \"\" : null',\r\n    },\r\n})\r\nexport class MatchaIconBadgeComponent {\r\n    /** Cor semântica. Mapeia bg pra `{color}-alpha` e glyph pra `{color}` (via currentColor). */\r\n    readonly color = input<MatchaIconBadgeColor>('accent');\r\n\r\n    /** Tamanho do container. small: 32×32 (glyph 16) · medium: 40×40 (glyph 20) · large: 48×48 (glyph 24). */\r\n    readonly size = input<MatchaIconBadgeSize, string>('medium', { transform: (v) => sizeAlias(v) as MatchaIconBadgeSize });\r\n\r\n    /** Aplica opacidade reduzida (0.4) pra sinalizar contexto inativo. */\r\n    readonly disabled = input(false, { transform: booleanAttribute });\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    HostListener,\r\n    OnInit,\r\n    booleanAttribute,\r\n    computed,\r\n    effect,\r\n    inject,\r\n    input,\r\n    numberAttribute,\r\n    output,\r\n    signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconButtonComponent } from '../matcha-icon-button/icon-button.component';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\nexport type MatchaBannerTone = 'info' | 'success' | 'warning' | 'accent' | 'danger';\r\n// Canonical by extension; sm/md/lg accepted as @deprecated aliases (1:1, value-preserving).\r\nexport type MatchaBannerSize = 'small' | 'medium' | 'large';\r\n\r\n/**\r\n * matcha-banner — notificação persistente dispensável (in-page, NÃO toast).\r\n *\r\n * Espelha o Figma `matcha/banner` (5 tones × 3 sizes × image mode).\r\n *\r\n * Diferença do `matcha-snackbar`/`matcha-notification`:\r\n *   • banner = persistente, dispensa manual via X (ou auto-dismiss opcional);\r\n *   • snackbar = floating com auto-dismiss 5s;\r\n *   • notification = in-page mas efêmera (auto-dismiss).\r\n *\r\n * Anatomia (5 slots projetados — auto-detect via `:not(:empty)`):\r\n *   • [matcha-banner-media]       — leading icon (use `matcha-icon-badge`)\r\n *   • [matcha-banner-eyebrow]     — texto curto UPPERCASE em cor tonal (overline)\r\n *   • [matcha-banner-title]       — título principal (title-sm)\r\n *   • [matcha-banner-description] — descrição opcional (body-md text-label)\r\n *   • [matcha-banner-action]      — CTA button(s) — ver \"Multi-CTA\" abaixo\r\n *\r\n * **Slot auto-detect:** projete só os slots que precisar — slots vazios somem\r\n * automaticamente (sem `*ngIf` no consumer). Pattern slot-based moderno.\r\n *\r\n * Multi-CTA (ordem canônica):\r\n *   1. Primary CTA primeiro (variant default `filled` + cor do tom).\r\n *   2. Secondary depois (`variant=\"ghost\"` ou `variant=\"outline\"`).\r\n *   Leitor de tela respeita ordem do DOM — primary sempre primeiro.\r\n *\r\n * Modos:\r\n *   • Default: gradient tonal + border hairline, com texts e media;\r\n *   • Image: [image]=\"url\" + [imageAlt]=\"alt obrigatório\" — foto full-bleed sem\r\n *     border nem texts (texts ocultados automaticamente pra a11y), só action+close.\r\n *\r\n * Auto-dismiss opcional: [autoDismiss]=\"5000\" fecha após 5s. 0 = persistente (default).\r\n *   • Pausa automaticamente em hover/focus dentro do banner (WCAG SC 2.2.1 / 2.2.2).\r\n *   • Countdown bar visual aparece quando autoDismiss > 0.\r\n *\r\n * Stack: use `<matcha-banner-stack>` pra gerenciar múltiplos banners empilhados.\r\n *\r\n * Sticky-top (cookie consent / novidade global):\r\n *   ```html\r\n *   <matcha-banner style=\"position: sticky; top: 0; z-index: 10;\" ...>\r\n *   ```\r\n *\r\n * Exemplo simples:\r\n *   <matcha-banner tone=\"accent\" (closed)=\"onDismiss()\">\r\n *     <matcha-icon-badge matcha-banner-media color=\"accent\">\r\n *       <matcha-icon name=\"celebrate\"></matcha-icon>\r\n *     </matcha-icon-badge>\r\n *     <span matcha-banner-eyebrow>NOVIDADE</span>\r\n *     <span matcha-banner-title>Encontros toda segunda às 20h</span>\r\n *     <p matcha-banner-description>Aprenda, tire dúvidas e evolua.</p>\r\n *     <button matcha-button matcha-banner-action color=\"accent\" size=\"sm\">Quero participar</button>\r\n *   </matcha-banner>\r\n *\r\n * Multi-action (primary primeiro, secondary depois):\r\n *   <matcha-banner tone=\"warning\">\r\n *     ...\r\n *     <button matcha-button matcha-banner-action color=\"warn\" size=\"sm\">Aceitar</button>\r\n *     <button matcha-button matcha-banner-action variant=\"ghost\" size=\"sm\">Recusar</button>\r\n *   </matcha-banner>\r\n *\r\n * Hero promo image (size=\"lg\" pra hero):\r\n *   <matcha-banner tone=\"accent\" size=\"lg\"\r\n *                  image=\"https://cdn.app.com/promo.jpg\"\r\n *                  imageAlt=\"Banner promocional do evento Encontros\">\r\n *     <button matcha-button matcha-banner-action color=\"accent\" size=\"sm\">Quero participar</button>\r\n *   </matcha-banner>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-banner',\r\n    templateUrl: './banner.component.html',\r\n    styleUrls: ['./banner.component.scss'],\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaIconButtonComponent, MatchaIconComponent],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-banner',\r\n        'role': 'region',\r\n        '[attr.tone]':       'tone()',\r\n        '[attr.size]':       'size()',\r\n        '[attr.has-image]':  'image() ? \"\" : null',\r\n        '[attr.aria-label]': 'effectiveAriaLabel()',\r\n    },\r\n})\r\nexport class MatchaBannerComponent implements OnInit {\r\n    /** Tom semântico — controla cor da border (1px hairline) e gradient tonal do bg. */\r\n    readonly tone = input<MatchaBannerTone>('info');\r\n\r\n    /**\r\n     * Tamanho. sm (canônico Figma) · md (touch-friendly) · lg (hero promos).\r\n     * Controla padding e densidade — não muda fontes (hierarquia tipográfica é\r\n     * idêntica nas 3 sizes pra consistência).\r\n     */\r\n    readonly size = input<MatchaBannerSize, string>('small', { transform: (v) => sizeAlias(v) as MatchaBannerSize });\r\n\r\n    /**\r\n     * Toggle do close button (X). Default true.\r\n     * Use `false` em banners persistentes que exigem ação explícita\r\n     * (cookie consent, system maintenance, banners legais).\r\n     */\r\n    readonly showClose = input(true, { transform: booleanAttribute });\r\n\r\n    /** aria-label do botão de fechar. Default \"Dispensar\". */\r\n    readonly closeAriaLabel = input<string>('Dispensar');\r\n\r\n    /**\r\n     * URL de imagem hero/promo. Quando setada, sobrepõe o gradient com bg full-bleed\r\n     * via <img> nativo (loading=\"lazy\" + alt). Texts/media são ocultos automaticamente —\r\n     * a imagem É o conteúdo. EXIGE [imageAlt] obrigatório por a11y.\r\n     */\r\n    readonly image = input<string | null | undefined>(null);\r\n\r\n    /**\r\n     * Alt text da imagem hero. OBRIGATÓRIO quando [image] está setado — descreve a\r\n     * foto pra screen readers. Sem alt → console.warn em dev.\r\n     */\r\n    readonly imageAlt = input<string>('');\r\n\r\n    /**\r\n     * Auto-dismiss em N ms. 0 = persistent (default). Útil pra banners temporários\r\n     * (cookie consent visualizado, novidade dispensada após N segundos de leitura).\r\n     */\r\n    readonly autoDismiss = input(0, { transform: numberAttribute });\r\n\r\n    /** Override custom do aria-label (vence o default tone-aware). */\r\n    readonly ariaLabel = input<string>('');\r\n\r\n    /**\r\n     * Fundo sempre opaco atrás do gradiente tonal. Default `true`.\r\n     *\r\n     * O gradiente de cada tone vai de uma cor alpha (0%) até opaca (100%) —\r\n     * sem uma camada sólida atrás, a parte alpha mistura com o que estiver\r\n     * atrás do banner. Isso é invisível num banner estático (o \"atrás\" é\r\n     * sempre o mesmo fundo de página), mas quebra visualmente quando o banner\r\n     * fica `position: sticky` sobre conteúdo que rola (ex.: linhas de tabela\r\n     * aparecendo por trás do texto). Com `opaque` (default), uma camada\r\n     * `--matcha-color-surface-bg` sólida entra como 2ª camada do `background`\r\n     * — a parte alpha do gradiente passa a misturar com essa cor sólida, não\r\n     * mais com o conteúdo por trás. Desligue com `[opaque]=\"false\"` só se\r\n     * quiser o efeito translúcido original contra o fundo da página.\r\n     */\r\n    readonly opaque = input(true, { transform: booleanAttribute });\r\n\r\n    /** Emitido quando close é clicado OU autoDismiss expira. Consumer controla visibilidade. */\r\n    readonly closed = output<void>();\r\n\r\n    // ── Computeds ─────────────────────────────────────────────────────\r\n    /**\r\n     * Aria-label efetivo: ariaLabel custom > imageAlt (em image mode) > tone-aware default.\r\n     */\r\n    readonly effectiveAriaLabel = computed(() => {\r\n        const custom = this.ariaLabel();\r\n        if (custom) return custom;\r\n        const alt = this.imageAlt();\r\n        if (this.image() && alt) return alt;\r\n        const map: Record<MatchaBannerTone, string> = {\r\n            info: 'Aviso', success: 'Sucesso', warning: 'Atenção',\r\n            accent: 'Novidade', danger: 'Erro',\r\n        };\r\n        return map[this.tone()] || 'Comunicado';\r\n    });\r\n\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private dismissTimer: ReturnType<typeof setTimeout> | null = null;\r\n    private dismissDeadline = 0;       // timestamp absoluto do dismiss agendado\r\n    private dismissRemaining = 0;      // ms restantes quando pausado\r\n\r\n    /**\r\n     * Progress 0→1 do countdown (1 = full bar, 0 = expired). signal pra renderizar\r\n     * countdown bar visual quando autoDismiss > 0. Atualizado via rAF (smooth).\r\n     */\r\n    readonly countdownProgress = signal(1);\r\n    private rafHandle: number | null = null;\r\n\r\n    /** Pausado quando hover/focus dentro do banner (WCAG SC 2.2.1). */\r\n    private readonly paused = signal(false);\r\n\r\n    constructor() {\r\n        // Auto-dismiss reativo a [autoDismiss] + paused. Effect re-roda quando\r\n        // ms muda OU paused alterna → reschedule.\r\n        effect(() => {\r\n            const ms = this.autoDismiss();\r\n            const isPaused = this.paused();\r\n            this.cancelTimer();\r\n\r\n            if (ms <= 0) {\r\n                this.countdownProgress.set(1);\r\n                return;\r\n            }\r\n\r\n            if (isPaused) {\r\n                // Mantém o restante no display; não reseta progress.\r\n                return;\r\n            }\r\n\r\n            // Inicia (ou retoma) o timer com `dismissRemaining` (ou ms full\r\n            // se for primeira execução).\r\n            const wait = this.dismissRemaining > 0 ? this.dismissRemaining : ms;\r\n            this.dismissDeadline = Date.now() + wait;\r\n            this.dismissTimer = setTimeout(() => this.dismiss(), wait);\r\n            this.tickProgress(ms); // animação da countdown bar\r\n        });\r\n\r\n        this.destroyRef.onDestroy(() => this.cancelTimer());\r\n    }\r\n\r\n    private cancelTimer(): void {\r\n        if (this.dismissTimer) {\r\n            clearTimeout(this.dismissTimer);\r\n            this.dismissTimer = null;\r\n        }\r\n        if (this.rafHandle !== null) {\r\n            cancelAnimationFrame(this.rafHandle);\r\n            this.rafHandle = null;\r\n        }\r\n    }\r\n\r\n    /** Atualiza countdownProgress via rAF (smooth, sem jank). */\r\n    private tickProgress(totalMs: number): void {\r\n        const tick = () => {\r\n            const remaining = Math.max(0, this.dismissDeadline - Date.now());\r\n            this.countdownProgress.set(remaining / totalMs);\r\n            if (remaining > 0) {\r\n                this.rafHandle = requestAnimationFrame(tick);\r\n            }\r\n        };\r\n        this.rafHandle = requestAnimationFrame(tick);\r\n    }\r\n\r\n    // ── Pause-on-hover/focus (WCAG SC 2.2.1, 2.2.2) ────────────────────────\r\n    @HostListener('mouseenter')\r\n    @HostListener('focusin')\r\n    onPause(): void {\r\n        if (this.autoDismiss() <= 0 || this.paused()) return;\r\n        // Salva o restante antes de pausar pra retomar no exato ponto.\r\n        this.dismissRemaining = Math.max(0, this.dismissDeadline - Date.now());\r\n        this.paused.set(true);\r\n    }\r\n\r\n    @HostListener('mouseleave')\r\n    @HostListener('focusout', ['$event'])\r\n    onResume(event?: FocusEvent): void {\r\n        // focusout: ignora se foco voltou pra dentro do banner (relatedTarget interno).\r\n        if (event && event.relatedTarget instanceof Node) {\r\n            const host = (event.currentTarget as HTMLElement);\r\n            if (host?.contains(event.relatedTarget)) return;\r\n        }\r\n        if (!this.paused()) return;\r\n        this.paused.set(false);\r\n        // dismissRemaining é mantido — o effect lê e retoma.\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        // Dev-time check: image sem alt = a11y broken.\r\n        if (this.image() && !this.imageAlt() && !this.ariaLabel()) {\r\n            console.warn(\r\n                '[matcha-banner] Image mode sem [imageAlt] ou [ariaLabel] — ' +\r\n                'screen readers ficam sem contexto. Adicione [imageAlt]=\"texto descritivo\" pra a11y.',\r\n            );\r\n        }\r\n    }\r\n\r\n    /** Dispensa programaticamente. Equivalente ao click do X. */\r\n    dismiss(): void {\r\n        this.cancelTimer();\r\n        this.dismissRemaining = 0;\r\n        this.closed.emit();\r\n    }\r\n}\r\n","<!-- Image hero: <img> nativo com lazy loading + alt obrigatório.\r\n     Posicionado absolute como bg cover behind content. -->\r\n<img *ngIf=\"image()\"\r\n     class=\"matcha-banner__bg-image\"\r\n     [src]=\"image()\"\r\n     [alt]=\"imageAlt()\"\r\n     loading=\"lazy\"\r\n     decoding=\"async\">\r\n\r\n<div class=\"matcha-banner__media\">\r\n    <ng-content select=\"[matcha-banner-media]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"matcha-banner__content\">\r\n    <span class=\"matcha-banner__eyebrow\">\r\n        <ng-content select=\"[matcha-banner-eyebrow]\"></ng-content>\r\n    </span>\r\n    <span class=\"matcha-banner__title\">\r\n        <ng-content select=\"[matcha-banner-title]\"></ng-content>\r\n    </span>\r\n    <p class=\"matcha-banner__description\">\r\n        <ng-content select=\"[matcha-banner-description]\"></ng-content>\r\n    </p>\r\n</div>\r\n\r\n<div class=\"matcha-banner__actions\">\r\n    <ng-content select=\"[matcha-banner-action]\"></ng-content>\r\n    @if (showClose()) {\r\n        <button type=\"button\"\r\n                matcha-icon-button\r\n                variant=\"ghost\"\r\n                size=\"sm\"\r\n                class=\"matcha-banner__close\"\r\n                [attr.aria-label]=\"closeAriaLabel()\"\r\n                (click)=\"dismiss()\">\r\n            <matcha-icon name=\"close\"></matcha-icon>\r\n        </button>\r\n    }\r\n</div>\r\n\r\n<!-- Countdown bar visual quando autoDismiss > 0. Posicionado bottom edge do banner.\r\n     scaleX(progress) shrinks da direita pra esquerda — visual de \"tempo esgotando\". -->\r\n<div *ngIf=\"autoDismiss() > 0\"\r\n     class=\"matcha-banner__countdown\"\r\n     [style.transform]=\"'scaleX(' + countdownProgress() + ')'\"\r\n     aria-hidden=\"true\"></div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-banner-stack — container pra empilhar múltiplos banners verticalmente.\r\n *\r\n * Gerencia gap consistente entre banners (8px) sem precisar do consumer aplicar\r\n * margin manual em cada um. Útil em páginas onde aparecem N banners simultâneos\r\n * (notificações persistentes do app, comunicados pastorais, alertas de billing).\r\n *\r\n * Exemplo:\r\n *   <matcha-banner-stack>\r\n *     <matcha-banner *ngFor=\"let b of banners()\" [tone]=\"b.tone\" (closed)=\"dismiss(b.id)\">\r\n *       <matcha-icon-badge matcha-banner-media [color]=\"b.color\">...</matcha-icon-badge>\r\n *       <span matcha-banner-eyebrow>{{ b.eyebrow }}</span>\r\n *       <span matcha-banner-title>{{ b.title }}</span>\r\n *     </matcha-banner>\r\n *   </matcha-banner-stack>\r\n *\r\n * Best practice: limite a 3 banners visíveis simultâneos. Acima disso, considere\r\n * agrupar em uma central de notificações (drawer / modal).\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-banner-stack',\r\n    template: '<ng-content></ng-content>',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-banner-stack',\r\n        'role': 'region',\r\n        'aria-label': 'Banners',\r\n    },\r\n    styles: [`\r\n        :host {\r\n            display: flex;\r\n            flex-direction: column;\r\n            gap: var(--matcha-space-100, 8px);\r\n            width: 100%;\r\n        }\r\n    `],\r\n})\r\nexport class MatchaBannerStackComponent {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    HostListener,\r\n    booleanAttribute,\r\n    computed,\r\n    input,\r\n    numberAttribute,\r\n    output,\r\n} from '@angular/core';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-stat-card — KPI tile pra dashboards.\r\n *\r\n * Espelha o Figma `matcha/stat-card` (cores × 3 tamanhos + booleans Clickable/ShowTrend).\r\n *\r\n * Anatomia (slots projetados — TODOS opcionais):\r\n *   • [matcha-stat-card-leading] — ícone (use `matcha-icon-badge` matching color).\r\n *     Omitir o slot é suportado: o leading colapsa (`:empty`) e o texto encosta na\r\n *     borda esquerda, sem gap órfão nem skeleton desalinhado no loading.\r\n *   • [matcha-stat-card-label] — label uppercase (overline, ex: \"EM ACOMPANHAMENTO\").\r\n *     Clampado em 2 linhas por padrão — ver [lineClamp].\r\n *   • [matcha-stat-card-value] — valor (number, ex: \"5\"). tabular-nums aplicado pelo SCSS.\r\n *   • [matcha-stat-card-helper] — linha contextual opcional (\"vs semana passada\")\r\n *   • [matcha-stat-card-trend] — chip de tendência opcional (renderiza só com [showTrend]=true)\r\n *   • output (clicked) — emitido quando clickable=true E disabled=false\r\n *\r\n * Exemplos:\r\n *   <matcha-stat-card color=\"accent\" size=\"medium\">\r\n *     <matcha-icon-badge matcha-stat-card-leading color=\"accent\">\r\n *       <matcha-icon name=\"prayer\"></matcha-icon>\r\n *     </matcha-icon-badge>\r\n *     <span matcha-stat-card-label>EM ACOMPANHAMENTO</span>\r\n *     <span matcha-stat-card-value>5</span>\r\n *   </matcha-stat-card>\r\n *\r\n *   <matcha-stat-card color=\"warn\" size=\"small\" clickable (clicked)=\"goToDetails()\">\r\n *     <matcha-icon-badge matcha-stat-card-leading color=\"warn\">...</matcha-icon-badge>\r\n *     <span matcha-stat-card-label>SAÍDAS</span>\r\n *     <span matcha-stat-card-value>R$ 1.234,56</span>\r\n *     <span matcha-stat-card-trend>↑ 12%</span>\r\n *   </matcha-stat-card>\r\n *\r\n *   Sem ícone — não projete o slot leading (não existe input pra isso):\r\n *   <matcha-stat-card size=\"small\">\r\n *     <span matcha-stat-card-label>TOTAL DE MEMBROS</span>\r\n *     <span matcha-stat-card-value>1.284</span>\r\n *   </matcha-stat-card>\r\n *\r\n *   Embutido num container que já tem superfície (sem a sua própria):\r\n *   <matcha-card>\r\n *     <matcha-stat-card type=\"ghost\">...</matcha-stat-card>\r\n *   </matcha-card>\r\n *\r\n *   Card compacto com valor grande (eixos desacoplados):\r\n *   <matcha-stat-card size=\"small\" valueSize=\"large\">...</matcha-stat-card>\r\n *\r\n *   <matcha-stat-card [loading]=\"isFetching\">...</matcha-stat-card>\r\n *\r\n * Tokens DSV3:\r\n *   • Container: `--matcha-color-surface-card` + `--matcha-radius-md` + padding `--matcha-space-200`\r\n *   • Label: `--matcha-text-overline` (10/Medium/UPPERCASE/letter 1px) → text-muted\r\n *   • Value: medium → `--matcha-text-headline` (24/Bold) · small → `--matcha-text-title-md` (18/Semi) · large → `--matcha-text-display` (32/Black)\r\n *   • Clickable: cursor pointer + hover-lift + press-feedback (Motion fast easing-standard)\r\n */\r\nexport type MatchaStatCardColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info' | 'neutral'\r\n    | 'palette-purple' | 'palette-pink' | 'palette-teal' | 'palette-light-blue' | 'palette-orange' | 'palette-yellow';\r\n// Canonical by extension; sm/md/lg accepted as @deprecated aliases (1:1, value-preserving).\r\nexport type MatchaStatCardSize = 'small' | 'medium' | 'large';\r\n\r\n/**\r\n * Eixo de superfície do card — mesmo vocabulário de container do `matcha-card` (`type`),\r\n * não `variant` (que na lib é vocabulário de átomo de ação: button/icon-button/chip).\r\n *   • `surface` (default) — superfície própria: bg `--matcha-color-surface-card`,\r\n *     `--matcha-radius-md` e o padding do `size`.\r\n *   • `ghost` — sem superfície própria: zero padding, fundo transparente, sem radius.\r\n *     Para embutir o KPI num container que JÁ tem a sua (um `matcha-card`, uma\r\n *     célula de tabela, um item de lista) sem empilhar duas superfícies.\r\n */\r\nexport type MatchaStatCardType = 'surface' | 'ghost';\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-stat-card',\r\n    templateUrl: './stat-card.component.html',\r\n    styleUrls: ['./stat-card.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-stat-card',\r\n        '[attr.color]': 'color()',\r\n        '[attr.size]': 'size()',\r\n        '[attr.type]': 'type()',\r\n        '[attr.value-size]': 'effectiveValueSize()',\r\n        // Par de bindings do clamp (mesmo contrato do matcha-title): o atributo é o\r\n        // gate do seletor e a custom property carrega a contagem — assim uma única\r\n        // regra SCSS atende qualquer N sem enumerar seletores de atributo.\r\n        '[attr.line-clamp]': 'lineClamp() > 0 ? lineClamp() : null',\r\n        '[style.--matcha-stat-card-line-clamp]': 'lineClamp() > 0 ? lineClamp() : null',\r\n        '[attr.clickable]': 'isInteractive() ? \"\" : null',\r\n        '[attr.disabled]': 'disabled() ? \"\" : null',\r\n        '[attr.aria-busy]': 'loading() ? \"true\" : null',\r\n        '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n        '[attr.role]': 'clickable() ? \"button\" : null',\r\n        '[attr.tabindex]': 'isInteractive() ? \"0\" : null',\r\n        '[attr.aria-label]': 'ariaLabel() || null',\r\n    },\r\n})\r\nexport class MatchaStatCardComponent {\r\n    /** Cor semântica da bubble. Usa `matcha-icon-badge` no leading slot. */\r\n    readonly color = input<MatchaStatCardColor>('accent');\r\n\r\n    /**\r\n     * Tamanho do CARD — escala o padding e, por herança, a tipografia do value.\r\n     * small (compacto) · medium (default) · large (hero KPI — display 32/40).\r\n     * Para dimensionar o value independente do card, use [valueSize].\r\n     */\r\n    readonly size = input<MatchaStatCardSize, string>('medium', { transform: (v) => sizeAlias(v) as MatchaStatCardSize });\r\n\r\n    /**\r\n     * Superfície do card. `surface` (default) mantém fundo + radius + padding do size;\r\n     * `ghost` remove os três, para embutir o KPI num container que já tem a sua.\r\n     */\r\n    readonly type = input<MatchaStatCardType>('surface');\r\n\r\n    /**\r\n     * Tamanho SÓ da tipografia do value, desacoplado do [size] do card.\r\n     * Default `null` = herda do [size] — ou seja, não passar nada mantém\r\n     * exatamente o render de hoje (small 18/24 · medium 24/32 · large 32/40).\r\n     *\r\n     * Existe porque densidade de card e peso do número são decisões\r\n     * independentes: um dashboard denso pode querer padding compacto\r\n     * (`size=\"small\"`) com o número em destaque (`valueSize=\"large\"`), e um card\r\n     * espaçoso pode querer o número discreto.\r\n     */\r\n    readonly valueSize = input<MatchaStatCardSize | null, string | null>(null, {\r\n        transform: (v) => (v ? (sizeAlias(v) as MatchaStatCardSize) : null),\r\n    });\r\n\r\n    /**\r\n     * Máximo de linhas do LABEL antes de cortar com reticências. Default 2 —\r\n     * sem isso um label longo empilha linhas indefinidamente e estica o card,\r\n     * desalinhando a régua de KPIs de um dashboard. `0` desliga o clamp e\r\n     * devolve o comportamento anterior (label cresce sem limite).\r\n     *\r\n     * Só o label é clampado: o value já trava em 1 linha com ellipsis e o helper\r\n     * é a linha narrativa, onde cortar texto esconde justamente o contexto.\r\n     */\r\n    readonly lineClamp = input(2, { transform: numberAttribute });\r\n\r\n    /** Cursor pointer + hover-lift + role=button + emite (clicked). */\r\n    readonly clickable = input(false, { transform: booleanAttribute });\r\n\r\n    /** Toggle do trend slot. Mostra/esconde o chip à direita do value. */\r\n    readonly showTrend = input(false, { transform: booleanAttribute });\r\n\r\n    /**\r\n     * Desabilita interação (cursor not-allowed + opacity dim + ignora click/Enter/Space).\r\n     * Útil em cards sem permissão, fila de fetch, ou estado terminal.\r\n     * Só faz sentido com `clickable=true` (sem clickable, nada é interativo).\r\n     */\r\n    readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n    /**\r\n     * Loading state — mostra skeleton overlay no value + label, mantém estrutura.\r\n     * Use durante fetch do KPI pra evitar layout shift. Pausa interação automaticamente.\r\n     */\r\n    readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n    /**\r\n     * Label aria custom pro card. Quando clickable=true sem aria-label, leitor de\r\n     * tela anuncia o conteúdo (label + value). Use isto pra contextos crowded\r\n     * (ex: dashboards com 8 cards similares) onde a descrição precisa ser explícita.\r\n     */\r\n    readonly ariaLabel = input<string>('');\r\n\r\n    /** Emitido quando clickable=true, disabled=false, !loading e o card é clicado/Enter/Space. */\r\n    readonly clicked = output<void>();\r\n\r\n    /** clickable && !disabled && !loading — guard único pra interação. */\r\n    readonly isInteractive = computed(() => this.clickable() && !this.disabled() && !this.loading());\r\n\r\n    /** Tamanho efetivo do value: o explícito, ou o do card quando não informado. */\r\n    readonly effectiveValueSize = computed<MatchaStatCardSize>(() => this.valueSize() ?? this.size());\r\n\r\n    @HostListener('click') onHostClick(): void {\r\n        if (this.isInteractive()) this.clicked.emit();\r\n    }\r\n\r\n    @HostListener('keydown.enter', ['$event'])\r\n    @HostListener('keydown.space', ['$event'])\r\n    onHostKey(event: KeyboardEvent): void {\r\n        if (this.isInteractive()) {\r\n            event.preventDefault();\r\n            this.clicked.emit();\r\n        }\r\n    }\r\n}\r\n","<div class=\"matcha-stat-card__leading\">\r\n    <ng-content select=\"[matcha-stat-card-leading]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"matcha-stat-card__text\">\r\n    <span class=\"matcha-stat-card__label\">\r\n        <ng-content select=\"[matcha-stat-card-label]\"></ng-content>\r\n    </span>\r\n    <span class=\"matcha-stat-card__value\">\r\n        <ng-content select=\"[matcha-stat-card-value]\"></ng-content>\r\n    </span>\r\n    <span class=\"matcha-stat-card__helper\">\r\n        <ng-content select=\"[matcha-stat-card-helper]\"></ng-content>\r\n    </span>\r\n</div>\r\n\r\n@if (showTrend()) {\r\n    <div class=\"matcha-stat-card__trend\">\r\n        <ng-content select=\"[matcha-stat-card-trend]\"></ng-content>\r\n    </div>\r\n}\r\n\r\n<!-- Loading overlay — skeleton bars cobrindo label + value sem mudar layout.\r\n     Posicionado absoluto sobre o text stack pra não deslocar leading/trend. -->\r\n@if (loading()) {\r\n    <div class=\"matcha-stat-card__loading\" aria-hidden=\"true\">\r\n        <span class=\"matcha-stat-card__skeleton matcha-stat-card__skeleton--label\"></span>\r\n        <span class=\"matcha-stat-card__skeleton matcha-stat-card__skeleton--value\"></span>\r\n    </div>\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    HostBinding,\r\n    Input,\r\n    Output,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    numberAttribute,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconButtonComponent } from '../matcha-icon-button/icon-button.component';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\nexport type MatchaPaginationVariant = 'minimal';\r\n\r\n/**\r\n * matcha-pagination — Paginação canônica DSV3.\r\n *\r\n * Variant atual: `minimal` — prev (icon-button ghost) + steppers (linha de N\r\n * pills 8px) + next (icon-button ghost). Sem números de página, ideal pra\r\n * listas onde a paginação é visual e a contagem exata não importa.\r\n *\r\n *   <matcha-pagination\r\n *     [total]=\"totalPages\"\r\n *     [current]=\"page\"\r\n *     (currentChange)=\"page = $event\"\r\n *     (pageChange)=\"loadPage($event)\">\r\n *   </matcha-pagination>\r\n *\r\n * Estado controlado: o consumidor recebe (currentChange) e atualiza [current].\r\n * `pageChange` é alias semântico — útil quando queremos um listener explícito\r\n * pra disparar a busca da página (sem two-way binding).\r\n *\r\n * `current` é 1-based (página 1..total). Setar fora do range é clamped.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-pagination',\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaIconButtonComponent, MatchaIconComponent],\r\n    templateUrl: './pagination.component.html',\r\n    styleUrls: ['./pagination.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaPaginationComponent {\r\n    /** Variant visual. Hoje só `minimal`; futuros: `standard`, `numbered`. */\r\n    @Input() variant: MatchaPaginationVariant = 'minimal';\r\n\r\n    /** Total de páginas (≥1). 0/undefined desabilita o componente todo. */\r\n    @Input({ transform: numberAttribute }) total = 0;\r\n\r\n    /** Página atual (1-based). */\r\n    @Input({ transform: numberAttribute }) current = 1;\r\n\r\n    /** Aria-label do nav wrapper. */\r\n    @Input() ariaLabel = 'Paginação';\r\n\r\n    /** Aria-label do botão prev (i18n). */\r\n    @Input() prevLabel = 'Página anterior';\r\n\r\n    /** Aria-label do botão next (i18n). */\r\n    @Input() nextLabel = 'Próxima página';\r\n\r\n    /** Esconde o componente todo se total ≤ 1 (uma página só não precisa pagination). */\r\n    @Input({ transform: booleanAttribute }) hideWhenSingle = true;\r\n\r\n    /** Two-way binding em [current]: emite o novo current 1-based. */\r\n    @Output() readonly currentChange = new EventEmitter<number>();\r\n\r\n    /** Alias semântico do currentChange — útil quando o consumidor não usa\r\n     *  two-way binding e só quer reagir à mudança de página. */\r\n    @Output() readonly pageChange = new EventEmitter<number>();\r\n\r\n    @HostBinding('attr.role') readonly role = 'navigation';\r\n    @HostBinding('attr.aria-label') get hostAriaLabel() { return this.ariaLabel; }\r\n    @HostBinding('attr.variant') get variantAttr() { return this.variant; }\r\n    @HostBinding('class.matcha-pagination--hidden') get isHidden() {\r\n        return this.hideWhenSingle && this.total <= 1;\r\n    }\r\n\r\n    get steps(): number[] {\r\n        const t = Math.max(0, Math.floor(Number(this.total) || 0));\r\n        return Array.from({ length: t }, (_, i) => i);\r\n    }\r\n\r\n    /** Index 0-based do stepper ativo, clamped no range válido. */\r\n    get activeIndex(): number {\r\n        const c = Math.floor(Number(this.current) || 1);\r\n        return Math.max(0, Math.min(this.total - 1, c - 1));\r\n    }\r\n\r\n    get canPrev(): boolean { return this.current > 1; }\r\n    get canNext(): boolean { return this.current < this.total; }\r\n\r\n    prev(): void {\r\n        if (!this.canPrev) return;\r\n        this.emit(this.current - 1);\r\n    }\r\n\r\n    next(): void {\r\n        if (!this.canNext) return;\r\n        this.emit(this.current + 1);\r\n    }\r\n\r\n    private emit(value: number): void {\r\n        this.currentChange.emit(value);\r\n        this.pageChange.emit(value);\r\n    }\r\n\r\n    trackByIndex(index: number): number { return index; }\r\n}\r\n","<button type=\"button\" matcha-icon-button variant=\"ghost\" size=\"sm\" color=\"basic\"\r\n    class=\"matcha-pagination__btn matcha-pagination__btn--prev\"\r\n    [disabled]=\"!canPrev\"\r\n    [attr.aria-label]=\"prevLabel\"\r\n    (click)=\"prev()\">\r\n    <matcha-icon name=\"chevron-left\" size=\"sm\"></matcha-icon>\r\n</button>\r\n\r\n<div class=\"matcha-pagination__steps\" aria-hidden=\"true\">\r\n    <span *ngFor=\"let i of steps; trackBy: trackByIndex\"\r\n        class=\"matcha-pagination__step\"\r\n        [class.matcha-pagination__step--active]=\"i === activeIndex\"></span>\r\n</div>\r\n\r\n<button type=\"button\" matcha-icon-button variant=\"ghost\" size=\"sm\" color=\"basic\"\r\n    class=\"matcha-pagination__btn matcha-pagination__btn--next\"\r\n    [disabled]=\"!canNext\"\r\n    [attr.aria-label]=\"nextLabel\"\r\n    (click)=\"next()\">\r\n    <matcha-icon name=\"chevron-right\" size=\"sm\"></matcha-icon>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaPaginationComponent } from './pagination.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaPaginationComponent],\r\n    exports: [MatchaPaginationComponent],\r\n})\r\nexport class MatchaPaginationModule {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    HostBinding,\r\n    Input,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    computed,\r\n    input,\r\n    numberAttribute,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n// Canonical by extension; sm/md/lg accepted as @deprecated aliases (1:1, value-preserving).\r\nexport type MatchaProgressRingSize = 'small' | 'medium' | 'large';\r\nexport type MatchaProgressRingColor = 'accent' | 'primary' | 'success' | 'warn' | 'danger' | 'info';\r\nexport type MatchaProgressRingTrack = 'subtle' | 'muted';\r\n\r\n/**\r\n * matcha-progress-ring — Donut/ring de progresso compacto (Figma DSV3).\r\n *\r\n * Caso de uso: KPI inline (% de uma meta), score de saúde (0-100), donut\r\n * mini em tabela/lista (ex: relatórios entregues vs pendentes), avatar com\r\n * ring de progresso.\r\n *\r\n * Sizes: small (32) · medium (40, default) · large (48). Stroke escala junto.\r\n *\r\n * Track variants:\r\n *   • subtle (default) — interaction-disabled-bg. Use quando a outra\r\n *     \"metade\" do donut é ausência (ex: % carregado de 100%).\r\n *   • muted — text-muted. Use quando a outra metade é uma categoria\r\n *     concorrente com semântica própria (ex: pending vs delivered no\r\n *     dashboard de relatórios).\r\n *\r\n *   <matcha-progress-ring [value]=\"65\" color=\"accent\"></matcha-progress-ring>\r\n *\r\n *   <!-- Donut style (delivered vs pending) -->\r\n *   <matcha-progress-ring [value]=\"deliveredPct\" color=\"primary\" track=\"muted\">\r\n *   </matcha-progress-ring>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-progress-ring',\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    templateUrl: './progress-ring.component.html',\r\n    styleUrls: ['./progress-ring.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaProgressRingComponent {\r\n    /** Valor 0-100. Acima/abaixo do range é clamped. */\r\n    readonly value = input(0, { transform: numberAttribute });\r\n\r\n    /** Tamanho. small 32 · medium 40 · large 48. */\r\n    readonly size = input<MatchaProgressRingSize, string>('medium', { transform: (v) => sizeAlias(v) as MatchaProgressRingSize });\r\n\r\n    /** Cor da fração preenchida. */\r\n    readonly color = input<MatchaProgressRingColor>('accent');\r\n\r\n    /** Cor do track (a \"metade não-preenchida\"). */\r\n    readonly track = input<MatchaProgressRingTrack>('subtle');\r\n\r\n    /** Mostra label central com %. */\r\n    readonly showLabel = input(false, { transform: booleanAttribute });\r\n\r\n    /** Aria-label descritivo (sempre setar pra a11y completa). */\r\n    readonly ariaLabel = input<string>('');\r\n\r\n    @HostBinding('attr.role') readonly role = 'progressbar';\r\n    @HostBinding('attr.aria-valuemin') readonly ariaMin = 0;\r\n    @HostBinding('attr.aria-valuemax') readonly ariaMax = 100;\r\n    @HostBinding('attr.aria-valuenow') get ariaNow() { return this.clampedValue(); }\r\n    @HostBinding('attr.aria-label') get ariaLabelAttr() { return this.ariaLabel() || null; }\r\n    @HostBinding('attr.size') get sizeAttr() { return this.size(); }\r\n    @HostBinding('attr.color') get colorAttr() { return this.color(); }\r\n    @HostBinding('attr.track') get trackAttr() { return this.track(); }\r\n\r\n    /** ViewBox fixo 0..100 — o tamanho real vem do CSS via size attribute. */\r\n    readonly viewBox = '0 0 100 100';\r\n    readonly cx = 50;\r\n    readonly cy = 50;\r\n    /** Raio com folga pra stroke (10) caber. r=45 → stroke até 10 sem clip. */\r\n    readonly radius = 45;\r\n    readonly circumference = 2 * Math.PI * 45;\r\n\r\n    readonly clampedValue = computed<number>(() => {\r\n        const v = Number(this.value());\r\n        if (!Number.isFinite(v)) return 0;\r\n        return Math.max(0, Math.min(100, v));\r\n    });\r\n\r\n    /** strokeDashoffset = circumference × (1 - value/100). */\r\n    readonly dashOffset = computed<number>(() =>\r\n        this.circumference * (1 - this.clampedValue() / 100),\r\n    );\r\n\r\n    readonly displayLabel = computed<string>(() => `${Math.round(this.clampedValue())}%`);\r\n}\r\n","<svg class=\"matcha-progress-ring__svg\"\r\n    [attr.viewBox]=\"viewBox\"\r\n    aria-hidden=\"true\"\r\n    focusable=\"false\">\r\n    <circle class=\"matcha-progress-ring__track-circle\"\r\n        [attr.cx]=\"cx\" [attr.cy]=\"cy\" [attr.r]=\"radius\" />\r\n    <circle class=\"matcha-progress-ring__fill-circle\"\r\n        [attr.cx]=\"cx\" [attr.cy]=\"cy\" [attr.r]=\"radius\"\r\n        [attr.stroke-dasharray]=\"circumference\"\r\n        [attr.stroke-dashoffset]=\"dashOffset()\" />\r\n</svg>\r\n<span *ngIf=\"showLabel()\" class=\"matcha-progress-ring__label\">{{ displayLabel() }}</span>\r\n","import { Component, ElementRef, Input, Renderer2, ChangeDetectionStrategy, OnInit, OnChanges } from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * Responsive CSS-grid container. Each layout property maps to one input per\r\n * breakpoint (base + `sm`/`md`/`lg`/`xl`), mirroring the DS convention used by\r\n * `matcha-button` (`@Input('size-md') sizeMd`). The base input applies at every\r\n * width; `sm`+ override upward (mobile-first).\r\n *\r\n * @example\r\n * <matcha-grid grid=\"1\" grid-md=\"2\" grid-lg=\"4\" gap=\"16\" gap-lg=\"24\">…</matcha-grid>\r\n *\r\n * `grid` defaults to `'1'`, so `<matcha-grid grid-sm=\"2\">` renders as\r\n * `grid-1 grid-sm-2` — 1 column below `sm`, 2 from `sm` up — without declaring the\r\n * base. Pass `grid=\"\"` to opt out of the base grid entirely.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-grid',\r\n    templateUrl: './grid.component.html',\r\n    styleUrls: ['./grid.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaGridComponent implements OnInit, OnChanges {\r\n    // Columns per breakpoint → grid-{n} / grid-{bp}-{n} on the inner container.\r\n    @Input() grid: string = '1';\r\n    @Input('grid-sm') gridSm: string = '';\r\n    @Input('grid-md') gridMd: string = '';\r\n    @Input('grid-lg') gridLg: string = '';\r\n    @Input('grid-xl') gridXl: string = '';\r\n\r\n    // Gap per breakpoint → gap-{n} / gap-{bp}-{n} on the inner container.\r\n    @Input() gap: string = '';\r\n    @Input('gap-sm') gapSm: string = '';\r\n    @Input('gap-md') gapMd: string = '';\r\n    @Input('gap-lg') gapLg: string = '';\r\n    @Input('gap-xl') gapXl: string = '';\r\n\r\n    // Column span of THIS grid inside a parent grid → colspan-* on the host element.\r\n    @Input() colspan: string = '';\r\n    @Input('colspan-sm') colspanSm: string = '';\r\n    @Input('colspan-md') colspanMd: string = '';\r\n    @Input('colspan-lg') colspanLg: string = '';\r\n    @Input('colspan-xl') colspanXl: string = '';\r\n\r\n    // Row span of THIS grid inside a parent grid → rowspan-* on the host element.\r\n    @Input() rowspan: string = '';\r\n    @Input('rowspan-sm') rowspanSm: string = '';\r\n    @Input('rowspan-md') rowspanMd: string = '';\r\n    @Input('rowspan-lg') rowspanLg: string = '';\r\n    @Input('rowspan-xl') rowspanXl: string = '';\r\n\r\n    @Input() loading: boolean | string = false;\r\n\r\n    private readonly breakpoints = ['', 'sm', 'md', 'lg', 'xl'];\r\n\r\n    constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n\r\n    // Build `prefix[-bp]-value` classes from a per-breakpoint list, skipping empty slots.\r\n    private buildClasses(prefix: string, values: string[]): string[] {\r\n        return this.breakpoints\r\n            .map((breakpoint, index) => ({ breakpoint, value: values[index] }))\r\n            .filter(({ value }) => value !== '' && value != null)\r\n            .map(({ breakpoint, value }) => `${prefix}${breakpoint ? '-' + breakpoint : ''}-${value}`);\r\n    }\r\n\r\n    public get classes(): string {\r\n        const gridClasses = this.buildClasses('grid', [this.grid, this.gridSm, this.gridMd, this.gridLg, this.gridXl]);\r\n        const gapClasses = this.buildClasses('gap', [this.gap, this.gapSm, this.gapMd, this.gapLg, this.gapXl]);\r\n        return [...gridClasses, ...gapClasses, this.loading ? 'loading' : ''].filter(Boolean).join(' ');\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.applySpanClasses();\r\n    }\r\n\r\n    ngOnChanges(): void {\r\n        this.applySpanClasses();\r\n    }\r\n\r\n    private applySpanClasses(): void {\r\n        this.syncHostClasses('colspan', [this.colspan, this.colspanSm, this.colspanMd, this.colspanLg, this.colspanXl]);\r\n        this.syncHostClasses('rowspan', [this.rowspan, this.rowspanSm, this.rowspanMd, this.rowspanLg, this.rowspanXl]);\r\n    }\r\n\r\n    // Reflect colspan/rowspan on the host, replacing any previously-applied ones on change.\r\n    private syncHostClasses(prefix: string, values: string[]): void {\r\n        const host = this.el.nativeElement;\r\n        (host.className.split(' ') as string[])\r\n            .filter((className: string) => className.startsWith(`${prefix}-`))\r\n            .forEach((className: string) => this.renderer.removeClass(host, className));\r\n        this.buildClasses(prefix, values).forEach((className: string) => this.renderer.addClass(host, className));\r\n    }\r\n}\r\n","<div [class]=\"classes\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaGridComponent } from './grid.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaGridComponent],\r\n    exports: [MatchaGridComponent],\r\n})\r\nexport class MatchaGridModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaBrandComponent } from './brand.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaBrandComponent],\r\n    exports: [MatchaBrandComponent],\r\n})\r\nexport class MatchaBrandModule {}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  booleanAttribute,\r\n  input,\r\n  output,\r\n} from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-breadcrumb-item — item de navegação hierárquica (Figma DSV3 15831:35).\r\n *\r\n * 3 estados: Link (clicável) | Atual (sem bg, Medium, aria-current) | Disabled.\r\n * Renderização real é controlada pelo `matcha-breadcrumb` parent — esse componente\r\n * só carrega os atributos. Pattern config-via-attributes (template vazio).\r\n *\r\n * Navegação SPA: prefira `[routerLink]` em vez de `[href]` — Angular Router\r\n * intercepta clicks, mantém estado, anima transições. `[href]` faz full reload.\r\n *\r\n * Truncate de label longo: `[maxWidth]=\"'180px'\"` ativa ellipsis no texto sem\r\n * quebrar o item. Use em hierarquias com nomes potencialmente extensos.\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-breadcrumb-item',\r\n  template: '',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaBreadcrumbItemComponent {\r\n  /** Texto exibido. Obrigatório. */\r\n  readonly label = input<string>('');\r\n\r\n  /** Nome do ícone leading opcional (matcha-icon name). Vazio omite. */\r\n  readonly icon = input<string>('');\r\n\r\n  /** URL do link plain (full page reload). Use `[routerLink]` em apps Angular. */\r\n  readonly href = input<string>('');\r\n\r\n  /** Angular Router link. Aceita string ou array de commands. PRIORIDADE sobre href. */\r\n  readonly routerLink = input<string | unknown[] | null | undefined>(null);\r\n\r\n  /** Marca como página atual (aria-current=\"page\", sem bg, Medium 500). */\r\n  readonly current = input(false, { transform: booleanAttribute });\r\n\r\n  /** Bloqueia interação + opacity 0.5. */\r\n  readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n  /** Max-width CSS pra truncate (ex: \"180px\"). Vazio = sem limite. */\r\n  readonly maxWidth = input<string>('');\r\n\r\n  /**\r\n   * Clique no item, para trilha que NÃO navega por URL — hierarquia interna de uma\r\n   * tela (pastas de um formulário, níveis de um seletor), onde o destino é estado\r\n   * do componente e não uma rota.\r\n   *\r\n   * Só emite no item sem `href` nem `routerLink`, que é exatamente o ramo que o\r\n   * parent já renderizava como `<button>` — e cujo clique, antes disto, não tinha\r\n   * para onde ir. Item com link continua navegando pela âncora, preservando\r\n   * ctrl/cmd+clique e \"abrir em nova aba\"; item `current` ou `disabled` não emite.\r\n   */\r\n  readonly itemClick = output<void>();\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ViewEncapsulation,\r\n  computed,\r\n  contentChildren,\r\n  input,\r\n  numberAttribute,\r\n  signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterLink } from '@angular/router';\r\nimport { MatchaBreadcrumbItemComponent } from '../breadcrumb-item/breadcrumb-item.component';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\ninterface RenderItem {\r\n  label: string;\r\n  icon: string;\r\n  href: string;\r\n  routerLink: string | unknown[] | null | undefined;\r\n  current: boolean;\r\n  disabled: boolean;\r\n  maxWidth: string;\r\n  ellipsis: boolean;\r\n  /**\r\n   * Posição do item na lista ORIGINAL. Com truncation o índice do render não bate\r\n   * com o do `contentChildren`, e é pelo original que o clique acha de quem emitir.\r\n   * -1 no ellipsis, que não é item de ninguém.\r\n   */\r\n  sourceIndex: number;\r\n}\r\n\r\n/**\r\n * matcha-breadcrumb — trilha de navegação hierárquica (Figma DSV3 15831:35).\r\n *\r\n * Container que orquestra `<matcha-breadcrumb-item>` filhos, intercala separadores\r\n * (chevron-right) e aplica estilos por estado. A11y: role=navigation + aria-label.\r\n *\r\n * **Auto-truncation** via `[maxItems]`: quando a quantidade de items ultrapassa\r\n * o limite, mostra primeiro + `…` + N últimos. O `…` vira botão clicável que\r\n * expande pra mostrar tudo.\r\n *\r\n * **routerLink** suportado em items — apps Angular devem preferir sobre `href`\r\n * pra preservar navegação SPA, histórico e transições.\r\n *\r\n * Exemplo simples:\r\n *   <matcha-breadcrumb>\r\n *     <matcha-breadcrumb-item label=\"Home\" [routerLink]=\"['/']\" icon=\"home\"></matcha-breadcrumb-item>\r\n *     <matcha-breadcrumb-item label=\"Membros\" [routerLink]=\"['/members']\"></matcha-breadcrumb-item>\r\n *     <matcha-breadcrumb-item label=\"João Silva\" current></matcha-breadcrumb-item>\r\n *   </matcha-breadcrumb>\r\n *\r\n * Exemplo truncado:\r\n *   <matcha-breadcrumb [maxItems]=\"3\">\r\n *     <matcha-breadcrumb-item *ngFor=\"let it of trail()\"\r\n *                             [label]=\"it.label\" [routerLink]=\"it.link\" [current]=\"it.current\">\r\n *     </matcha-breadcrumb-item>\r\n *   </matcha-breadcrumb>\r\n *   <!-- Trail com 7 itens vira: Home > … > Pais > Atual (click no … expande) -->\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-breadcrumb',\r\n  templateUrl: './breadcrumb.component.html',\r\n  styleUrls: ['./breadcrumb.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, CommonModule, RouterLink],\r\n  host: {\r\n    'role': 'navigation',\r\n    'aria-label': 'Breadcrumb',\r\n  },\r\n})\r\nexport class MatchaBreadcrumbComponent {\r\n  /**\r\n   * Limite máximo de items visíveis. Quando ultrapassado, trunca pra\r\n   * `primeiro + … + (max-2) últimos`. Default 0 = sem limite.\r\n   * Em mobile (<600px), value efetivo é clamped pra 3 mesmo se maior.\r\n   */\r\n  readonly maxItems = input(0, { transform: numberAttribute });\r\n\r\n  /** Signal-based content query — reativo quando lista muda. */\r\n  readonly items = contentChildren(MatchaBreadcrumbItemComponent);\r\n\r\n  /** Estado de expansão do `…` (click-to-show-all). */\r\n  protected readonly _expanded = signal(false);\r\n\r\n  /** Items efetivos a renderizar — aplica truncation se maxItems está setado. */\r\n  readonly renderItems = computed<RenderItem[]>(() => {\r\n    const all: RenderItem[] = this.items().map((it, index) => ({\r\n      label:       it.label(),\r\n      icon:        it.icon(),\r\n      href:        it.href(),\r\n      routerLink:  it.routerLink(),\r\n      current:     it.current(),\r\n      disabled:    it.disabled(),\r\n      maxWidth:    it.maxWidth(),\r\n      ellipsis:    false,\r\n      sourceIndex: index,\r\n    }));\r\n\r\n    const max = this.maxItems();\r\n    if (this._expanded() || !max || all.length <= max) return all;\r\n\r\n    // Trunca: primeiro + ellipsis + (max - 2) últimos. Min 1 último.\r\n    const lastN = Math.max(1, max - 2);\r\n    const ellipsisItem: RenderItem = {\r\n      label: '…', icon: '', href: '', routerLink: null,\r\n      current: false, disabled: false, maxWidth: '', ellipsis: true, sourceIndex: -1,\r\n    };\r\n    return [all[0], ellipsisItem, ...all.slice(all.length - lastN)];\r\n  });\r\n\r\n  /** Toggle: revela items hidden ou recolhe pra forma truncada. */\r\n  toggleExpand(): void {\r\n    this._expanded.set(!this._expanded());\r\n  }\r\n\r\n  /**\r\n   * Clique no item sem link — o único ramo que o template renderiza como `<button>`.\r\n   * Emite no `matcha-breadcrumb-item` correspondente, para o consumer escutar no\r\n   * proprio item (`(itemClick)`) em vez de mapear indice.\r\n   */\r\n  onItemClick(sourceIndex: number): void {\r\n    this.items()[sourceIndex]?.itemClick.emit();\r\n  }\r\n}\r\n","<ol class=\"breadcrumb-list\">\r\n  @for (item of renderItems(); track $index; let last = $last) {\r\n    <li class=\"breadcrumb-li\">\r\n      @if (item.ellipsis) {\r\n        @if (maxItems()) {\r\n          <!-- Ellipsis CLICÁVEL — expande quando maxItems está ativo. NÃO é disabled. -->\r\n          <button type=\"button\"\r\n                  class=\"breadcrumb-item-link breadcrumb-ellipsis\"\r\n                  (click)=\"toggleExpand()\"\r\n                  [attr.aria-expanded]=\"_expanded()\"\r\n                  [attr.aria-label]=\"_expanded() ? 'Recolher trilha' : 'Expandir trilha completa'\">\r\n            <span class=\"breadcrumb-state\" aria-hidden=\"true\"></span>\r\n            <span class=\"breadcrumb-text\">…</span>\r\n          </button>\r\n        } @else {\r\n          <!-- Ellipsis estático (consumer manual) — sem click handler -->\r\n          <span class=\"breadcrumb-item-link breadcrumb-ellipsis breadcrumb-ellipsis--static\" aria-hidden=\"true\">…</span>\r\n        }\r\n      } @else if (item.current) {\r\n        <span class=\"breadcrumb-item-current\"\r\n              aria-current=\"page\"\r\n              [style.max-width]=\"item.maxWidth || null\">\r\n          @if (item.icon) {\r\n            <matcha-icon [name]=\"item.icon\" size=\"sm\"></matcha-icon>\r\n          }\r\n          <span class=\"breadcrumb-text\">{{ item.label }}</span>\r\n        </span>\r\n      } @else if (item.disabled) {\r\n        <span class=\"breadcrumb-item-link breadcrumb-item-link--disabled\"\r\n              aria-disabled=\"true\"\r\n              [style.max-width]=\"item.maxWidth || null\">\r\n          @if (item.icon) {\r\n            <matcha-icon [name]=\"item.icon\" size=\"sm\"></matcha-icon>\r\n          }\r\n          <span class=\"breadcrumb-text\">{{ item.label }}</span>\r\n        </span>\r\n      } @else if (item.routerLink) {\r\n        <!-- routerLink — Angular Router, preserva SPA navigation -->\r\n        <a class=\"breadcrumb-item-link\"\r\n           [routerLink]=\"item.routerLink\"\r\n           [style.max-width]=\"item.maxWidth || null\">\r\n          <span class=\"breadcrumb-state\" aria-hidden=\"true\"></span>\r\n          @if (item.icon) {\r\n            <matcha-icon [name]=\"item.icon\" size=\"sm\"></matcha-icon>\r\n          }\r\n          <span class=\"breadcrumb-text\">{{ item.label }}</span>\r\n        </a>\r\n      } @else if (item.href) {\r\n        <!-- href plain — full page reload. Em apps Angular, prefira routerLink. -->\r\n        <a class=\"breadcrumb-item-link\"\r\n           [href]=\"item.href\"\r\n           [style.max-width]=\"item.maxWidth || null\">\r\n          <span class=\"breadcrumb-state\" aria-hidden=\"true\"></span>\r\n          @if (item.icon) {\r\n            <matcha-icon [name]=\"item.icon\" size=\"sm\"></matcha-icon>\r\n          }\r\n          <span class=\"breadcrumb-text\">{{ item.label }}</span>\r\n        </a>\r\n      } @else {\r\n        <!-- Sem href nem routerLink: button que emite (itemClick) no item. Serve a\r\n             trilha que nao navega por URL — hierarquia interna de uma tela, onde o\r\n             destino e estado do componente e nao rota. -->\r\n        <button type=\"button\"\r\n                class=\"breadcrumb-item-link\"\r\n                (click)=\"onItemClick(item.sourceIndex)\"\r\n                [style.max-width]=\"item.maxWidth || null\">\r\n          <span class=\"breadcrumb-state\" aria-hidden=\"true\"></span>\r\n          @if (item.icon) {\r\n            <matcha-icon [name]=\"item.icon\" size=\"sm\"></matcha-icon>\r\n          }\r\n          <span class=\"breadcrumb-text\">{{ item.label }}</span>\r\n        </button>\r\n      }\r\n\r\n      @if (!last) {\r\n        <matcha-icon class=\"breadcrumb-separator\"\r\n                     name=\"chevron-right\"\r\n                     size=\"sm\"\r\n                     aria-hidden=\"true\">\r\n        </matcha-icon>\r\n      }\r\n    </li>\r\n  }\r\n</ol>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { MatchaBreadcrumbItemComponent } from './breadcrumb-item/breadcrumb-item.component';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaBreadcrumbComponent,\r\n    MatchaBreadcrumbItemComponent,\r\n    MatchaIconModule\r\n  ],\r\n  exports: [\r\n    MatchaBreadcrumbComponent,\r\n    MatchaBreadcrumbItemComponent\r\n  ]\r\n})\r\nexport class MatchaBreadcrumbModule {}\r\n","// =============================================================================\r\n// figma-flags.ts — AUTO-EXTRACTED via MCP + bootstrap (12 of 24 assets).\r\n// =============================================================================\r\n// Source: Figma DSV3 file (i04CyWczuVctwRjE5VbJh7), página `🚩 Bandeiras` (5594:11369)\r\n//   - matcha/flag/country  (3969:15347)  → 4 países — SVG real do lipis/flag-icons 4x3\r\n//                                          (Figma é PNG raster + emoji não renderiza em todo browser)\r\n//   - matcha/flag/payment  (3205:13569)  → 20 operadoras (SVG vetorial; 8 inline aqui)\r\n//\r\n// To regenerate (popula os 12 payments faltantes via Figma REST API):\r\n//   FIGMA_TOKEN=fig_xxx node scripts/matcha-flag/extract-figma-flags.js\r\n// =============================================================================\r\n\r\nexport type FigmaFlagSet = 'country' | 'payment';\r\n\r\nexport interface FigmaFlagAsset {\r\n    label: string;\r\n    viewBox: string;\r\n    width: number;\r\n    height: number;\r\n    /** SVG inner content (sem `<svg>` wrapper). Pra payment. */\r\n    svg?: string;\r\n    /** Unicode emoji (pra country — flag PNG no Figma é raster, emoji é o canon). */\r\n    emoji?: string;\r\n    /** Country dial code (ex. +55) — pra `<matcha-flag set=\"country\">` em `matcha-phone`. */\r\n    dial?: string;\r\n}\r\n\r\nexport type FigmaFlagRegistry = Record<FigmaFlagSet, Record<string, FigmaFlagAsset>>;\r\n\r\n// ── Country flags ────────────────────────────────────────────────────────────\r\n// SVGs reais (lipis/flag-icons 4x3) inlinados pra renderizar em todo browser sem\r\n// depender de emoji unicode (Windows Chrome não renderiza 🇧🇷 nativamente). ES é\r\n// composição manual (3 stripes red-yellow-red) — coat of arms oficial é 91KB.\r\n// Pra adicionar país: fetch lipis/flags/4x3/<iso>.svg + entry aqui c/ dial code.\r\nconst COUNTRY: Record<string, FigmaFlagAsset> = {\r\n    brasil: {\r\n        label: 'Brasil', viewBox: '0 0 640 480', width: 22, height: 16, dial: '+55',\r\n        svg: `<g stroke-width=\"1pt\"> <path fill=\"#229e45\" fill-rule=\"evenodd\" d=\"M0 0h640v480H0z\"/> <path fill=\"#f8e509\" fill-rule=\"evenodd\" d=\"m321.4 436 301.5-195.7L319.6 44 17.1 240.7z\"/> <path fill=\"#2b49a3\" fill-rule=\"evenodd\" d=\"M452.8 240c0 70.3-57.1 127.3-127.6 127.3A127.4 127.4 0 1 1 452.8 240\"/> <path fill=\"#ffffef\" fill-rule=\"evenodd\" d=\"m283.3 316.3-4-2.3-4 2 .9-4.5-3.2-3.4 4.5-.5 2.2-4 1.9 4.2 4.4.8-3.3 3m86 26.3-3.9-2.3-4 2 .8-4.5-3.1-3.3 4.5-.5 2.1-4.1 2 4.2 4.4.8-3.4 3.1m-36.2-30-3.4-2-3.5 1.8.8-3.9-2.8-2.9 4-.4 1.8-3.6 1.6 3.7 3.9.7-3 2.7m87-8.5-3.4-2-3.5 1.8.8-3.9-2.7-2.8 3.9-.4 1.8-3.5 1.6 3.6 3.8.7-2.9 2.6m-87.3-22-4-2.2-4 2 .8-4.6-3.1-3.3 4.5-.5 2.1-4.1 2 4.2 4.4.8-3.4 3.2m-104.6-35-4-2.2-4 2 1-4.6-3.3-3.3 4.6-.5 2-4.1 2 4.2 4.4.8-3.3 3.1m13.3 57.2-4-2.3-4 2 .9-4.5-3.2-3.3 4.5-.6 2.1-4 2 4.2 4.4.8-3.3 3.1m132-67.3-3.6-2-3.6 1.8.8-4-2.8-3 4-.5 1.9-3.6 1.7 3.8 4 .7-3 2.7m-6.7 38.3-2.7-1.6-2.9 1.4.6-3.2-2.2-2.3 3.2-.4 1.5-2.8 1.3 3 3 .5-2.2 2.2m-142.2 50.4-2.7-1.5-2.7 1.3.6-3-2.1-2.2 3-.4 1.4-2.7 1.3 2.8 3 .6-2.3 2M419 299.8l-2.2-1.1-2.2 1 .5-2.3-1.7-1.6 2.4-.3 1.2-2 1 2 2.5.5-1.9 1.5\"/> <path fill=\"#ffffef\" fill-rule=\"evenodd\" d=\"m219.3 287.6-2.7-1.5-2.7 1.3.6-3-2.1-2.2 3-.4 1.4-2.7 1.3 2.8 3 .6-2.3 2\"/> <path fill=\"#ffffef\" fill-rule=\"evenodd\" d=\"m219.3 287.6-2.7-1.5-2.7 1.3.6-3-2.1-2.2 3-.4 1.4-2.7 1.3 2.8 3 .6-2.3 2m42.3 3-2.6-1.4-2.7 1.3.6-3-2.1-2.2 3-.4 1.4-2.7 1.3 2.8 3 .5-2.3 2.1m-4.8 17-2.6-1.5-2.7 1.4.6-3-2.1-2.3 3-.4 1.4-2.7 1.3 2.8 3 .6-2.3 2m87.4-22.2-2.6-1.6-2.8 1.4.6-3-2-2.3 3-.3 1.4-2.7 1.2 2.8 3 .5-2.2 2.1m-25.1 3-2.7-1.5-2.7 1.4.6-3-2-2.3 3-.3 1.4-2.8 1.2 2.9 3 .5-2.2 2.1m-68.8-5.8-1.7-1-1.7.8.4-1.9-1.3-1.4 1.9-.2.8-1.7.8 1.8 1.9.3-1.4 1.3m167.8 45.4-2.6-1.5-2.7 1.4.6-3-2.1-2.3 3-.4 1.4-2.7 1.3 2.8 3 .6-2.3 2m-20.8 6-2.2-1.4-2.3 1.2.5-2.6-1.7-1.8 2.5-.3 1.2-2.3 1 2.4 2.5.4-1.9 1.8m10.4 2.3-2-1.2-2.1 1 .4-2.3-1.6-1.7 2.3-.3 1.1-2 1 2 2.3.5-1.7 1.6m29.1-22.8-2-1-2 1 .5-2.3-1.6-1.7 2.3-.3 1-2 1 2.1 2.1.4-1.6 1.6m-38.8 41.8-2.5-1.4-2.7 1.2.6-2.8-2-2 3-.3 1.3-2.5 1.2 2.6 3 .5-2.3 1.9m.6 14.2-2.4-1.4-2.4 1.3.6-2.8-1.9-2 2.7-.4 1.2-2.5 1.1 2.6 2.7.5-2 2m-19-23.1-1.9-1.2-2 1 .4-2.2-1.5-1.7 2.2-.2 1-2 1 2 2.2.4-1.6 1.6m-17.8 2.3-2-1.2-2 1 .5-2.2-1.6-1.7 2.3-.2 1-2 1 2 2.1.4-1.6 1.6m-30.4-24.6-2-1.1-2 1 .5-2.3-1.6-1.6 2.2-.3 1-2 1 2 2.2.5-1.6 1.5m3.7 57-1.6-.9-1.8.9.4-2-1.3-1.4 1.9-.2.9-1.7.8 1.8 1.9.3-1.4 1.3m-46.2-86.6-4-2.3-4 2 .9-4.5-3.2-3.3 4.5-.6 2.2-4 1.9 4.2 4.4.8-3.3 3.1\"/> <path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M444.4 285.8a124.6 124.6 0 0 0 5.8-19.8c-67.8-59.5-143.3-90-238.7-83.7a124.5 124.5 0 0 0-8.5 20.9c113-10.8 196 39.2 241.4 82.6\"/> <path fill=\"#309e3a\" d=\"m414 252.4 2.3 1.3a3.4 3.4 0 0 0-.3 2.2 3 3 0 0 0 1.4 1.7c.7.5 1.4.8 2 .7.6 0 1-.3 1.3-.7a1.3 1.3 0 0 0 .2-.9 2.3 2.3 0 0 0-.5-1c-.2-.3-.7-1-1.5-1.8a7.7 7.7 0 0 1-1.8-3 3.7 3.7 0 0 1 2-4.4 3.8 3.8 0 0 1 2.3-.2 7 7 0 0 1 2.6 1.2c1.4 1 2.3 2 2.6 3.2a4.1 4.1 0 0 1-.6 3.3l-2.4-1.5c.3-.6.4-1.2.2-1.7-.1-.5-.5-1-1.2-1.4a3.2 3.2 0 0 0-1.8-.7 1 1 0 0 0-.9.5c-.2.3-.2.6-.1 1s.6 1.2 1.6 2.2c1 1 1.6 1.9 2 2.5a3.9 3.9 0 0 1-.3 4.2 4.1 4.1 0 0 1-1.9 1.5 4 4 0 0 1-2.4.3c-.9-.2-1.8-.6-2.8-1.3-1.5-1-2.4-2.1-2.7-3.3a5.4 5.4 0 0 1 .6-4zm-11.6-7.6 2.5 1.3a3.4 3.4 0 0 0-.2 2.2 3 3 0 0 0 1.4 1.6c.8.5 1.4.7 2 .6.6 0 1-.3 1.3-.8a1.3 1.3 0 0 0 .2-.8c0-.3-.2-.7-.5-1a34.6 34.6 0 0 0-1.6-1.8c-1.1-1.1-1.8-2-2-2.8a3.7 3.7 0 0 1 .4-3.1 3.6 3.6 0 0 1 1.6-1.4 3.8 3.8 0 0 1 2.2-.3 7 7 0 0 1 2.6 1c1.5 1 2.4 2 2.7 3.1a4.1 4.1 0 0 1-.4 3.4l-2.5-1.4c.3-.7.4-1.2.2-1.7s-.6-1-1.3-1.4a3.2 3.2 0 0 0-1.9-.6 1 1 0 0 0-.8.5c-.2.3-.2.6-.1 1s.7 1.2 1.7 2.2c1 1 1.7 1.8 2 2.4a3.9 3.9 0 0 1 0 4.2 4.2 4.2 0 0 1-1.8 1.6 4 4 0 0 1-2.4.3 8 8 0 0 1-2.9-1.1 6 6 0 0 1-2.8-3.2 5.4 5.4 0 0 1 .4-4m-14.2-3.8 7.3-12 8.8 5.5-1.2 2-6.4-4-1.6 2.7 6 3.7-1.3 2-6-3.7-2 3.3 6.7 4-1.2 2zm-20.7-17 1.1-2 5.4 2.7-2.5 5c-.8.2-1.8.3-3 .2a9.4 9.4 0 0 1-3.3-1 7.7 7.7 0 0 1-3-2.6 6 6 0 0 1-1-3.5 8.6 8.6 0 0 1 1-3.7 8 8 0 0 1 2.6-3 6.2 6.2 0 0 1 3.6-1.1c1 0 2 .3 3.2 1 1.6.7 2.6 1.7 3.1 2.8a5 5 0 0 1 .3 3.5l-2.7-.8a3 3 0 0 0-.2-2c-.3-.6-.8-1-1.6-1.4a3.8 3.8 0 0 0-3.1-.3c-1 .3-1.9 1.2-2.6 2.6-.7 1.4-1 2.7-.7 3.8a3.7 3.7 0 0 0 2 2.4c.5.3 1.1.5 1.7.5a6 6 0 0 0 1.8 0l.8-1.6zm-90.2-22.3 2-14 4.2.7 1.1 9.8 3.9-9 4.2.6-2 13.8-2.7-.4 1.7-10.9-4.4 10.5-2.7-.4-1.1-11.3-1.6 11zm-14.1-1.7 1.3-14 10.3 1-.2 2.4-7.5-.7-.3 3 7 .7-.3 2.4-7-.7-.3 3.8 7.8.7-.2 2.4z\"/> <g stroke-opacity=\".5\"> <path fill=\"#309e3a\" d=\"M216.5 191.3c0-1.5.3-2.6.7-3.6a6.7 6.7 0 0 1 1.4-1.9 5.4 5.4 0 0 1 1.8-1.2c1-.3 2-.5 3-.5 2.1 0 3.7.8 5 2a7.4 7.4 0 0 1 1.6 5.5c0 2.2-.7 4-2 5.3a6.5 6.5 0 0 1-5 1.7 6.6 6.6 0 0 1-4.8-2 7.3 7.3 0 0 1-1.7-5.3\"/> <path fill=\"#f7ffff\" d=\"M219.4 191.3c0 1.5.3 2.7 1 3.6.7.8 1.6 1.3 2.8 1.3a3.5 3.5 0 0 0 2.8-1.1c.7-.8 1-2 1.1-3.7 0-1.6-.2-2.8-1-3.6a3.5 3.5 0 0 0-2.7-1.3 3.6 3.6 0 0 0-2.8 1.2c-.8.8-1.1 2-1.2 3.6\"/> </g> <g stroke-opacity=\".5\"> <path fill=\"#309e3a\" d=\"m233 198.5.2-14h6c1.5 0 2.5.2 3.2.5.7.2 1.2.7 1.6 1.3s.6 1.4.6 2.3a3.8 3.8 0 0 1-1 2.6 4.5 4.5 0 0 1-2.7 1.2l1.5 1.2c.4.4.9 1.2 1.5 2.3l1.7 2.8h-3.4l-2-3.2-1.4-2a2.1 2.1 0 0 0-.9-.6 5 5 0 0 0-1.4-.2h-.6v5.8z\"/> <path fill=\"#fff\" d=\"M236 190.5h2c1.4 0 2.3 0 2.6-.2.3 0 .6-.3.8-.5s.3-.7.3-1c0-.6-.1-1-.4-1.2-.2-.3-.6-.5-1-.6h-2l-2.3-.1z\"/> </g> <g stroke-opacity=\".5\"> <path fill=\"#309e3a\" d=\"m249 185.2 5.2.3c1.1 0 2 .1 2.6.3a4.7 4.7 0 0 1 2 1.4 6 6 0 0 1 1.2 2.4c.3.9.4 2 .3 3.3a9.3 9.3 0 0 1-.5 3c-.4 1-1 1.8-1.7 2.4a5 5 0 0 1-2 1c-.6.2-1.5.2-2.5.2l-5.3-.3z\"/> <path fill=\"#fff\" d=\"m251.7 187.7-.5 9.3h3.8c.5 0 .9-.2 1.2-.5.3-.3.6-.7.8-1.3.2-.6.4-1.5.4-2.6l-.1-2.5a3.2 3.2 0 0 0-.8-1.4 2.7 2.7 0 0 0-1.2-.7 13 13 0 0 0-2.3-.3z\"/> </g> <g stroke-opacity=\".5\"> <path fill=\"#309e3a\" d=\"m317.6 210.2 3.3-13.6 4.4 1 3.2 1c.7.4 1.3 1 1.6 1.9.4.8.4 1.7.2 2.8-.2.8-.5 1.5-1 2a3.9 3.9 0 0 1-3 1.4c-.7 0-1.7-.2-3-.5l-1.7-.5-1.2 5.2z\"/> <path fill=\"#fff\" d=\"m323 199.6-.8 3.8 1.5.4c1 .2 1.8.4 2.2.3a1.9 1.9 0 0 0 1.6-1.5c0-.5 0-.9-.2-1.3a2 2 0 0 0-1-.9l-1.9-.5-1.3-.3z\"/> </g> <g stroke-opacity=\".5\"> <path fill=\"#309e3a\" d=\"m330.6 214.1 4.7-13.2 5.5 2c1.5.5 2.4 1 3 1.4.5.5.9 1 1 1.8s.2 1.5 0 2.3c-.4 1-1 1.7-1.8 2.2-.8.4-1.8.5-3 .3.4.5.8 1 1 1.6l.8 2.7.6 3.1-3.1-1.1-1-3.6a19.5 19.5 0 0 0-.7-2.4 2.1 2.1 0 0 0-.6-.8c-.2-.3-.6-.5-1.3-.7l-.5-.2-2 5.6z\"/> <path fill=\"#fff\" d=\"m336 207.4 1.9.7c1.3.5 2.1.7 2.5.7.3 0 .6 0 .9-.3.3-.2.5-.5.6-.9.2-.4.2-.8 0-1.2a1.7 1.7 0 0 0-.8-.9l-2-.7-2-.7-1.2 3.3z\"/> </g> <g stroke-opacity=\".5\"> <path fill=\"#309e3a\" d=\"M347 213.6a9 9 0 0 1 1.7-3.2 6.6 6.6 0 0 1 1.8-1.5 6 6 0 0 1 2-.7c1 0 2 0 3.1.4a6.5 6.5 0 0 1 4.2 3.3c.8 1.6.8 3.5.2 5.7a7.4 7.4 0 0 1-3.4 4.5c-1.5.9-3.3 1-5.2.4a6.6 6.6 0 0 1-4.2-3.3 7.3 7.3 0 0 1-.2-5.6\"/> <path fill=\"#fff\" d=\"M349.8 214.4c-.4 1.5-.5 2.8 0 3.8s1.2 1.6 2.3 2c1 .3 2 .2 3-.4 1-.5 1.6-1.6 2.1-3.2.5-1.5.5-2.7 0-3.7a3.5 3.5 0 0 0-2.2-2 3.6 3.6 0 0 0-3 .3c-1 .6-1.7 1.6-2.2 3.2\"/> </g> <g stroke-opacity=\".5\"> <path fill=\"#309e3a\" d=\"m374.3 233.1 6.4-12.4 5.3 2.7a10 10 0 0 1 2.7 1.9c.5.5.8 1.1.8 1.9s0 1.5-.4 2.2a3.8 3.8 0 0 1-2 2c-1 .2-2 .2-3.1-.2.4.6.6 1.2.8 1.7.2.6.3 1.5.4 2.8l.2 3.2-3-1.5-.4-3.7a20 20 0 0 0-.3-2.5 2 2 0 0 0-.5-1l-1.2-.7-.5-.3-2.7 5.2z\"/> <path fill=\"#fff\" d=\"m380.5 227.2 1.9 1c1.2.6 2 1 2.3 1 .3 0 .7 0 1-.2.3-.1.5-.4.7-.8.2-.4.3-.8.2-1.2a2 2 0 0 0-.7-1 23.7 23.7 0 0 0-1.8-1l-2-1z\"/> </g> <g stroke-opacity=\".5\"> <path fill=\"#309e3a\" d=\"M426.1 258.7a8.9 8.9 0 0 1 2.5-2.6 6.6 6.6 0 0 1 2.2-.9 5.5 5.5 0 0 1 2.2 0c1 .2 1.9.6 2.8 1.2a6.6 6.6 0 0 1 3 4.4c.3 1.7-.2 3.6-1.4 5.5a7.3 7.3 0 0 1-4.5 3.3 6.5 6.5 0 0 1-5.2-1.1 6.6 6.6 0 0 1-3-4.4c-.3-1.8.2-3.6 1.4-5.4\"/> <path fill=\"#fff\" d=\"M428.6 260.3c-1 1.3-1.3 2.5-1.1 3.6a3.6 3.6 0 0 0 1.6 2.5c1 .7 2 .9 3 .6 1-.3 2-1 2.9-2.4.9-1.4 1.3-2.6 1.1-3.6-.1-1-.7-1.9-1.6-2.6s-2-.8-3-.5c-1 .2-2 1-3 2.4z\"/> </g> <path fill=\"#309e3a\" d=\"m301.8 204.5 2.3-9.8 7.2 1.7-.3 1.6-5.3-1.2-.5 2.2 4.9 1.1-.4 1.7-4.9-1.2-.6 2.7 5.5 1.3-.4 1.6z\"/> </g>`,\r\n    },\r\n    'estados-unidos': {\r\n        label: 'Estados Unidos', viewBox: '0 0 640 480', width: 22, height: 16, dial: '+1',\r\n        svg: `<path fill=\"#bd3d44\" d=\"M0 0h640v480H0\"/> <path stroke=\"#fff\" stroke-width=\"37\" d=\"M0 55.3h640M0 129h640M0 203h640M0 277h640M0 351h640M0 425h640\"/> <path fill=\"#192f5d\" d=\"M0 0h364.8v258.5H0\"/> <marker id=\"us-a\" markerHeight=\"30\" markerWidth=\"30\"> <path fill=\"#fff\" d=\"m14 0 9 27L0 10h28L5 27z\"/> </marker> <path fill=\"none\" marker-mid=\"url(#us-a)\" d=\"m0 0 16 11h61 61 61 61 60L47 37h61 61 60 61L16 63h61 61 61 61 60L47 89h61 61 60 61L16 115h61 61 61 61 60L47 141h61 61 60 61L16 166h61 61 61 61 60L47 192h61 61 60 61L16 218h61 61 61 61 60z\"/>`,\r\n    },\r\n    portugal: {\r\n        label: 'Portugal', viewBox: '0 0 640 480', width: 22, height: 16, dial: '+351',\r\n        svg: `<path fill=\"red\" d=\"M256 0h384v480H256z\"/> <path fill=\"#060\" d=\"M0 0h256v480H0z\"/> <g fill=\"#ff0\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\".6\"> <path d=\"M339.5 306.2c-32.3-1-180-93.2-181-108l8.1-13.5c14.7 21.3 165.7 111 180.6 107.8z\"/> <path d=\"M164.9 182.8c-2.9 7.8 38.6 33.4 88.4 63.8 49.9 30.3 92.9 49 96 46.4l1.5-2.8c-.6 1-2 1.3-4.3.6-13.5-3.9-48.6-20-92.1-46.4-43.6-26.4-81.4-50.7-87.3-61a6.3 6.3 0 0 1-.6-3.1h-.2l-1.2 2.2zm175.3 123.8c-.5 1-1.6 1-3.5.8-12-1.3-48.6-19.1-91.9-45-50.4-30.2-92-57.6-87.4-64.8l1.2-2.2.2.1c-4 12.2 82.1 61.4 87.2 64.6 49.8 30.8 91.8 48.9 95.5 44.2z\"/> <path d=\"M256.2 207.2c32.2-.3 72-4.4 95-13.6l-5-8c-13.5 7.5-53.5 12.5-90.3 13.2-43.4-.4-74.1-4.5-89.5-14.8l-4.6 8.6c28.2 12 57.2 14.5 94.4 14.6\"/> <path d=\"M352.5 193.8c-.8 1.3-15.8 6.4-37.8 10.2a381.2 381.2 0 0 1-58.6 4.3 416.1 416.1 0 0 1-56.2-3.6c-23.1-3.6-35-8.6-39.5-10.4l1.1-2.2c12.7 5 24.7 8 38.7 10.2A411.5 411.5 0 0 0 256 206a391.8 391.8 0 0 0 58.3-4.3c22.5-3.7 34.8-8.4 36.6-10.5zm-4.4-8.1c-2.4 2-14.6 6.3-36 9.7a388.2 388.2 0 0 1-55.8 4c-22 0-40.1-1.6-53.8-3.6-21.8-2.8-33.4-8-37.6-9.4l1.3-2.2c3.3 1.7 14.4 6.2 36.5 9.3a385 385 0 0 0 53.6 3.4 384 384 0 0 0 55.4-4c21.5-3 33.1-8.4 34.9-9.8zM150.3 246c19.8 10.7 63.9 16 105.6 16.4 38 .1 87.4-5.8 105.9-15.6l-.5-10.7c-5.8 9-58.8 17.7-105.8 17.4-47-.4-90.7-7.6-105.3-17v9.5\"/> <path d=\"M362.8 244.5v2.5c-2.8 3.4-20.2 8.4-42 12a434 434 0 0 1-65.4 4.4 400 400 0 0 1-62-4.3 155 155 0 0 1-44.4-12v-2.9c9.7 6.4 35.9 11.2 44.7 12.6 15.8 2.4 36.1 4.2 61.7 4.2 26.9 0 48.4-1.9 65-4.4 15.7-2.3 38-8.2 42.4-12.1m0-9v2.5c-2.8 3.3-20.2 8.3-42 11.9a434 434 0 0 1-65.4 4.5 414 414 0 0 1-62-4.3 155 155 0 0 1-44.4-12v-3c9.7 6.5 36 11.2 44.7 12.6a408 408 0 0 0 61.7 4.3c26.9 0 48.5-2 65-4.5 15.7-2.2 38-8.1 42.4-12m-107 68.8c-45.6-.2-84.7-12.4-93-14.4l6 9.4a249.8 249.8 0 0 0 87.4 14.3c34.7-1 65-3.7 86.3-14.1l6.2-9.8c-14.5 6.9-64 14.6-93 14.6\"/> <path d=\"M344.9 297.3a143 143 0 0 1-2.8 4c-10 3.6-26 7.4-32.6 8.4a295.5 295.5 0 0 1-53.7 5c-40.4-.6-73.5-8.5-89-15.3l-1.3-2.1.2-.4 2.1.9a286.5 286.5 0 0 0 88.2 14.5c18.8 0 37.5-2.1 52.6-4.8 23.2-4.7 32.6-8.2 35.5-9.8l.7-.4zm5.3-8.8a287.2 287.2 0 0 1-2 3.5c-5.4 2-20 6.2-41.3 9.2-14 1.9-22.7 3.8-50.6 4.3a347.4 347.4 0 0 1-94.2-14L161 289a390 390 0 0 0 95.4 14c25.5-.5 36.4-2.4 50.3-4.3 24.8-3.8 37.3-8 41-9.1a2.9 2.9 0 0 0 0-.2l2.6-1z\"/> <path d=\"M350.8 237.6c.1 30-15.3 57-27.6 68.8a99.3 99.3 0 0 1-67.8 28.2c-30.3.5-58.8-19.2-66.5-27.9a101 101 0 0 1-27.5-67.4c1.8-32.8 14.7-55.6 33.3-71.3a99.6 99.6 0 0 1 64.2-22.7 98.2 98.2 0 0 1 71 35.6c12.5 15.2 18 31.7 20.9 56.7M255.6 135a106 106 0 0 1 106 105.2 105.6 105.6 0 1 1-211.4 0c-.1-58 47.3-105.2 105.4-105.2\"/> <path d=\"M255.9 134.5c58.2 0 105.6 47.4 105.6 105.6S314.1 345.7 256 345.7s-105.6-47.4-105.6-105.6c0-58.2 47.4-105.6 105.6-105.6zM152.6 240c0 56.8 46.7 103.3 103.3 103.3 56.6 0 103.3-46.5 103.3-103.3s-46.7-103.3-103.3-103.3S152.6 183.2 152.6 240\"/> <path d=\"M256 143.3a97 97 0 0 1 96.7 96.7 97.1 97.1 0 0 1-96.7 96.8c-53 0-96.7-43.6-96.7-96.8a97.1 97.1 0 0 1 96.7-96.7M161.6 240c0 52 42.6 94.4 94.4 94.4s94.4-42.5 94.4-94.4c0-52-42.6-94.4-94.4-94.4a94.8 94.8 0 0 0-94.4 94.4\"/> <path d=\"M260.3 134h-9.1v212.3h9z\"/> <path d=\"M259.3 132.8h2.3v214.7h-2.2V132.8zm-9 0h2.4v214.7h-2.3z\"/> <path d=\"M361.6 244.2v-7.8l-6.4-6-36.3-9.6-52.2-5.3-63 3.2-44.8 10.6-9 6.7v7.9l22.9-10.3 54.4-8.5h52.3l38.4 4.2 26.6 6.4z\"/> <path d=\"M256 223.8c24.9 0 49 2.3 68.3 6 19.8 4 33.7 9 38.5 14.5v2.8c-5.8-7-24.5-12-39-15-19-3.6-43-6-67.9-6-26.1 0-50.5 2.6-69.3 6.2-15 3-35.1 9-37.6 14.8v-2.9c1.3-4 16.3-10 37.3-14.3 18.9-3.7 43.3-6.1 69.6-6.1zm0-9.1a383 383 0 0 1 68.3 6c19.8 4 33.7 9 38.5 14.6v2.7c-5.8-6.9-24.5-12-39-14.9-19-3.7-43-6-67.9-6a376 376 0 0 0-69.2 6.2c-14.5 2.7-35.4 8.9-37.7 14.7v-2.8c1.4-4 16.6-10.3 37.3-14.3 19-3.7 43.3-6.2 69.7-6.2m-.6-46.2c39.3-.2 73.6 5.5 89.3 13.5l5.7 10c-13.6-7.4-50.6-15-94.9-14-36.1.3-74.7 4-94 14.4l6.8-11.4c15.9-8.3 53.3-12.5 87.1-12.5\"/> <path d=\"M256 176.7a354 354 0 0 1 61.3 4.3c16 3 31.3 7.4 33.5 9.8l1.7 3c-5.3-3.4-18.6-7.3-35.6-10.5s-38.7-4.3-61-4.2c-25.3-.1-45 1.2-61.8 4.2a108.9 108.9 0 0 0-33.3 10.3l1.7-3.1c6-3 15.3-6.7 31.1-9.6 17.5-3.2 37.4-4.1 62.4-4.2m0-9c21.4-.2 42.6 1 59.1 4a96 96 0 0 1 30.6 10l2.5 4c-4.2-4.7-20-9.2-34.1-11.6-16.4-2.9-36.7-4-58.1-4.2a361 361 0 0 0-59.5 4.4 97.3 97.3 0 0 0-29.6 9.1l2.2-3.3c5.8-3 15.2-5.8 27-8.1a357 357 0 0 1 59.9-4.4zM308.4 284a276.4 276.4 0 0 0-52.5-4c-65.5.8-86.6 13.5-89.2 17.3l-5-8c16.8-12 52.4-18.8 94.6-18.2 21.9.4 40.8 1.9 56.6 5l-4.5 8\"/> <path d=\"M255.6 278.9c18.2.3 36 1 53.3 4.2l-1.2 2.2c-16-3-33.2-4-52-4-24.3-.2-48.7 2.1-70 8.2-6.7 1.9-17.8 6.2-19 9.8l-1.2-2c.4-2.2 7-6.6 19.6-10 24.4-7 47.2-8.3 70.5-8.4m.8-9.2a327 327 0 0 1 57.3 5l-1.3 2.3a299 299 0 0 0-56-4.9c-24.2 0-49.9 1.8-73.3 8.6-7.5 2.2-20.6 7-21 10.7l-1.2-2.2c.2-3.4 11.5-7.9 21.7-10.8 23.5-6.9 49.3-8.6 73.8-8.7\"/> <path d=\"m349.4 290.5-7.8 12.3-22.7-20.1-58.6-39.5-66.2-36.3-34.3-11.7 7.3-13.6 2.5-1.3 21.3 5.3 70.4 36.3 40.6 25.6L336 272l13.9 16z\"/> <path d=\"M158.6 195.5c6-4 50.2 15.6 96.6 43.6 46.1 28 90.3 59.6 86.3 65.5l-1.3 2.1-.6.5c.1-.1.8-1 0-3.1-2-6.5-33.4-31.5-85.3-62.9-50.7-30.1-92.9-48.3-97-43.1zM351 290.4c3.8-7.6-37.2-38.5-88.1-68.6-52-29.5-89.6-46.9-96.5-41.7L165 183c0 .1 0-.2.4-.5 1.2-1 3.3-1 4.2-1 11.8.2 45.5 15.7 92.8 42.8 20.8 12 87.6 55 87.3 67 0 1 .1 1.2-.3 1.8l1.7-2.6z\"/> </g> <g transform=\"translate(0 26.7)scale(1.06667)\"> <path fill=\"#fff\" stroke=\"#000\" stroke-width=\".7\" d=\"M180.6 211a58.7 58.7 0 0 0 17.5 41.7 59 59 0 0 0 41.8 17.6 59.4 59.4 0 0 0 42-17.4 59 59 0 0 0 17.4-41.8v-79.2l-118.7-.2z\"/> <path fill=\"red\" stroke=\"#000\" stroke-width=\".5\" d=\"M183 211.1a56.4 56.4 0 0 0 16.8 40 57 57 0 0 0 40.2 16.8 56.9 56.9 0 0 0 40.2-16.6 56.4 56.4 0 0 0 16.7-40v-77H183v76.8m91-53.7v48.9l-.1 5.1a33.2 33.2 0 0 1-10 24 34 34 0 0 1-24 10c-9.4 0-17.7-4-23.9-10.2a34 34 0 0 1-10-24v-54z\"/> <g id=\"pt-e\"> <g id=\"pt-d\" fill=\"#ff0\" stroke=\"#000\" stroke-width=\".5\"> <path stroke=\"none\" d=\"M190.2 154.4c.1-5.5 4-6.8 4-6.8.1 0 4.3 1.4 4.3 6.9z\"/> <path d=\"m186.8 147.7-.7 6.3h4.2c0-5.2 4-6 4-6 .1 0 4 1.1 4.1 6h4.2l-.8-6.4zm-1 6.4h17c.3 0 .6.3.6.7 0 .5-.3.8-.6.8h-17c-.3 0-.6-.3-.6-.8 0-.4.3-.7.7-.7z\"/> <path d=\"M192 154c0-3.3 2.3-4.2 2.3-4.2s2.3 1 2.3 4.2H192m-5.8-9h16.3c.3 0 .6.4.6.8 0 .3-.3.6-.6.6h-16.3c-.3 0-.6-.3-.6-.7 0-.3.3-.6.6-.6zm.4 1.5H202c.3 0 .6.3.6.7 0 .4-.3.7-.6.7h-15.5c-.4 0-.6-.3-.6-.7 0-.4.2-.7.6-.7zm5-10.6h1.2v.8h.9v-.8h1.3v.9h.9v-1h1.2v2c0 .4-.2.6-.5.6h-4.4c-.3 0-.6-.2-.6-.5zm4.6 2.7.3 6.4h-4.3l.3-6.5h3.7\"/> <path id=\"pt-a\" d=\"M191 141.6v3.4h-4v-3.4z\"/> <use xlink:href=\"#pt-a\" width=\"100%\" height=\"100%\" x=\"10.6\"/> <path id=\"pt-b\" d=\"M186.3 139h1.2v1h.9v-1h1.2v1h.9v-1h1.2v2c0 .4-.2.6-.5.6h-4.3a.6.6 0 0 1-.6-.6z\"/> <use xlink:href=\"#pt-b\" width=\"100%\" height=\"100%\" x=\"10.6\"/> <path fill=\"#000001\" stroke=\"none\" d=\"M193.9 140.6c0-.6.9-.6.9 0v1.6h-.9z\"/> <path id=\"pt-c\" fill=\"#000001\" stroke=\"none\" d=\"M188.6 142.8c0-.6.8-.6.8 0v1.2h-.8z\"/> <use xlink:href=\"#pt-c\" width=\"100%\" height=\"100%\" x=\"10.6\"/> </g> <use xlink:href=\"#pt-d\" width=\"100%\" height=\"100%\" y=\"46.3\"/> <use xlink:href=\"#pt-d\" width=\"100%\" height=\"100%\" transform=\"rotate(-45.2 312.8 180)\"/> </g> <use xlink:href=\"#pt-d\" width=\"100%\" height=\"100%\" x=\"45.7\"/> <use xlink:href=\"#pt-e\" width=\"100%\" height=\"100%\" transform=\"matrix(-1 0 0 1 479.8 0)\"/> <g id=\"pt-f\" fill=\"#fff\"> <path fill=\"#039\" d=\"M232.6 202.4a8.3 8.3 0 0 0 2.2 5.7 7.2 7.2 0 0 0 5.3 2.4c2.1 0 4-1 5.3-2.4a8.3 8.3 0 0 0 2.2-5.7v-10.8h-15z\"/> <circle cx=\"236.1\" cy=\"195.7\" r=\"1.5\"/> <circle cx=\"244.4\" cy=\"195.7\" r=\"1.5\"/> <circle cx=\"240.2\" cy=\"199.7\" r=\"1.5\"/> <circle cx=\"236.1\" cy=\"203.9\" r=\"1.5\"/> <circle cx=\"244.4\" cy=\"203.9\" r=\"1.5\"/> </g> <use xlink:href=\"#pt-f\" width=\"100%\" height=\"100%\" y=\"-26\"/> <use xlink:href=\"#pt-f\" width=\"100%\" height=\"100%\" x=\"-20.8\"/> <use xlink:href=\"#pt-f\" width=\"100%\" height=\"100%\" x=\"20.8\"/> <use xlink:href=\"#pt-f\" width=\"100%\" height=\"100%\" y=\"25.8\"/> </g>`,\r\n    },\r\n    espanha: {\r\n        label: 'Espanha', viewBox: '0 0 640 480', width: 22, height: 16, dial: '+34',\r\n        svg: `<rect width=\"640\" height=\"120\" fill=\"#AA151B\"/><rect y=\"120\" width=\"640\" height=\"240\" fill=\"#F1BF00\"/><rect y=\"360\" width=\"640\" height=\"120\" fill=\"#AA151B\"/>`,\r\n    },\r\n};\r\n\r\n// ── Payment flags ────────────────────────────────────────────────────────────\r\n// Card-shaped SVGs (aaronfagan/svg-credit-card-payment-icons, viewBox 780×500)\r\n// pra cartões + lockups internacionais. BR-specific (pix, boleto, aura, alelo)\r\n// mantidos do Figma original. Pra atualizar cartões: aaronfagan repo + script.\r\nconst PAYMENT: Record<string, FigmaFlagAsset> = {\r\n    \"visa\": {\r\n        label: \"Visa\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<g clip-path=\"url(#clip0_6278_125833)\"><path d=\"M780 0H0V500H780V0Z\" fill=\"#1434CB\"/><path d=\"M489.823 143.111C442.988 143.111 401.134 167.393 401.134 212.256C401.134 263.706 475.364 267.259 475.364 293.106C475.364 303.989 462.895 313.731 441.6 313.731C411.377 313.731 388.789 300.119 388.789 300.119L379.123 345.391C379.123 345.391 405.145 356.889 439.692 356.889C490.898 356.889 531.19 331.415 531.19 285.784C531.19 231.419 456.652 227.971 456.652 203.981C456.652 195.455 466.887 186.114 488.122 186.114C512.081 186.114 531.628 196.014 531.628 196.014L541.087 152.289C541.087 152.289 519.818 143.111 489.823 143.111ZM61.3294 146.411L60.1953 153.011C60.1953 153.011 79.8988 156.618 97.645 163.814C120.495 172.064 122.122 176.868 125.971 191.786L167.905 353.486H224.118L310.719 146.411H254.635L198.989 287.202L176.282 167.861C174.199 154.203 163.651 146.411 150.74 146.411H61.3294ZM333.271 146.411L289.275 353.486H342.756L386.598 146.411H333.271ZM631.554 146.411C618.658 146.411 611.825 153.318 606.811 165.386L528.458 353.486H584.542L595.393 322.136H663.72L670.318 353.486H719.805L676.633 146.411H631.554ZM638.848 202.356L655.473 280.061H610.935L638.848 202.356Z\" fill=\"white\"/></g><defs><clipPath id=\"clip0_6278_125833\"><rect width=\"780\" height=\"500\" fill=\"white\"/></clipPath></defs>`,\r\n    },\r\n    \"mastercard-credito\": {\r\n        label: \"Mastercard Crédito\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<g clip-path=\"url(#clip0_6278_125825)\"><path d=\"M780 0H0V500H780V0Z\" fill=\"#253747\"/><path d=\"M211.053 467.045V438.109C211.053 427.041 204.311 419.793 192.736 419.793C186.949 419.793 180.657 421.703 176.33 427.996C172.959 422.715 168.127 419.793 160.879 419.793C156.047 419.793 151.215 421.254 147.395 426.535V420.748H137.281V467.045H147.395V441.481C147.395 433.278 151.721 429.401 158.463 429.401C165.205 429.401 168.577 433.727 168.577 441.481V467.045H178.69V441.481C178.69 433.278 183.522 429.401 189.759 429.401C196.501 429.401 199.872 433.727 199.872 441.481V467.045H211.053ZM361.068 420.748H344.662V406.758H334.549V420.748H325.391V429.906H334.549V451.145C334.549 461.764 338.875 468 350.449 468C354.776 468 359.608 466.539 362.979 464.629L360.057 455.92C357.135 457.831 353.764 458.336 351.348 458.336C346.516 458.336 344.606 455.415 344.606 450.639V429.906H361.012V420.748H361.068ZM446.92 419.737C441.133 419.737 437.256 422.658 434.84 426.479V420.692H424.727V466.989H434.84V440.919C434.84 433.221 438.211 428.839 444.504 428.839C446.414 428.839 448.83 429.345 450.797 429.794L453.718 420.13C451.696 419.737 448.83 419.737 446.92 419.737ZM317.187 424.569C312.356 421.198 305.613 419.737 298.365 419.737C286.791 419.737 279.094 425.524 279.094 434.682C279.094 442.38 284.881 446.762 294.994 448.167L299.826 448.672C305.108 449.628 308.029 451.088 308.029 453.504C308.029 456.875 304.152 459.291 297.41 459.291C290.668 459.291 285.33 456.875 281.959 454.459L277.127 462.157C282.409 466.034 289.657 467.944 296.904 467.944C310.389 467.944 318.143 461.651 318.143 452.999C318.143 444.796 311.85 440.469 302.242 439.008L297.41 438.503C293.084 437.997 289.713 437.042 289.713 434.176C289.713 430.805 293.084 428.895 298.421 428.895C304.209 428.895 309.996 431.311 312.917 432.772L317.187 424.569ZM586.26 419.737C580.473 419.737 576.596 422.658 574.18 426.479V420.692H564.067V466.989H574.18V440.919C574.18 433.221 577.551 428.839 583.844 428.839C585.754 428.839 588.17 429.345 590.137 429.794L593.059 420.242C591.092 419.737 588.227 419.737 586.26 419.737ZM457.033 443.897C457.033 457.887 466.697 468 481.643 468C488.385 468 493.217 466.539 498.049 462.719L493.217 454.516C489.34 457.437 485.519 458.842 481.137 458.842C472.934 458.842 467.147 453.055 467.147 443.897C467.147 435.188 472.934 429.401 481.137 428.951C485.463 428.951 489.34 430.412 493.217 433.278L498.049 425.074C493.217 421.198 488.385 419.793 481.643 419.793C466.697 419.737 457.033 429.906 457.033 443.897ZM550.582 443.897V420.748H540.469V426.535C537.098 422.209 532.266 419.793 525.973 419.793C512.938 419.793 502.825 429.906 502.825 443.897C502.825 457.887 512.938 468 525.973 468C532.715 468 537.547 465.584 540.469 461.258V467.045H550.582V443.897ZM513.444 443.897C513.444 435.693 518.725 428.951 527.434 428.951C535.637 428.951 541.424 435.244 541.424 443.897C541.424 452.1 535.637 458.842 527.434 458.842C518.781 458.336 513.444 452.043 513.444 443.897ZM392.42 419.737C378.935 419.737 369.271 429.401 369.271 443.84C369.271 458.336 378.935 467.944 392.926 467.944C399.668 467.944 406.41 466.034 411.748 461.651L406.916 454.403C403.039 457.325 398.207 459.235 393.431 459.235C387.139 459.235 380.902 456.314 379.441 448.167H413.658C413.658 446.706 413.658 445.751 413.658 444.29C414.108 429.401 405.399 419.737 392.42 419.737ZM392.42 428.446C398.713 428.446 403.039 432.322 403.994 439.514H379.891C380.846 433.278 385.172 428.446 392.42 428.446ZM643.682 443.897V402.432H633.568V426.535C630.197 422.209 625.365 419.793 619.073 419.793C606.037 419.793 595.924 429.906 595.924 443.897C595.924 457.887 606.037 468 619.073 468C625.815 468 630.647 465.584 633.568 461.258V467.045H643.682V443.897ZM606.543 443.897C606.543 435.693 611.825 428.951 620.533 428.951C628.736 428.951 634.524 435.244 634.524 443.897C634.524 452.1 628.736 458.842 620.533 458.842C611.825 458.336 606.543 452.043 606.543 443.897ZM267.969 443.897V420.748H257.855V426.535C254.484 422.209 249.652 419.793 243.36 419.793C230.325 419.793 220.211 429.906 220.211 443.897C220.211 457.887 230.325 468 243.36 468C250.102 468 254.934 465.584 257.855 461.258V467.045H267.969V443.897ZM230.381 443.897C230.381 435.693 235.662 428.951 244.371 428.951C252.574 428.951 258.361 435.244 258.361 443.897C258.361 452.1 252.574 458.842 244.371 458.842C235.662 458.336 230.381 452.043 230.381 443.897Z\" fill=\"white\"/><path d=\"M465.738 69.1387H313.812V342.088H465.738V69.1387Z\" fill=\"#FF5A00\"/><path d=\"M323.926 205.613C323.926 150.158 349.996 100.94 390 69.1387C360.559 45.9902 323.42 32 282.91 32C186.945 32 109.297 109.648 109.297 205.613C109.297 301.578 186.945 379.227 282.91 379.227C323.42 379.227 360.559 365.237 390 342.088C349.94 310.737 323.926 261.069 323.926 205.613Z\" fill=\"#EB001B\"/><path d=\"M670.711 205.613C670.711 301.578 593.062 379.227 497.098 379.227C456.588 379.227 419.449 365.237 390.008 342.088C430.518 310.231 456.082 261.069 456.082 205.613C456.082 150.158 430.012 100.94 390.008 69.1387C419.393 45.9902 456.532 32 497.041 32C593.062 32 670.711 110.154 670.711 205.613Z\" fill=\"#F79E1B\"/></g><defs><clipPath id=\"clip0_6278_125825\"><rect width=\"780\" height=\"500\" fill=\"white\"/></clipPath></defs>`,\r\n    },\r\n    \"mastercard-maestro\": {\r\n        label: \"Mastercard Maestro\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<g clip-path=\"url(#clip0_6278_125819)\"><path d=\"M780 0H0V500H780V0Z\" fill=\"black\"/><path d=\"M279.314 465.594V436.723C279.482 434.301 279.132 431.871 278.288 429.595C277.443 427.319 276.123 425.249 274.416 423.524C272.708 421.798 270.653 420.456 268.386 419.587C266.119 418.719 263.693 418.343 261.269 418.486C258.089 418.277 254.911 418.926 252.067 420.365C249.223 421.804 246.818 423.98 245.102 426.666C243.537 424.06 241.299 421.926 238.623 420.486C235.947 419.046 232.932 418.355 229.896 418.486C227.25 418.352 224.614 418.912 222.251 420.111C219.887 421.309 217.878 423.104 216.423 425.318V419.64H206.414V465.594H216.519V440.139C216.295 438.564 216.424 436.96 216.896 435.441C217.369 433.922 218.173 432.528 219.251 431.358C220.328 430.188 221.653 429.273 223.127 428.678C224.602 428.082 226.191 427.823 227.779 427.917C234.419 427.917 237.787 432.248 237.787 440.043V465.594H247.892V440.139C247.686 438.568 247.828 436.97 248.307 435.459C248.786 433.948 249.591 432.561 250.664 431.395C251.738 430.229 253.055 429.314 254.522 428.713C255.988 428.112 257.569 427.84 259.152 427.917C265.985 427.917 269.257 432.248 269.257 440.043V465.594H279.314ZM335.613 442.641V419.689H325.508V425.27C323.811 423.08 321.616 421.327 319.105 420.155C316.595 418.984 313.841 418.428 311.072 418.534C304.691 418.534 298.572 421.069 294.06 425.581C289.548 430.093 287.013 436.212 287.013 442.593C287.013 448.974 289.548 455.094 294.06 459.606C298.572 464.118 304.691 466.653 311.072 466.653C313.841 466.759 316.595 466.203 319.105 465.031C321.616 463.859 323.811 462.106 325.508 459.916V465.498H335.517L335.613 442.641ZM298.417 442.641C298.577 439.933 299.525 437.332 301.144 435.156C302.764 432.98 304.985 431.325 307.533 430.396C310.081 429.466 312.846 429.302 315.486 429.923C318.126 430.545 320.527 431.925 322.393 433.894C324.259 435.862 325.508 438.334 325.987 441.004C326.466 443.674 326.154 446.425 325.089 448.92C324.024 451.415 322.252 453.543 319.993 455.044C317.733 456.545 315.084 457.351 312.372 457.366C310.456 457.41 308.553 457.055 306.783 456.322C305.013 455.589 303.415 454.494 302.093 453.108C300.77 451.722 299.751 450.075 299.102 448.273C298.452 446.47 298.186 444.552 298.321 442.641H298.417ZM549.453 418.582C552.748 418.573 556.014 419.194 559.077 420.41C562 421.581 564.664 423.314 566.92 425.511C569.146 427.688 570.913 430.29 572.117 433.162C574.631 439.331 574.631 446.24 572.117 452.409C570.915 455.282 569.147 457.884 566.92 460.06C564.664 462.257 562 463.99 559.077 465.161C552.731 467.626 545.693 467.626 539.348 465.161C536.438 463.991 533.789 462.258 531.553 460.06C529.348 457.875 527.598 455.275 526.404 452.409C523.895 446.239 523.895 439.332 526.404 433.162C527.598 430.296 529.348 427.696 531.553 425.511C533.789 423.313 536.438 421.58 539.348 420.41C542.52 419.095 545.922 418.425 549.357 418.437L549.453 418.582ZM549.453 428.206C547.493 428.179 545.547 428.539 543.727 429.264C542.012 429.952 540.456 430.984 539.155 432.296C537.828 433.677 536.797 435.314 536.124 437.108C534.654 440.95 534.654 445.199 536.124 449.041C536.796 450.835 537.827 452.472 539.155 453.853C540.455 455.166 542.011 456.198 543.727 456.884C547.393 458.32 551.465 458.32 555.131 456.884C556.928 456.22 558.567 455.187 559.943 453.853C561.273 452.474 562.305 450.836 562.974 449.041C564.444 445.199 564.444 440.95 562.974 437.108C562.305 435.313 561.273 433.675 559.943 432.296C558.567 430.961 556.928 429.929 555.131 429.264C553.316 428.433 551.352 427.975 549.357 427.917L549.453 428.206ZM389.987 442.641C389.987 428.206 381.037 418.582 368.189 418.582C361.808 418.671 355.724 421.292 351.275 425.867C346.827 430.442 344.377 436.597 344.467 442.978C344.556 449.359 347.177 455.443 351.752 459.892C356.327 464.341 362.482 466.79 368.863 466.701C375.713 466.935 382.411 464.64 387.677 460.253L382.866 452.842C379.066 455.89 374.359 457.583 369.489 457.654C366.18 457.939 362.891 456.922 360.321 454.819C357.751 452.716 356.103 449.694 355.727 446.394H389.843C389.987 445.192 389.987 443.989 389.987 442.641ZM355.775 438.599C355.961 435.545 357.322 432.681 359.574 430.608C361.826 428.536 364.793 427.416 367.852 427.484C369.35 427.452 370.84 427.715 372.235 428.259C373.631 428.803 374.906 429.616 375.988 430.653C377.069 431.69 377.936 432.929 378.538 434.301C379.14 435.673 379.466 437.15 379.497 438.647L355.775 438.599ZM432.091 431.381C427.697 428.851 422.726 427.492 417.655 427.436C412.17 427.436 408.898 429.457 408.898 432.825C408.898 436.193 412.362 436.771 416.693 437.348L421.505 438.022C431.514 439.465 437.577 443.7 437.577 451.784C437.577 459.868 429.878 466.797 416.645 466.797C409.553 466.986 402.587 464.894 396.772 460.83L401.584 453.035C406 456.311 411.389 458.006 416.886 457.847C423.718 457.847 427.375 455.826 427.375 452.265C427.375 449.667 424.777 448.223 419.291 447.453L414.48 446.78C404.182 445.336 398.6 440.717 398.6 433.21C398.6 424.067 406.107 418.486 417.848 418.486C424.419 418.265 430.916 419.936 436.566 423.298L432.091 431.381ZM480.21 428.783H463.898V449.522C463.898 454.334 465.534 457.221 470.538 457.221C473.661 457.118 476.708 456.224 479.392 454.623L482.279 463.188C478.527 465.529 474.19 466.764 469.768 466.749C457.931 466.749 453.793 460.397 453.793 449.715V428.783H444.458V419.64H453.793V405.686H463.898V419.64H480.21V428.783ZM514.807 418.486C517.235 418.495 519.643 418.918 521.929 419.737L518.849 429.361C516.86 428.568 514.735 428.175 512.594 428.206C506.05 428.206 502.97 432.44 502.97 440.043V465.786H492.961V419.833H502.874V425.415C504.102 423.305 505.877 421.565 508.011 420.38C510.145 419.194 512.559 418.606 515 418.678L514.807 418.486ZM584.002 458.905C584.628 458.898 585.249 459.012 585.831 459.242C586.383 459.468 586.889 459.794 587.322 460.205C587.745 460.619 588.088 461.109 588.333 461.648C588.576 462.21 588.702 462.816 588.702 463.429C588.702 464.041 588.576 464.647 588.333 465.209C588.088 465.748 587.745 466.238 587.322 466.653C586.889 467.063 586.383 467.389 585.831 467.615C585.255 467.869 584.632 468 584.002 468C583.09 467.993 582.198 467.727 581.432 467.233C580.665 466.739 580.055 466.037 579.671 465.209C579.431 464.646 579.306 464.041 579.306 463.429C579.306 462.816 579.431 462.211 579.671 461.648C579.917 461.109 580.259 460.619 580.682 460.205C581.115 459.794 581.621 459.468 582.174 459.242C582.68 459.041 583.217 458.927 583.761 458.905H584.002ZM584.002 467.037C584.482 467.04 584.958 466.942 585.397 466.749C585.811 466.564 586.187 466.303 586.504 465.979C586.912 465.568 587.214 465.063 587.383 464.509C587.552 463.955 587.584 463.368 587.475 462.8C587.366 462.231 587.119 461.697 586.757 461.245C586.395 460.793 585.929 460.436 585.397 460.205C584.957 460.013 584.482 459.914 584.002 459.916C583.522 459.918 583.048 460.017 582.607 460.205C582.174 460.382 581.782 460.644 581.452 460.974C580.85 461.631 580.516 462.49 580.516 463.38C580.516 464.271 580.85 465.13 581.452 465.786C581.785 466.124 582.182 466.391 582.62 466.573C583.058 466.755 583.528 466.847 584.002 466.845V467.037ZM584.291 461.311C584.74 461.29 585.183 461.426 585.542 461.696C585.689 461.818 585.805 461.973 585.881 462.149C585.956 462.325 585.988 462.516 585.975 462.707C585.982 462.867 585.955 463.026 585.897 463.175C585.839 463.324 585.751 463.46 585.638 463.573C585.359 463.826 585.003 463.979 584.628 464.006L586.023 465.594H584.916L583.617 464.006H583.184V465.594H582.27V461.167L584.291 461.311ZM583.232 462.129V463.284H584.291C584.479 463.34 584.68 463.34 584.868 463.284C584.902 463.217 584.92 463.143 584.92 463.068C584.92 462.992 584.902 462.918 584.868 462.851C584.902 462.784 584.92 462.71 584.92 462.635C584.92 462.559 584.902 462.485 584.868 462.418C584.68 462.362 584.479 462.362 584.291 462.418L583.232 462.129Z\" fill=\"white\"/><path d=\"M465.769 69.0483H314.195V341.449H465.769V69.0483Z\" fill=\"#7673C0\"/><path d=\"M323.822 205.271C323.794 179.033 329.736 153.133 341.199 129.531C352.662 105.93 369.346 85.2463 389.985 69.0466C364.43 48.9628 333.74 36.4739 301.422 33.0073C269.105 29.5406 236.464 35.236 207.231 49.4425C177.997 63.6491 153.35 85.7937 136.107 113.345C118.863 140.897 109.719 172.744 109.719 205.247C109.719 237.749 118.863 269.597 136.107 297.148C153.35 324.7 177.997 346.844 207.231 361.051C236.464 375.257 269.105 380.953 301.422 377.486C333.74 374.019 364.43 361.531 389.985 341.447C369.352 325.252 352.673 304.576 341.21 280.984C329.747 257.391 323.801 231.501 323.822 205.271Z\" fill=\"#EB001B\"/><path d=\"M670.228 205.272C670.22 237.768 661.072 269.608 643.827 297.152C626.583 324.696 601.939 346.834 572.71 361.037C543.482 375.24 510.847 380.934 478.536 377.47C446.224 374.007 415.538 361.524 389.984 341.448C410.609 325.239 427.284 304.557 438.75 280.963C450.216 257.37 456.173 231.48 456.173 205.248C456.173 179.015 450.216 153.126 438.75 129.532C427.284 105.938 410.609 85.2567 389.984 69.0475C415.538 48.9575 446.228 36.4626 478.547 32.9909C510.867 29.5193 543.511 35.211 572.748 49.4156C601.985 63.6201 626.636 85.7642 643.883 113.317C661.129 140.869 670.275 172.718 670.276 205.224L670.228 205.272Z\" fill=\"#00A1DF\"/></g><defs><clipPath id=\"clip0_6278_125819\"><rect width=\"780\" height=\"500\" fill=\"white\"/></clipPath></defs>`,\r\n    },\r\n    \"american-express\": {\r\n        label: \"American Express\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<rect width=\"780\" height=\"500\" fill=\"#2557D6\"/><path d=\"m0.253 235.69h37.441l8.442-19.51h18.9l8.42 19.51h73.668v-14.915l6.576 14.98h38.243l6.576-15.202v15.138h183.08l-0.085-32.026h3.542c2.479 0.083 3.204 0.302 3.204 4.226v27.8h94.689v-7.455c7.639 3.92 19.518 7.455 35.148 7.455h39.836l8.525-19.51h18.9l8.337 19.51h76.765v-18.532l11.626 18.532h61.515v-122.51h-60.88v14.468l-8.522-14.468h-62.471v14.468l-7.828-14.468h-84.38c-14.123 0-26.539 1.889-36.569 7.153v-7.153h-58.229v7.153c-6.383-5.426-15.079-7.153-24.75-7.153h-212.74l-14.274 31.641-14.659-31.641h-67.005v14.468l-7.362-14.468h-57.145l-26.539 58.246v64.261h3e-3zm236.34-17.67h-22.464l-0.083-68.794-31.775 68.793h-19.24l-31.858-68.854v68.854h-44.57l-8.42-19.592h-45.627l-8.505 19.592h-23.801l39.241-87.837h32.559l37.269 83.164v-83.164h35.766l28.678 59.587 26.344-59.587h36.485l1e-3 87.838zm-165.9-37.823l-14.998-35.017-14.915 35.017h29.913zm255.3 37.821h-73.203v-87.837h73.203v18.291h-51.289v15.833h50.06v18.005h-50.061v17.542h51.289l1e-3 18.166zm103.16-64.18c0 14.004-9.755 21.24-15.439 23.412 4.794 1.748 8.891 4.838 10.84 7.397 3.094 4.369 3.628 8.271 3.628 16.116v17.255h-22.104l-0.083-11.077c0-5.285 0.528-12.886-3.458-17.112-3.202-3.09-8.083-3.76-15.973-3.76h-23.523v31.95h-21.914v-87.838h50.401c11.199 0 19.451 0.283 26.535 4.207 6.933 3.924 11.09 9.652 11.09 19.45zm-27.699 13.042c-3.013 1.752-6.573 1.81-10.841 1.81h-26.62v-19.51h26.982c3.818 0 7.804 0.164 10.393 1.584 2.842 1.28 4.601 4.003 4.601 7.765 0 3.84-1.674 6.929-4.515 8.351zm62.844 51.138h-22.358v-87.837h22.358v87.837zm259.56 0h-31.053l-41.535-65.927v65.927h-44.628l-8.527-19.592h-45.521l-8.271 19.592h-25.648c-10.649 0-24.138-2.257-31.773-9.715-7.701-7.458-11.708-17.56-11.708-33.533 0-13.027 2.395-24.936 11.812-34.347 7.085-7.01 18.18-10.242 33.28-10.242h21.215v18.821h-20.771c-7.997 0-12.514 1.14-16.862 5.203-3.735 3.699-6.298 10.69-6.298 19.897 0 9.41 1.951 16.196 6.023 20.628 3.373 3.476 9.506 4.53 15.272 4.53h9.842l30.884-69.076h32.835l37.102 83.081v-83.08h33.366l38.519 61.174v-61.174h22.445v87.833zm-133.2-37.82l-15.165-35.017-15.081 35.017h30.246zm189.04 178.08c-5.322 7.457-15.694 11.238-29.736 11.238h-42.319v-18.84h42.147c4.181 0 7.106-0.527 8.868-2.175 1.665-1.474 2.605-3.554 2.591-5.729 0-2.561-1.064-4.593-2.677-5.811-1.59-1.342-3.904-1.95-7.722-1.95-20.574-0.67-46.244 0.608-46.244-27.194 0-12.742 8.443-26.156 31.439-26.156h43.649v-17.479h-40.557c-12.237 0-21.129 2.81-27.425 7.174v-7.175h-59.985c-9.595 0-20.854 2.279-26.179 7.175v-7.175h-107.12v7.175c-8.524-5.892-22.908-7.175-29.549-7.175h-70.656v7.175c-6.745-6.258-21.742-7.175-30.886-7.175h-79.077l-18.094 18.764-16.949-18.764h-118.13v122.59h115.9l18.646-19.062 17.565 19.062 71.442 0.061v-28.838h7.021c9.479 0.14 20.66-0.228 30.523-4.312v33.085h58.928v-31.952h2.842c3.628 0 3.985 0.144 3.985 3.615v28.333h179.01c11.364 0 23.244-2.786 29.824-7.845v7.845h56.78c11.815 0 23.354-1.587 32.134-5.649l2e-3 -22.84zm-354.94-47.155c0 24.406-19.005 29.445-38.159 29.445h-27.343v29.469h-42.591l-26.984-29.086-28.042 29.086h-86.802v-87.859h88.135l26.961 28.799 27.875-28.799h70.021c17.389 0 36.929 4.613 36.929 28.945zm-174.22 40.434h-53.878v-17.48h48.11v-17.926h-48.11v-15.974h54.939l23.969 25.604-25.03 25.776zm86.81 10.06l-33.644-35.789 33.644-34.65v70.439zm49.757-39.066h-28.318v-22.374h28.572c7.912 0 13.404 3.09 13.404 10.772 0 7.599-5.238 11.602-13.658 11.602zm148.36-40.373h73.138v18.17h-51.315v15.973h50.062v17.926h-50.062v17.48l51.314 0.08v18.23h-73.139l2e-3 -87.859zm-28.119 47.029c4.878 1.725 8.865 4.816 10.734 7.375 3.095 4.291 3.542 8.294 3.631 16.037v17.418h-22.002v-10.992c0-5.286 0.531-13.112-3.542-17.198-3.201-3.147-8.083-3.899-16.076-3.899h-23.42v32.09h-22.02v-87.859h50.594c11.093 0 19.173 0.47 26.366 4.146 6.915 4.004 11.266 9.487 11.266 19.511-1e-3 14.022-9.764 21.178-15.531 23.371zm-12.385-11.107c-2.932 1.667-6.556 1.811-10.818 1.811h-26.622v-19.732h26.982c3.902 0 7.807 0.08 10.458 1.587 2.84 1.423 4.538 4.146 4.538 7.903 0 3.758-1.699 6.786-4.538 8.431zm197.82 5.597c4.27 4.229 6.554 9.571 6.554 18.613 0 18.9-12.322 27.723-34.425 27.723h-42.68v-18.84h42.51c4.157 0 7.104-0.525 8.95-2.175 1.508-1.358 2.589-3.333 2.589-5.729 0-2.561-1.17-4.592-2.675-5.811-1.675-1.34-3.986-1.949-7.803-1.949-20.493-0.67-46.157 0.609-46.157-27.192 0-12.744 8.355-26.158 31.33-26.158h43.932v18.7h-40.198c-3.984 0-6.575 0.145-8.779 1.587-2.4 1.422-3.29 3.534-3.29 6.319 0 3.314 2.037 5.57 4.795 6.546 2.311 0.77 4.795 0.995 8.526 0.995l11.797 0.306c11.895 0.276 20.061 2.248 25.024 7.065zm86.955-23.52h-39.938c-3.986 0-6.638 0.144-8.867 1.587-2.312 1.423-3.202 3.534-3.202 6.322 0 3.314 1.951 5.568 4.791 6.544 2.312 0.771 4.795 0.996 8.444 0.996l11.878 0.304c11.983 0.284 19.982 2.258 24.86 7.072 0.891 0.67 1.422 1.422 2.033 2.175v-25h1e-3z\" fill=\"#fff\"/>`,\r\n    },\r\n    \"elo\": {\r\n        label: \"Elo\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<rect width=\"780\" height=\"500\" fill=\"#000\"/><path d=\"m167.25 181.4c6.8-2.3 14.1-3.5 21.7-3.5 33.2 0 60.9 23.601 67.2 54.9l47-9.6c-10.8-53.2-57.8-93.301-114.2-93.301-12.9 0-25.3 2.101-36.9 6l15.2 45.501z\" fill=\"#FFF100\"/><path d=\"m111.75 333.8l31.8-36c-14.2-12.6-23.1-30.9-23.1-51.4 0-20.399 8.9-38.8 23.1-51.3l-31.8-35.899c-24.1 21.399-39.3 52.5-39.3 87.3 0 34.699 15.2 65.898 39.3 87.299z\" fill=\"#00A3DF\"/><path d=\"m256.15 260.2c-6.4 31.3-34 54.8-67.2 54.8-7.6 0-14.9-1.2-21.8-3.5l-15.2 45.5c11.6 3.899 24.1 6 37 6 56.4 0 103.4-40 114.2-93.2l-47-9.6z\" fill=\"#EE4023\"/><path d=\"m459.75 292.4c-7.8 7.601-18.3 12.2-29.9 12-8-0.1-15.399-2.5-21.6-6.5l-15.601 24.801c10.7 6.699 23.2 10.699 36.801 10.899 19.699 0.3 37.699-7.5 50.8-20.2l-20.5-21zm-28.2-101.1c-39.2-0.6-71.6 30.8-72.2 70-0.2 14.7 4 28.5 11.5 39.9l128.8-55.101c-7.2-30.899-34.8-54.2-68.1-54.799m-42.7 75.599c-0.2-1.6-0.3-3.3-0.3-5 0.4-23.1 19.4-41.6 42.5-41.199 12.6 0.199 23.8 5.899 31.3 14.899l-73.5 31.3zm151.3-107.6v137.3l23.801 9.9-11.301 27.1-23.6-9.8c-5.3-2.3-8.9-5.8-11.6-9.8-2.601-4-4.601-9.601-4.601-17v-137.7h27.301zm85.901 63.5c4.2-1.4 8.6-2.1 13.3-2.1 20.3 0 37.101 14.399 41 33.5l28.7-5.9c-6.6-32.5-35.3-56.9-69.7-56.9-7.899 0-15.5 1.301-22.5 3.601l9.2 27.799zm-33.901 92.9l19.4-21.9c-8.7-7.7-14.1-18.9-14.1-31.4s5.5-23.699 14.1-31.3l-19.4-21.899c-14.699 13-24 32.1-24 53.3s9.301 40.199 24 53.199zm88.201-44.801c-3.899 19.101-20.8 33.5-41 33.5-4.6 0-9.1-0.8-13.3-2.199l-9.3 27.8c7.1 2.399 14.7 3.7 22.6 3.7 34.4 0 63.101-24.4 69.7-56.9l-28.7-5.901z\" fill=\"#fff\"/>`,\r\n    },\r\n    \"hipercard\": {\r\n        label: \"Hipercard\", viewBox: \"0 0 780 501\", width: 32, height: 24,\r\n        svg: `<rect width=\"780\" height=\"500\" fill=\"#fff\"/><path d=\"m333.56 399.69l-286.53 0.104v-0.69c0-0.379 0.457-2.838 1.015-5.465 0.559-2.626 1.427-6.804 1.931-9.283 0.502-2.479 1.362-6.692 1.909-9.364 1.346-6.527 2.676-13.058 3.989-19.592 0.517-2.576 1.378-6.79 1.916-9.363 0.686-3.293 1.364-6.588 2.037-9.884 0.582-2.86 1.467-7.231 1.967-9.711s1.294-6.303 1.765-8.495c0.47-2.193 1.071-5.158 1.333-6.59 0.263-1.43 1.114-5.645 1.891-9.363 0.654-3.117 1.29-6.238 1.905-9.363 0.271-1.43 1.132-5.645 1.914-9.363 0.781-3.718 1.639-7.932 1.907-9.363 0.268-1.43 1.131-5.644 1.917-9.363 0.788-3.72 1.638-7.854 1.888-9.189 0.252-1.335 0.94-4.768 1.53-7.629 0.589-2.861 1.705-8.245 2.479-11.964 0.775-3.72 2.099-10.196 2.942-14.394 0.845-4.195 1.854-9.188 2.243-11.096 1.143-5.608 2.296-11.215 3.461-16.818 0.574-2.768 1.507-7.293 2.074-10.059 0.568-2.766 1.442-7.057 1.943-9.536s1.356-6.614 1.9-9.19c0.544-2.574 1.48-7.101 2.08-10.057 0.6-2.957 1.605-7.482 2.233-10.057s1.516-5.696 1.974-6.935c0.457-1.241 1.72-3.927 2.806-5.973l1.975-3.717 1.795-2.352c0.986-1.292 2.749-3.335 3.916-4.539s3.135-3.016 4.376-4.026c1.239-1.011 3.034-2.375 3.987-3.031 0.954-0.656 2.827-1.805 4.162-2.553s3.209-1.727 4.162-2.176c0.954-0.449 2.905-1.27 4.335-1.823 1.43-0.552 4.161-1.479 6.068-2.058 1.907-0.58 5.488-1.454 7.957-1.941 2.469-0.488 6.369-1.14 8.67-1.449l4.181-0.562 286.71-0.108 286.71-0.111v0.69c0 0.379-0.46 2.838-1.021 5.464-0.709 3.323-1.405 6.648-2.088 9.977-0.588 2.861-1.441 6.997-1.901 9.19-0.65 3.12-1.295 6.241-1.933 9.363-0.604 2.957-1.532 7.483-2.063 10.057-0.531 2.575-1.392 6.789-1.912 9.363-0.52 2.576-1.386 6.789-1.923 9.363-0.626 3.004-1.244 6.01-1.854 9.018-0.481 2.384-1.353 6.675-1.936 9.536-0.584 2.86-1.521 7.387-2.083 10.057s-1.418 6.806-1.902 9.19c-0.485 2.384-1.356 6.675-1.938 9.535-0.582 2.861-1.517 7.388-2.079 10.059-0.562 2.67-1.398 6.727-1.861 9.016-1.283 6.359-2.575 12.718-3.874 19.074-0.47 2.288-1.307 6.346-1.86 9.016-0.709 3.408-1.411 6.818-2.108 10.23-0.605 2.957-1.471 7.169-1.923 9.364-0.454 2.192-1.301 6.327-1.885 9.188-0.684 3.354-1.371 6.705-2.063 10.057-0.551 2.671-1.415 6.885-1.921 9.365-0.504 2.479-1.383 6.771-1.95 9.535-0.568 2.766-1.497 7.291-2.062 10.057-0.566 2.766-1.414 6.902-1.885 9.191-0.642 3.119-1.278 6.24-1.912 9.362-0.683 3.343-1.383 6.683-2.102 10.019l-1.044 4.817-1.244 3.332c-0.684 1.833-1.713 4.269-2.287 5.414-0.571 1.144-1.738 3.163-2.592 4.487-0.854 1.322-2.044 3.018-2.644 3.767-0.601 0.749-2.407 2.683-4.018 4.299l-2.923 2.935-2.814 2c-1.548 1.101-3.217 2.22-3.705 2.486-0.49 0.268-2.355 1.221-4.146 2.115-1.789 0.896-4.317 2.037-5.617 2.534-1.3 0.499-3.875 1.346-5.722 1.883-1.847 0.539-3.827 1.069-4.398 1.179-0.573 0.109-2.559 0.52-4.414 0.914-1.855 0.393-5.601 0.979-8.322 1.303l-4.95 0.59-286.53 0.1zm-101.94-74.115h7.456l0.21-0.549c0.117-0.302 0.211-1.011 0.211-1.576s0.246-2.619 0.547-4.565c0.3-1.948 1.004-6.427 1.566-9.955 0.561-3.529 1.401-8.835 1.867-11.791 0.443-2.8 0.864-5.604 1.265-8.41 0.229-1.669 0.508-3.034 0.621-3.034 0.112 0 0.594 0.737 1.071 1.639l0.866 1.639 1.922 1.938 1.923 1.937 2.366 0.948 2.367 0.947 2.82 0.365 2.821 0.365 3.579-0.219 3.58-0.221 3.876-1.002 3.877-1.005 2.08-0.948c1.145-0.522 3.173-1.662 4.508-2.531l2.428-1.581 2.263-2.263c1.245-1.242 3.001-3.238 3.901-4.434 0.902-1.193 1.639-2.258 1.639-2.364s0.443-0.846 0.984-1.644c0.541-0.797 1.647-3.012 2.459-4.918 0.813-1.907 2.081-5.34 2.821-7.629l1.344-4.162 0.695-3.604c0.382-1.982 0.874-5.26 1.093-7.283l0.397-3.678-0.23-3.121-0.229-3.121-0.725-3.121-0.723-3.121-1.172-2.336-1.171-2.338-2.263-2.398-2.262-2.398-2.677-1.384-2.677-1.383-2.948-0.707-2.948-0.705-2.948-0.216-2.947-0.217-3.283 0.377-3.285 0.378-2.679 0.685-2.68 0.684-2.329 1.078c-1.28 0.592-3.144 1.599-4.14 2.236-0.997 0.639-2.026 1.371-2.286 1.63-0.259 0.259-0.882 0.74-1.382 1.066l-0.911 0.597 0.636-3.047c0.351-1.675 0.643-3.24 0.651-3.48l0.014-0.433h-12.716l-1.114 7.022c-0.614 3.863-1.582 9.832-2.152 13.266-1.257 7.574-2.529 15.145-3.816 22.714-0.567 3.337-1.504 8.644-2.083 11.791s-1.426 7.751-1.884 10.231c-0.457 2.479-1.319 7.16-1.913 10.402-0.701 3.816-1.409 7.631-2.124 11.444-0.677 3.586-1.369 7.169-2.074 10.75-0.568 2.86-1.116 5.554-1.221 5.981l-0.189 0.781h7.457v1e-3zm32.1-40.095l-2.895 0.175-1.892-0.336-1.893-0.334-1.922-0.877-1.923-0.878-1.342-1.282-1.343-1.281-0.775-1.734c-0.427-0.954-0.974-2.574-1.217-3.602l-0.442-1.865 0.177-2.989 0.178-2.987 0.893-4.683c0.674-3.579 1.328-7.163 1.96-10.75 0.587-3.338 1.477-8.229 1.976-10.869l0.907-4.8 1.988-1.654c1.094-0.908 2.826-2.129 3.85-2.709l1.86-1.056 2.427-0.751 2.428-0.752 3.121-0.184 3.121-0.183 2.542 0.542 2.541 0.541 1.794 0.826 1.793 0.826 1.504 1.512 1.505 1.512 0.81 1.602c0.447 0.881 1.074 2.604 1.393 3.83l0.581 2.229-0.178 6.59-0.178 6.59-0.89 3.895c-0.49 2.142-1.422 5.419-2.072 7.281l-1.181 3.389-1.448 2.742c-0.796 1.509-2.023 3.547-2.727 4.529s-1.827 2.258-2.495 2.83c-0.809 0.688-1.637 1.352-2.484 1.991l-1.271 0.949-2.943 1.001-2.943 1.001-2.895 0.173zm72.011 9.534l3.815 0.044 3.813-0.348c2.1-0.191 5.532-0.59 7.629-0.887 2.1-0.295 5.724-0.957 8.056-1.469l4.239-0.933 0.212-1.564c0.115-0.858 0.592-3.417 1.058-5.685l0.847-4.125-0.188-0.186-0.187-0.187-1.296 0.625c-0.713 0.344-2.934 1.166-4.934 1.825l-3.638 1.197-3.818 0.741-3.818 0.739-6.068 0.013-6.069 0.011-2.081-0.664c-1.144-0.365-2.827-1.033-3.74-1.486l-1.659-0.821-1.369-1.237-1.37-1.238-1.069-1.867-1.069-1.869-0.67-2.342-0.67-2.344-4e-3 -4.336-5e-3 -4.336 0.594-3.867 0.597-3.869 5.218-0.244 5.218-0.244 19.291 0.125 19.29 0.123 0.582-2.47c0.321-1.359 0.811-4.168 1.089-6.242l0.506-3.772 0.011-3.172 0.012-3.173-0.549-2.368-0.551-2.369-0.908-1.567c-0.498-0.862-1.38-2.112-1.955-2.778-0.576-0.665-1.605-1.604-2.286-2.084-0.683-0.48-2.02-1.29-2.974-1.797l-1.733-0.922-3.029-0.73-3.03-0.729-3.731-0.357-3.734-0.356-3.467 0.226-3.468 0.225-4.162 0.8-4.161 0.8-2.602 1.039c-1.431 0.57-3.615 1.615-4.854 2.318-1.24 0.703-2.956 1.847-3.813 2.541-0.86 0.696-2.347 2.049-3.304 3.006-0.958 0.957-2.376 2.676-3.148 3.82-0.774 1.146-1.96 3.174-2.638 4.508-0.676 1.336-1.557 3.209-1.958 4.162-0.399 0.953-1.129 2.904-1.617 4.334-0.49 1.432-1.26 4.162-1.709 6.07-0.53 2.311-0.988 4.637-1.373 6.977l-0.554 3.51 6e-3 5.16 6e-3 5.16 0.526 2.254c0.289 1.24 0.845 3.113 1.231 4.162s1.104 2.609 1.593 3.468 1.532 2.239 2.318 3.071c0.785 0.83 2.21 2.092 3.164 2.801 0.952 0.709 2.65 1.709 3.771 2.219l2.039 0.928 2.843 0.688c1.563 0.378 3.923 0.826 5.244 0.996 1.317 0.165 4.114 0.325 6.212 0.348zm6.531-48.853c-9.6 0-17.455-0.068-17.455-0.153 0-0.083 0.41-1.293 0.911-2.688 0.5-1.394 1.38-3.468 1.953-4.609l1.045-2.077 2.293-2.281 2.294-2.283 2.255-1.077c1.239-0.593 2.878-1.238 3.641-1.435 0.764-0.196 2.947-0.456 4.854-0.577l3.469-0.223 2.664 0.343 2.662 0.342 1.936 0.886 1.936 0.887 1.062 1.145c0.583 0.629 1.278 1.557 1.546 2.059l0.483 0.916 0.32 2.033 0.321 2.031-0.367 3.381-0.366 3.383h-17.457v-3e-3zm103.75 48.855l3.817 0.042 4.332-0.514c2.383-0.282 5.555-0.75 7.05-1.041 1.806-0.363 3.599-0.789 5.375-1.275 1.462-0.414 2.785-0.861 2.939-0.993 0.155-0.133 0.567-1.706 0.918-3.497s0.792-4.192 0.981-5.337c0.188-1.145 0.286-2.142 0.217-2.217-0.07-0.075-0.325 0.022-0.568 0.214-0.243 0.194-1.944 0.91-3.781 1.592l-3.339 1.24-4.756 0.921-4.756 0.921-4.042-0.137-4.043-0.138-2.297-0.798-2.297-0.797-1.774-1.551-1.773-1.553-1.178-2.145-1.177-2.143-0.562-2.869-0.561-2.867 5e-3 -3.721 3e-3 -3.721 0.681-4.508 0.682-4.51 0.721-2.428c0.396-1.335 0.846-2.895 0.997-3.467 0.152-0.573 0.787-2.211 1.413-3.643 0.625-1.43 1.741-3.641 2.479-4.912l1.342-2.312 1.649-1.709 1.648-1.709 1.745-1.082 1.747-1.083 2.242-0.691c1.233-0.379 3.413-0.873 4.843-1.094l2.602-0.406 3.813 0.191 3.815 0.191 4.508 0.902 4.509 0.901 1.833 0.685c1.008 0.375 1.877 0.685 1.932 0.685 0.054 0 0.296-1.288 0.537-2.862 0.242-1.572 0.672-4.162 0.956-5.752 0.285-1.592 0.449-2.962 0.364-3.045-0.083-0.084-1.438-0.299-3.01-0.479-1.573-0.178-5.848-0.496-9.498-0.707l-6.639-0.381-4.683 0.358-4.681 0.36-3.469 0.728-3.468 0.729-2.233 0.893c-1.229 0.491-3.027 1.378-3.998 1.971-0.931 0.566-1.846 1.156-2.745 1.77-0.54 0.382-2.176 1.87-3.638 3.309l-2.655 2.613-1.484 2.172c-0.814 1.195-2.225 3.686-3.134 5.536l-1.652 3.364-1.267 3.64c-0.696 2.003-1.669 5.28-2.16 7.283l-0.895 3.642-0.325 3.295-0.324 3.295 3e-3 4.334 4e-3 4.334 0.327 2.522 0.327 2.522 1.039 2.594 1.038 2.594 1.201 1.875 1.198 1.875 1.907 1.878 1.909 1.877 2.017 1.068 2.02 1.065 2.65 0.737c1.457 0.404 3.564 0.869 4.682 1.032s3.748 0.316 5.848 0.339h-3e-3zm57.044-0.128l4.681-0.135 2.948-0.754 2.948-0.756 1.908-0.9c1.049-0.495 2.765-1.475 3.813-2.176 1.05-0.7 2.675-2.032 3.609-2.959 0.935-0.928 2.322-2.51 3.082-3.517s1.428-1.784 1.483-1.728c0.058 0.056-0.118 1.658-0.389 3.562-0.269 1.905-0.493 4.438-0.497 5.631l-6e-3 2.166h12.729l0.194-4.94 0.194-4.942 0.908-6.416c0.5-3.529 1.307-8.757 1.794-11.617 0.485-2.86 1.331-7.697 1.879-10.75 0.547-3.053 1.414-7.812 1.925-10.578l0.932-5.027 0.032-4.344 0.03-4.344-0.981-2.007-0.982-2.008-1.331-1.278-1.333-1.279-2.185-1.106-2.188-1.108-3.259-0.726-3.259-0.726-4.486-0.34-4.487-0.342-5.778 0.358c-3.181 0.196-7.652 0.584-9.941 0.862l-4.162 0.505-2.836 0.011-2.836 0.011-0.413 1.995c-0.227 1.096-0.858 3.701-1.401 5.79-0.545 2.088-0.938 3.847-0.877 3.908s1.578-0.283 3.37-0.765c1.792-0.483 5.601-1.275 8.462-1.764l5.201-0.886 4.682-0.192 4.682-0.193 3.016 0.529 3.017 0.528 2.012 0.993 2.013 0.994 1.127 1.68 1.128 1.68-0.016 2.647-0.017 2.649-0.598 2.905-0.598 2.907-12.479 0.045-12.478 0.044-4.083 1.12c-2.246 0.616-4.733 1.434-5.527 1.816-0.794 0.385-1.588 0.699-1.765 0.699-0.176 0-1.512 0.739-2.969 1.646l-2.648 1.645-2.085 2.082c-1.148 1.146-2.613 2.862-3.257 3.816-0.645 0.953-1.691 2.945-2.325 4.427l-1.154 2.693-0.529 3.028-0.53 3.028v6.355l0.505 2.646 0.507 2.646 0.938 1.725c0.517 0.948 1.466 2.339 2.106 3.089l1.168 1.364 2.073 1.26 2.074 1.261 2.375 0.67c1.306 0.369 3.293 0.817 4.417 0.996l2.042 0.321 4.682-0.134h-1e-3zm4.335-9.699l-2.774 0.146-1.838-0.469c-1.01-0.257-2.544-0.83-3.407-1.274l-1.569-0.808-0.858-1.019c-0.471-0.562-1.19-1.661-1.6-2.446l-0.743-1.428-0.145-3.333-0.147-3.334 0.588-2.022c0.323-1.111 1.082-3.043 1.687-4.289l1.098-2.267 2.104-2.087 2.102-2.088 2.232-1.075 2.231-1.073 2.774-0.66 2.774-0.66h17.34l0.549 0.228 0.548 0.226-0.461 2.723c-0.254 1.496-0.859 4.203-1.347 6.015-0.485 1.813-1.344 4.476-1.906 5.919-0.563 1.444-1.024 2.721-1.024 2.836 0 0.117-0.57 1.168-1.267 2.338l-1.267 2.127-2.079 2.061c-1.143 1.132-2.206 2.059-2.359 2.059s-0.854 0.392-1.558 0.868l-1.277 0.866-2.813 0.891-2.812 0.889-2.776 0.14zm112.88 9.822l3.294 0.042 3.122-0.507c1.717-0.278 3.901-0.727 4.855-0.997 0.953-0.271 2.671-0.97 3.813-1.556l2.082-1.066 1.79-1.576 1.789-1.576 1.886-2.513c1.037-1.383 1.976-2.748 2.086-3.035l0.201-0.521-0.175 1.734c-0.124 1.161-0.284 2.317-0.479 3.469-0.169 0.953-0.407 2.787-0.533 4.074l-0.23 2.34h13.606v-4.681l1.036-8.844c0.569-4.864 1.413-11.339 1.873-14.392s1.171-7.42 1.58-9.709c0.406-2.289 1.13-6.426 1.604-9.19 0.476-2.765 1.334-7.604 1.908-10.75 0.573-3.148 1.492-8.142 2.041-11.097 0.548-2.957 1.401-7.562 1.895-10.231s1.377-7.353 1.964-10.403c0.615-3.184 1.25-6.363 1.906-9.537 0.462-2.192 0.839-4.105 0.838-4.248v-0.261h-14.844l-0.219 2.168c-0.12 1.192-0.689 5.132-1.262 8.757-0.681 4.279-1.374 8.556-2.08 12.83-0.411 2.466-0.817 4.932-1.22 7.399l-0.186 1.155-0.585-0.248c-0.322-0.137-2.069-0.622-3.88-1.077l-3.294-0.827-4.508-0.352-4.51-0.351-3.814 0.354-3.814 0.356-3.468 0.877-3.468 0.876-3.294 1.607-3.296 1.607-2.428 1.795-2.427 1.797-2.097 2.25c-1.153 1.235-2.818 3.281-3.702 4.543l-1.604 2.297-1.886 3.922c-1.036 2.158-2.298 5.015-2.803 6.35-0.506 1.336-1.396 4.295-1.981 6.577l-1.061 4.15-0.523 5.388-0.522 5.387 0.392 4.334 0.395 4.336 0.463 1.56c0.257 0.858 0.794 2.388 1.196 3.397l0.732 1.84 1.335 1.806 1.336 1.808 1.524 1.248 1.523 1.249 2.081 1.034c1.146 0.566 3.064 1.302 4.267 1.631 1.2 0.329 3.151 0.725 4.335 0.878 1.183 0.156 3.632 0.301 5.445 0.323zm5.913-9.837l-2.619 0.137-1.766-0.317c-0.972-0.175-2.527-0.645-3.457-1.043l-1.689-0.723-1.422-1.166-1.421-1.164-1.056-2.023-1.057-2.022-0.482-2.254-0.48-2.255 0.041-4.508 0.04-4.508 0.56-3.989 0.559-3.987 0.869-2.773c0.479-1.526 0.872-2.967 0.874-3.201 4e-3 -0.232 0.474-1.48 1.049-2.772 0.672-1.495 1.382-2.973 2.13-4.431 0.599-1.145 1.717-2.928 2.483-3.965 0.769-1.035 2.138-2.596 3.042-3.469 0.904-0.869 2.341-2.014 3.196-2.539l1.552-0.955 2.727-0.943 2.727-0.944 5.722-3e-3h5.722l3.294 0.915c1.813 0.502 3.737 1.085 4.276 1.295l0.981 0.382-0.191 0.951c-0.104 0.524-0.518 2.825-0.916 5.113-0.398 2.289-1.184 6.659-1.745 9.711s-1.423 7.656-1.916 10.23c-0.492 2.574-1.205 5.852-1.585 7.281-0.39 1.47-0.786 2.938-1.189 4.403-0.275 0.991-0.93 2.709-1.454 3.815-0.525 1.106-1.444 2.715-2.042 3.572-0.599 0.858-1.608 2.049-2.246 2.643-0.639 0.596-2.02 1.652-3.068 2.349l-1.907 1.269-2.757 0.875-2.757 0.875-2.622 0.138zm-510.38 8.149h8.425l0.605-3.727c0.332-2.051 0.982-5.992 1.443-8.757l1.907-11.444c0.588-3.529 1.47-8.757 1.959-11.617 0.489-2.861 1.267-7.299 1.727-9.861 0.461-2.565 0.926-4.75 1.032-4.856l0.195-0.194h45.313l0.252 0.252 0.252 0.252-0.394 2.002c-0.215 1.102-0.854 4.498-1.419 7.551-0.565 3.052-1.515 8.201-2.112 11.445-0.627 3.412-1.265 6.821-1.914 10.229-0.458 2.384-1.384 7.377-2.058 11.097-0.673 3.719-1.223 6.957-1.221 7.196l4e-3 0.433h16.921l0.374-2.166c0.207-1.192 0.537-3.338 0.737-4.769 0.198-1.431 0.679-4.476 1.066-6.763 0.387-2.288 1.16-6.815 1.719-10.057 0.558-3.242 1.494-8.783 2.078-12.312s1.45-8.679 1.926-11.443c0.602-3.472 1.229-6.94 1.88-10.403 0.559-2.957 1.491-7.95 2.071-11.099 0.58-3.146 1.447-7.905 1.929-10.577 0.482-2.67 1.36-7.508 1.952-10.75s1.339-7.025 1.66-8.41l0.584-2.514h-17.133l-0.233 1.648c-0.127 0.904-0.541 3.441-0.919 5.635-0.379 2.193-1.065 6.094-1.527 8.669-0.462 2.576-1.306 7.491-1.876 10.925-0.559 3.363-1.097 6.729-1.614 10.1l-0.578 3.856-12.575 0.255-12.576 0.254-10.532-0.25c-5.793-0.137-10.565-0.277-10.605-0.31-0.039-0.034 0.158-1.381 0.438-2.995 0.369-2.081 0.762-4.157 1.179-6.229 0.532-2.656 1.049-5.315 1.55-7.978 0.485-2.574 1.033-5.772 1.22-7.108 0.186-1.334 0.577-3.559 0.868-4.942 0.291-1.382 0.843-4.295 1.227-6.472 0.383-2.178 0.792-4.207 0.909-4.508l0.21-0.551h-16.995l-0.543 3.035c-0.3 1.669-0.699 4.048-0.887 5.288-0.189 1.239-0.822 5.219-1.407 8.843s-1.449 9.008-1.92 11.964l-1.903 11.964c-0.669 4.168-1.375 8.329-2.116 12.484-0.617 3.412-1.246 6.822-1.887 10.23-0.451 2.385-1.31 6.91-1.91 10.058-0.629 3.298-1.278 6.593-1.945 9.884-0.47 2.288-0.989 4.941-1.153 5.895-0.166 0.953-0.702 3.705-1.194 6.113-0.491 2.407-0.893 4.631-0.893 4.941v0.562h8.427v2e-3zm93.278 0h7.459l0.21-0.548c0.117-0.303 0.211-1.094 0.211-1.758 0-0.666 0.47-4.126 1.042-7.688 1.309-8.118 2.65-16.23 4.024-24.338 0.589-3.416 1.208-6.826 1.859-10.23 0.552-2.86 1.4-7.309 1.884-9.882 0.483-2.575 1.435-7.474 2.114-10.888 0.679-3.412 1.319-6.341 1.422-6.508l0.189-0.305-7.543 0.093-7.543 0.093-0.63 4.51c-0.344 2.479-1.1 7.396-1.678 10.923-0.577 3.528-1.451 8.914-1.942 11.964-0.594 3.648-1.228 7.29-1.9 10.925-0.555 2.956-1.405 7.481-1.89 10.056-0.484 2.576-1.353 7.102-1.931 10.058-0.578 2.957-1.353 6.858-1.723 8.67-0.371 1.813-0.768 3.646-0.884 4.075l-0.209 0.779h7.459v-1e-3zm174.46 0h7.403l0.223-3.133c0.123-1.722 0.541-5.195 0.931-7.716s1.189-7.548 1.774-11.171c0.74-4.48 1.546-8.949 2.418-13.406 0.746-3.748 1.587-7.474 1.871-8.279s0.517-1.678 0.517-1.938c0-0.263 0.557-1.687 1.237-3.165 0.68-1.479 1.947-3.743 2.817-5.032l1.581-2.344 2.115-1.96 2.116-1.958 2.608-1.246 2.609-1.247 3.989 0.021 3.986 0.021 1.961 0.585c1.078 0.322 2.054 0.586 2.167 0.586 0.114 0 0.207-0.368 0.207-0.819 0-0.449 0.391-2.733 0.867-5.075 0.477-2.341 0.867-4.355 0.867-4.476s-1.131-0.564-2.514-0.984-3.295-0.86-4.248-0.979l-1.734-0.214-2.254 0.398c-1.24 0.22-3.083 0.703-4.096 1.076-1.015 0.373-2.688 1.217-3.72 1.877-1.03 0.66-2.636 1.946-3.564 2.857-0.931 0.912-2.495 2.751-3.477 4.086-0.764 1.037-1.524 2.078-2.28 3.121l-0.496 0.693 0.301-1.387c0.166-0.764 0.628-3.261 1.026-5.549 0.397-2.289 0.809-4.436 0.908-4.768l0.186-0.608h-13.226v0.837c0 0.459-0.391 3.229-0.866 6.154-0.478 2.928-1.265 7.816-1.748 10.869-0.484 3.052-1.345 8.357-1.91 11.791-0.604 3.646-1.24 7.288-1.911 10.923-1.305 6.942-2.64 13.878-4.005 20.808-0.584 2.957-1.283 6.447-1.552 7.76-0.271 1.31-0.491 2.519-0.491 2.686v0.305h7.407zm175.76 0h7.57v-4.634l0.871-5.746c0.481-3.159 1.272-8.165 1.761-11.12 0.487-2.957 1.095-6.701 1.35-8.324 0.256-1.62 0.933-5.131 1.503-7.801 0.573-2.672 1.286-5.558 1.587-6.416 0.302-0.858 0.549-1.76 0.552-2.002 5e-3 -0.242 0.649-1.8 1.435-3.462l1.429-3.022 1.887-2.506 1.885-2.504 2.062-1.551c1.134-0.854 2.959-1.984 4.056-2.516l1.991-0.965 4.334 0.029 4.335 0.031 1.707 0.547 1.706 0.549 0.288-0.179 0.287-0.178 0.017-1.106c7e-3 -0.608 0.378-2.873 0.823-5.033l0.812-3.926-0.912-0.356c-0.874-0.323-1.756-0.624-2.646-0.902l-1.733-0.547-3.121 9e-3 -3.121 8e-3 -2.544 0.896-2.544 0.894-1.91 1.152-1.909 1.152-2.483 2.601-2.483 2.601-1.334 2.018c-0.733 1.109-1.379 1.968-1.435 1.907-0.057-0.061 0.343-2.373 0.886-5.138 0.543-2.767 0.995-5.381 1.003-5.81l0.015-0.781h-12.831v0.222c0 0.121-0.319 2.346-0.711 4.941-0.391 2.598-1.177 7.608-1.744 11.137-0.682 4.221-1.373 8.44-2.072 12.658-0.608 3.646-1.247 7.288-1.915 10.924-0.481 2.574-1.336 7.101-1.9 10.057-0.563 2.957-1.49 7.717-2.058 10.578l-1.673 8.408-0.641 3.207h7.568zm-335.55-84.623l2.104 8e-3 1.674-0.57 1.675-0.57 1.481-1.503 1.482-1.502 0.779-2.003 0.781-2.002 0.027-2.948 0.028-2.946-0.693-1.151-0.694-1.151-1.207-0.746-1.208-0.748h-5.214l-1.775 0.795-1.775 0.793-1.03 1.104-1.03 1.104-0.81 1.908-0.809 1.906-0.153 2.971-0.152 2.971 0.752 1.478 0.754 1.476 1.454 0.66 1.453 0.659 2.106 7e-3z\" fill=\"#B3131B\"/>`,\r\n    },\r\n    \"discover\": {\r\n        label: \"Discover\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<g fill-rule=\"evenodd\"><path d=\"M54.992 0C0 0 0 0 0 0v0C0 0 0 0 0 501h670.016C755.373 501 780 476.37 780 445.996V0C0 0 755.381 0 725.008 0H54.992z\" fill=\"#4D4D4D\"/><path d=\"M327.152 161.893c8.837 0 16.248 1.784 25.268 6.09v22.751c-8.544-7.863-15.955-11.154-25.756-11.154-19.264 0-34.414 15.015-34.414 34.05 0 20.075 14.681 34.196 35.37 34.196 9.312 0 16.586-3.12 24.8-10.857v22.763c-9.341 4.14-16.911 5.776-25.756 5.776-31.278 0-55.582-22.596-55.582-51.737 0-28.826 24.951-51.878 56.07-51.878zm-97.113.627c11.546 0 22.11 3.72 30.943 10.994l-10.748 13.248c-5.35-5.646-10.41-8.028-16.564-8.028-8.853 0-15.3 4.745-15.3 10.989 0 5.354 3.619 8.188 15.944 12.482 23.365 8.044 30.29 15.176 30.29 30.926 0 19.193-14.976 32.553-36.32 32.553-15.63 0-26.994-5.795-36.458-18.872l13.268-12.03c4.73 8.61 12.622 13.222 22.42 13.222 9.163 0 15.947-5.952 15.947-13.984 0-4.164-2.055-7.734-6.158-10.258-2.066-1.195-6.158-2.977-14.2-5.647-19.291-6.538-25.91-13.527-25.91-27.185 0-16.225 14.214-28.41 32.846-28.41zm234.723 1.728h22.437l28.084 66.592 28.446-66.592h22.267l-45.494 101.686h-11.053l-44.687-101.686zm-397.348.152h30.15c33.312 0 56.534 20.382 56.534 49.641 0 14.59-7.104 28.696-19.118 38.057-10.108 7.901-21.626 11.445-37.574 11.445H67.414V164.4zm96.135 0h20.54v99.143h-20.54V164.4zm411.734 0h58.252v16.8H595.81v22.005h36.336v16.791h-36.336v26.762h37.726v16.785h-58.252V164.4zm71.858 0h30.455c23.69 0 37.265 10.71 37.265 29.272 0 15.18-8.514 25.14-23.986 28.105l33.148 41.766h-25.26l-28.429-39.828h-2.678v39.828h-20.515V164.4zm20.515 15.616v30.025h6.002c13.117 0 20.069-5.362 20.069-15.328 0-9.648-6.954-14.697-19.745-14.697h-6.326zM87.94 181.199v65.559h5.512c13.273 0 21.656-2.394 28.11-7.88 7.103-5.955 11.376-15.465 11.376-24.98 0-9.499-4.273-18.725-11.376-24.681-6.785-5.78-14.837-8.018-28.11-8.018H87.94z\" fill=\"#FFF\"/><path d=\"M415.13 161.213c30.941 0 56.022 23.58 56.022 52.709v.033c0 29.13-25.081 52.742-56.021 52.742s-56.022-23.613-56.022-52.742v-.033c0-29.13 25.082-52.71 56.022-52.71zM779.983 288.36c-26.05 18.33-221.077 149.34-558.754 212.623H724.99c30.365 0 54.992-0 54.992-0V0z\" fill=\"#F47216\"/></g>`,\r\n    },\r\n    \"dinners\": {\r\n        label: \"Diners Club\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<rect width=\"780\" height=\"500\" fill=\"#0079BE\"/><path d=\"m599.93 251.45c0-99.415-82.98-168.13-173.9-168.1h-78.242c-92.003-0.033-167.73 68.705-167.73 168.1 0 90.93 75.727 165.64 167.73 165.2h78.242c90.914 0.436 173.9-74.294 173.9-165.2z\" fill=\"#fff\"/><path d=\"m348.28 97.43c-84.07 0.027-152.19 68.308-152.21 152.58 0.02 84.258 68.144 152.53 152.21 152.56 84.09-0.027 152.23-68.303 152.24-152.56-0.011-84.272-68.149-152.55-152.24-152.58z\" fill=\"#0079BE\"/><path d=\"m252.07 249.6c0.08-41.181 25.746-76.297 61.94-90.25v180.48c-36.194-13.948-61.861-49.045-61.94-90.23zm131 90.274v-180.53c36.207 13.92 61.914 49.057 61.979 90.257-0.065 41.212-25.772 76.322-61.979 90.269z\" fill=\"#fff\"/>`,\r\n    },\r\n    \"jcb\": {\r\n        label: \"JCB\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<rect width=\"780\" height=\"500\" fill=\"#0E4C96\"/><path d=\"m632.24 361.27c0 41.615-33.729 75.36-75.36 75.36h-409.13v-297.88c0-41.626 33.733-75.37 75.365-75.37l409.12-1e-3 1e-3 297.89z\" fill=\"#fff\"/><linearGradient id=\"c\" x1=\"83.977\" x2=\"84.977\" y1=\"645.5\" y2=\"645.5\" gradientTransform=\"matrix(132.87 0 0 -323.02 -10686 2.0876e5)\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#007B40\" offset=\"0\"/><stop stop-color=\"#55B330\" offset=\"1\"/></linearGradient><path d=\"m498.86 256.54c11.684 0.253 23.437-0.516 35.076 0.4 11.787 2.199 14.629 20.043 4.156 25.888-7.141 3.851-15.633 1.433-23.379 2.113h-15.852l-1e-3 -28.401zm41.833-32.145c2.596 9.164-6.238 17.392-15.066 16.13h-26.767c0.185-8.642-0.368-18.021 0.271-26.208 10.725 0.301 21.549-0.616 32.21 0.479 4.581 1.151 8.414 4.917 9.352 9.599zm64.428-135.9c0.498 17.501 0.071 35.927 0.214 53.783-0.035 72.596 0.072 145.19-0.055 217.79-0.47 27.207-24.582 50.844-51.601 51.387-27.046 0.111-54.095 0.016-81.142 0.047v-109.75c29.47-0.154 58.959 0.307 88.417-0.232 13.667-0.859 28.632-9.875 29.27-24.914 1.61-15.103-12.632-25.551-26.152-27.201-5.198-0.135-5.044-1.516 0-2.117 12.892-2.787 23.02-16.133 19.226-29.499-3.236-14.058-18.772-19.499-31.697-19.472-26.351-0.18-52.709-0.026-79.062-0.077 0.172-20.489-0.354-41 0.286-61.474 2.087-26.716 26.806-48.747 53.447-48.27h78.849v-1e-3z\" fill=\"url(#c)\"/><linearGradient id=\"b\" x1=\"83.984\" x2=\"84.979\" y1=\"645.5\" y2=\"645.5\" gradientTransform=\"matrix(133.43 0 0 -323.02 -11031 2.0876e5)\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#1D2970\" offset=\"0\"/><stop stop-color=\"#006DBA\" offset=\"1\"/></linearGradient><path d=\"m174.74 139.54c0.674-27.163 24.889-50.611 51.875-51.007 26.944-0.083 53.891-0.012 80.837-0.036-0.074 90.885 0.148 181.78-0.112 272.66-1.038 26.835-24.99 49.835-51.679 50.308-26.996 0.099-53.995 0.014-80.992 0.042v-113.45c26.223 6.194 53.722 8.832 80.473 4.721 15.993-2.574 33.488-10.424 38.902-27.014 3.986-14.191 1.742-29.126 2.334-43.691v-33.824h-46.297c-0.208 22.369 0.426 44.779-0.335 67.125-1.248 13.734-14.846 22.46-27.8 21.994-16.066 0.17-47.898-11.639-47.898-11.639-0.08-41.918 0.466-94.409 0.692-136.18z\" fill=\"url(#b)\"/><linearGradient id=\"a\" x1=\"83.978\" x2=\"84.977\" y1=\"645.5\" y2=\"645.5\" gradientTransform=\"matrix(132.96 0 0 -323.03 -10842 2.0877e5)\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#6E2B2F\" offset=\"0\"/><stop stop-color=\"#E30138\" offset=\"1\"/></linearGradient><path d=\"m324.72 211.89c-2.434 0.517-0.489-8.301-1.113-11.646 0.165-21.15-0.347-42.323 0.283-63.458 2.083-26.829 26.991-48.916 53.739-48.288h78.766c-0.073 90.884 0.147 181.78-0.111 272.66-1.039 26.834-24.992 49.833-51.681 50.308-26.997 0.1-53.997 0.015-80.997 0.043v-124.3c18.44 15.128 43.5 17.483 66.473 17.524 17.316-6e-3 34.534-2.674 51.35-6.67v-22.772c-18.953 9.446-41.232 15.446-62.243 10.019-14.655-3.65-25.294-17.812-25.056-32.937-1.699-15.728 7.524-32.335 22.981-37.011 19.189-6.008 40.107-1.413 58.096 6.397 3.854 2.019 7.765 4.521 6.222-1.921v-17.9c-30.084-7.156-62.101-9.792-92.329-2.004-8.749 2.469-17.271 6.212-24.38 11.958z\" fill=\"url(#a)\"/>`,\r\n    },\r\n    \"paypal\": {\r\n        label: \"PayPal\", viewBox: \"0 0 780 500\", width: 32, height: 24,\r\n        svg: `<rect width=\"780\" height=\"500\" fill=\"#FFF\"/><path d=\"m168.38 169.85c-8.399-5.774-19.359-8.668-32.88-8.668h-52.346c-4.145 0-6.435 2.073-6.87 6.214l-21.265 133.48c-0.221 1.311 0.107 2.51 0.981 3.6 0.869 1.093 1.962 1.636 3.271 1.636h24.864c4.361 0 6.758-2.068 7.198-6.216l5.888-35.985c0.215-1.744 0.982-3.162 2.291-4.254 1.308-1.09 2.944-1.804 4.907-2.13 1.963-0.324 3.814-0.487 5.562-0.487 1.743 0 3.814 0.11 6.217 0.327 2.397 0.218 3.925 0.324 4.58 0.324 18.756 0 33.478-5.285 44.167-15.866 10.684-10.577 16.032-25.244 16.032-44.004 0-12.868-4.202-22.192-12.597-27.975zm-26.99 40.08c-1.094 7.635-3.926 12.649-8.506 15.049-4.581 2.403-11.124 3.597-19.629 3.597l-10.797 0.328 5.563-35.007c0.434-2.397 1.851-3.597 4.252-3.597h6.218c8.72 0 15.049 1.257 18.975 3.761 3.924 2.51 5.233 7.802 3.924 15.869z\" fill=\"#003087\"/><path d=\"m720.79 161.18h-24.208c-2.405 0-3.821 1.2-4.253 3.599l-21.267 136.1-0.328 0.654c0 1.096 0.437 2.127 1.311 3.109 0.868 0.979 1.963 1.471 3.271 1.471h21.595c4.138 0 6.429-2.068 6.871-6.215l21.265-133.81v-0.325c-2e-3 -3.053-1.424-4.58-4.257-4.58z\" fill=\"#009CDE\"/><path d=\"m428.31 213.86c0-1.088-0.438-2.126-1.306-3.106-0.875-0.981-1.857-1.474-2.945-1.474h-25.191c-2.404 0-4.366 1.096-5.89 3.271l-34.679 51.04-14.394-49.075c-1.096-3.488-3.493-5.236-7.198-5.236h-24.54c-1.093 0-2.075 0.492-2.942 1.474-0.875 0.98-1.309 2.019-1.309 3.106 0 0.44 2.127 6.871 6.379 19.303 4.252 12.434 8.833 25.848 13.741 40.244 4.908 14.394 7.468 22.031 7.688 22.898-17.886 24.43-26.826 37.518-26.826 39.26 0 2.838 1.417 4.254 4.253 4.254h25.191c2.399 0 4.361-1.088 5.89-3.271l83.427-120.4c0.433-0.433 0.651-1.193 0.651-2.289z\" fill=\"#003087\"/><path d=\"m662.89 209.28h-24.865c-3.056 0-4.904 3.599-5.559 10.797-5.677-8.72-16.031-13.088-31.083-13.088-15.704 0-29.065 5.89-40.077 17.668-11.016 11.779-16.521 25.631-16.521 41.551 0 12.871 3.761 23.121 11.285 30.752 7.524 7.639 17.611 11.451 30.266 11.451 6.323 0 12.757-1.311 19.3-3.926 6.544-2.617 11.665-6.105 15.379-10.469 0 0.219-0.222 1.198-0.654 2.942-0.44 1.748-0.655 3.06-0.655 3.926 0 3.494 1.414 5.234 4.254 5.234h22.576c4.138 0 6.541-2.068 7.193-6.216l13.415-85.389c0.215-1.309-0.111-2.507-0.981-3.599-0.876-1.087-1.964-1.634-3.273-1.634zm-42.694 64.452c-5.562 5.453-12.269 8.179-20.12 8.179-6.328 0-11.449-1.742-15.377-5.234-3.928-3.483-5.891-8.282-5.891-14.396 0-8.064 2.727-14.884 8.181-20.446 5.446-5.562 12.214-8.343 20.284-8.343 6.102 0 11.174 1.8 15.212 5.397 4.032 3.599 6.055 8.563 6.055 14.888-1e-3 7.851-2.783 14.505-8.344 19.955z\" fill=\"#009CDE\"/><path d=\"m291.23 209.28h-24.864c-3.058 0-4.908 3.599-5.563 10.797-5.889-8.72-16.25-13.088-31.081-13.088-15.704 0-29.065 5.89-40.078 17.668-11.016 11.779-16.521 25.631-16.521 41.551 0 12.871 3.763 23.121 11.288 30.752 7.525 7.639 17.61 11.451 30.262 11.451 6.104 0 12.433-1.311 18.975-3.926 6.543-2.617 11.778-6.105 15.704-10.469-0.875 2.616-1.309 4.907-1.309 6.868 0 3.494 1.417 5.234 4.253 5.234h22.574c4.141 0 6.543-2.068 7.198-6.216l13.413-85.389c0.215-1.309-0.112-2.507-0.981-3.599-0.873-1.087-1.962-1.634-3.27-1.634zm-42.695 64.614c-5.563 5.351-12.382 8.017-20.447 8.017-6.329 0-11.4-1.742-15.214-5.234-3.819-3.483-5.726-8.282-5.726-14.396 0-8.064 2.725-14.884 8.18-20.446 5.449-5.562 12.211-8.343 20.284-8.343 6.104 0 11.175 1.8 15.214 5.398 4.032 3.599 6.052 8.563 6.052 14.888 0 8.069-2.781 14.778-8.343 20.116z\" fill=\"#003087\"/><path d=\"m540.04 169.85c-8.398-5.774-19.356-8.668-32.879-8.668h-52.02c-4.364 0-6.765 2.073-7.197 6.214l-21.266 133.48c-0.221 1.312 0.106 2.511 0.981 3.601 0.865 1.092 1.962 1.635 3.271 1.635h26.826c2.617 0 4.361-1.416 5.235-4.252l5.89-37.949c0.216-1.744 0.98-3.162 2.29-4.254 1.309-1.09 2.943-1.803 4.908-2.13 1.962-0.324 3.812-0.487 5.562-0.487 1.743 0 3.814 0.11 6.214 0.327 2.399 0.218 3.931 0.324 4.58 0.324 18.76 0 33.479-5.285 44.168-15.866 10.688-10.577 16.031-25.244 16.031-44.004 2e-3 -12.867-4.199-22.191-12.594-27.974zm-33.534 53.82c-4.799 3.271-11.997 4.906-21.592 4.906l-10.47 0.328 5.562-35.007c0.432-2.397 1.849-3.597 4.252-3.597h5.887c4.798 0 8.614 0.218 11.454 0.653 2.831 0.44 5.562 1.799 8.179 4.089 2.618 2.291 3.926 5.618 3.926 9.98 0 9.16-2.402 15.375-7.198 18.648z\" fill=\"#009CDE\"/>`,\r\n    },\r\n    pix: {\r\n            label: 'Pix',\r\n            viewBox: '0 0 32 24',\r\n            width: 32,\r\n            height: 24,\r\n            svg: `<path d=\"M0 2C0 0.89543 0.895431 0 2 0H30C31.1046 0 32 0.895431 32 2V22C32 23.1046 31.1046 24 30 24H2C0.895431 24 0 23.1046 0 22V2Z\" fill=\"#F5F7FA\"/><path d=\"M18.5109 15.2935L16.3178 13.1004C16.2377 13.0203 16.143 13.0057 16.092 13.0057C16.041 13.0057 15.9463 13.0203 15.8661 13.1004L13.6658 15.3008C13.4181 15.5485 13.0319 15.9492 11.7423 15.9492L14.4454 18.645C14.8552 19.0543 15.4108 19.2842 15.99 19.2842C16.5692 19.2842 17.1248 19.0543 17.5346 18.645L20.2449 15.9419C19.5819 15.9419 19.0282 15.8108 18.5109 15.2935ZM13.6658 8.69977L15.8661 10.9001C15.9244 10.9584 16.0118 10.9948 16.092 10.9948C16.1721 10.9948 16.2596 10.9584 16.3178 10.9001L18.4963 8.72163C19.0136 8.18247 19.6038 8.05861 20.2668 8.05861L17.5565 5.35554C17.1466 4.94622 16.5911 4.71631 16.0118 4.71631C15.4326 4.71631 14.8771 4.94622 14.4672 5.35554L11.7642 8.05132C13.0465 8.05132 13.4399 8.47391 13.6658 8.69977Z\" fill=\"#1EAC7D\"/><path d=\"M22.6348 10.4338L20.9955 8.78722H20.0774C19.684 8.78722 19.2906 8.94751 19.021 9.23165L16.8352 11.4174C16.6312 11.6214 16.3616 11.7234 16.0921 11.7234C15.8145 11.7195 15.5488 11.6101 15.3489 11.4174L13.1486 9.2098C12.8717 8.93293 12.4928 8.77264 12.0921 8.77264H11.0211L9.35261 10.4484C8.94329 10.8582 8.71338 11.4138 8.71338 11.993C8.71338 12.5722 8.94329 13.1278 9.35261 13.5376L11.0211 15.2134H12.0994C12.4928 15.2134 12.8717 15.0531 13.1558 14.7762L15.3562 12.5759C15.5602 12.3719 15.8298 12.2699 16.0993 12.2699C16.3689 12.2699 16.6385 12.3719 16.8425 12.5759L19.0356 14.7689C19.3124 15.0458 19.6913 15.2061 20.092 15.2061H21.01L22.6494 13.5595C23.0604 13.1423 23.2896 12.5793 23.2869 11.9936C23.2841 11.408 23.0497 10.8472 22.6348 10.4338Z\" fill=\"#1EAC7D\"/>`,\r\n        },\r\n    boleto: {\r\n            label: 'Boleto',\r\n            viewBox: '0 0 32 24',\r\n            width: 32,\r\n            height: 24,\r\n            svg: `<path d=\"M0 2C0 0.89543 0.895431 0 2 0H30C31.1046 0 32 0.895431 32 2V22C32 23.1046 31.1046 24 30 24H2C0.895431 24 0 23.1046 0 22V2Z\" fill=\"#EDEDED\"/><path d=\"M2 0.25H30C30.9665 0.25 31.75 1.0335 31.75 2V22C31.75 22.9665 30.9665 23.75 30 23.75H2C1.0335 23.75 0.25 22.9665 0.25 22V2C0.25 1.0335 1.0335 0.25 2 0.25Z\" stroke=\"#979797\" stroke-opacity=\"0.378312\" stroke-width=\"0.5\"/><rect x=\"4\" y=\"13\" width=\"1\" height=\"7\" rx=\"0.5\" fill=\"#636F78\"/><rect x=\"6\" y=\"13\" width=\"2\" height=\"7\" rx=\"1\" fill=\"#636F78\"/><rect x=\"9\" y=\"13\" width=\"1\" height=\"7\" rx=\"0.5\" fill=\"#636F78\"/><rect x=\"11\" y=\"13\" width=\"1\" height=\"7\" rx=\"0.5\" fill=\"#636F78\"/><rect x=\"13\" y=\"13\" width=\"2\" height=\"7\" rx=\"1\" fill=\"#636F78\"/><rect x=\"16\" y=\"13\" width=\"1\" height=\"7\" rx=\"0.5\" fill=\"#636F78\"/><rect x=\"18\" y=\"13\" width=\"2\" height=\"7\" rx=\"1\" fill=\"#636F78\"/><rect x=\"21\" y=\"13\" width=\"1\" height=\"7\" rx=\"0.5\" fill=\"#636F78\"/><rect x=\"23\" y=\"13\" width=\"2\" height=\"7\" rx=\"1\" fill=\"#636F78\"/><rect x=\"26\" y=\"13\" width=\"1\" height=\"7\" rx=\"0.5\" fill=\"#636F78\"/><rect x=\"28\" y=\"13\" width=\"1\" height=\"7\" rx=\"0.5\" fill=\"#636F78\"/><text x=\"6\" y=\"9\" font-family=\"Arial,sans-serif\" font-size=\"6\" font-weight=\"bold\" fill=\"#636F78\">Boleto</text>`,\r\n        },\r\n    aura: {\r\n            label: 'Aura',\r\n            viewBox: '0 0 32 24',\r\n            width: 32,\r\n            height: 24,\r\n            svg: `<path d=\"M0 2C0 0.89543 0.895431 0 2 0H30C31.1046 0 32 0.895431 32 2V22C32 23.1046 31.1046 24 30 24H2C0.895431 24 0 23.1046 0 22V2Z\" fill=\"#007AB5\"/><path d=\"M0 10.97C11.97 7.98 22.31 8.72 32 10.97V24H0V10.97Z\" fill=\"#D8232A\"/><path d=\"M0 13.87C10.94 11.29 21.59 11.45 32 13.87V24H0V13.87Z\" fill=\"#FEDA61\"/><text x=\"16\" y=\"9\" text-anchor=\"middle\" font-family=\"Arial,sans-serif\" font-size=\"5\" font-weight=\"bold\" fill=\"#F5F7FA\">AURA</text>`,\r\n        },\r\n    'alelo-alimentacao': {\r\n            label: 'Alelo Alimentação',\r\n            viewBox: '0 0 32 24',\r\n            width: 32,\r\n            height: 24,\r\n            svg: `<path d=\"M0 2C0 0.89543 0.895431 0 2 0H30C31.1046 0 32 0.895431 32 2V22C32 23.1046 31.1046 24 30 24H2C0.895431 24 0 23.1046 0 22V2Z\" fill=\"#007455\"/><text x=\"16\" y=\"14\" text-anchor=\"middle\" font-family=\"Arial,sans-serif\" font-size=\"5\" font-weight=\"bold\" fill=\"#B7D256\">alelo</text>`,\r\n        },\r\n};\r\n\r\nexport const FIGMA_FLAGS: FigmaFlagRegistry = {\r\n    country: COUNTRY,\r\n    payment: PAYMENT,\r\n};\r\n\r\n// ── Utilities ────────────────────────────────────────────────────────────────\r\n\r\nexport function isFigmaFlag(\r\n    set: FigmaFlagSet | string | null | undefined,\r\n    name: string | null | undefined,\r\n): boolean {\r\n    if (!set || !name) return false;\r\n    return !!FIGMA_FLAGS[set as FigmaFlagSet]?.[name];\r\n}\r\n\r\nexport function getFigmaFlagAsset(\r\n    set: FigmaFlagSet | string | null | undefined,\r\n    name: string | null | undefined,\r\n): FigmaFlagAsset | null {\r\n    if (!isFigmaFlag(set, name)) return null;\r\n    return FIGMA_FLAGS[set as FigmaFlagSet][name as string];\r\n}\r\n\r\n/** Returns full `<svg>` wrapped SVG string ready for `[innerHTML]`. */\r\nexport function getFigmaFlagSvg(\r\n    set: FigmaFlagSet | string | null | undefined,\r\n    name: string | null | undefined,\r\n): string | null {\r\n    const asset = getFigmaFlagAsset(set, name);\r\n    if (!asset?.svg) return null;\r\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${asset.viewBox}\" width=\"100%\" height=\"100%\" preserveAspectRatio=\"xMidYMid meet\">${asset.svg}</svg>`;\r\n}\r\n\r\n/** Lista de slugs disponíveis num set (pra docs/playgrounds). */\r\nexport function listFigmaFlagNames(set: FigmaFlagSet): string[] {\r\n    return Object.keys(FIGMA_FLAGS[set] ?? {});\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, computed, inject, signal } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport {\r\n    FigmaFlagAsset,\r\n    FigmaFlagSet,\r\n    getFigmaFlagAsset,\r\n    getFigmaFlagSvg,\r\n    isFigmaFlag,\r\n} from './figma-flags';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/** Tamanho canônico — paralelo a matcha-icon / matcha-brand. */\r\n// Canonical by extension; sm/md/lg accepted as @deprecated aliases (1:1, value-preserving).\r\nexport type MatchaFlagSize = 'small' | 'medium' | 'large' | (string & {}) | '' | null | undefined;\r\n\r\n/**\r\n * `matcha-flag` — bandeira de país ou operadora de pagamento.\r\n *\r\n * Renderiza assets canônicos do Figma DSV3 (`matcha/flag/country` + `matcha/flag/payment`).\r\n * - **country**: emoji unicode (DSV3 Figma usa raster PNG; emoji é leve + acessível).\r\n * - **payment**: SVG vetorial inline (cards, PIX, Boleto, etc).\r\n *\r\n * **Sizes** (paralelo a matcha-brand):\r\n * - `small` — 16x12 (country 2:3) / 24x18 (payment 4:3) — denso em listas, table cells\r\n * - `medium` — 22x16 / 32x24 — DEFAULT — uso geral em forms, headers\r\n * - `large` — 32x24 / 48x36 — destaque, hero de transação\r\n *\r\n * @example País — phone selector (BR)\r\n *   <matcha-flag set=\"country\" name=\"brasil\" size=\"small\"></matcha-flag>\r\n *\r\n * @example Pagamento — transação card\r\n *   <matcha-flag set=\"payment\" name=\"visa\" size=\"medium\"></matcha-flag>\r\n *\r\n * @example Pagamento — PIX em hero\r\n *   <matcha-flag set=\"payment\" name=\"pix\" size=\"large\"></matcha-flag>\r\n *\r\n * ## A11y\r\n * - `role=\"img\"` no host quando há label semântico\r\n * - `aria-label` injetado do label canônico do registry (Visa, Pix, Brasil…)\r\n * - Decorativo? Passe `[ariaHidden]=\"true\"` ou omita `name` que vira `aria-hidden`.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-flag',\r\n    template: `\r\n        @if (svgHtml(); as html) {\r\n            <span class=\"matcha-flag__svg\" [innerHTML]=\"html\"></span>\r\n        } @else if (asset()?.emoji; as emoji) {\r\n            <span class=\"matcha-flag__emoji\" aria-hidden=\"true\">{{ emoji }}</span>\r\n        }\r\n    `,\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-flag',\r\n        '[attr.role]': 'ariaHidden ? null : \"img\"',\r\n        '[attr.aria-label]': 'ariaHidden ? null : (asset()?.label || null)',\r\n        '[attr.aria-hidden]': 'ariaHidden ? \"true\" : null',\r\n        '[attr.data-set]': 'set || null',\r\n        '[attr.data-name]': 'name || null',\r\n        '[attr.data-size]': 'size || null',\r\n        '[class.matcha-flag--country]': 'set === \"country\"',\r\n        '[class.matcha-flag--payment]': 'set === \"payment\"',\r\n    },\r\n})\r\nexport class MatchaFlagComponent {\r\n    /** Categoria do asset: `country` (país) ou `payment` (operadora). */\r\n    @Input()\r\n    set set(v: FigmaFlagSet | string | null | undefined) { this._set.set(v ?? null); }\r\n    get set(): FigmaFlagSet | string | null | undefined { return this._set(); }\r\n    private readonly _set = signal<FigmaFlagSet | string | null | undefined>(null);\r\n\r\n    /**\r\n     * Slug do asset dentro do set:\r\n     * - `country`: `brasil`, `estados-unidos`, `portugal`, `espanha`\r\n     * - `payment`: `visa`, `mastercard-credito`, `elo`, `pix`, `boleto`, `american-express`, `aura`, `alelo-alimentacao`...\r\n     */\r\n    @Input()\r\n    set name(v: string | null | undefined) { this._name.set(v ?? null); }\r\n    get name(): string | null | undefined { return this._name(); }\r\n    private readonly _name = signal<string | null | undefined>(null);\r\n\r\n    /** Tamanho do flag — controla o box CSS via `[data-size]`. */\r\n    @Input({ transform: (v: string) => sizeAlias(v) as MatchaFlagSize }) size: MatchaFlagSize = 'medium';\r\n\r\n    /** Pura decoração? `true` esconde do screen reader (omite role/aria-label).\r\n     *  Aceita `<matcha-flag ariaHidden>` (bare) e `[ariaHidden]=\"true\"`. */\r\n    @Input({ transform: booleanAttribute }) ariaHidden: boolean = false;\r\n\r\n    private readonly sanitizer = inject(DomSanitizer);\r\n\r\n    readonly asset = computed<FigmaFlagAsset | null>(() => getFigmaFlagAsset(this._set(), this._name()));\r\n\r\n    readonly svgHtml = computed<SafeHtml | null>(() => {\r\n        const html = getFigmaFlagSvg(this._set(), this._name());\r\n        return html ? this.sanitizer.bypassSecurityTrustHtml(html) : null;\r\n    });\r\n\r\n    /** Verifica se o slug pedido existe no registry (útil pra fallback no consumer). */\r\n    readonly exists = computed(() => isFigmaFlag(this._set(), this._name()));\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaFlagComponent } from './flag.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaFlagComponent],\r\n    exports: [MatchaFlagComponent],\r\n})\r\nexport class MatchaFlagModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatchaPeriodComponent } from './matcha-period.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaPeriodComponent],\r\n    exports: [MatchaPeriodComponent],\r\n})\r\nexport class MatchaPeriodModule { }\r\n","/**\r\n * Contrato público do seletor de período (`<matcha-period>` /\r\n * `<matcha-field type=\"period\">`).\r\n *\r\n * Os presets são fornecidos pelo CONSUMIDOR — o DS não embute lista própria.\r\n * Motivo: \"Este trimestre\" / \"Últimos 30 dias\" são decisões de produto (quais\r\n * atalhos fazem sentido naquela tela, em que idioma, com que semântica de\r\n * fechamento de mês), não decisões de design system.\r\n */\r\n\r\n/** Intervalo de datas (início e fim), o payload que um preset calcula. */\r\nexport interface MatchaPeriodRange {\r\n    start: Date;\r\n    end: Date;\r\n}\r\n\r\n/**\r\n * Preset de período passado via `[presets]`.\r\n *\r\n * Cada preset é auto-contido e sabe calcular o próprio intervalo em\r\n * `getRange()` — chamado NO MOMENTO da seleção, não no bind. É isso que\r\n * permite atalhos relativos (\"Hoje\", \"Últimos 7 dias\") sem o consumidor\r\n * precisar recalcular nada quando o dia vira.\r\n */\r\nexport interface MatchaPeriodPreset {\r\n    /** Identificador único e estável do preset (vai no valor emitido). */\r\n    key: string;\r\n    /** Texto exibido na lista. Já traduzido pelo consumidor. */\r\n    label: string;\r\n    /** Calcula o intervalo deste preset. Chamado a cada seleção. */\r\n    getRange: () => MatchaPeriodRange;\r\n}\r\n\r\n/**\r\n * Valor do componente: intervalo selecionado + a chave do preset de origem.\r\n *\r\n * `presetKey` é `null` quando o intervalo veio do modo \"Período personalizado\".\r\n * Guardar a origem no valor é o que permite ao consumidor reabrir a tela com o\r\n * atalho ainda marcado (e recalcular o range relativo, se quiser).\r\n */\r\nexport interface MatchaPeriodValue {\r\n    start: Date;\r\n    end: Date;\r\n    presetKey: string | null;\r\n}\r\n\r\n/** Formatos aceitos para exibir o intervalo no gatilho. */\r\nexport type MatchaPeriodDisplayFormat = 'dd/MM/yy' | 'dd/MM/yyyy';\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaCardComponent } from '../../matcha-card/card/card.component';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-msg-box',\r\n    templateUrl: './msg-box.component.html',\r\n    styleUrls: ['./msg-box.component.scss'],\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaCardComponent, MatchaIconComponent],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaMsgBoxComponent {\r\n\r\n    private _color = 'info';\r\n    @Input() get color(): string { return this._color; }\r\n    set color(v: string | null) { this._color = v || 'info'; }\r\n\r\n    @HostBinding('attr.color')\r\n    get colorAttr(): string {\r\n        return this.color;\r\n    }\r\n\r\n    private _icon = 'info-out';\r\n    @Input() get icon(): string { return this._icon; }\r\n    set icon(v: string | null) { this._icon = v || 'info-out'; }\r\n\r\n    @HostBinding('class')\r\n    public get hostClasses(): string {\r\n        return 'matcha-msg-box';\r\n    }\r\n}\r\n","<matcha-card [color]=\"color\" [blockquoteColor]=\"color\" blockquote=\"left\" alpha=\"true\" class=\"p-16\">\r\n    <div class=\"d-flex flex-align-center gap-16 w-100-p\">\r\n        <matcha-icon [name]=\"icon\" size=\"lg\" [color]=\"color\"></matcha-icon>\r\n        <div class=\"d-flex flex-column flex-sm-row flex-align-center flex-space-between flex-1 w-100-p gap-16\">\r\n            <div class=\"w-100-p\">\r\n                <ng-content></ng-content>\r\n            </div>\r\n            <ng-content select=\"matcha-msg-box-actions\"></ng-content>\r\n        </div>\r\n    </div>\r\n</matcha-card>","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-msg-box-actions',\r\n    templateUrl: './msg-box-actions.component.html',\r\n    styleUrls: ['./msg-box-actions.component.scss'],\r\n    standalone: true,\r\n    imports: [CommonModule],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaMsgBoxActionsComponent {\r\n    @HostBinding('class')\r\n    public get hostClasses(): string {\r\n        return 'matcha-msg-box-actions';\r\n    }\r\n}\r\n","<div class=\"d-flex flex-align-center gap-16\">\r\n    <ng-content></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { MatchaMsgBoxComponent } from './msg-box/msg-box.component';\r\nimport { MatchaMsgBoxActionsComponent } from './msg-box-actions/msg-box-actions.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaMsgBoxComponent, MatchaMsgBoxActionsComponent],\r\n    exports: [MatchaMsgBoxComponent, MatchaMsgBoxActionsComponent]\r\n})\r\nexport class MatchaMsgBoxModule { }\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  DestroyRef,\r\n  HostListener,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  computed,\r\n  effect,\r\n  inject,\r\n  input,\r\n  numberAttribute,\r\n  output,\r\n  signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaIconButtonModule } from '../matcha-icon-button/icon-button.module';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\nexport type NotificationStatus     = 'error' | 'warning' | 'success' | 'info' | 'neutral';\r\n// Canonical by extension; sm/md/lg accepted as @deprecated aliases (1:1, value-preserving).\r\nexport type NotificationSize       = 'small' | 'medium' | 'large';\r\nexport type NotificationPoliteness = 'polite' | 'assertive';\r\n\r\n/**\r\n * matcha-notification — In-page notification (5 status × 3 size × politeness).\r\n *\r\n * Distinção dos componentes irmãos:\r\n *   • matcha-banner       — persistente · dispensável · hero promo image opcional\r\n *   • matcha-snackbar     — floating toast · auto-dismiss padrão 5s\r\n *   • matcha-notification — in-page · status semântico · opcionalmente efêmera\r\n *\r\n * Anatomia (4 slots projetados — auto-detect via `:not(:has(*))`):\r\n *   • [matcha-notification-media]  — ícone/badge customizado (default = ícone do status)\r\n *   • [matcha-notification-title]  — título (body-md 14/20 semibold)\r\n *   • default ng-content           — description (body-md 14/20 text-secondary)\r\n *   • [matcha-notification-action] — CTA(s) — ver Multi-CTA abaixo\r\n *\r\n * **Slot auto-detect:** projete só os slots que precisar — slots vazios somem\r\n * automaticamente (sem `*ngIf` no consumer). Pattern moderno slot-based.\r\n *\r\n * Politeness (a11y):\r\n *   • `polite` (default) — `role=\"status\"` + `aria-live=\"polite\"`. Não interrompe\r\n *     leitor de tela. Use pra feedback informativo (\"Salvo\", \"Atualização disponível\").\r\n *   • `assertive` — `role=\"alert\"` + `aria-live=\"assertive\"`. Interrompe leitor.\r\n *     Reserve pra erros críticos (\"Conexão perdida\", \"Operação falhou\").\r\n *\r\n * Auto-dismiss opcional: `[autoDismiss]=\"5000\"` fecha após 5s. 0 = persistente (default).\r\n *   • Pausa automaticamente em hover/focus dentro da notification (WCAG SC 2.2.1/2.2.2).\r\n *   • Countdown bar visual aparece quando autoDismiss > 0 (oculto em prefers-reduced-motion).\r\n *\r\n * Multi-CTA (ordem canônica):\r\n *   1. Primary CTA primeiro (variant default `filled` + cor do status).\r\n *   2. Secondary depois (`variant=\"ghost\"` ou `variant=\"outline\"`).\r\n *   Leitor de tela respeita ordem do DOM — primary sempre primeiro.\r\n *\r\n * Exemplos:\r\n * ```html\r\n * <!-- Polite (default) -->\r\n * <matcha-notification status=\"success\" (closed)=\"onDismiss()\">\r\n *   <span matcha-notification-title>Salvo com sucesso</span>\r\n *   Suas alterações foram aplicadas.\r\n * </matcha-notification>\r\n *\r\n * <!-- Erro crítico — assertive interrompe leitor -->\r\n * <matcha-notification status=\"error\" politeness=\"assertive\">\r\n *   <span matcha-notification-title>Conexão perdida</span>\r\n *   Verifique sua internet e tente novamente.\r\n * </matcha-notification>\r\n *\r\n * <!-- Auto-dismiss timed -->\r\n * <matcha-notification status=\"info\" [autoDismiss]=\"5000\">\r\n *   <span matcha-notification-title>Atualização disponível</span>\r\n *   <button matcha-button matcha-notification-action variant=\"outline\" size=\"sm\">Recarregar</button>\r\n * </matcha-notification>\r\n *\r\n * <!-- Multi-CTA: primary + secondary -->\r\n * <matcha-notification status=\"warning\">\r\n *   <span matcha-notification-title>Sessão expirando</span>\r\n *   <button matcha-button matcha-notification-action color=\"warn\" size=\"sm\">Manter conectado</button>\r\n *   <button matcha-button matcha-notification-action variant=\"ghost\" size=\"sm\">Sair</button>\r\n * </matcha-notification>\r\n *\r\n * <!-- Custom media slot -->\r\n * <matcha-notification status=\"info\">\r\n *   <matcha-icon-badge matcha-notification-media color=\"primary\">\r\n *     <matcha-icon name=\"celebrate\"></matcha-icon>\r\n *   </matcha-icon-badge>\r\n *   <span matcha-notification-title>Algo especial</span>\r\n * </matcha-notification>\r\n * ```\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-notification',\r\n  templateUrl: './notification.component.html',\r\n  styleUrls: ['./notification.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, MatchaIconButtonModule, CommonModule],\r\n  host: {\r\n    '[attr.role]':       'ariaRole()',\r\n    '[attr.aria-live]':  'politeness()',\r\n    '[attr.size]':       'size()',\r\n    'class':             'matcha-notification',\r\n    '[class.matcha-notification--error]':   'status() === \"error\"',\r\n    '[class.matcha-notification--warning]': 'status() === \"warning\"',\r\n    '[class.matcha-notification--success]': 'status() === \"success\"',\r\n    '[class.matcha-notification--info]':    'status() === \"info\"',\r\n    '[class.matcha-notification--neutral]': 'status() === \"neutral\"',\r\n  },\r\n})\r\nexport class MatchaNotificationComponent {\r\n  /** Status semântico — controla cor, ícone default e border-left. */\r\n  readonly status = input<NotificationStatus>('info');\r\n\r\n  /**\r\n   * Tamanho. small (compacto pra forms densos) · medium (default) · large (hero).\r\n   * Controla padding e gap — não muda tipografia.\r\n   */\r\n  readonly size = input<NotificationSize, string>('medium', { transform: (v) => sizeAlias(v) as NotificationSize });\r\n\r\n  /**\r\n   * Nome do ícone Material/Figma pra overrider o default per status.\r\n   * Pra customização total (matcha-icon-badge, SVG livre), use slot\r\n   * `[matcha-notification-media]` em vez deste input.\r\n   */\r\n  readonly icon = input<string>('');\r\n\r\n  /** Toggle do botão de close (X). false = não-dispensável. */\r\n  readonly showClose = input(true, { transform: booleanAttribute });\r\n\r\n  /** aria-label do botão de close (i18n). Default \"Dispensar\". */\r\n  readonly closeAriaLabel = input<string>('Dispensar');\r\n\r\n  /**\r\n   * Politeness do leitor de tela.\r\n   * - `polite` (default) — role=\"status\", não interrompe.\r\n   * - `assertive` — role=\"alert\", interrompe. Reserve pra erros críticos.\r\n   */\r\n  readonly politeness = input<NotificationPoliteness>('polite');\r\n\r\n  /**\r\n   * Auto-dismiss em ms. 0 = persistente (default). Quando > 0:\r\n   *   • Pausa em hover/focus interno (WCAG SC 2.2.1).\r\n   *   • Renderiza countdown bar visual na base.\r\n   *   • Emite (closed) ao expirar.\r\n   */\r\n  readonly autoDismiss = input(0, { transform: numberAttribute });\r\n\r\n  /** Emitido no click do X OU quando autoDismiss expira. Consumer remove do DOM. */\r\n  readonly closed = output<void>();\r\n\r\n  // ── Computeds ─────────────────────────────────────────────────────────\r\n  /** role aria derivado da politeness — `status` polite / `alert` assertive. */\r\n  readonly ariaRole = computed(() => this.politeness() === 'assertive' ? 'alert' : 'status');\r\n\r\n  /**\r\n   * Ícone default per status — Material Symbols (resolve via legacy-icon-map\r\n   * pro canônico kebab-case do figma-icons.ts). Canon Figma DSV3 (15955:692).\r\n   */\r\n  readonly defaultIcon = computed(() => {\r\n    if (this.icon()) return this.icon();\r\n    switch (this.status()) {\r\n      case 'error':   return 'error';          // → messaging variant=error\r\n      case 'warning': return 'warning';        // → messaging variant=alerta\r\n      case 'success': return 'check_circle';   // → check-circle\r\n      case 'info':    return 'info';\r\n      case 'neutral': return 'settings';\r\n      default:        return 'info';\r\n    }\r\n  });\r\n\r\n  // ── Countdown + auto-dismiss state ────────────────────────────────────\r\n  /** Progress 0→1 do countdown (1 = full bar, 0 = expired). */\r\n  readonly countdownProgress = signal(1);\r\n  private readonly paused = signal(false);\r\n  private dismissTimer: ReturnType<typeof setTimeout> | null = null;\r\n  private dismissDeadline = 0;\r\n  private dismissRemaining = 0;\r\n  private rafHandle: number | null = null;\r\n  private readonly destroyRef = inject(DestroyRef);\r\n\r\n  constructor() {\r\n    // Auto-dismiss reativo: re-roda quando [autoDismiss] ou paused mudar.\r\n    effect(() => {\r\n      const ms = this.autoDismiss();\r\n      const isPaused = this.paused();\r\n      this.cancelTimer();\r\n\r\n      if (ms <= 0) {\r\n        this.countdownProgress.set(1);\r\n        return;\r\n      }\r\n      if (isPaused) return; // mantém dismissRemaining; retoma quando isPaused=false\r\n\r\n      const wait = this.dismissRemaining > 0 ? this.dismissRemaining : ms;\r\n      this.dismissDeadline = Date.now() + wait;\r\n      this.dismissTimer = setTimeout(() => this.dismiss(), wait);\r\n      this.tickProgress(ms);\r\n    });\r\n\r\n    this.destroyRef.onDestroy(() => this.cancelTimer());\r\n  }\r\n\r\n  private cancelTimer(): void {\r\n    if (this.dismissTimer) {\r\n      clearTimeout(this.dismissTimer);\r\n      this.dismissTimer = null;\r\n    }\r\n    if (this.rafHandle !== null) {\r\n      cancelAnimationFrame(this.rafHandle);\r\n      this.rafHandle = null;\r\n    }\r\n  }\r\n\r\n  /** Atualiza countdownProgress via rAF (smooth, sem jank). */\r\n  private tickProgress(totalMs: number): void {\r\n    const tick = () => {\r\n      const remaining = Math.max(0, this.dismissDeadline - Date.now());\r\n      this.countdownProgress.set(remaining / totalMs);\r\n      if (remaining > 0) this.rafHandle = requestAnimationFrame(tick);\r\n    };\r\n    this.rafHandle = requestAnimationFrame(tick);\r\n  }\r\n\r\n  // ── Pause-on-hover/focus (WCAG SC 2.2.1, 2.2.2) ────────────────────────\r\n  @HostListener('mouseenter')\r\n  @HostListener('focusin')\r\n  onPause(): void {\r\n    if (this.autoDismiss() <= 0 || this.paused()) return;\r\n    this.dismissRemaining = Math.max(0, this.dismissDeadline - Date.now());\r\n    this.paused.set(true);\r\n  }\r\n\r\n  @HostListener('mouseleave')\r\n  @HostListener('focusout', ['$event'])\r\n  onResume(event?: FocusEvent): void {\r\n    // focusout: ignora se foco voltou pra dentro da notification.\r\n    if (event && event.relatedTarget instanceof Node) {\r\n      const host = event.currentTarget as HTMLElement;\r\n      if (host?.contains(event.relatedTarget)) return;\r\n    }\r\n    if (!this.paused()) return;\r\n    this.paused.set(false);\r\n  }\r\n\r\n  /** Dispensa programaticamente. Equivalente ao click do X. */\r\n  dismiss(): void {\r\n    this.cancelTimer();\r\n    this.dismissRemaining = 0;\r\n    this.closed.emit();\r\n  }\r\n}\r\n","<!-- Media slot: consumer projeta matcha-icon-badge/SVG/etc.\r\n     Se vazio, renderiza fallback default icon do status.\r\n     CSS hide do fallback quando há projected content via :has([matcha-notification-media]). -->\r\n<div class=\"matcha-notification__media\">\r\n    <ng-content select=\"[matcha-notification-media]\"></ng-content>\r\n    <matcha-icon class=\"matcha-notification__media-default\"\r\n                 [name]=\"defaultIcon()\"\r\n                 aria-hidden=\"true\"></matcha-icon>\r\n</div>\r\n\r\n<div class=\"matcha-notification__body\">\r\n    <span class=\"matcha-notification__title\">\r\n        <ng-content select=\"[matcha-notification-title]\"></ng-content>\r\n    </span>\r\n    <div class=\"matcha-notification__description\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>\r\n\r\n<!-- CTA slot — consumer projeta N elementos. Ordem canônica: primary primeiro, secondary depois. -->\r\n<div class=\"matcha-notification__actions\">\r\n    <ng-content select=\"[matcha-notification-action]\"></ng-content>\r\n</div>\r\n\r\n@if (showClose()) {\r\n    <button matcha-icon-button\r\n            variant=\"ghost\"\r\n            size=\"sm\"\r\n            color=\"basic\"\r\n            class=\"matcha-notification__close\"\r\n            type=\"button\"\r\n            [attr.aria-label]=\"closeAriaLabel()\"\r\n            (click)=\"dismiss()\">\r\n        <matcha-icon name=\"close\"></matcha-icon>\r\n    </button>\r\n}\r\n\r\n<!-- Countdown bar quando autoDismiss > 0. scaleX shrinks da direita pra esquerda. -->\r\n@if (autoDismiss() > 0) {\r\n    <div class=\"matcha-notification__countdown\"\r\n         [style.transform]=\"'scaleX(' + countdownProgress() + ')'\"\r\n         aria-hidden=\"true\"></div>\r\n}\r\n","/**\n * Base dos assets que os editores injetam em runtime — SunEditor, GrapesJS e plugins.\n *\n * Até a 22.38.4 os dois editores apontavam para `unpkg.com/matcha-components`: o pacote SEM\n * escopo, que é a linha LEGADA e parou na 20.281.0. O código do componente vinha da 22.x e os\n * assets da 20.x, versionados de forma independente — então correção publicada nos assets novos\n * nunca chegava a ninguém, e o `matcha-page-builder` travava num spinner sem mensagem.\n *\n * Sem versão fixa havia um segundo problema: o unpkg serve \"a última publicada\", então um publish\n * no pacote antigo mudava o que executa no consumidor sem ninguém pedir.\n *\n * `MATCHA_VERSION` é reescrito por `scripts/build/sync-version.js`, que roda ANTES do `build:lib`\n * no fluxo de release. O bundle sempre pede os assets da própria versão — asset e componente não\n * voltam a divergir por esquecimento.\n */\nexport const MATCHA_VERSION = '22.38.8';\n\nexport const MATCHA_ASSETS_BASE = `https://unpkg.com/@inchurch/matcha-components@${MATCHA_VERSION}/assets`;\n","import { Component, OnInit, AfterViewInit, Input, Output, EventEmitter, OnDestroy, ViewEncapsulation, ElementRef, ViewChild, NgZone, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaSpinnerComponent } from '../matcha-spinner/spinner/spinner.component';\r\nimport { MatchaNotificationComponent } from '../matcha-notification/notification.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\nimport { MATCHA_ASSETS_BASE } from '../shared/assets-cdn';\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-page-builder',\r\n  templateUrl: './matcha-page-builder.component.html',\r\n  styleUrls: ['./matcha-page-builder.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaSpinnerComponent, MatchaNotificationComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaPageBuilderComponent implements OnInit, AfterViewInit, OnDestroy {\r\n  @ViewChild('gjsContainer', { static: false }) gjsContainer!: ElementRef;\r\n  @Input() showControls = false;\r\n  @Output() onSave = new EventEmitter<string>();\r\n  @Output() onChange = new EventEmitter<string>();\r\n\r\n  private _changeDebounceTimer: any = null;\r\n\r\n  public containerId = 'gjs-' + Math.random().toString(36).substring(2, 9);\r\n  public isLoading = true;\r\n  /** Assets não carregaram. Sem isto o `isLoading` ficava preso em `true` e o usuário via um\r\n   *  spinner eterno, sem mensagem — os dois caminhos de falha só faziam `console.error`. */\r\n  public loadFailed = false;\r\n  private editor: any;\r\n  private _text: string = '';\r\n  private isEditorInitialized = false;\r\n\r\n  @Input() set text(value: string) {\r\n    this._text = value;\r\n    if (this.isEditorInitialized && this.editor) {\r\n      if (value) {\r\n        this.editor.setComponents(value);\r\n      } else {\r\n        this.editor.runCommand('core:canvas-clear');\r\n      }\r\n    }\r\n  }\r\n\r\n  constructor(private ngZone: NgZone, private cdr: ChangeDetectorRef) { }\r\n\r\n  /**\r\n   * Publica o estado de carregamento na TELA.\r\n   *\r\n   * Este componente é `OnPush`, e todo o carregamento corre em `runOutsideAngular`. Nessa\r\n   * combinação, mudar `isLoading` não repinta nada: o `ngZone.run` dispara um ciclo de detecção,\r\n   * mas um componente OnPush é PULADO nesse ciclo enquanto não estiver marcado como sujo. Só\r\n   * marcam: mudança de `@Input()`, evento do próprio template, ou `markForCheck()`.\r\n   *\r\n   * Sem o `markForCheck` o editor terminava de carregar e ficava atrás de um spinner eterno, até\r\n   * o consumidor mexer em `[text]` — o que fazia a correção parecer mágica e o sintoma,\r\n   * intermitente.\r\n   */\r\n  private publishLoadingState(isLoading: boolean, failed = false): void {\r\n    this.ngZone.run(() => {\r\n      this.isLoading = isLoading;\r\n      this.loadFailed = failed;\r\n      this.cdr.markForCheck();\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void { }\r\n\r\n  async ngAfterViewInit() {\r\n    // Roda fora da zona do Angular para evitar conflito do Zone.js com callbacks internos do GrapesJS\r\n    this.ngZone.runOutsideAngular(async () => {\r\n      try {\r\n        console.log('[PageBuilder] ▶ Iniciando carregamento...', { containerId: this.containerId });\r\n\r\n        // Helper para injetar scripts via URL\r\n        const injectScript = (id: string, url: string) => {\r\n          return new Promise<void>((resolve) => {\r\n            const existingScript = document.getElementById(id) as HTMLScriptElement;\r\n            if (existingScript) {\r\n              if (existingScript.hasAttribute('data-loaded')) {\r\n                resolve();\r\n                return;\r\n              }\r\n              existingScript.addEventListener('load', () => resolve());\r\n              existingScript.addEventListener('error', () => resolve()); // Continua mesmo com erro\r\n              return;\r\n            }\r\n\r\n            const script = document.createElement('script');\r\n            script.type = 'text/javascript';\r\n            script.id = id;\r\n            script.src = url;\r\n            script.onload = () => {\r\n              script.setAttribute('data-loaded', 'true');\r\n              resolve();\r\n            };\r\n            script.onerror = () => {\r\n              console.warn(`[PageBuilder] ⚠ Falha ao carregar script opcional: ${id}`);\r\n              resolve(); // NÃO rejeita, apenas avisa\r\n            };\r\n            document.head.appendChild(script);\r\n          });\r\n        };\r\n\r\n        // Helper para injetar CSS via URL\r\n        const injectStyle = (id: string, url: string) => {\r\n          return new Promise<void>((resolve) => {\r\n            if (document.getElementById(id)) {\r\n              resolve();\r\n              return;\r\n            }\r\n            const link = document.createElement('link');\r\n            link.id = id;\r\n            link.rel = 'stylesheet';\r\n            link.href = url;\r\n            link.onload = () => resolve();\r\n            link.onerror = () => resolve(); // CSS não bloqueia mesmo se falhar\r\n            document.head.appendChild(link);\r\n          });\r\n        };\r\n\r\n        const CDN_BASE = `${MATCHA_ASSETS_BASE}/page-builder`;\r\n        const ASSETS_JS_PATH = `${CDN_BASE}/js`;\r\n        const ASSETS_CSS_PATH = `${CDN_BASE}/css`;\r\n\r\n        // 0. Carrega o CSS\r\n        await injectStyle('grapesjs-css', `${ASSETS_CSS_PATH}/grapes.min.css`);\r\n        await injectStyle('grapick-css', `${ASSETS_CSS_PATH}/grapick.min.css`);\r\n\r\n        // 1. Carrega o Core do GrapesJS\r\n        await injectScript('grapesjs-core', `${ASSETS_JS_PATH}/grapes.min.js`);\r\n\r\n        const grapesjs = (window as any).grapesjs;\r\n        console.log('[PageBuilder] 🔍 window.grapesjs after load:', typeof grapesjs, !!grapesjs?.init);\r\n\r\n        if (!grapesjs || !grapesjs.init) {\r\n          console.error('[PageBuilder] ❌ GrapesJS global não encontrado após injeção!');\r\n          this.failLoading();\r\n          return;\r\n        }\r\n\r\n        // 2. Carrega todos os plugins (usando os nomes dos arquivos no CDN)\r\n        const pluginFiles = [\r\n          'gjs-blocks-basic',\r\n          'grapesjs-plugin-forms',\r\n          'grapesjs-component-countdown',\r\n          'grapesjs-plugin-export',\r\n          'grapesjs-tabs',\r\n          'grapesjs-custom-code',\r\n          'grapesjs-touch',\r\n          'grapesjs-parser-postcss',\r\n          'grapesjs-tooltip',\r\n          'grapesjs-tui-image-editor',\r\n          'grapesjs-typed',\r\n          'grapesjs-style-bg',\r\n          'grapesjs-preset-webpage'\r\n        ];\r\n\r\n        for (const file of pluginFiles) {\r\n          await injectScript(file, `${ASSETS_JS_PATH}/${file}.js`);\r\n        }\r\n\r\n        // 3. IDs dos plugins registrados internamente (conforme o demo funcional)\r\n        const pluginIds = [\r\n          'gjs-blocks-basic',\r\n          'grapesjs-plugin-forms',\r\n          'grapesjs-component-countdown',\r\n          'grapesjs-plugin-export',\r\n          'grapesjs-tabs',\r\n          'grapesjs-custom-code',\r\n          'grapesjs-touch',\r\n          'grapesjs-parser-postcss',\r\n          'grapesjs-tooltip',\r\n          'grapesjs-tui-image-editor',\r\n          'grapesjs-typed',\r\n          'grapesjs-style-bg',\r\n          'grapesjs-preset-webpage'\r\n        ];\r\n\r\n        console.log('[PageBuilder] ✅ Scripts carregados. Inicializando GrapesJS...');\r\n\r\n        // 3. Inicializa o editor\r\n\r\n        this.editor = grapesjs.init({\r\n          height: '100%',\r\n          container: `#${this.containerId}`,\r\n          fromElement: true,\r\n          storageManager: false,\r\n          showOffsets: true,\r\n          assetManager: {\r\n            embedAsBase64: true,\r\n          },\r\n          selectorManager: { componentFirst: true },\r\n          styleManager: {\r\n            sectors: [\r\n              {\r\n                name: 'General',\r\n                properties: [\r\n                  {\r\n                    extend: 'float',\r\n                    type: 'radio',\r\n                    default: 'none',\r\n                    options: [\r\n                      { value: 'none', className: 'fa fa-times' },\r\n                      { value: 'left', className: 'fa fa-align-left' },\r\n                      { value: 'right', className: 'fa fa-align-right' }\r\n                    ],\r\n                  },\r\n                  'display',\r\n                  { extend: 'position', type: 'select' },\r\n                  'top',\r\n                  'right',\r\n                  'left',\r\n                  'bottom',\r\n                ],\r\n              }, {\r\n                name: 'Dimension',\r\n                open: false,\r\n                properties: [\r\n                  'width',\r\n                  {\r\n                    id: 'flex-width',\r\n                    type: 'integer',\r\n                    name: 'Width',\r\n                    units: ['px', '%'],\r\n                    property: 'flex-basis',\r\n                    toRequire: 1,\r\n                  },\r\n                  'height',\r\n                  'max-width',\r\n                  'min-height',\r\n                  'margin',\r\n                  'padding'\r\n                ],\r\n              }, {\r\n                name: 'Typography',\r\n                open: false,\r\n                properties: [\r\n                  'font-family',\r\n                  'font-size',\r\n                  'font-weight',\r\n                  'letter-spacing',\r\n                  'color',\r\n                  'line-height',\r\n                  {\r\n                    extend: 'text-align',\r\n                    options: [\r\n                      { id: 'left', label: 'Left', className: 'fa fa-align-left' },\r\n                      { id: 'center', label: 'Center', className: 'fa fa-align-center' },\r\n                      { id: 'right', label: 'Right', className: 'fa fa-align-right' },\r\n                      { id: 'justify', label: 'Justify', className: 'fa fa-align-justify' }\r\n                    ],\r\n                  },\r\n                  {\r\n                    property: 'text-decoration',\r\n                    type: 'radio',\r\n                    default: 'none',\r\n                    options: [\r\n                      { id: 'none', label: 'None', className: 'fa fa-times' },\r\n                      { id: 'underline', label: 'underline', className: 'fa fa-underline' },\r\n                      { id: 'line-through', label: 'Line-through', className: 'fa fa-strikethrough' }\r\n                    ],\r\n                  },\r\n                  'text-shadow'\r\n                ],\r\n              }, {\r\n                name: 'Decorations',\r\n                open: false,\r\n                properties: [\r\n                  'opacity',\r\n                  'border-radius',\r\n                  'border',\r\n                  'box-shadow',\r\n                  'background', // { id: 'background-bg', property: 'background', type: 'bg' }\r\n                ],\r\n              }, {\r\n                name: 'Extra',\r\n                open: false,\r\n                buildProps: [\r\n                  'transition',\r\n                  'perspective',\r\n                  'transform'\r\n                ],\r\n              }, {\r\n                name: 'Flex',\r\n                open: false,\r\n                properties: [{\r\n                  name: 'Flex Container',\r\n                  property: 'display',\r\n                  type: 'select',\r\n                  defaults: 'block',\r\n                  list: [\r\n                    { value: 'block', name: 'Disable' },\r\n                    { value: 'flex', name: 'Enable' }\r\n                  ],\r\n                }, {\r\n                  name: 'Flex Parent',\r\n                  property: 'label-parent-flex',\r\n                  type: 'integer',\r\n                }, {\r\n                  name: 'Direction',\r\n                  property: 'flex-direction',\r\n                  type: 'radio',\r\n                  defaults: 'row',\r\n                  list: [{\r\n                    value: 'row',\r\n                    name: 'Row',\r\n                    className: 'icons-flex icon-dir-row',\r\n                    title: 'Row',\r\n                  }, {\r\n                    value: 'row-reverse',\r\n                    name: 'Row reverse',\r\n                    className: 'icons-flex icon-dir-row-rev',\r\n                    title: 'Row reverse',\r\n                  }, {\r\n                    value: 'column',\r\n                    name: 'Column',\r\n                    title: 'Column',\r\n                    className: 'icons-flex icon-dir-col',\r\n                  }, {\r\n                    value: 'column-reverse',\r\n                    name: 'Column reverse',\r\n                    title: 'Column reverse',\r\n                    className: 'icons-flex icon-dir-col-rev',\r\n                  }],\r\n                }, {\r\n                  name: 'Justify',\r\n                  property: 'justify-content',\r\n                  type: 'radio',\r\n                  defaults: 'flex-start',\r\n                  list: [{\r\n                    value: 'flex-start',\r\n                    className: 'icons-flex icon-just-start',\r\n                    title: 'Start',\r\n                  }, {\r\n                    value: 'flex-end',\r\n                    title: 'End',\r\n                    className: 'icons-flex icon-just-end',\r\n                  }, {\r\n                    value: 'space-between',\r\n                    title: 'Space between',\r\n                    className: 'icons-flex icon-just-sp-bet',\r\n                  }, {\r\n                    value: 'space-around',\r\n                    title: 'Space around',\r\n                    className: 'icons-flex icon-just-sp-ar',\r\n                  }, {\r\n                    value: 'center',\r\n                    title: 'Center',\r\n                    className: 'icons-flex icon-just-sp-cent',\r\n                  }],\r\n                }, {\r\n                  name: 'Align',\r\n                  property: 'align-items',\r\n                  type: 'radio',\r\n                  defaults: 'center',\r\n                  list: [{\r\n                    value: 'flex-start',\r\n                    title: 'Start',\r\n                    className: 'icons-flex icon-al-start',\r\n                  }, {\r\n                    value: 'flex-end',\r\n                    title: 'End',\r\n                    className: 'icons-flex icon-al-end',\r\n                  }, {\r\n                    value: 'stretch',\r\n                    title: 'Stretch',\r\n                    className: 'icons-flex icon-al-str',\r\n                  }, {\r\n                    value: 'center',\r\n                    title: 'Center',\r\n                    className: 'icons-flex icon-al-center',\r\n                  }],\r\n                }, {\r\n                  name: 'Flex Children',\r\n                  property: 'label-parent-flex',\r\n                  type: 'integer',\r\n                }, {\r\n                  name: 'Order',\r\n                  property: 'order',\r\n                  type: 'integer',\r\n                  defaults: 0,\r\n                  min: 0\r\n                }, {\r\n                  name: 'Flex',\r\n                  property: 'flex',\r\n                  type: 'composite',\r\n                  properties: [{\r\n                    name: 'Grow',\r\n                    property: 'flex-grow',\r\n                    type: 'integer',\r\n                    defaults: 0,\r\n                    min: 0\r\n                  }, {\r\n                    name: 'Shrink',\r\n                    property: 'flex-shrink',\r\n                    type: 'integer',\r\n                    defaults: 0,\r\n                    min: 0\r\n                  }, {\r\n                    name: 'Basis',\r\n                    property: 'flex-basis',\r\n                    type: 'integer',\r\n                    units: ['px', '%', ''],\r\n                    unit: '',\r\n                    defaults: 'auto',\r\n                  }],\r\n                }, {\r\n                  name: 'Align',\r\n                  property: 'align-self',\r\n                  type: 'radio',\r\n                  defaults: 'auto',\r\n                  list: [{\r\n                    value: 'auto',\r\n                    name: 'Auto',\r\n                  }, {\r\n                    value: 'flex-start',\r\n                    title: 'Start',\r\n                    className: 'icons-flex icon-al-start',\r\n                  }, {\r\n                    value: 'flex-end',\r\n                    title: 'End',\r\n                    className: 'icons-flex icon-al-end',\r\n                  }, {\r\n                    value: 'stretch',\r\n                    title: 'Stretch',\r\n                    className: 'icons-flex icon-al-str',\r\n                  }, {\r\n                    value: 'center',\r\n                    title: 'Center',\r\n                    className: 'icons-flex icon-al-center',\r\n                  }],\r\n                }]\r\n              }\r\n            ],\r\n          },\r\n          plugins: pluginIds,\r\n          pluginsOpts: {\r\n            'gjs-blocks-basic': { flexGrid: true },\r\n            'grapesjs-tui-image-editor': {\r\n              script: [\r\n                // 'https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.7/fabric.min.js',\r\n                'https://uicdn.toast.com/tui.code-snippet/v1.5.2/tui-code-snippet.min.js',\r\n                'https://uicdn.toast.com/tui-color-picker/v2.2.7/tui-color-picker.min.js',\r\n                'https://uicdn.toast.com/tui-image-editor/v3.15.2/tui-image-editor.min.js'\r\n              ],\r\n              style: [\r\n                'https://uicdn.toast.com/tui-color-picker/v2.2.7/tui-color-picker.min.css',\r\n                'https://uicdn.toast.com/tui-image-editor/v3.15.2/tui-image-editor.min.css',\r\n              ],\r\n            },\r\n            'grapesjs-tabs': {\r\n              tabsBlock: { category: 'Extra' }\r\n            },\r\n            'grapesjs-typed': {\r\n              block: {\r\n                category: 'Extra',\r\n                content: {\r\n                  type: 'typed',\r\n                  'type-speed': 40,\r\n                  strings: [\r\n                    'Text row one',\r\n                    'Text row two',\r\n                    'Text row three',\r\n                  ],\r\n                }\r\n              }\r\n            },\r\n            'grapesjs-preset-webpage': {\r\n              showStylesOnChange: 0,\r\n              modalImportTitle: 'Import Template',\r\n              modalImportLabel: '<div style=\"margin-bottom: 10px; font-size: 13px;\">Paste here your HTML/CSS and click Import</div>',\r\n              modalImportContent: function (editor: any) {\r\n                return editor.getHtml() + '<style>' + editor.getCss() + '</style>'\r\n              },\r\n            },\r\n          },\r\n        });\r\n\r\n        const editor = this.editor;\r\n\r\n        editor.I18n.addMessages({\r\n          en: {\r\n            styleManager: {\r\n              properties: {\r\n                'background-repeat': 'Repeat',\r\n                'background-position': 'Position',\r\n                'background-attachment': 'Attachment',\r\n                'background-size': 'Size',\r\n              }\r\n            },\r\n          }\r\n        });\r\n\r\n        var pn = editor.Panels;\r\n        var modal = editor.Modal;\r\n        var cmdm = editor.Commands;\r\n\r\n        // Update canvas-clear command\r\n        cmdm.add('canvas-clear', function () {\r\n          if (confirm('Are you sure to clean the canvas?')) {\r\n            editor.runCommand('core:canvas-clear')\r\n            setTimeout(function () { localStorage.clear() }, 0)\r\n          }\r\n        });\r\n\r\n        // Removemos os comandos referenciando infoContainer que não existe\r\n\r\n        // O `grapesjs-preset-webpage` registra o comando de importacao e o DS ja configura o\r\n        // modal dele (`modalImportTitle`/`modalImportLabel`), mas esta versao do preset nao cria\r\n        // botao nenhum — o modal existia inalcancavel. Sem esta porta nao ha como trazer um HTML\r\n        // pronto para dentro do editor: colar pelo editor de texto passa antes pelo sanitizador\r\n        // do SunEditor, que descarta `<style>` e toda tag de layout fora da whitelist dele.\r\n        const optionsButtons = pn.getPanel('options')?.get('buttons');\r\n        if (optionsButtons && !pn.getButton('options', 'gjs-open-import-webpage')) {\r\n          // Ao lado do export, nao no fim: depois da lixeira o par importar/exportar se perde.\r\n          const exportButton = pn.getButton('options', 'export-template');\r\n          const at = exportButton ? optionsButtons.indexOf(exportButton) : undefined;\r\n          optionsButtons.add(\r\n            {\r\n              id: 'gjs-open-import-webpage',\r\n              className: 'fa fa-upload',\r\n              command: 'gjs-open-import-webpage',\r\n              togglable: false,\r\n            },\r\n            at === undefined ? {} : { at }\r\n          );\r\n        }\r\n\r\n        // Add and beautify tooltips\r\n        [['sw-visibility', 'Show Borders'], ['preview', 'Preview'], ['fullscreen', 'Fullscreen'],\r\n        ['export-template', 'Export'], ['undo', 'Undo'], ['redo', 'Redo'],\r\n        ['gjs-open-import-webpage', 'Import'], ['canvas-clear', 'Clear canvas']]\r\n          .forEach(function (item) {\r\n            const btn = pn.getButton('options', item[0]);\r\n            if (btn) btn.set('attributes', { title: item[1], 'data-tooltip-pos': 'bottom' });\r\n          });\r\n        [['open-sm', 'Style Manager'], ['open-layers', 'Layers'], ['open-blocks', 'Blocks']]\r\n          .forEach(function (item) {\r\n            const btn = pn.getButton('views', item[0]);\r\n            if (btn) btn.set('attributes', { title: item[1], 'data-tooltip-pos': 'bottom' });\r\n          });\r\n\r\n\r\n\r\n\r\n\r\n        // Do stuff on load\r\n        editor.on('load', () => {\r\n          // A TELA sai do carregamento aqui, na primeira linha: `load` significa que o canvas\r\n          // existe, e e so isso que o usuario precisa para comecar a usar o editor. Todo o resto\r\n          // deste callback e ajuste cosmetico do painel do GrapesJS — botoes, setores de estilo,\r\n          // HTML auxiliar. Nada disso pode prender a UI: antes ficavam ~30 linhas antes do ponto\r\n          // de liberacao, e uma excecao em qualquer uma delas deixava o editor pronto atras de um\r\n          // spinner eterno, sem erro na tela (o GrapesJS invoca este callback fora da nossa pilha,\r\n          // entao o catch do metodo tambem nao pegava).\r\n          this.publishLoadingState(false);\r\n\r\n          try {\r\n          var $ = grapesjs.$;\r\n\r\n          // Show borders by default\r\n          pn.getButton('options', 'sw-visibility').set('active', 1);\r\n\r\n          // Show logo with the version\r\n\r\n          // Load and show settings and style manager\r\n          var openTmBtn = pn.getButton('views', 'open-tm');\r\n          openTmBtn && openTmBtn.set('active', 1);\r\n          var openSm = pn.getButton('views', 'open-sm');\r\n          openSm && openSm.set('active', 1);\r\n\r\n          // Remove trait view\r\n          pn.removeButton('views', 'open-tm');\r\n\r\n          // Add Settings Sector\r\n          const traitsSectorEl = document.createElement('div');\r\n          traitsSectorEl.className = 'gjs-sm-sector no-select';\r\n          traitsSectorEl.innerHTML =\r\n            '<div class=\"gjs-sm-sector-title\"><span class=\"icon-settings fa fa-cog\"></span> <span class=\"gjs-sm-sector-label\">Settings</span></div>' +\r\n            '<div class=\"gjs-sm-properties\" style=\"display: none;\"></div>';\r\n          const traitsProps = traitsSectorEl.querySelector('.gjs-sm-properties') as HTMLElement;\r\n          const gjsTrtTraits = document.querySelector('.gjs-trt-traits');\r\n          if (gjsTrtTraits && traitsProps) {\r\n            traitsProps.appendChild(gjsTrtTraits);\r\n          }\r\n          const smSectors = document.querySelector('.gjs-sm-sectors');\r\n          if (smSectors) {\r\n            smSectors.parentNode?.insertBefore(traitsSectorEl, smSectors);\r\n          }\r\n          const sectorTitle = traitsSectorEl.querySelector('.gjs-sm-sector-title');\r\n          if (sectorTitle && traitsProps) {\r\n            sectorTitle.addEventListener('click', function () {\r\n              const hidden = traitsProps.style.display === 'none';\r\n              traitsProps.style.display = hidden ? 'block' : 'none';\r\n            });\r\n          }\r\n\r\n          // Open block manager\r\n          var openBlocksBtn = editor.Panels.getButton('views', 'open-blocks');\r\n          openBlocksBtn && openBlocksBtn.set('active', 1);\r\n\r\n          editor.on('component:selected', (a: any) => {\r\n            const btnOpenCode = editor.Panels.getButton('views', 'code-editor');\r\n            if (!btnOpenCode.active) {\r\n              const openSmBtn = editor.Panels.getButton('views', 'open-sm');\r\n              openSmBtn.set('active', true);\r\n            }\r\n          });\r\n\r\n          this.isEditorInitialized = true;\r\n\r\n          // Sair do carregamento vem PRIMEIRO, e dentro da zona. Este callback corre em\r\n          // `runOutsideAngular`, entao `isLoading = false` sozinho nao repinta nada — quem avisa o\r\n          // Angular e o `ngZone.run`. Ele ficava depois do bloco abaixo, e qualquer excecao ali\r\n          // (o ramo de conteudo VAZIO chama `core:canvas-clear`) o tornava inalcancavel: o editor\r\n          // ficava pronto atras de um spinner eterno, ate um clique qualquer forcar a deteccao.\r\n          // A excecao tambem nao caia no catch do metodo, porque o GrapesJS invoca este callback\r\n          // fora da nossa pilha.\r\n\r\n          try {\r\n            if (this._text) {\r\n              this.editor.setComponents(this._text);\r\n            } else {\r\n              this.editor.runCommand('core:canvas-clear');\r\n            }\r\n          } catch (error) {\r\n            console.error('[PageBuilder] ❌ Erro ao aplicar o conteúdo inicial:', error);\r\n          }\r\n\r\n          editor.on('update', () => {\r\n            clearTimeout(this._changeDebounceTimer);\r\n            this._changeDebounceTimer = setTimeout(() => {\r\n              const html = editor.getHtml();\r\n              const css = editor.getCss();\r\n              this.ngZone.run(() => {\r\n                this.onChange.emit(`<style>${css}</style>${html}`);\r\n              });\r\n            }, 300);\r\n          });\r\n          } catch (error) {\r\n            console.error('[PageBuilder] ❌ Erro ao montar o painel do editor:', error);\r\n          }\r\n        });\r\n\r\n        // Se o evento 'load' demorar, podemos tentar setar os componentes se já estiver inicializado\r\n        if (this.editor && !this.isEditorInitialized && this._text) {\r\n          this.editor.setComponents(this._text);\r\n        }\r\n      } catch (error) {\r\n        console.error('[PageBuilder] ❌ Erro ao inicializar o GrapesJS:', error);\r\n        this.failLoading();\r\n      }\r\n    }); // fim runOutsideAngular\r\n  }\r\n\r\n  /** Sai do estado de carregamento mostrando erro. `ngZone.run` porque a inicialização inteira\r\n   *  corre em `runOutsideAngular` — sem isso a troca não dispara detecção de mudanças e a tela\r\n   *  continua no spinner mesmo com o flag trocado. */\r\n  private failLoading(): void {\r\n    this.publishLoadingState(false, true);\r\n  }\r\n\r\n  save() {\r\n    if (!this.editor) return;\r\n\r\n    const html = this.editor.getHtml();\r\n    const css = this.editor.getCss();\r\n\r\n    const combinedOutput = `<style>${css}</style>${html}`;\r\n    this.onSave.emit(combinedOutput);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    clearTimeout(this._changeDebounceTimer);\r\n    if (this.editor) {\r\n      this.editor.destroy();\r\n    }\r\n  }\r\n}\r\n","<div class=\"matcha-page-builder\">\n    <matcha-spinner *ngIf=\"isLoading\"></matcha-spinner>\n\n    <matcha-notification *ngIf=\"loadFailed\" status=\"error\" [showClose]=\"false\">\n        Não foi possível carregar o editor de blocos. Recarregue a página; se persistir, avise o time do design system.\n    </matcha-notification>\n\n    <div class=\"editor-shell\" [style.display]=\"isLoading || loadFailed ? 'none' : 'block'\">\n        <div [id]=\"containerId\"></div>\n    </div>\n    <div class=\"editor-controls\" *ngIf=\"showControls && !isLoading && !loadFailed\">\n        <button matcha-button (click)=\"save()\">Salvar</button>\n    </div>\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { MatchaPageBuilderComponent } from './matcha-page-builder.component';\r\nimport { MatchaButtonModule } from '../matcha-button/button.module';\r\n\r\n@NgModule({\r\n  imports: [MatchaPageBuilderComponent, MatchaButtonModule],\r\n    exports: [MatchaPageBuilderComponent]\r\n})\r\nexport class MatchaPageBuilderModule { }\r\n","import { Component, HostBinding, Input ,ChangeDetectionStrategy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-skeleton',\r\n    templateUrl: './skeleton.component.html',\r\n    styleUrls: ['./skeleton.component.scss'],\r\n    standalone: true,\r\n  imports: [CommonModule],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MatchaSkeletonComponent {\r\n\r\n    @Input('amount') @HostBinding('attr.amount') public amount: number | string = 3;\r\n    @Input('grid') @HostBinding('attr.grid') public grid: number | string = 3;\r\n    @Input('height') @HostBinding('attr.height') public height: number | string = 100;\r\n    @Input('model') @HostBinding('attr.model') public model: 'profile'| 'table' | 'empty' | string | null = 'empty';\r\n    @Input('gap') @HostBinding('attr.gap') public gap: number | string = 16;\r\n\r\n    // Getters privados para conversão sem modificar os inputs\r\n    private get amountNumber(): number {\r\n        return typeof this.amount === 'string' ? parseInt(this.amount, 10) : this.amount;\r\n    }\r\n\r\n    private get gridNumber(): number {\r\n        return typeof this.grid === 'string' ? parseInt(this.grid, 10) : this.grid;\r\n    }\r\n\r\n    public get classes(): string {\r\n        // Usa os valores convertidos sem modificar os inputs\r\n        const amountValue = this.amountNumber;\r\n        const gridValue = this.gridNumber;\r\n\r\n        let classes = `gap-${this.gap} `;\r\n        amountValue > 1 ? classes += `grid-sm-${gridValue - 1} ` : classes;\r\n        amountValue > 2 ? classes += `grid-md-${gridValue} ` : classes;\r\n        return classes;\r\n    }\r\n\r\n    private get _isCssHeight(): boolean {\r\n        return typeof this.height === 'string' && /[a-z%]/i.test(this.height);\r\n    }\r\n\r\n    public get heightStyle(): string | null {\r\n        return this._isCssHeight ? String(this.height) : null;\r\n    }\r\n\r\n    public get heightClass(): string {\r\n        // `skeleton-block` é o que dá corpo a essa área. Sem ela o bloco fica oco —\r\n        // antes ele parecia preenchido só porque o container inteiro era um gradiente\r\n        // cinza; agora o container é uma superfície de card e cada placeholder precisa\r\n        // declarar a própria cor.\r\n        const base = 'skeleton-block flex-column--force p-16';\r\n        return this._isCssHeight ? base : `h-${this.height} ${base}`;\r\n    }\r\n\r\n    public get amountArray(): number[] {\r\n        const amountValue = this.amountNumber;\r\n        return Array(amountValue).fill(0).map((_, index) => index);\r\n    }\r\n  trackByIndex(index: number): number { return index; }\r\n}\r\n","<ng-content></ng-content>\n<!-- CARD SKELETON -->\n<div [class]=\"classes\" *ngIf=\"model !== 'table'\">\n    <div class=\"skeleton-animated-background flex-column--force p-0 user-select-none\" *ngFor=\"let i of amountArray\">\n\n        <ng-container *ngIf=\"model === 'profile'\"><span class=\"h8 title p-16 m-0\"> <span class=\"radius-full skeleton-block h-48 w-48\"></span>&nbsp;</span></ng-container>\n\n        <div [class]=\"heightClass\" [style.height]=\"heightStyle\"></div>\n\n        <ng-container *ngIf=\"model === 'profile'\">\n            <div class=\"flex-column--force\">\n                <div class=\"flex-column--force p-16 gap-16\">\n                    <div class=\"w-100-p h-16 skeleton-block radius-full\"></div>\n                    <div class=\"w-100-p h-16 skeleton-block radius-full\"></div>\n                </div>\n            </div>\n        </ng-container>\n\n    </div>\n</div>\n<!-- CARD SKELETON -->\n\n<!-- TABLE SKELETON -->\n<div class=\"skeleton-animated-background w-100-p mr-16 flex-column--force p-0 user-select-none\" *ngIf=\"model === 'table'\">\n\n    <div class=\"flex-column--force h-64 skeleton-block\">\n        <ng-container>&nbsp;</ng-container>\n    </div>\n\n    <ng-container *ngFor=\"let i of amountArray\">\n        <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force\">\n            <div class=\"w-100-p flex-row--force gap-16\">\n                <div class=\"min-h-48 min-w-48 h-48 w-48 skeleton-block radius-full\"></div>\n                <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n                    <div class=\"h-16 w-60-p skeleton-block radius-full\"></div>\n                    <div class=\"h-16 w-100-p skeleton-block radius-full\"></div>\n                </div>\n            </div>\n            <div class=\"h-16 w-100-p flex-column--force skeleton-block radius-full\"></div>\n            <div class=\"w-100-p flex-row--force gap-16\">\n                <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n                    <div class=\"h-16 w-60-p skeleton-block radius-full\"></div>\n                    <div class=\"h-16 w-100-p skeleton-block radius-full\"></div>\n                </div>\n            </div>\n            <div class=\"h-16 w-100-p flex-column--force skeleton-block radius-full\"></div>\n        </div>\n\n        <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force skeleton-row--alt\">\n            <div class=\"w-100-p flex-row--force gap-16\">\n                <div class=\"min-h-48 min-w-48 h-48 w-48 skeleton-block radius-full\"></div>\n                <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n                    <div class=\"h-16 w-100-p skeleton-block radius-full\"></div>\n                    <div class=\"h-16 w-30-p skeleton-block radius-full\"></div>\n                </div>\n            </div>\n            <div class=\"h-16 w-100-p flex-column--force skeleton-block radius-full\"></div>\n            <div class=\"w-100-p flex-row--force gap-16\">\n                <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n                    <div class=\"h-16 w-60-p skeleton-block radius-full\"></div>\n                    <div class=\"h-16 w-100-p skeleton-block radius-full\"></div>\n                </div>\n            </div>\n            <div class=\"h-16 w-100-p flex-column--force skeleton-block radius-full\"></div>\n        </div>\n\n    </ng-container>\n\n</div>\n<!-- TABLE SKELETON -->\n","import { NgModule } from '@angular/core';\r\nimport { MatchaSkeletonComponent } from './skeleton/skeleton.component';\r\n@NgModule({\r\n  imports: [MatchaSkeletonComponent],\r\n    exports: [MatchaSkeletonComponent],\r\n})\r\nexport class MatchaSkeletonModule {}\r\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  Injector,\n  Renderer2,\n  ViewEncapsulation,\n  booleanAttribute,\n  effect,\n  inject,\n  input,\n  numberAttribute,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\n\nexport type TableSize = 'compact' | 'comfortable' | 'spacious';\n\n/**\n * `<matcha-table>` (canon) ou `<table matcha-table>` (legado) — 1:1 Figma\n * `matcha/table/cell` 15641:275. Dual-mode: a forma elemento tem um wrapper de\n * scroll próprio (`.matcha-table__scroll`), robusto pra `stickyStart`/\n * `stickyEnd`/`stickyHeader`; a forma legado usa o próprio `<table>` como\n * superfície de scroll. `<thead>/<tbody>/<tr>/<td>` são idênticos nas duas\n * formas — migrar é só trocar a tag de abertura/fechamento.\n *\n * Exemplos de uso, companion directives (`[matcha-table-sortable]`,\n * `[rowClick]`), helpers de cell e empty/loading states: ver\n * o showcase (`page-matcha-table`).\n */\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n  selector: 'matcha-table, [matcha-table]',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [NgTemplateOutlet],\n})\nexport class MatchaTableComponent implements AfterViewInit {\n  readonly size         = input<TableSize>('comfortable');\n  readonly striped      = input(false, { transform: booleanAttribute });\n  readonly hover        = input(false, { transform: booleanAttribute });\n  readonly bordered     = input(false, { transform: booleanAttribute });\n  /** Arredonda o topo do container de scroll — canon pra tabela dentro de um card/superfície com cantos arredondados. */\n  readonly roundedTop   = input(false, { transform: booleanAttribute });\n  /**\n   * ⚠️ Desativado quando `stickyHeader` está ativo (ver `matcha-table.scss`,\n   * seletores `:not([sticky-header])`). A célula de canto precisaria `top` E\n   * `left`/`right` simultâneos — `position: sticky` nos dois eixos ao mesmo\n   * tempo é inconsistente entre browsers. O header fixo prevalece.\n   */\n  readonly stickyHeader = input(false, { transform: booleanAttribute });\n  readonly loading      = input(false, { transform: booleanAttribute });\n  readonly ariaLabel    = input<string>('');\n\n  /** Server-side pagination — total de rows pra leitor de tela. WCAG SC 1.3.1. */\n  readonly ariaRowcount = input(0, { transform: numberAttribute });\n  /** Total de columns (idem). */\n  readonly ariaColcount = input(0, { transform: numberAttribute });\n\n  /** Sticky columns à esquerda (N cells iniciais 1-4) — útil em scroll horizontal. */\n  readonly stickyStart = input(0, { transform: numberAttribute });\n  /** Sticky columns à direita (N cells finais 1-4). */\n  readonly stickyEnd   = input(0, { transform: numberAttribute });\n\n  private readonly hostEl = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly renderer = inject(Renderer2);\n  private readonly injector = inject(Injector);\n\n  /** Decidido uma vez (tag do host não muda no ciclo de vida). `<table matcha-table>` → false. `<matcha-table>` → true. */\n  readonly isElementForm = this.hostEl.nativeElement.tagName.toLowerCase() !== 'table';\n\n  // ───────────────────────────────────────────────────────────────────────\n  // Host bindings — CSS-only, sempre no host (CSS do tema alcança o filho\n  // real na forma elemento via seletor `matcha-table[x] .matcha-table`).\n  // ───────────────────────────────────────────────────────────────────────\n  @HostBinding('attr.striped')       get stripedAttr()      { return this.striped() ? '' : null; }\n  @HostBinding('attr.hover')         get hoverAttr()        { return this.hover() ? '' : null; }\n  @HostBinding('attr.bordered')      get borderedAttr()     { return this.bordered() ? '' : null; }\n  @HostBinding('attr.rounded-top')   get roundedTopAttr()   { return this.roundedTop() ? '' : null; }\n  @HostBinding('attr.sticky-header') get stickyHeaderAttr() { return this.stickyHeader() ? '' : null; }\n  @HostBinding('attr.loading')       get loadingAttr()      { return this.loading() ? '' : null; }\n  @HostBinding('class.matcha-table') get matchaTableClass() { return !this.isElementForm; }\n\n  // ───────────────────────────────────────────────────────────────────────\n  // Scroll do host — só a forma legado (host É a <table>, precisa rolar\n  // sozinha). Na forma elemento quem rola é `.matcha-table__scroll`; se o\n  // host TAMBÉM tivesse overflow-x:auto (regra CSS estática, sem gate),\n  // viraria um segundo container de scroll aninhado — bug real (barra\n  // dessincronizada, jank ao arrastar), não hipotético.\n  // ───────────────────────────────────────────────────────────────────────\n  @HostBinding('style.overflow-x') get hostOverflowX() { return this.isElementForm ? null : 'auto'; }\n  @HostBinding('style.overflow-y') get hostOverflowY() { return this.isElementForm ? null : 'hidden'; }\n\n  // ───────────────────────────────────────────────────────────────────────\n  // Host bindings — precisam existir no nó <table> REAL (a11y não tem\n  // equivalente de seletor CSS; data-size/data-sticky-* já existiam no nó\n  // real hoje, automação pode consultar direto). Gate isElementForm aqui\n  // não é redundante: na forma elemento o wrapper NÃO deve carregar\n  // nenhum desses (duas fontes de verdade) — o valor real vai pro filho\n  // via mirrorAttributesToRealTable().\n  // ───────────────────────────────────────────────────────────────────────\n  @HostBinding('attr.role')             get roleAttr()          { return this.isElementForm ? null : 'table'; }\n  @HostBinding('attr.aria-label')       get ariaLabelAttr()     { return this.isElementForm ? null : (this.ariaLabel() || null); }\n  @HostBinding('attr.aria-rowcount')    get ariaRowcountAttr()  { return this.isElementForm ? null : (this.ariaRowcount() > 0 ? this.ariaRowcount() : null); }\n  @HostBinding('attr.aria-colcount')    get ariaColcountAttr()  { return this.isElementForm ? null : (this.ariaColcount() > 0 ? this.ariaColcount() : null); }\n  @HostBinding('attr.aria-busy')        get ariaBusyAttr()      { return this.isElementForm ? null : (this.loading() ? 'true' : null); }\n  @HostBinding('attr.data-size')        get sizeAttr()          { return this.isElementForm ? null : this.size(); }\n  @HostBinding('attr.data-sticky-start') get stickyStartAttr()  { return this.isElementForm ? null : (this.stickyStart() > 0 ? this.stickyStart() : null); }\n  @HostBinding('attr.data-sticky-end')   get stickyEndAttr()    { return this.isElementForm ? null : (this.stickyEnd() > 0 ? this.stickyEnd() : null); }\n\n  /** A `<table>` real — o próprio host na forma legado, ou a `<table class=\"matcha-table\">` interna na forma elemento. */\n  private get tableEl(): HTMLElement {\n    return this.isElementForm\n      ? (this.hostEl.nativeElement.querySelector<HTMLElement>('table.matcha-table') ?? this.hostEl.nativeElement)\n      : this.hostEl.nativeElement;\n  }\n\n  ngAfterViewInit(): void {\n    // Na forma elemento o host é o wrapper transparente — @HostBinding não\n    // alcança o filho real. Espelha os atributos que precisam existir nele\n    // (a11y + data-size/data-sticky-*, ver bloco de host bindings acima).\n    // effect() criado aqui (não no constructor) garante que a 1ª leitura de\n    // tableEl já acontece com a view montada.\n    if (this.isElementForm) {\n      effect(() => this.mirrorAttributesToRealTable(), { injector: this.injector });\n    }\n  }\n\n  private mirrorAttributesToRealTable(): void {\n    const table = this.tableEl;\n    this.setAttr(table, 'role', 'table');\n    this.setAttr(table, 'aria-label', this.ariaLabel() || null);\n    this.setAttr(table, 'aria-rowcount', this.ariaRowcount() > 0 ? String(this.ariaRowcount()) : null);\n    this.setAttr(table, 'aria-colcount', this.ariaColcount() > 0 ? String(this.ariaColcount()) : null);\n    this.setAttr(table, 'aria-busy', this.loading() ? 'true' : null);\n    this.setAttr(table, 'data-size', this.size());\n    this.setAttr(table, 'data-sticky-start', this.stickyStart() > 0 ? String(this.stickyStart()) : null);\n    this.setAttr(table, 'data-sticky-end', this.stickyEnd() > 0 ? String(this.stickyEnd()) : null);\n  }\n\n  private setAttr(el: HTMLElement, name: string, value: string | null): void {\n    if (value == null) this.renderer.removeAttribute(el, name);\n    else this.renderer.setAttribute(el, name, value);\n  }\n}\n","<!--\n  Um único <ng-content> (dentro de #projected) — Angular resolve a projeção de\n  conteúdo pela declaração ORIGINAL do template, não por qual branch está de\n  fato renderizada. *ngTemplateOutlet reaproveita a MESMA projeção nos dois\n  ramos do @if/@else.\n-->\n<ng-template #projected><ng-content></ng-content></ng-template>\n\n@if (isElementForm) {\n  <!--\n    Forma elemento: precisa de uma <table> real (não um <div display:table>) —\n    o parser HTML5 só entra em modo \"in table\" com a tag literal <table>; fora\n    dela, thead/tbody/tr/th/td são token de parse error e são descartados antes\n    de virar nó de DOM (foster-parenting).\n  -->\n  <div class=\"matcha-table__scroll\">\n    <table class=\"matcha-table\">\n      <ng-container [ngTemplateOutlet]=\"projected\"></ng-container>\n    </table>\n  </div>\n} @else {\n  <ng-container [ngTemplateOutlet]=\"projected\"></ng-container>\n}\n","import {\r\n  Directive,\r\n  HostListener,\r\n  computed,\r\n  input,\r\n  output,\r\n} from '@angular/core';\r\n\r\nexport type TableSortDirection = 'asc' | 'desc' | null;\r\n\r\n/**\r\n * `[matcha-table-sortable]` / `[data-sortable]` — header de coluna sortable\r\n * canon DSV3 pro directive `<table matcha-table>`.\r\n *\r\n * Aplica em `<th>` e sincroniza automaticamente:\r\n *   - `aria-sort` (\"ascending\" | \"descending\" | \"none\") — canon WCAG 4.1.2\r\n *   - `scope=\"col\"` — semântica explícita pra leitores de tela\r\n *   - `tabindex=\"0\"` — keyboard focusable\r\n *   - Click + Enter/Space → emit `sort` com próxima direção (cicla asc→desc→null)\r\n *   - Visual chevron + cor accent quando ativo (via CSS `data-sort-direction`)\r\n *\r\n * @example\r\n *   <th matcha-table-sortable\r\n *       [sortDirection]=\"sortKey() === 'nome' ? sortDir() : null\"\r\n *       (sort)=\"onSort('nome', $event)\">\r\n *     Nome\r\n *   </th>\r\n */\r\n@Directive({\r\n  selector: 'th[matcha-table-sortable], th[data-sortable]',\r\n  standalone: true,\r\n  host: {\r\n    'role': 'columnheader',\r\n    'scope': 'col',\r\n    '[attr.tabindex]': '0',\r\n    '[attr.data-sortable]': '\"\"',\r\n    '[attr.data-sort-direction]': 'sortDirection() ?? \"none\"',\r\n    '[attr.aria-sort]': 'ariaSort()',\r\n  },\r\n})\r\nexport class MatchaTableSortableHeaderDirective {\r\n  /** Direção atual de ordenação. Controle externo (estado do consumer). */\r\n  readonly sortDirection = input<TableSortDirection>(null);\r\n\r\n  /** Emit do próximo direction quando user clica/ativa via teclado.\r\n   *  Cicla `asc → desc → null → asc...` — consumer aplica. */\r\n  readonly sort = output<TableSortDirection>();\r\n\r\n  /** aria-sort canon WAI-ARIA. */\r\n  readonly ariaSort = computed<string>(() => {\r\n    const dir = this.sortDirection();\r\n    if (dir === 'asc')  return 'ascending';\r\n    if (dir === 'desc') return 'descending';\r\n    return 'none';\r\n  });\r\n\r\n  @HostListener('click', ['$event'])\r\n  @HostListener('keydown.enter', ['$event'])\r\n  @HostListener('keydown.space', ['$event'])\r\n  onActivate(event: Event): void {\r\n    event.preventDefault();\r\n    const dir = this.sortDirection();\r\n    const next: TableSortDirection =\r\n      dir === 'asc'  ? 'desc' :\r\n      dir === 'desc' ? null   : 'asc';\r\n    this.sort.emit(next);\r\n  }\r\n}\r\n","import {\n  Directive,\n  HostListener,\n  output,\n} from '@angular/core';\n\n/**\n * `[rowClick]` — row de AÇÃO canon DSV3 pro `<matcha-table>`/`<table matcha-table>`.\n *\n * Basta declarar `(rowClick)=\"...\"` no `<tr>` — o binding sozinho já ativa tudo, sem\n * nenhum atributo extra:\n *   - Adiciona `tabindex=\"0\"` — keyboard focusable\n *   - Click + Enter/Space disparam `rowClick`\n *   - Hover accent + cursor pointer + focus ring — automático, embutido na linha\n *     (não depende de nenhum input no `<matcha-table>` ancestral)\n *\n * ⚠️ **Só para AÇÃO na linha** (abrir modal, editar inline, selecionar). Para\n * NAVEGAR pra outra página, use uma âncora de verdade na célula:\n * `<td><a matcha-cell-link [routerLink]=\"['/x', r.id]\">{{ r.nome }}</a></td>`.\n *\n * O motivo é que isto aqui é um handler de clique, não um link: `click` não dispara\n * no botão do meio, ctrl/cmd+clique navega na mesma aba, não existe `href` pro menu\n * do botão direito, e a linha inteira clicável impede selecionar texto na tabela.\n * Foram queixas reais de cliente. Com a âncora, o browser resolve os três casos de\n * graça. Ver `docs/canon/matcha-table.md` §Linha clicável.\n *\n * **Não** combinar os dois no mesmo `<tr>`: o hover accent inline desta diretiva\n * vence o hover da âncora e o feedback visual fica ambíguo.\n *\n * @example\n *   <tr *ngFor=\"let r of rows\" (rowClick)=\"openEditModal(r)\">\n *     <td>{{ r.nome }}</td>\n *     <td>{{ r.cargo }}</td>\n *   </tr>\n */\n@Directive({\n  selector: 'tr[rowClick]',\n  standalone: true,\n  host: {\n    'class': 'matcha-row-clickable',\n    '[attr.tabindex]': '0',\n    'role': 'row',\n    '[style.--matcha-table-row-bg-hover]': 'accentHoverVar',\n    '[style.--matcha-table-row-bg-hover-striped]': 'accentHoverVar',\n  },\n})\nexport class MatchaTableClickableRowDirective {\n  /** Emite quando user clica ou ativa via Enter/Space. */\n  readonly rowClick = output<MouseEvent | KeyboardEvent>();\n\n  /** Sobrescreve a variável de hover da linha pro tom accent — inline, então\n   *  vence qualquer regra de atributo na tabela ancestral. */\n  protected readonly accentHoverVar = 'var(--matcha-color-accent-surface-hover)';\n\n  @HostListener('click', ['$event'])\n  onClick(event: MouseEvent): void {\n    this.rowClick.emit(event);\n  }\n\n  @HostListener('keydown.enter', ['$event'])\n  @HostListener('keydown.space', ['$event'])\n  onKeydown(event: KeyboardEvent): void {\n    event.preventDefault();\n    this.rowClick.emit(event);\n  }\n}\n","import { AfterContentChecked, Directive, ElementRef, inject } from '@angular/core';\r\n\r\n/**\r\n * `[matcha-table-truncate]` / `td.truncate` — cell com ellipsis + auto-title.\r\n *\r\n * Aplica em `<td>`:\r\n *   - Class `truncate` → SCSS canon aplica ellipsis (max-width 0 + overflow)\r\n *   - `title` automático = `textContent` da cell → tooltip nativo no hover\r\n *     revela o texto cortado sem o consumer precisar wirear manualmente.\r\n *\r\n * Antes (boilerplate):\r\n *   `<td class=\"truncate\" [title]=\"r.email\">{{ r.email }}</td>`\r\n *\r\n * Depois:\r\n *   `<td matcha-table-truncate>{{ r.email }}</td>`\r\n *\r\n * @example\r\n *   <td matcha-table-truncate>{{ r.nome }}</td>\r\n */\r\n@Directive({\r\n  selector: 'td[matcha-table-truncate], td.truncate',\r\n  standalone: true,\r\n  host: {\r\n    'class': 'truncate',\r\n  },\r\n})\r\nexport class MatchaTableTruncateCellDirective implements AfterContentChecked {\r\n  private readonly el = inject(ElementRef<HTMLTableCellElement>);\r\n\r\n  ngAfterContentChecked(): void {\r\n    // Sincroniza `title` com o textContent — leitor nativo do browser mostra\r\n    // tooltip no hover apenas quando o texto está cortado. Sem JS pra detectar\r\n    // overflow (overhead) — title sempre presente, browser decide se renderiza.\r\n    const text = (this.el.nativeElement.textContent || '').trim();\r\n    if (text && this.el.nativeElement.getAttribute('title') !== text) {\r\n      this.el.nativeElement.setAttribute('title', text);\r\n    }\r\n  }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, inject } from '@angular/core';\r\n\r\n/**\r\n * `[matcha-table-empty]` — row de estado vazio canon DSV3.\r\n *\r\n * Aplica em `<tr>` que renderiza quando `rows.length === 0`. A directive\r\n * automaticamente:\r\n *   - Adiciona class `is-empty` pra estilo canon (padding maior, text centered)\r\n *   - Conta as colunas do `<thead>` e setta `colspan` na única `<td>` filha\r\n *     — consumer não precisa hardcodar `colspan=\"N\"`\r\n *\r\n * @example\r\n *   <tbody>\r\n *     <tr matcha-table-empty *ngIf=\"rows.length === 0\">\r\n *       <td>\r\n *         <matcha-empty-state\r\n *           title=\"Nenhum resultado\"\r\n *           description=\"Tente ajustar os filtros.\" />\r\n *       </td>\r\n *     </tr>\r\n *     <tr *ngFor=\"let r of rows\">...</tr>\r\n *   </tbody>\r\n */\r\n@Directive({\r\n  selector: 'tr[matcha-table-empty]',\r\n  standalone: true,\r\n  host: {\r\n    'class': 'is-empty',\r\n    'role': 'row',\r\n  },\r\n})\r\nexport class MatchaTableEmptyRowDirective implements AfterViewInit {\r\n  private readonly el = inject(ElementRef<HTMLTableRowElement>);\r\n\r\n  ngAfterViewInit(): void {\r\n    // Conta colunas do thead pai pra setar colspan na única td filha.\r\n    const table = this.el.nativeElement.closest('table');\r\n    if (!table) return;\r\n    const headerRow = table.querySelector('thead tr');\r\n    if (!headerRow) return;\r\n    const colCount = headerRow.children.length;\r\n    const firstTd = this.el.nativeElement.querySelector(':scope > td');\r\n    if (firstTd && colCount > 0) {\r\n      firstTd.setAttribute('colspan', String(colCount));\r\n    }\r\n  }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * `[matcha-table-loading]` — row em loading state canon DSV3.\r\n *\r\n * Pulse animation + `aria-busy=\"true\"` apenas naquela row. Útil pra optimistic\r\n * updates (deletando row, salvando edit inline) sem precisar bloquear a tabela\r\n * inteira via `[loading]` no `<table matcha-table>`.\r\n *\r\n * @example\r\n *   <tr *ngFor=\"let r of rows\"\r\n *       [attr.matcha-table-loading]=\"r.id === savingId ? '' : null\">\r\n *     <td>{{ r.nome }}</td>\r\n *   </tr>\r\n */\r\n@Directive({\r\n  selector: 'tr[matcha-table-loading], tr.is-loading',\r\n  standalone: true,\r\n  host: {\r\n    'class': 'is-loading',\r\n    'aria-busy': 'true',\r\n  },\r\n})\r\nexport class MatchaTableLoadingRowDirective {}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  HostListener,\r\n  Renderer2,\r\n  inject,\r\n  input,\r\n  numberAttribute,\r\n  output,\r\n} from '@angular/core';\r\n\r\n/**\r\n * `[matcha-table-resizable]` — column resize canon DSV3.\r\n *\r\n * Aplica em `<th>` e adiciona um handle invisível à direita (8px wide,\r\n * `cursor: col-resize`). User dragga → largura do `<th>` muda via inline style.\r\n * Browser table layout cascateia pra coluna inteira automaticamente.\r\n *\r\n * **Persistência** é responsabilidade do consumer — directive emite `resizeEnd`\r\n * com a nova largura pra salvar em localStorage/server/etc.\r\n *\r\n * @example\r\n *   <th matcha-table-resizable\r\n *       [minWidth]=\"80\"\r\n *       (resizeEnd)=\"saveColumnWidth('nome', $event)\">\r\n *     Nome\r\n *   </th>\r\n */\r\n@Directive({\r\n  selector: 'th[matcha-table-resizable]',\r\n  standalone: true,\r\n  host: {\r\n    'class': 'is-resizable',\r\n  },\r\n})\r\nexport class MatchaTableResizableColumnDirective {\r\n  private readonly el       = inject(ElementRef<HTMLTableCellElement>);\r\n  private readonly renderer = inject(Renderer2);\r\n\r\n  /** Largura mínima permitida (default 60px — evita coluna inutilizável). */\r\n  readonly minWidth = input(60, { transform: numberAttribute });\r\n  /** Largura máxima opcional. 0 = sem limite. */\r\n  readonly maxWidth = input(0, { transform: numberAttribute });\r\n\r\n  /** Emite durante o drag (live width). */\r\n  readonly resize    = output<number>();\r\n  /** Emite ao soltar — use pra persistir. */\r\n  readonly resizeEnd = output<number>();\r\n\r\n  private startX = 0;\r\n  private startW = 0;\r\n  private dragging = false;\r\n  private unlisten?: (() => void)[];\r\n\r\n  @HostListener('pointerdown', ['$event'])\r\n  onPointerDown(event: PointerEvent): void {\r\n    // Só ativa drag se o pointer estiver nos últimos 8px do th (zona do handle).\r\n    const rect = this.el.nativeElement.getBoundingClientRect();\r\n    const handleZone = rect.right - 8;\r\n    if (event.clientX < handleZone) return;\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.dragging = true;\r\n    this.startX = event.clientX;\r\n    this.startW = this.el.nativeElement.offsetWidth;\r\n    this.renderer.setStyle(document.body, 'cursor', 'col-resize');\r\n    this.renderer.setStyle(document.body, 'user-select', 'none');\r\n\r\n    const moveFn = (e: PointerEvent) => this.onPointerMove(e);\r\n    const upFn   = (e: PointerEvent) => this.onPointerUp(e);\r\n    window.addEventListener('pointermove', moveFn);\r\n    window.addEventListener('pointerup',   upFn, { once: true });\r\n    this.unlisten = [\r\n      () => window.removeEventListener('pointermove', moveFn),\r\n      () => window.removeEventListener('pointerup',   upFn),\r\n    ];\r\n  }\r\n\r\n  private onPointerMove(event: PointerEvent): void {\r\n    if (!this.dragging) return;\r\n    const delta = event.clientX - this.startX;\r\n    let next = this.startW + delta;\r\n    next = Math.max(this.minWidth(), next);\r\n    const max = this.maxWidth();\r\n    if (max > 0) next = Math.min(max, next);\r\n    this.renderer.setStyle(this.el.nativeElement, 'width', `${next}px`);\r\n    this.resize.emit(next);\r\n  }\r\n\r\n  private onPointerUp(_event: PointerEvent): void {\r\n    if (!this.dragging) return;\r\n    this.dragging = false;\r\n    this.renderer.removeStyle(document.body, 'cursor');\r\n    this.renderer.removeStyle(document.body, 'user-select');\r\n    this.unlisten?.forEach(fn => fn());\r\n    this.unlisten = undefined;\r\n    this.resizeEnd.emit(this.el.nativeElement.offsetWidth);\r\n  }\r\n}\r\n","import { Directive, input } from '@angular/core';\r\n\r\nexport type MatchaCellAlign = 'left' | 'center' | 'right';\r\n\r\n/**\r\n * `[matchaCellAlign]` — alinhamento horizontal canon DSV3 pra `<td>`/`<th>`.\r\n *\r\n * Substitui o padrão antigo de `[data-alinhamento]` + classes utilitárias\r\n * (`text-center`/`text-right`) por uma property Angular tipada.\r\n *\r\n * Atalhos canon de uso:\r\n *   • `right`  — valor monetário, quantidade, datas curtas (canon Figma DSV3)\r\n *   • `center` — status pill, badges, ícones-only\r\n *   • `left`   — texto livre (default)\r\n *\r\n * @example\r\n *   <td matchaCellAlign=\"right\">{{ valor | currency }}</td>\r\n *   <th matchaCellAlign=\"center\">Status</th>\r\n *\r\n * O styling vem do `matcha-table.scss` via selector\r\n * `td[data-align=\"X\"]` — esta directive só sincroniza o atributo.\r\n * O SCSS mantém retrocompatibilidade com consumers que ainda usam o antigo\r\n * `[data-alinhamento]` (deprecated) ou as classes `.text-center` / `.text-right`.\r\n */\r\n@Directive({\r\n    selector: 'td[matchaCellAlign], th[matchaCellAlign]',\r\n    standalone: true,\r\n    host: {\r\n        '[attr.data-align]': 'align()',\r\n    },\r\n})\r\nexport class MatchaCellAlignDirective {\r\n    readonly align = input<MatchaCellAlign>('left', { alias: 'matchaCellAlign' });\r\n}\r\n","import { Signal, computed, signal } from '@angular/core';\r\n\r\n/**\r\n * `MatchaTableSelection<T>` — helper canon DSV3 pra bulk-select em tabelas.\r\n *\r\n * Encapsula o pattern \"checkbox em cada row + select-all no header\" com state\r\n * derivado via signals (allSelected/someSelected/indeterminate) — consumer\r\n * apenas conecta os eventos.\r\n *\r\n * **Por que helper e não directive?** Selection é controle externo (qualquer\r\n * componente pode usar). Directive forçaria o table a manter state interno,\r\n * dificultando integração com forms reativos / persistência / API server-side.\r\n *\r\n * @example\r\n *   // No componente do consumer:\r\n *   readonly selection = new MatchaTableSelection<Person>(\r\n *     () => this.rows(),\r\n *     r => r.id,\r\n *   );\r\n *\r\n *   // Template:\r\n *   <thead>\r\n *     <tr>\r\n *       <th>\r\n *         <matcha-checkbox [checked]=\"selection.allSelected()\"\r\n *                          [indeterminate]=\"selection.someSelected()\"\r\n *                          (change)=\"selection.toggleAll()\"\r\n *                          aria-label=\"Selecionar todos\" />\r\n *       </th>\r\n *       <th>Nome</th>\r\n *     </tr>\r\n *   </thead>\r\n *   <tbody>\r\n *     <tr *ngFor=\"let r of rows()\" [class.is-selected]=\"selection.isSelected(r)\">\r\n *       <td>\r\n *         <matcha-checkbox [checked]=\"selection.isSelected(r)\"\r\n *                          (change)=\"selection.toggle(r)\" />\r\n *       </td>\r\n *       <td>{{ r.nome }}</td>\r\n *     </tr>\r\n *   </tbody>\r\n */\r\nexport class MatchaTableSelection<T> {\r\n  private readonly _selected = signal<Set<unknown>>(new Set());\r\n\r\n  /** Set imutável dos IDs selecionados (signal — reativo). */\r\n  readonly selected: Signal<ReadonlySet<unknown>> = this._selected.asReadonly();\r\n\r\n  /** Quantidade de rows selecionadas. */\r\n  readonly count = computed(() => this._selected().size);\r\n\r\n  /** true se TODAS as rows da source atual estão selecionadas (>0). */\r\n  readonly allSelected = computed(() => {\r\n    const rows = this.source();\r\n    if (rows.length === 0) return false;\r\n    const sel = this._selected();\r\n    return rows.every(r => sel.has(this.idOf(r)));\r\n  });\r\n\r\n  /** true se pelo menos uma E menos que todas estão selecionadas (estado indeterminate). */\r\n  readonly someSelected = computed(() => {\r\n    const total = this.source().length;\r\n    const sel = this._selected().size;\r\n    return sel > 0 && sel < total;\r\n  });\r\n\r\n  /** Lista materializada das rows selecionadas (intersecção source ∩ selected). */\r\n  readonly selectedRows = computed<readonly T[]>(() =>\r\n    this.source().filter(r => this._selected().has(this.idOf(r)))\r\n  );\r\n\r\n  /**\r\n   * @param source Signal/function que retorna o array atual de rows.\r\n   *               Reagir a mudanças (filter/sort/paginação) — selection persiste por ID,\r\n   *               então rows que voltarem ao source mantêm seleção.\r\n   * @param idOf Função que extrai o ID único de cada row (geralmente `r => r.id`).\r\n   */\r\n  constructor(\r\n    private readonly source: () => readonly T[],\r\n    private readonly idOf: (row: T) => unknown,\r\n  ) {}\r\n\r\n  /** true se a row está selecionada. Aceita T ou o ID direto. */\r\n  isSelected(rowOrId: T | unknown): boolean {\r\n    const id = this.isRow(rowOrId) ? this.idOf(rowOrId) : rowOrId;\r\n    return this._selected().has(id);\r\n  }\r\n\r\n  /** Toggla a row (adiciona se ausente, remove se presente). */\r\n  toggle(row: T): void {\r\n    const id = this.idOf(row);\r\n    this._selected.update(set => {\r\n      const next = new Set(set);\r\n      if (next.has(id)) next.delete(id);\r\n      else next.add(id);\r\n      return next;\r\n    });\r\n  }\r\n\r\n  /** Marca explicitamente. */\r\n  select(row: T): void {\r\n    const id = this.idOf(row);\r\n    this._selected.update(set => {\r\n      if (set.has(id)) return set;\r\n      const next = new Set(set); next.add(id); return next;\r\n    });\r\n  }\r\n\r\n  /** Desmarca explicitamente. */\r\n  deselect(row: T): void {\r\n    const id = this.idOf(row);\r\n    this._selected.update(set => {\r\n      if (!set.has(id)) return set;\r\n      const next = new Set(set); next.delete(id); return next;\r\n    });\r\n  }\r\n\r\n  /** Header checkbox click: se all → clear, senão → marca todos da source. */\r\n  toggleAll(): void {\r\n    if (this.allSelected()) {\r\n      this.clear();\r\n    } else {\r\n      this._selected.set(new Set(this.source().map(r => this.idOf(r))));\r\n    }\r\n  }\r\n\r\n  /** Limpa toda seleção. */\r\n  clear(): void {\r\n    this._selected.set(new Set());\r\n  }\r\n\r\n  /** Restaura seleção a partir de um array de IDs (útil pra hidrate de URL/state). */\r\n  setIds(ids: readonly unknown[]): void {\r\n    this._selected.set(new Set(ids));\r\n  }\r\n\r\n  private isRow(x: unknown): x is T {\r\n    return typeof x === 'object' && x !== null;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatchaTableComponent }                 from './table.component';\r\nimport { MatchaTableSortableHeaderDirective }   from './table-sortable-header.directive';\r\nimport { MatchaTableClickableRowDirective }     from './table-clickable-row.directive';\r\nimport { MatchaTableTruncateCellDirective }     from './table-truncate-cell.directive';\r\nimport { MatchaTableEmptyRowDirective }         from './table-empty-row.directive';\r\nimport { MatchaTableLoadingRowDirective }       from './table-loading-row.directive';\r\nimport { MatchaTableResizableColumnDirective }  from './table-resizable-column.directive';\r\nimport { MatchaCellAlignDirective }             from './table-cell-align.directive';\r\n\r\nexport { TableSize }                            from './table.component';\r\nexport {\r\n  MatchaTableSortableHeaderDirective,\r\n  type TableSortDirection,\r\n} from './table-sortable-header.directive';\r\nexport { MatchaTableClickableRowDirective }     from './table-clickable-row.directive';\r\nexport { MatchaTableTruncateCellDirective }     from './table-truncate-cell.directive';\r\nexport { MatchaTableEmptyRowDirective }         from './table-empty-row.directive';\r\nexport { MatchaTableLoadingRowDirective }       from './table-loading-row.directive';\r\nexport { MatchaTableResizableColumnDirective }  from './table-resizable-column.directive';\r\nexport { MatchaCellAlignDirective, type MatchaCellAlign } from './table-cell-align.directive';\r\nexport { MatchaTableSelection }                 from './table-selection';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaTableComponent,\r\n    MatchaTableSortableHeaderDirective,\r\n    MatchaTableClickableRowDirective,\r\n    MatchaTableTruncateCellDirective,\r\n    MatchaTableEmptyRowDirective,\r\n    MatchaTableLoadingRowDirective,\r\n    MatchaTableResizableColumnDirective,\r\n    MatchaCellAlignDirective,\r\n  ],\r\n  exports: [\r\n    MatchaTableComponent,\r\n    MatchaTableSortableHeaderDirective,\r\n    MatchaTableClickableRowDirective,\r\n    MatchaTableTruncateCellDirective,\r\n    MatchaTableEmptyRowDirective,\r\n    MatchaTableLoadingRowDirective,\r\n    MatchaTableResizableColumnDirective,\r\n    MatchaCellAlignDirective,\r\n  ],\r\n})\r\nexport class MatchaTableModule {}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { MatchaAvatarModule } from '../matcha-avatar/avatar.module';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\n\n/**\n * `td[matcha-cell-identity]` — célula de tabela canon DSV3: avatar + nome +\n * caption secundária (ex.: \"#12345\"), lado a lado. Substitui composições\n * manuais de avatar+texto feitas à mão nas telas (SCSS local).\n *\n * Quando a linha LEVA pra outra página, passe `[routerLink]`: o nome vira uma âncora\n * de verdade (`a[matcha-cell-link]`) e o tema pinta a linha inteira em accent enquanto\n * o ponteiro está sobre ela. É esse `href` que faz ctrl+clique, clique do meio e\n * \"abrir em nova aba\" funcionarem — e, por não ser a linha toda clicável, o resto da\n * tabela continua selecionável com o mouse. Ver `docs/canon/matcha-table.md`\n * §Linha clicável (o `(rowClick)` fica só pra AÇÃO, tipo abrir modal).\n *\n * @example\n *   <td matcha-cell-identity\n *       [photo]=\"row.photo\"\n *       [name]=\"row.full_name\"\n *       [caption]=\"'#' + row.membership_id\"\n *       [routerLink]=\"['/pessoas/membros/detalhe', row.id]\">\n *   </td>\n */\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n  selector: 'td[matcha-cell-identity]',\n  standalone: true,\n  imports: [CommonModule, MatchaAvatarModule, RouterLink],\n  templateUrl: './identity-cell.component.html',\n  styleUrls: ['./identity-cell.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatchaCellIdentityComponent {\n  /** URL da foto — vazio cai no fallback de iniciais/placeholder do avatar. */\n  readonly photo = input<string>('');\n\n  /** Nome — vira iniciais no avatar + texto primário ao lado. */\n  readonly name = input<string>('');\n\n  /** Caption secundária (ex.: \"#12345\", cargo) — exibida abaixo do nome. */\n  readonly caption = input<string>('');\n\n  /** Tamanho do avatar. Default 'small' — canônico pra linhas de tabela. */\n  readonly size = input<string>('small');\n\n  /** Angular Router link do registro. Faz o nome virar âncora. Prioridade sobre href. */\n  readonly routerLink = input<string | unknown[] | null | undefined>(null);\n\n  /** URL plain (full page reload). Em apps Angular, prefira routerLink. */\n  readonly href = input<string>('');\n\n  /** O nome é um link? */\n  readonly isLink = computed<boolean>(() => this.routerLink() != null || !!this.href());\n}\n","<matcha-avatar [src]=\"photo()\" [name]=\"name()\" [size]=\"size()\">\n    <matcha-avatar-name>\n        <!-- Com link, o NOME é a âncora (não a linha inteira): é o href que habilita\n             ctrl+clique, clique do meio e \"abrir em nova aba\", e deixar o resto da\n             linha fora do alvo mantém a tabela selecionável. O tema pinta a linha\n             toda em accent no hover desta âncora. -->\n        @if (routerLink() != null) {\n            <a matcha-cell-link [routerLink]=\"routerLink()\">{{ name() }}</a>\n        } @else if (href()) {\n            <a matcha-cell-link [href]=\"href()\">{{ name() }}</a>\n        } @else {\n            {{ name() }}\n        }\n    </matcha-avatar-name>\n    <matcha-avatar-caption *ngIf=\"caption()\">{{ caption() }}</matcha-avatar-caption>\n</matcha-avatar>\n","/**\r\n * Proporções (`W:H`) são escritas de três formas no mundo real, e os três\r\n * separadores chegam nos inputs de ratio do DS:\r\n *\r\n *  - `'3:4'` — a grafia do Figma e dos presets nomeados do DS;\r\n *  - `'3/4'` — a grafia do CSS `aspect-ratio`, e a que os consumidores mais\r\n *    escrevem por isso (o `drop-image` do control-panel sempre expôs assim);\r\n *  - `'3x4'` — a grafia de dimensão (\"300x400\").\r\n *\r\n * Aceitar só um deles falha em SILÊNCIO: `'3/4'.split(':')` devolve\r\n * `['3/4']`, logo `h === undefined`, e o resolvedor cai no fallback 16:9 —\r\n * recorte errado sem erro nem aviso. Pior: `'16/9'` cai no MESMO fallback e\r\n * acerta por coincidência, então a proporção mais comum esconde o defeito.\r\n *\r\n * Uso:\r\n *   const parsed = parseRatio(ratio);\r\n *   return parsed ? `${parsed.w} / ${parsed.h}` : RATIO_CSS['16:9'];\r\n */\r\nexport interface ParsedRatio {\r\n  w: number;\r\n  h: number;\r\n}\r\n\r\n/** Grafias aceitas para uma proporção arbitrária, em qualquer um dos 3 separadores. */\r\nexport type RatioLiteral = `${number}:${number}` | `${number}/${number}` | `${number}x${number}`;\r\n\r\n/**\r\n * Parseia `W:H`, `W/H` ou `WxH` para números. Devolve `null` para qualquer\r\n * coisa que não seja um par positivo e finito — inclusive `'free'`, `null` e\r\n * string vazia — deixando o fallback a cargo de quem chama, que é quem sabe\r\n * qual é o default do seu input.\r\n */\r\nexport function parseRatio(value: string | null | undefined): ParsedRatio | null {\r\n  if (value == null) return null;\r\n\r\n  const [w, h] = String(value).split(/[:/x]/i).map(parseFloat);\r\n  const valid = Number.isFinite(w) && Number.isFinite(h) && w > 0 && h > 0;\r\n\r\n  return valid ? { w, h } : null;\r\n}\r\n","import {\r\n  Component, Input, HostBinding,\r\n  ViewEncapsulation, ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\nimport { parseRatio, RatioLiteral } from '../shared/ratio';\r\n\r\n// =============================================================================\r\n// Types\r\n// =============================================================================\r\n/** Proporções nomeadas, com valor pré-calculado em RATIO_CSS. */\r\nexport type ImageNamedRatio = '16:9' | '4:3' | '3:2' | '1:1' | '3:4' | '9:16';\r\n/**\r\n * Proporção do container: preset nomeado ou arbitrária (ex: '300:400'), em\r\n * qualquer um dos três separadores aceitos por `parseRatio`.\r\n */\r\nexport type ImageRatio = ImageNamedRatio | RatioLiteral;\r\n\r\nconst RATIO_CSS: Record<ImageNamedRatio, string> = {\r\n  '16:9': '16 / 9',\r\n  '4:3':  '4 / 3',\r\n  '3:2':  '3 / 2',\r\n  '1:1':  '1 / 1',\r\n  '3:4':  '3 / 4',\r\n  '9:16': '9 / 16',\r\n};\r\n\r\n/**\r\n * Resolve a proporção pra um valor de `aspect-ratio`. Presets nomeados vêm do\r\n * RATIO_CSS; qualquer proporção arbitrária é parseada por `parseRatio`, que\r\n * aceita os três separadores. Fallback 16:9 se a string for inválida — evita\r\n * `aspect-ratio: NaN` chegando no style.\r\n */\r\nfunction ratioToCss(ratio: ImageRatio): string {\r\n  const preset = RATIO_CSS[ratio as ImageNamedRatio];\r\n  if (preset != null) return preset;\r\n\r\n  const parsed = parseRatio(ratio);\r\n  return parsed ? `${parsed.w} / ${parsed.h}` : RATIO_CSS['16:9'];\r\n}\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-image',\r\n  templateUrl: './image.component.html',\r\n  styleUrls: ['./image.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, CommonModule],\r\n  host: {\r\n    'class': 'matcha-image',\r\n  }\r\n})\r\nexport class MatchaImageComponent {\r\n  @Input() src: string = '';\r\n  @Input() alt: string = '';\r\n  @Input() ratio: ImageRatio = '16:9';\r\n\r\n  /**\r\n   * A proporção sai daqui, não de classe: assim qualquer `W:H` funciona sem\r\n   * precisar de uma regra escrita à mão no tema pra cada valor novo.\r\n   */\r\n  @HostBinding('style.aspect-ratio')\r\n  get aspectRatio(): string {\r\n    return ratioToCss(this.ratio);\r\n  }\r\n\r\n  /**\r\n   * Os três modificadores que o tema já tinha continuam saindo, por\r\n   * retrocompatibilidade — o style inline vence a folha, então nunca divergem.\r\n   * Proporção nova (3:4, 9:16, arbitrária) não tem classe: vem do style.\r\n   */\r\n  @HostBinding('class')\r\n  get hostClasses(): string {\r\n    const classes = ['matcha-image'];\r\n    if (this.ratio === '1:1') classes.push('matcha-image--1x1');\r\n    if (this.ratio === '4:3') classes.push('matcha-image--4x3');\r\n    if (this.ratio === '3:2') classes.push('matcha-image--3x2');\r\n    return classes.join(' ');\r\n  }\r\n\r\n  get hasImage(): boolean {\r\n    return !!this.src;\r\n  }\r\n}\r\n","<img\r\n  *ngIf=\"hasImage\"\r\n  class=\"matcha-image__img\"\r\n  [src]=\"src\"\r\n  [alt]=\"alt\"\r\n  loading=\"lazy\" />\r\n\r\n<matcha-icon\r\n  *ngIf=\"!hasImage\"\r\n  class=\"matcha-image__placeholder-icon\"\r\n  name=\"action_gallery\">\r\n</matcha-icon>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaImageComponent } from './image.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaImageComponent, MatchaIconModule],\r\n  exports: [\r\n    MatchaImageComponent\r\n  ]\r\n})\r\nexport class MatchaImageModule {}\r\n","import { ChangeDetectionStrategy, Component, computed, input, numberAttribute } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterLink } from '@angular/router';\r\nimport { MatchaImageModule } from '../matcha-image/image.module';\r\nimport { ImageRatio } from '../matcha-image/image.component';\r\nimport { MatchaTextModule } from '../matcha-text/matcha-text.module';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * `td[matcha-cell-media]` — célula de tabela canon DSV3: miniatura + nome +\r\n * caption secundária. É a irmã de `matcha-cell-identity` para listagens de\r\n * CONTEÚDO (pregação, série, download, banner, notícia, push), onde a coluna de\r\n * nome vem com a capa do item em vez de um avatar de pessoa.\r\n *\r\n * Substitui a composição que as telas repetem à mão — um `div.thumbnail` com\r\n * `style` inline apontando pra um SVG do app e dois `*ngIf` pra decidir entre\r\n * imagem e placeholder.\r\n *\r\n * O miolo é o `matcha-image`: ele já renderiza `<img loading=\"lazy\">` quando há\r\n * `src` e o ícone de galeria quando não há, então esta cell não tem lógica de\r\n * fallback própria.\r\n *\r\n * Quando a linha LEVA pra outra página, passe `[routerLink]`: o nome vira uma âncora\r\n * de verdade (`a[matcha-cell-link]`) e o tema pinta a linha inteira em accent enquanto\r\n * o ponteiro está sobre ela. É esse `href` que faz ctrl+clique, clique do meio e\r\n * \"abrir em nova aba\" funcionarem — e, por não ser a linha toda clicável, o resto da\r\n * tabela continua selecionável com o mouse. Ver `docs/canon/matcha-table.md`\r\n * §Linha clicável (o `(rowClick)` fica só pra AÇÃO, tipo abrir modal).\r\n *\r\n * @example\r\n *   <td matcha-cell-media\r\n *       [src]=\"row.image\"\r\n *       [name]=\"row.title\"\r\n *       [caption]=\"row.category\"\r\n *       [routerLink]=\"['/conteudo/pregacoes', row.id]\">\r\n *   </td>\r\n *\r\n * @example Download em retrato — a altura manda, a largura sai da proporção\r\n *   <td matcha-cell-media ratio=\"3:4\" [src]=\"row.image\" [name]=\"row.title\"></td>\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'td[matcha-cell-media]',\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaImageModule, MatchaTextModule, RouterLink],\r\n  templateUrl: './media-cell.component.html',\r\n  styleUrls: ['./media-cell.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MatchaCellMediaComponent {\r\n  /** URL da imagem — vazio cai no placeholder do `matcha-image`. */\r\n  readonly src = input<string>('');\r\n\r\n  /**\r\n   * Texto alternativo da imagem. Deixe vazio quando a miniatura é decorativa e o\r\n   * nome ao lado já identifica o registro — que é o caso comum numa listagem.\r\n   */\r\n  readonly alt = input<string>('');\r\n\r\n  /**\r\n   * Proporção da miniatura, repassada ao `matcha-image`. Aceita os presets\r\n   * (`16:9`, `4:3`, `3:2`, `1:1`, `3:4`, `9:16`) e qualquer proporção arbitrária\r\n   * nos três separadores do `parseRatio` (`300:400`, `3/4`, `56x72`).\r\n   *\r\n   * Tipo emprestado do `matcha-image` de propósito: alargar pra `string` daria\r\n   * autocomplete nenhum e deixaria `'16x9x2'` compilar.\r\n   *\r\n   * Default `16:9`, a capa de conteúdo mais comum; download usa `3:4`.\r\n   */\r\n  readonly ratio = input<ImageRatio>('16:9');\r\n\r\n  /**\r\n   * ALTURA da miniatura em px — a largura sai da `ratio`.\r\n   *\r\n   * É a altura que manda, e não a largura, porque numa linha de tabela a altura é o recurso\r\n   * escasso: com largura fixa, um `ratio=\"3:4\"` de 72px viraria 96px de alto e esticaria a\r\n   * linha.\r\n   *\r\n   * Default 40 — a altura exata da linha `compact`, e folgada dentro da `comfortable` (58px),\r\n   * que é o default da `matcha-table`.\r\n   */\r\n  readonly height = input(40, { transform: numberAttribute });\r\n\r\n  /** Nome do registro — texto primário. */\r\n  readonly name = input<string>('');\r\n\r\n  /** Caption secundária (ex.: categoria, contagem de episódios) — abaixo do nome. */\r\n  readonly caption = input<string>('');\r\n\r\n  /** Angular Router link do registro. Faz o nome virar âncora. Prioridade sobre href. */\r\n  readonly routerLink = input<string | unknown[] | null | undefined>(null);\r\n\r\n  /** URL plain (full page reload). Em apps Angular, prefira routerLink. */\r\n  readonly href = input<string>('');\r\n\r\n  /** O nome é um link? */\r\n  readonly isLink = computed<boolean>(() => this.routerLink() != null || !!this.href());\r\n}\r\n","<!-- O wrapper é o flex container, e não o próprio <td>: virar `display: flex` tira a célula\r\n     do layout de tabela e ela para de participar do dimensionamento de coluna. Mesma\r\n     profundidade de DOM da identity, onde o `matcha-avatar` (inline-flex) é o filho direto. -->\r\n<span class=\"matcha-cell-media\">\r\n    <!-- A ALTURA vai no WRAPPER, não no host do matcha-image: o tema declara\r\n         `.matcha-image { width: 100%; aspect-ratio }` — largura mandando —, então style no\r\n         host disputaria especificidade e quem vence dependeria da ordem de carga. Aqui o style\r\n         inline vence sempre, e o parcial do tema inverte a direção: altura manda, largura sai\r\n         da razão. -->\r\n    <span class=\"matcha-cell-media__thumb\" [style.height.px]=\"height()\">\r\n        <matcha-image [ratio]=\"ratio()\" [src]=\"src()\" [alt]=\"alt()\"></matcha-image>\r\n    </span>\r\n\r\n    <span class=\"matcha-cell-media__text\">\r\n        <!-- `color=\"base\"` explícito: o matcha-text resolve a cor pelo GRUPO do variant, e\r\n             `label-*` cai em `label` (cinza) — sem isso o nome sai mais claro que a caption. -->\r\n        <matcha-text class=\"matcha-cell-media__name\" variant=\"label-md\" color=\"base\">\r\n            <!-- Com link, o NOME é a âncora (não a linha inteira): é o href que habilita\r\n                 ctrl+clique, clique do meio e \"abrir em nova aba\", e deixar o resto da\r\n                 linha fora do alvo mantém a tabela selecionável. O tema pinta a linha\r\n                 toda em accent no hover desta âncora. -->\r\n            @if (routerLink() != null) {\r\n                <a matcha-cell-link [routerLink]=\"routerLink()\">{{ name() }}</a>\r\n            } @else if (href()) {\r\n                <a matcha-cell-link [href]=\"href()\">{{ name() }}</a>\r\n            } @else {\r\n                {{ name() }}\r\n            }\r\n        </matcha-text>\r\n\r\n        <!-- `color=\"muted\"` explícito pelo mesmo motivo ao contrário: `body-*` cai em `base`,\r\n             e a caption precisa ficar secundária ao nome — como no matcha-avatar-caption. -->\r\n        <matcha-text class=\"matcha-cell-media__caption\" variant=\"body-sm\" color=\"muted\"\r\n            *ngIf=\"caption()\">{{ caption() }}</matcha-text>\r\n    </span>\r\n</span>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaStatusPillModule } from '../matcha-status-pill/status-pill.module';\nimport { MatchaStatusPillColor } from '../matcha-status-pill/status-pill/status-pill.component';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\n\n/**\n * `td[matcha-cell-status]` — célula de tabela canon DSV3: `matcha-status-pill`\n * pronto pra uso em coluna de situação/estado. Substitui pills feitas à mão\n * (SCSS local) nas telas.\n *\n * @example\n *   <td matcha-cell-status color=\"success\" label=\"Ativo\"></td>\n */\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n  selector: 'td[matcha-cell-status]',\n  standalone: true,\n  imports: [CommonModule, MatchaStatusPillModule],\n  templateUrl: './status-cell.component.html',\n  styleUrls: ['./status-cell.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatchaCellStatusComponent {\n  /** Cor de feedback — success/warning/danger/info/disabled/neutral. Default 'neutral'. */\n  readonly color = input<MatchaStatusPillColor>('neutral');\n\n  /** Texto do label. */\n  readonly label = input<string>('');\n}\n","<matcha-status-pill [color]=\"color()\" [label]=\"label()\"></matcha-status-pill>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaContactModule } from '../matcha-contact/contact.module';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\n\n/**\n * `td[matcha-cell-contact]` — célula de tabela canon DSV3. Wrapper fino sobre o\n * átomo `matcha-contact` (ícone whatsapp/telefone + número, link wa.me quando\n * aplicável). Mesmo padrão de identity-cell (avatar) e status-cell (status-pill):\n * a cell é só o `<td>` + o átomo reusável — o mesmo átomo serve cards/qualquer\n * contexto fora de tabela.\n *\n * A formatação/máscara do telefone é responsabilidade do consumidor.\n *\n * @example\n *   <td matcha-cell-contact\n *       [phone]=\"row.cellphone\"\n *       [hasWhatsapp]=\"row.has_whatsapp\">\n *   </td>\n */\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n  selector: 'td[matcha-cell-contact]',\n  standalone: true,\n  imports: [CommonModule, MatchaContactModule],\n  templateUrl: './contact-cell.component.html',\n  styleUrls: ['./contact-cell.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatchaCellContactComponent {\n  /** Número de telefone já formatado — este componente não aplica máscara. */\n  readonly phone = input<string>('');\n\n  /** Indica se o número tem WhatsApp — troca o ícone e vira link wa.me. */\n  readonly hasWhatsapp = input(false, { transform: booleanAttribute });\n}\n","<matcha-contact [phone]=\"phone()\" [hasWhatsapp]=\"hasWhatsapp()\"></matcha-contact>\n","import { Directive } from '@angular/core';\n\n/**\n * `td[matcha-cell-action]` / `th[matcha-cell-action]` — coluna de Ações canon\n * DSV3: pina a largura em `--matcha-table-col-actions-width` (80px), sem\n * precisar de `data-weight`/colgroup (removido — ver changelog 23.0.0).\n * Reusa `.col-actions` (`matcha-table.scss`), que já resolve alinhamento e\n * `inline-flex` dos botões — zero CSS novo aqui.\n *\n * Diferente de `td[matcha-cell-identity]`/`[matcha-cell-status]`/\n * `[matcha-cell-contact]` (componentes com template próprio, geram conteúdo\n * a partir de `@Input`s fixos): a coluna de Ações tem conteúdo livre por tela\n * (N botões ± `matcha-menu` de overflow) — não modelável como inputs fixos.\n * Esta directive só adiciona a classe de layout; o consumidor continua\n * escrevendo os botões/menu como filhos nativos do `<td>`/`<th>`.\n *\n * Aplicar em AMBOS `<th>` e `<td>` da coluna — o CSS já assume os dois\n * (o título do header alinha acima do primeiro ícone).\n *\n * @example\n *   <th matcha-cell-action>{{ 'ACTIONS' | translate }}</th>\n *   <td matcha-cell-action>\n *     <button matcha-icon-button variant=\"ghost\" size=\"sm\" (click)=\"delete(row.id)\">\n *       <matcha-icon name=\"delete\"></matcha-icon>\n *     </button>\n *   </td>\n */\n@Directive({\n  selector: 'td[matcha-cell-action], th[matcha-cell-action]',\n  standalone: true,\n  host: { class: 'col-actions' },\n})\nexport class MatchaCellActionDirective {}\n","import { NgModule } from '@angular/core';\r\nimport { MatchaCellIdentityComponent } from './identity-cell.component';\r\nimport { MatchaCellMediaComponent } from './media-cell.component';\r\nimport { MatchaCellStatusComponent } from './status-cell.component';\r\nimport { MatchaCellContactComponent } from './contact-cell.component';\r\nimport { MatchaCellActionDirective } from './action-cell.directive';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaCellIdentityComponent,\r\n    MatchaCellMediaComponent,\r\n    MatchaCellStatusComponent,\r\n    MatchaCellContactComponent,\r\n    MatchaCellActionDirective,\r\n  ],\r\n  exports: [\r\n    MatchaCellIdentityComponent,\r\n    MatchaCellMediaComponent,\r\n    MatchaCellStatusComponent,\r\n    MatchaCellContactComponent,\r\n    MatchaCellActionDirective,\r\n  ],\r\n})\r\nexport class MatchaTableCellModule {}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  HostListener,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  effect,\r\n  inject,\r\n  input,\r\n  numberAttribute,\r\n  output,\r\n} from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\nexport type MatchaToolbarLayout    = 'horizontal' | 'stack';\r\nexport type MatchaToolbarSize      = 'compact' | 'comfortable' | 'spacious';\r\nexport type MatchaToolbarColor     = 'default' | 'accent' | 'success' | 'warn' | 'danger' | 'info';\r\nexport type MatchaToolbarElevation = 0 | 1 | 2 | 3;\r\n\r\n/**\r\n * `matcha-toolbar` — flex row + slot único (1:1 Figma DSV3 `matcha/toolbar` 15866:92).\r\n *\r\n * Canon Figma: 1 slot `content` (flex gap-100 items-center p-200 radius-lg).\r\n * Consumer compõe Title + Search + Actions + CTA livremente como children diretos.\r\n *\r\n * **Layout pattern CANON (regra única):**\r\n *   - `<matcha-title>` tem `flex: 1 1 auto` — CRESCE pra ocupar todo o leftover space\r\n *   - Search/actions/CTA têm `flex: 0 0 auto` — auto-width, naturalmente empurrados pra direita\r\n *   - NUNCA aplique `.ml-auto`, `margin: auto`, ou flex-grow em children além do título\r\n *   - Title curto (\"Igrejas\") → cresce e empurra resto pra direita\r\n *   - Title longo → cresce até o limite disponível, trunca com ellipsis\r\n *\r\n * **Atributos legacy `[matcha-toolbar-*]` ainda funcionam** mas só viram hints CSS\r\n * (não são mais ng-content selectors). Migrar pra children diretos sem atributos.\r\n *\r\n * **Atoms recomendados — TODOS em `size=\"small\"` pra alinhar altura 32px:**\r\n *   - Title: `<matcha-title size=\"small\" type=\"icon\">` (ícone 16px + texto 14px, simétrico com botões)\r\n *   - Search: `<matcha-field type=\"search\" size=\"small\">`\r\n *   - Icon actions: `<button matcha-icon-button variant=\"outline\" size=\"small\">`\r\n *   - Primary CTA: `<button matcha-button color=\"accent\" size=\"small\">`\r\n *\r\n * Título no default (`medium`) gera ícone 24px + texto 20px — quebra simetria\r\n * visual com o resto da toolbar (32px). Sempre force `size=\"small\"` em context toolbar.\r\n *\r\n * O vocabulário aqui é POR EXTENSO de propósito (`tiny|small|medium|large|huge`): as\r\n * abreviações `xs|sm|md|lg|xl` são reservadas a breakpoint em todo o DS e ficaram\r\n * `@deprecated` como valor de `size`. Ver `.claude/knowledge/conventions.md`.\r\n *\r\n * @example Canon — slot único (Figma 1:1)\r\n *   <matcha-toolbar ariaLabel=\"Membros\">\r\n *     <matcha-title type=\"icon\" icon=\"people\">Membros</matcha-title>\r\n *     <matcha-field type=\"search\" size=\"small\" placeholder=\"Pesquisar...\"></matcha-field>\r\n *     <div matcha-toolbar-actions>\r\n *       <button matcha-icon-button variant=\"outline\" size=\"small\" aria-label=\"Filtrar\">\r\n *         <matcha-icon name=\"filter\"></matcha-icon>\r\n *       </button>\r\n *       <button matcha-button color=\"accent\" size=\"small\">\r\n *         <matcha-icon name=\"add\"></matcha-icon> Novo\r\n *       </button>\r\n *     </div>\r\n *   </matcha-toolbar>\r\n *\r\n * @example Sticky no topo de tabela\r\n *   <matcha-toolbar sticky ariaLabel=\"Filtros\">...</matcha-toolbar>\r\n *   <table matcha-table>...</table>\r\n *\r\n * @example Status bar com color semantic\r\n *   <matcha-toolbar color=\"warn\" elevation=\"1\">\r\n *     <matcha-title type=\"icon\" icon=\"alert\">Sessão expirando</matcha-title>\r\n *     <button matcha-button color=\"warn\" class=\"ml-auto\">Renovar</button>\r\n *   </matcha-toolbar>\r\n *\r\n * @deprecated Slot nomeado `matcha-toolbar-primary` — NÃO usar em código novo. Use o canon\r\n *   acima: CTA primário como `<button matcha-button color=\"accent\" size=\"sm\">` dentro de\r\n *   `<div matcha-toolbar-actions>`, com a busca como filha DIRETA da toolbar (o `matcha-toolbar`\r\n *   resolve o responsivo sozinho — não enfiar a busca dentro do `matcha-toolbar-actions`).\r\n *   Exemplo abaixo mantido só para back-compat:\r\n * @example Back-compat — slot nomeado (DEPRECATED, use canon acima)\r\n *   <matcha-toolbar ariaLabel=\"Membros\">\r\n *     <matcha-title matcha-toolbar-title type=\"icon\" icon=\"people\">Membros</matcha-title>\r\n *     <div matcha-toolbar-actions>\r\n *       <matcha-field type=\"search\"></matcha-field>\r\n *       <button matcha-icon-button variant=\"outline\" size=\"sm\"><matcha-icon name=\"filter\"/></button>\r\n *     </div>\r\n *     <button matcha-button matcha-toolbar-primary color=\"accent\" size=\"sm\">Novo</button>\r\n *   </matcha-toolbar>\r\n *\r\n * ## Keyboard navigation\r\n * ArrowLeft / ArrowRight movem foco entre filhos focáveis dentro do toolbar.\r\n * Home / End vão pra primeiro / último. Padrão ARIA toolbar (WAI-ARIA 1.2).\r\n *\r\n * ## A11y\r\n * - `role=\"toolbar\"` no host\r\n * - `ariaLabel` obrigatório quando há múltiplas actions (WCAG 4.1.2)\r\n * - Touch target ≥44px nos atoms (use `size=\"md\"+` no mobile)\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-toolbar',\r\n  templateUrl: './toolbar.component.html',\r\n  standalone: true,\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    'class': 'matcha-toolbar',\r\n    'role': 'toolbar',\r\n    '[attr.aria-label]':      'ariaLabel() || null',\r\n    '[attr.data-layout]':     'layout()',\r\n    '[attr.data-size]':       'size()',\r\n    '[attr.data-color]':      'color() === \"default\" ? null : color()',\r\n    '[attr.data-elevation]':  'elevation() > 0 ? elevation() : null',\r\n    '[attr.data-bordered]':   'bordered() ? \"\" : null',\r\n    '[attr.data-sticky]':     'sticky() ? \"\" : null',\r\n    '[attr.data-collapse-search]': 'collapseSearch() ? \"\" : null',\r\n    '[attr.data-no-auto-stack]':   'noAutoStack() ? \"\" : null',\r\n  },\r\n})\r\nexport class MatchaToolbarComponent {\r\n  /** Layout — `horizontal` (default, 1 linha) ou `stack` (2 linhas, mobile). */\r\n  readonly layout = input<MatchaToolbarLayout>('horizontal');\r\n\r\n  /** Densidade — altera padding e min-height. Default `comfortable` (16px padding). */\r\n  readonly size = input<MatchaToolbarSize>('comfortable');\r\n\r\n  /** Cor semantic — adiciona accent border-left + bg tint sutil. Default `default` (sem accent). */\r\n  readonly color = input<MatchaToolbarColor>('default');\r\n\r\n  /** Elevação 0-3. 0 = flat (default), 1-3 = shadows progressivos.\r\n   *  Aceita `elevated` boolean attribute como atalho pra elevation=1. */\r\n  readonly elevation = input(0, { transform: numberAttribute });\r\n\r\n  /** @deprecated atalho — use `[elevation]=\"1\"`. Mantém pra back-compat. */\r\n  readonly elevated = input(false, { transform: booleanAttribute });\r\n\r\n  /** Border 1px outline — útil sobre flat surface (bg, não card). */\r\n  readonly bordered = input(false, { transform: booleanAttribute });\r\n\r\n  /** Sticky no topo do scroll container. `position: sticky; top: 0; z-index: 10`. */\r\n  readonly sticky = input(false, { transform: booleanAttribute });\r\n\r\n  /** Auto-collapse search em stack mode — vira icon-button que expande no click. */\r\n  readonly collapseSearch = input(false, { transform: booleanAttribute });\r\n\r\n  /** Opt-out do auto-stack em mobile (<768px). Default false = auto-stack ativo.\r\n   *  Use quando precisar manter horizontal em qualquer breakpoint (ex: toolbar\r\n   *  dentro de drawer largo, ou layout que já gerencia responsividade externamente). */\r\n  readonly noAutoStack = input(false, { transform: booleanAttribute });\r\n\r\n  /** aria-label do toolbar (WCAG 4.1.2 — obrigatório com múltiplas actions). */\r\n  readonly ariaLabel = input<string>('');\r\n\r\n  /** Emite quando layout signal muda (input ou auto-detect futuro). */\r\n  readonly layoutChange = output<MatchaToolbarLayout>();\r\n\r\n  private readonly el = inject(ElementRef<HTMLElement>);\r\n  private lastLayout: MatchaToolbarLayout | null = null;\r\n\r\n  constructor() {\r\n    // Emite layoutChange quando layout signal muda (skip inicial).\r\n    effect(() => {\r\n      const next = this.layout();\r\n      if (this.lastLayout !== null && this.lastLayout !== next) {\r\n        this.layoutChange.emit(next);\r\n      }\r\n      this.lastLayout = next;\r\n    });\r\n\r\n    // Resolve `elevated=true` legacy → elevation=1.\r\n    effect(() => {\r\n      if (this.elevated() && this.elevation() === 0) {\r\n        // Note: não dá pra setar input via signal, mas o atributo host\r\n        // [data-elevation] computa a partir de elevation() — então usamos\r\n        // um getter abaixo pra resolver na host binding.\r\n      }\r\n    });\r\n  }\r\n\r\n  // ── Keyboard navigation ARIA toolbar pattern (WAI-ARIA 1.2) ─────────────\r\n  // Arrow keys movem foco entre filhos focáveis. Home/End vão pra primeiro/último.\r\n  // Tab continua passando pro próximo grupo (não captura) — preserva UX nativa.\r\n  @HostListener('keydown', ['$event'])\r\n  onKeydown(event: KeyboardEvent): void {\r\n    const keys = ['ArrowLeft', 'ArrowRight', 'Home', 'End'];\r\n    if (!keys.includes(event.key)) return;\r\n\r\n    const focusables = this.getFocusableActions();\r\n    if (focusables.length === 0) return;\r\n\r\n    const active = document.activeElement as HTMLElement | null;\r\n    const currentIdx = active ? focusables.indexOf(active) : -1;\r\n    if (currentIdx === -1) return;  // foco fora dos actions — deixa Tab nativo\r\n\r\n    event.preventDefault();\r\n    let nextIdx = currentIdx;\r\n    switch (event.key) {\r\n      case 'ArrowLeft':  nextIdx = (currentIdx - 1 + focusables.length) % focusables.length; break;\r\n      case 'ArrowRight': nextIdx = (currentIdx + 1) % focusables.length; break;\r\n      case 'Home':       nextIdx = 0; break;\r\n      case 'End':        nextIdx = focusables.length - 1; break;\r\n    }\r\n    focusables[nextIdx].focus();\r\n  }\r\n\r\n  private getFocusableActions(): HTMLElement[] {\r\n    const host = this.el.nativeElement as HTMLElement;\r\n    // Pega todos os elementos focáveis dentro do toolbar — exclui matcha-title\r\n    // (decorativo) e respeita ordem do DOM. Cobre tanto slots nomeados quanto\r\n    // o slot default (canon Figma 1:1).\r\n    const selector = 'button:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), input:not([disabled])';\r\n    const all = Array.from(host.querySelectorAll(selector)) as HTMLElement[];\r\n    return all.filter(el => !el.closest('matcha-title'));\r\n  }\r\n}\r\n","<!-- 1:1 Figma DSV3 15866:92 — slot único `content`. -->\r\n<!-- Consumer compõe Title + Actions + CTA livremente como children diretos. -->\r\n<!-- Atributos legacy [matcha-toolbar-title|actions|primary] viram hints de layout via SCSS. -->\r\n<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaToolbarComponent } from './toolbar.component';\r\n\r\nexport { MatchaToolbarComponent } from './toolbar.component';\r\nexport type { MatchaToolbarLayout } from './toolbar.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaToolbarComponent],\r\n  exports: [MatchaToolbarComponent],\r\n})\r\nexport class MatchaToolbarModule {}\r\n","import {\r\n  Component, Input,\r\n  ViewEncapsulation, ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-section',\r\n  templateUrl: './section.component.html',\r\n  styleUrls: ['./section.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  host: {\r\n    'class': 'matcha-section',\r\n    'role': 'region',\r\n    '[attr.aria-label]': 'ariaLabel',\r\n  }\r\n})\r\nexport class MatchaSectionComponent {\r\n  @Input() ariaLabel: string = '';\r\n  @Input() subtitle: string = '';\r\n  @Input() description: string = '';\r\n}\r\n","<!-- Header -->\r\n<div class=\"matcha-section__header\">\r\n  <div class=\"matcha-section__header-left\">\r\n    <ng-content select=\"[matcha-section-title]\"></ng-content>\r\n    <ng-content select=\"[matcha-section-badge]\"></ng-content>\r\n  </div>\r\n  <div class=\"matcha-section__header-actions\">\r\n    <ng-content select=\"[matcha-section-action]\"></ng-content>\r\n  </div>\r\n</div>\r\n\r\n<!-- Divider -->\r\n<ng-content select=\"matcha-divider\"></ng-content>\r\n\r\n<!-- Body -->\r\n<div class=\"matcha-section__body\">\r\n  <h3 *ngIf=\"subtitle\" class=\"matcha-section__subtitle\">{{ subtitle }}</h3>\r\n  <p *ngIf=\"description\" class=\"matcha-section__description\">{{ description }}</p>\r\n  <div class=\"matcha-section__content\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaSectionComponent } from './section.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaSectionComponent],\r\n  exports: [\r\n    MatchaSectionComponent\r\n  ]\r\n})\r\nexport class MatchaSectionModule {}\r\n","export interface MatchaTextEditorOptions {\r\n    height?: string;\r\n    width?: string;\r\n    showFont?: boolean;\r\n    showFormats?: boolean;\r\n    showBold?: boolean;\r\n    showUnderline?: boolean;\r\n    showItalic?: boolean;\r\n    showStrike?: boolean;\r\n    showFontColor?: boolean;\r\n    showHiliteColor?: boolean;\r\n    showInOutDent?: boolean;\r\n    showAlign?: boolean;\r\n    showList?: boolean;\r\n    showLine?: boolean;\r\n    showTable?: boolean;\r\n    showLink?: boolean;\r\n    showImage?: boolean;\r\n    showVideo?: boolean;\r\n    showMarkdown?: boolean;\r\n    showFullScreen?: boolean;\r\n    showCodeView?: boolean;\r\n    addFont?: Array<{ value: string; text: string }>;\r\n    videoX?: number;\r\n    videoY?: number;\r\n    imageSize?: string;\r\n}\r\n\r\nconst DEFAULT_OPTIONS: Required<MatchaTextEditorOptions> = {\r\n    height: '400px',\r\n    width: '100%',\r\n    showFont: true,\r\n    showFormats: true,\r\n    showBold: true,\r\n    showUnderline: true,\r\n    showItalic: true,\r\n    showStrike: true,\r\n    showFontColor: true,\r\n    showHiliteColor: true,\r\n    showInOutDent: true,\r\n    showAlign: true,\r\n    showList: true,\r\n    showLine: true,\r\n    showTable: true,\r\n    showLink: true,\r\n    showImage: true,\r\n    showVideo: true,\r\n    showMarkdown: true,\r\n    showFullScreen: false,\r\n    showCodeView: true,\r\n    addFont: [],\r\n    videoX: 560,\r\n    videoY: 315,\r\n    imageSize: '350px',\r\n};\r\n\r\nexport function buildSunEditorConfig(options: MatchaTextEditorOptions = {}): Record<string, unknown> {\r\n    const opts = { ...DEFAULT_OPTIONS, ...options };\r\n    return {\r\n        height: opts.height,\r\n        width: opts.width,\r\n        buttonList: _buildButtonList(opts),\r\n        imageWidth: opts.imageSize,\r\n        videoWidth: opts.videoX,\r\n        videoHeight: opts.videoY,\r\n        font: opts.addFont?.length ? opts.addFont.map(f => f.value) : undefined,\r\n        defaultStyle: 'font-family: Arial, sans-serif; font-size: 16px;',\r\n    };\r\n}\r\n\r\nfunction _buildButtonList(opts: Required<MatchaTextEditorOptions>): unknown[] {\r\n    const formatGroup = _groupFormat(opts);\r\n    const textGroup   = _groupText(opts);\r\n    const colorGroup  = _groupColor(opts);\r\n    const indentGroup = _groupIndent(opts);\r\n    const insertGroup = _groupInsert(opts);\r\n    const viewGroup   = _groupView(opts);\r\n\r\n    // Desktop toolbar\r\n    const desktop: unknown[] = [['undo', 'redo']];\r\n    if (formatGroup.length) desktop.push('|', formatGroup);\r\n    if (textGroup.length)   desktop.push('|', textGroup);\r\n    if (colorGroup.length)  desktop.push('|', colorGroup);\r\n    desktop.push('|', ['removeFormat']);\r\n    if (indentGroup.length) desktop.push('|', indentGroup);\r\n    if (insertGroup.length) desktop.push('|', insertGroup);\r\n    if (viewGroup.length)   desktop.push('|', viewGroup);\r\n\r\n    // %992: format group collapses into a \"more\" dropdown\r\n    const bp992: unknown[] = [['undo', 'redo'], '|'];\r\n    if (formatGroup.length) bp992.push([':Format-default.more_paragraph', ...formatGroup]);\r\n    if (textGroup.length)   bp992.push(textGroup);\r\n    if (colorGroup.length)  bp992.push('|', colorGroup);\r\n    bp992.push('|', ['removeFormat']);\r\n    if (indentGroup.length) bp992.push('|', indentGroup);\r\n    if (insertGroup.length) bp992.push('|', insertGroup);\r\n    if (viewGroup.length)   bp992.push('|', viewGroup);\r\n\r\n    // %768: removeFormat moves inside format dropdown; insert collapses\r\n    const bp768: unknown[] = [['undo', 'redo'], '|'];\r\n    if (formatGroup.length) {\r\n        bp768.push([':Format-default.more_paragraph', ...formatGroup, '|', 'removeFormat']);\r\n    } else {\r\n        bp768.push(['removeFormat']);\r\n    }\r\n    if (textGroup.length)   bp768.push(textGroup);\r\n    if (colorGroup.length)  bp768.push('|', colorGroup);\r\n    if (indentGroup.length) bp768.push(indentGroup);\r\n    if (insertGroup.length) bp768.push('|', [':Insert-default.more_plus', ...insertGroup]);\r\n    if (viewGroup.length)   bp768.push('|', viewGroup);\r\n\r\n    // %576: text+color+removeFormat collapse into one dropdown\r\n    const bp576: unknown[] = [['undo', 'redo'], '|'];\r\n    if (formatGroup.length) bp576.push([':Format-default.more_paragraph', ...formatGroup]);\r\n    if (textGroup.length || colorGroup.length) {\r\n        const combined: unknown[] = [':Text-default.more_text', ...textGroup];\r\n        if (colorGroup.length) combined.push('|', ...colorGroup);\r\n        combined.push('|', 'removeFormat');\r\n        bp576.push(combined);\r\n    } else {\r\n        bp576.push(['removeFormat']);\r\n    }\r\n    if (indentGroup.length) bp576.push(indentGroup);\r\n    if (insertGroup.length) bp576.push('|', [':Insert-default.more_plus', ...insertGroup]);\r\n    if (viewGroup.length)   bp576.push(['-right', ...viewGroup]);\r\n\r\n    return [\r\n        ...desktop,\r\n        ['%992', bp992],\r\n        ['%768', bp768],\r\n        ['%576', bp576],\r\n    ];\r\n}\r\n\r\nfunction _groupFormat(opts: Required<MatchaTextEditorOptions>): string[] {\r\n    return (opts.showFormats || opts.showFont) ? ['blockStyle', 'font', 'fontSize'] : [];\r\n}\r\n\r\nfunction _groupText(opts: Required<MatchaTextEditorOptions>): string[] {\r\n    return (opts.showBold || opts.showItalic || opts.showUnderline || opts.showStrike)\r\n        ? ['bold', 'italic', 'underline', 'strike'] : [];\r\n}\r\n\r\nfunction _groupColor(opts: Required<MatchaTextEditorOptions>): string[] {\r\n    return (opts.showFontColor || opts.showHiliteColor) ? ['fontColor', 'backgroundColor'] : [];\r\n}\r\n\r\nfunction _groupIndent(opts: Required<MatchaTextEditorOptions>): string[] {\r\n    return (opts.showInOutDent || opts.showAlign || opts.showList)\r\n        ? ['outdent', 'indent', 'align', 'list'] : [];\r\n}\r\n\r\nfunction _groupInsert(opts: Required<MatchaTextEditorOptions>): string[] {\r\n    return (opts.showTable || opts.showLink || opts.showImage || opts.showVideo)\r\n        ? ['table', 'link', 'image', 'video'] : [];\r\n}\r\n\r\nfunction _groupView(opts: Required<MatchaTextEditorOptions>): string[] {\r\n    return [\r\n        ...(opts.showFullScreen ? ['fullScreen'] : []),\r\n        ...(opts.showCodeView   ? ['codeView']   : []),\r\n        ...(opts.showMarkdown   ? ['markdownView'] : []),\r\n    ];\r\n}\r\n","/**\r\n * Torna o markup de vídeo emitido pelo SunEditor AUTOSSUFICIENTE (IN-40732).\r\n *\r\n * Ao redimensionar um vídeo em porcentagem, o SunEditor v3 monta um *ratio box*:\r\n * grava `padding-bottom` percentual no container (`__setCoverPaddingBottom`) e\r\n * conta com o CSS interno do editor pra colapsar a caixa —\r\n * `.sun-editor-editable .se-video-container iframe { position: absolute; height: 100% }`.\r\n *\r\n * Esse CSS não existe fora do editor. No app/portal o `padding-bottom` vira faixa\r\n * vazia real (178% ≈ duas telas de celular de espaçamento). Corrigir o HTML salvo\r\n * pela API não resolve: ao reeditar, o SunEditor re-deriva os styles de\r\n * `data-se-size` e reenvia o markup — por isso a normalização acontece a cada emit.\r\n *\r\n * A transformação replica INLINE exatamente o que o CSS do editor faz, sem\r\n * recalcular razão nenhuma: o container vira o ratio box (`position: relative`,\r\n * `height: 0`, mantendo o `padding-bottom` que o editor escreveu) e a mídia passa\r\n * a preenchê-lo em absoluto. O vídeo renderiza com a mesma proporção que o usuário\r\n * viu no editor, em qualquer renderizador — inclusive WebView antiga, que é o\r\n * motivo de não usar `aspect-ratio`.\r\n */\r\n\r\nconst MEDIA_SELECTOR = 'iframe, video, audio';\r\n\r\n/** Pré-filtro barato: sem candidato, o HTML volta byte-idêntico (sem round-trip de parser). */\r\nconst HAS_RATIO_BOX_CANDIDATE = /padding-bottom\\s*:/i;\r\n\r\n/** Styles que o CSS interno do editor aplica na mídia e que precisam virar inline. */\r\nconst MEDIA_FILL_STYLES: ReadonlyArray<readonly [string, string]> = [\r\n  ['position', 'absolute'],\r\n  ['top', '0'],\r\n  ['left', '0'],\r\n  ['width', '100%'],\r\n  ['height', '100%'],\r\n];\r\n\r\nexport function normalizeSunEditorVideoMarkup(html: string): string {\r\n  if (!html || !HAS_RATIO_BOX_CANDIDATE.test(html) || typeof DOMParser === 'undefined') {\r\n    return html;\r\n  }\r\n\r\n  // DOMParser cria um documento INERTE: não baixa recurso nem dispara handler\r\n  // (ao contrário de innerHTML num elemento avulso, onde `<img onerror>` roda).\r\n  const parsed = new DOMParser().parseFromString(html, 'text/html');\r\n  const ratioBoxes = collectRatioBoxes(parsed);\r\n  if (ratioBoxes.length === 0) return html;\r\n\r\n  ratioBoxes.forEach(({ container, media }) => {\r\n    container.style.position = 'relative';\r\n    container.style.height = '0';\r\n    MEDIA_FILL_STYLES.forEach(([prop, value]) => media.style.setProperty(prop, value));\r\n  });\r\n\r\n  return parsed.body.innerHTML;\r\n}\r\n\r\ninterface RatioBox {\r\n  container: HTMLElement;\r\n  media: HTMLElement;\r\n}\r\n\r\n/**\r\n * Ratio box = elemento com `padding-bottom` inline não-zero que embrulha uma mídia.\r\n * Casar pela estrutura (e não por `<figure>`) cobre as duas formas que o SunEditor\r\n * emite — cover na `<figure>` e cover em `.se-video-container` aninhada.\r\n */\r\nfunction collectRatioBoxes(doc: Document): RatioBox[] {\r\n  const boxes: RatioBox[] = [];\r\n\r\n  doc.body.querySelectorAll<HTMLElement>('[style*=\"padding-bottom\"]').forEach(container => {\r\n    if (isZeroLength(container.style.paddingBottom)) return;\r\n\r\n    const media = container.querySelector<HTMLElement>(MEDIA_SELECTOR);\r\n    if (!media) return;\r\n\r\n    boxes.push({ container, media });\r\n  });\r\n\r\n  return boxes;\r\n}\r\n\r\nfunction isZeroLength(value: string): boolean {\r\n  const trimmed = value.trim();\r\n  return trimmed === '' || parseFloat(trimmed) === 0;\r\n}\r\n","import { MatchaTextEditorOptions } from './suneditor-config';\r\n\r\n/**\r\n * Tira do conteúdo COLADO a cor que a toolbar não oferece (IN-42599).\r\n *\r\n * Regra: se a toolbar não tem o botão de cor, o editor não aceita cor colada.\r\n * `showFontColor: false` bloqueia `color`; `showHiliteColor: false` bloqueia\r\n * `background-color`. Todo o resto da formatação colada (negrito, títulos,\r\n * listas, alinhamento, font-size, font-family) passa intacto.\r\n *\r\n * O SunEditor v3 já filtra estilo colado (`strictMode.styleFilter`), mas a\r\n * whitelist dele traz cor de fábrica (`SPAN_STYLES` = `font-family|font-size|\r\n * color|background-color|width|height`) e a opção `spanStyles` só ACRESCENTA a\r\n * essa constante — não dá pra tirar nada por configuração. Daí o pós-filtro aqui.\r\n *\r\n * Um texto montado no Word chega com o preto inline dele (`color:#000000`); o app\r\n * da igreja renderiza esse HTML em dark mode e o texto some no fundo escuro. Nas\r\n * telas que desligam os botões de cor o usuário não tem como corrigir — o\r\n * \"remover formatação\" chama `inline.remove()`, que derruba o negrito junto.\r\n *\r\n * Roda no PASTE (e não no emit) porque o SunEditor substitui o conteúdo colado\r\n * pela string devolvida do `onPaste`: o usuário cola e já vê a cor certa. Como o\r\n * valor de ENTRADA não é tocado (contrato do componente), conteúdo já salvo com\r\n * preto continua preto até alguém reeditar.\r\n */\r\n\r\n/** Pré-filtro barato: sem candidato, o HTML volta byte-idêntico (sem round-trip de parser). */\r\nconst HAS_COLOR_CANDIDATE = /color/i;\r\n\r\nexport function sanitizePastedColor(html: string, options: MatchaTextEditorOptions = {}): string {\r\n  const blocked = blockedProperties(options);\r\n  if (!html || blocked.length === 0 || !HAS_COLOR_CANDIDATE.test(html) || typeof document === 'undefined') {\r\n    return html;\r\n  }\r\n\r\n  // `<template>` é INERTE (não baixa recurso nem dispara `<img onerror>`) E parseia\r\n  // FRAGMENTO: o que chega aqui é HTML de área de transferência, não o emit do próprio\r\n  // editor. `DOMParser.parseFromString` — que o video-markup usa, porque lá a entrada é\r\n  // sempre conteúdo de body — descartaria um `<td>` solto de uma seleção parcial de tabela.\r\n  const fragment = document.createElement('template');\r\n  fragment.innerHTML = html;\r\n  const parsed = fragment.content;\r\n  let changed = false;\r\n\r\n  parsed.querySelectorAll<HTMLElement>('[style]').forEach(element => {\r\n    // removeProperty casa a propriedade exata — `border-color`, `outline-color` e\r\n    // `text-decoration-color` não são `color` e sobrevivem sem regex de boundary.\r\n    const present = blocked.filter(property => element.style.getPropertyValue(property) !== '');\r\n    if (present.length === 0) return;\r\n\r\n    present.forEach(property => element.style.removeProperty(property));\r\n    if (!element.getAttribute('style')?.trim()) element.removeAttribute('style');\r\n    changed = true;\r\n  });\r\n\r\n  if (blocked.includes('color')) {\r\n    // `<font color>` continua saindo do Word e do Google Docs.\r\n    parsed.querySelectorAll('font[color]').forEach(element => {\r\n      element.removeAttribute('color');\r\n      changed = true;\r\n    });\r\n  }\r\n\r\n  return changed ? fragment.innerHTML : html;\r\n}\r\n\r\nfunction blockedProperties(options: MatchaTextEditorOptions): string[] {\r\n  const blocked: string[] = [];\r\n  if (options.showFontColor === false) blocked.push('color');\r\n  if (options.showHiliteColor === false) blocked.push('background-color');\r\n  return blocked;\r\n}\r\n","import {\r\n    Component,\r\n    Input,\r\n    Output,\r\n    EventEmitter,\r\n    AfterViewInit,\r\n    OnDestroy,\r\n    NgZone,\r\n    ChangeDetectorRef,\r\n    ElementRef,\r\n    forwardRef,\r\n    HostBinding,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { buildSunEditorConfig, MatchaTextEditorOptions } from '../suneditor/suneditor-config';\r\nimport { normalizeSunEditorVideoMarkup } from '../suneditor/video-markup';\r\nimport { sanitizePastedColor } from '../suneditor/paste-color';\r\nimport { MatchaSkeletonComponent } from '../../matcha-skeleton/skeleton/skeleton.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\nimport { MATCHA_ASSETS_BASE } from '../../shared/assets-cdn';\r\n\r\nconst CDN_BASE = `${MATCHA_ASSETS_BASE}/text-editor`;\r\n\r\n/** Subset of the `info` payload SunEditor v3 passes to `onImageUploadBefore`. */\r\ninterface SunEditorImageUploadInfo {\r\n    files: File[];\r\n    isUpdate?: boolean;\r\n    element?: HTMLImageElement;\r\n    anchor?: HTMLElement | null;\r\n    inputWidth?: string;\r\n    inputHeight?: string;\r\n    align?: string;\r\n    alt?: string;\r\n}\r\n\r\n/**\r\n * Wrapper do SunEditor v3 como ControlValueAccessor.\r\n *\r\n * **Contrato de saída:** o HTML emitido é autossuficiente — renderiza igual fora do\r\n * editor, sem depender do CSS interno dele (ver `normalizeSunEditorVideoMarkup`) nem\r\n * carregar cor que a toolbar não oferece (ver `sanitizePastedColor`). O valor de\r\n * ENTRADA não é tocado: o editor re-deriva os styles ao reeditar.\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-text-editor',\r\n    templateUrl: './text-editor.component.html',\r\n    styleUrls: ['./text-editor.component.scss'],\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaSkeletonComponent],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MatchaTextEditorComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class MatchaTextEditorComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\r\n    readonly editorId = `matcha-text-editor-${Math.random().toString(36).substring(2, 11)}`;\r\n    isLoading = true;\r\n\r\n    get skeletonHeight(): string {\r\n        return this._config?.height || '400px';\r\n    }\r\n\r\n    @Input() set value(v: string) { this.writeValue(v); }\r\n\r\n    private _config: MatchaTextEditorOptions = {};\r\n    @Input() set config(v: MatchaTextEditorOptions) {\r\n        this._config = v;\r\n        if (this._editor) {\r\n            this._reloadEditor();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Optional hook that turns an inserted image File into the string used as its `src`.\r\n     * When provided, the editor delegates image insertion to it (e.g. upload to a bucket and\r\n     * return the hosted URL) instead of embedding base64. The returned string is used verbatim\r\n     * as the `<img src>`, so a consumer may also resolve it to a data URI as its own fallback.\r\n     * When omitted, SunEditor keeps its default base64 behavior.\r\n     */\r\n    @Input() imageUploadHandler?: (file: File) => Promise<string>;\r\n\r\n    @Output() contentChange = new EventEmitter<string>();\r\n\r\n    @HostBinding('attr.disabled')\r\n    get disabledAttr(): string | null {\r\n        return this._disabled ? '' : null;\r\n    }\r\n\r\n    private _editor: any = null;\r\n    private _editorReady = false;\r\n    private _pendingValue = '';\r\n    private _isSettingValue = false;\r\n    private _disabled = false;\r\n    private _onChange: (value: string) => void = () => {};\r\n    private _onTouched: () => void = () => {};\r\n\r\n    constructor(\r\n        private _ngZone: NgZone,\r\n        private _cdr: ChangeDetectorRef,\r\n        private _el: ElementRef,\r\n    ) {}\r\n\r\n    async ngAfterViewInit(): Promise<void> {\r\n        this._ngZone.runOutsideAngular(async () => {\r\n            try {\r\n                await this._loadAssets();\r\n                this._initEditor();\r\n            } catch (error) {\r\n                console.error('[matcha-text-editor] Falha ao inicializar o SunEditor:', error);\r\n            }\r\n        });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        try {\r\n            this._editor?.destroy();\r\n        } catch {\r\n            // DOM may already be detached during Angular route navigation\r\n        }\r\n        this._editor = null;\r\n        this._editorReady = false;\r\n    }\r\n\r\n    // ControlValueAccessor\r\n\r\n    writeValue(value: string): void {\r\n        const v = value || '';\r\n        this._isSettingValue = true;\r\n        if (this._editor && this._editorReady) {\r\n            this._setEditorHtml(v);\r\n        } else {\r\n            this._pendingValue = v;\r\n        }\r\n        setTimeout(() => { this._isSettingValue = false; }, 0);\r\n    }\r\n\r\n    registerOnChange(fn: (value: string) => void): void {\r\n        this._onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: () => void): void {\r\n        this._onTouched = fn;\r\n    }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this._disabled = isDisabled;\r\n        if (!this._editor) return;\r\n        isDisabled ? this._editor.toolbar.disable() : this._editor.toolbar.enable();\r\n    }\r\n\r\n    insertHtml(html: string): void {\r\n        this._editor?.$.html.insert(html);\r\n    }\r\n\r\n    private _setEditorHtml(value: string): void {\r\n        try {\r\n            this._editor.$.html.set(value);\r\n        } catch {\r\n            // SunEditor's html.clean() crashes on certain figure structures (v3.1.2 bug).\r\n            // Fall back to directly setting the wysiwyg innerHTML.\r\n            const wysiwyg = this._editor.$.frameContext?.get('wysiwyg');\r\n            if (wysiwyg) wysiwyg.innerHTML = value;\r\n        }\r\n    }\r\n\r\n    // SunEditor v3 fires this before its own image upload. Its `handler` is bound to the internal\r\n    // serverUpload, which only inserts via an XHR round-trip to `imageUploadUrl` (unset here) — so\r\n    // we can't hand it a URL to insert. Instead we run the consumer handler ourselves and insert\r\n    // through the image plugin's own API, mirroring the editor's native URL flow (urlUpload):\r\n    // html.insert() with a bare `<img>` string crashes in the clean pipeline (retainFigureFormat,\r\n    // SunEditor 3.1.2). Returning `undefined` (no explicit return) cancels the default base64\r\n    // handling WITHOUT signaling failure, so the image modal closes. (Returning `false` would\r\n    // cancel too, but v3 reads it as \"submission failed\" and leaves the modal open.)\r\n    private _onImageUploadBefore = async ({ info }: { info: SunEditorImageUploadInfo }): Promise<void> => {\r\n        const files = Array.from(info?.files ?? []);\r\n        const sources = await Promise.all(\r\n            files.map(async file => {\r\n                try {\r\n                    return await this.imageUploadHandler!(file);\r\n                } catch {\r\n                    // Safety net: consumer handler failed — embed base64 so the image isn't lost.\r\n                    return this._fileToDataUrl(file);\r\n                }\r\n            }),\r\n        );\r\n        const image = this._editor?.$.plugins.image;\r\n        if (!image) return;\r\n        files.forEach((file, i) => {\r\n            const src = sources[i];\r\n            const fileData = { name: file.name, size: file.size };\r\n            if (info.isUpdate) {\r\n                if (i > 0 || !info.element) return;\r\n                info.element.src = src;\r\n                image.fileManager.setFileData(info.element, fileData);\r\n                this._editor.$.component.select(info.element, 'image');\r\n                return;\r\n            }\r\n            const width = info.inputWidth || this._config?.imageSize || '350px';\r\n            const height = info.inputHeight || '';\r\n            const alt = info.alt || file.name;\r\n            const isLast = i === files.length - 1;\r\n            if (image.as === 'inline') {\r\n                image.createInline(src, info.anchor ?? null, width, height, fileData, alt, isLast);\r\n            } else {\r\n                image.create(src, info.anchor ?? null, width, height, info.align || 'none', fileData, alt, isLast);\r\n            }\r\n        });\r\n    };\r\n\r\n    private _fileToDataUrl(file: File): Promise<string> {\r\n        return new Promise((resolve, reject) => {\r\n            const reader = new FileReader();\r\n            reader.onload = () => resolve(reader.result as string);\r\n            reader.onerror = () => reject(reader.error);\r\n            reader.readAsDataURL(file);\r\n        });\r\n    }\r\n\r\n    // Private\r\n\r\n    private _injectScript(id: string, url: string): Promise<void> {\r\n        return new Promise((resolve) => {\r\n            const existing = document.getElementById(id) as HTMLScriptElement | null;\r\n            if (existing) {\r\n                if (existing.hasAttribute('data-loaded')) { resolve(); return; }\r\n                existing.addEventListener('load', () => resolve());\r\n                existing.addEventListener('error', () => resolve());\r\n                return;\r\n            }\r\n            const script = document.createElement('script');\r\n            script.type = 'text/javascript';\r\n            script.id = id;\r\n            script.src = url;\r\n            script.onload = () => { script.setAttribute('data-loaded', 'true'); resolve(); };\r\n            script.onerror = () => { console.warn(`[matcha-text-editor] Falha ao carregar: ${id}`); resolve(); };\r\n            document.head.appendChild(script);\r\n        });\r\n    }\r\n\r\n    private _injectStyle(id: string, url: string): Promise<void> {\r\n        return new Promise((resolve) => {\r\n            if (document.getElementById(id)) { resolve(); return; }\r\n            const link = document.createElement('link');\r\n            link.id = id;\r\n            link.rel = 'stylesheet';\r\n            link.href = url;\r\n            link.onload = () => resolve();\r\n            link.onerror = () => resolve();\r\n            document.head.appendChild(link);\r\n        });\r\n    }\r\n\r\n    private async _loadAssets(): Promise<void> {\r\n        // CSS loads in parallel\r\n        await Promise.all([\r\n            this._injectStyle('suneditor-css', `${CDN_BASE}/css/suneditor.min.css`),\r\n            this._injectStyle('codemirror-css', `${CDN_BASE}/css/codemirror.min.css`),\r\n        ]);\r\n\r\n        // JS loads sequentially — order matters\r\n        await this._injectScript('codemirror-js', `${CDN_BASE}/js/codemirror.min.js`);\r\n        await this._injectScript('codemirror-xml', `${CDN_BASE}/js/xml.min.js`);\r\n        await this._injectScript('codemirror-css-mode', `${CDN_BASE}/js/css.js`);\r\n        await this._injectScript('codemirror-js-mode', `${CDN_BASE}/js/javascript.js`);\r\n        await this._injectScript('codemirror-htmlmixed', `${CDN_BASE}/js/htmlmixed.js`);\r\n        await this._injectScript('suneditor-js', `${CDN_BASE}/js/suneditor.min.js`);\r\n        await this._injectScript('suneditor-lang-ptbr', `${CDN_BASE}/langs/pt-br.js`);\r\n    }\r\n\r\n    private _reloadEditor(): void {\r\n        const content = this._editor?.$.html.get() ?? '';\r\n        this._editor?.destroy();\r\n        this._editor = null;\r\n        this._editorReady = false;\r\n        this._pendingValue = content;\r\n        this.isLoading = true;\r\n        this._cdr.detectChanges();\r\n        this._ngZone.runOutsideAngular(() => this._initEditor());\r\n    }\r\n\r\n    private _initEditor(): void {\r\n        const SUNEDITOR = (window as any).SUNEDITOR;\r\n        if (!SUNEDITOR) {\r\n            console.error('[matcha-text-editor] SUNEDITOR global não encontrado após injeção.');\r\n            return;\r\n        }\r\n\r\n        const textarea = document.getElementById(this.editorId);\r\n        if (!textarea) {\r\n            requestAnimationFrame(() => this._ngZone.runOutsideAngular(() => this._initEditor()));\r\n            return;\r\n        }\r\n\r\n        this._editor = SUNEDITOR.create(textarea, {\r\n            plugins: SUNEDITOR.plugins,\r\n            // Gallery/browser plugins fetch their listing from a server URL our options API never\r\n            // exposes — the buttons they add to the file modals crash on click (GET to undefined).\r\n            excludedPlugins: ['imageGallery', 'videoGallery', 'audioGallery', 'fileGallery', 'fileBrowser'],\r\n            lang: (window as any).SUNEDITOR_LANG?.pt_br,\r\n            externalLibs: {\r\n                codeMirror: { src: (window as any).CodeMirror },\r\n            },\r\n            toolbar_sticky: 0,\r\n            ...buildSunEditorConfig(this._config),\r\n            events: {\r\n                onChange: ({ data }: { data: string }) => {\r\n                    if (this._isSettingValue) return;\r\n                    // Normaliza a cada emit: corrigir o HTML salvo não persiste,\r\n                    // porque ao reeditar o SunEditor reenvia o markup dele.\r\n                    const html = normalizeSunEditorVideoMarkup(data);\r\n                    this._ngZone.run(() => {\r\n                        this._onChange(html);\r\n                        this.contentChange.emit(html);\r\n                    });\r\n                },\r\n                // Devolver string do onPaste SUBSTITUI o conteúdo colado antes de ele entrar\r\n                // no editor — é o que dá o feedback imediato (o usuário cola e já vê a cor\r\n                // certa). `undefined` mantém o fluxo padrão; `''` cancelaria o paste.\r\n                onPaste: ({ data }: { data: string }): string | undefined => {\r\n                    const sanitized = sanitizePastedColor(data, this._config ?? {});\r\n                    return sanitized === data ? undefined : sanitized;\r\n                },\r\n                onBlur: () => this._ngZone.run(() => this._onTouched()),\r\n                ...(this.imageUploadHandler\r\n                    ? { onImageUploadBefore: this._onImageUploadBefore }\r\n                    : {}),\r\n            },\r\n        });\r\n\r\n        if (this._disabled) {\r\n            this._editor.toolbar.disable();\r\n        }\r\n\r\n        const sunEditorEl = this._el.nativeElement.querySelector('.sun-editor') as HTMLElement | null;\r\n        if (sunEditorEl) sunEditorEl.style.display = 'none';\r\n\r\n        setTimeout(() => {\r\n            if (!this._editor) return;\r\n            this._editorReady = true;\r\n            if (this._pendingValue) {\r\n                this._isSettingValue = true;\r\n                this._setEditorHtml(this._pendingValue);\r\n                this._pendingValue = '';\r\n                setTimeout(() => { this._isSettingValue = false; }, 0);\r\n            }\r\n            if (sunEditorEl) sunEditorEl.style.display = '';\r\n            this._ngZone.run(() => {\r\n                this.isLoading = false;\r\n                this._cdr.detectChanges();\r\n            });\r\n        }, 100);\r\n    }\r\n}\r\n","<matcha-skeleton *ngIf=\"isLoading\" [height]=\"skeletonHeight\" [amount]=\"1\" model=\"empty\"></matcha-skeleton>\r\n<textarea [id]=\"editorId\" style=\"display:none; width:100%;\"></textarea>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaTextEditorComponent } from './text-editor/text-editor.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaTextEditorComponent],\r\n  exports: [MatchaTextEditorComponent],\r\n})\r\nexport class MatchaTextEditorModule {}\r\n","import {\r\n  Component, Input,\r\n  ViewEncapsulation, ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n@Component({\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-chart-card',\r\n  templateUrl: './chart-card.component.html',\r\n  styleUrls: ['./chart-card.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  host: {\r\n    'class': 'matcha-chart-card',\r\n    'role': 'figure',\r\n    '[attr.aria-label]': 'ariaLabel',\r\n  }\r\n})\r\nexport class MatchaChartCardComponent {\r\n  @Input() ariaLabel: string = 'Gráfico';\r\n  @Input() showAccent: boolean = true;\r\n}\r\n","<!-- Accent line -->\r\n<div *ngIf=\"showAccent\" class=\"matcha-chart-card__accent\"></div>\r\n\r\n<!-- Content slot -->\r\n<div class=\"matcha-chart-card__content\">\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaChartCardComponent } from './chart-card.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaChartCardComponent],\r\n  exports: [\r\n    MatchaChartCardComponent\r\n  ]\r\n})\r\nexport class MatchaChartCardModule {}\r\n","import {\r\n  Component, Input, Output, EventEmitter, ElementRef, ViewChild,\r\n  AfterViewInit, OnChanges, OnDestroy, SimpleChanges,\r\n  ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef,\r\n  HostListener, booleanAttribute, numberAttribute, forwardRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\nimport { parseRatio, RatioLiteral } from '../shared/ratio';\r\n\r\n// =============================================================================\r\n// Types\r\n// =============================================================================\r\n/** Proporções nomeadas com valor pré-calculado em RATIO_VALUES. */\r\nexport type CropNamedRatio = '16:9' | '1:1' | '4:3' | '3:2' | '9:16' | '3:4';\r\n/**\r\n * Proporção do crop: preset nomeado, arbitrária (ex: '122:50') em qualquer um\r\n * dos três separadores aceitos por `parseRatio`, ou 'free'.\r\n */\r\nexport type CropRatio = CropNamedRatio | 'free' | RatioLiteral;\r\nexport type CropShape = 'rectangle' | 'circle';\r\nexport type CropFormat = 'jpeg' | 'png' | 'webp';\r\nexport type CropState = 'empty' | 'loading' | 'ready' | 'error';\r\n/**\r\n * Fundo do stage (área onde a imagem é exibida durante o corte).\r\n * - 'auto' (default): escuro pra imagem opaca; claro (xadrez) quando a imagem tem alfa.\r\n * - 'dark' | 'light': força o fundo, ignorando a detecção.\r\n */\r\nexport type CropStage = 'auto' | 'dark' | 'light';\r\n\r\nexport interface CropResult {\r\n  base64: string;\r\n  blob: Blob;\r\n  width: number;\r\n  height: number;\r\n  format: CropFormat;\r\n}\r\n\r\n/**\r\n * Quanto o anel externo do overlay extrapola o canvas, em px. Existe pra o escurecido NAO\r\n * depender de containerWidth/Height, que sao medidos uma vez e envelhecem. O canvas tem\r\n * `overflow: hidden`, entao a sobra e aparada pelo CSS.\r\n */\r\nconst OVERLAY_BLEED = 9999;\r\n\r\ninterface CropArea { x: number; y: number; width: number; height: number; }\r\ntype DragMode =\r\n  | null\r\n  | 'move'\r\n  | 'nw' | 'ne' | 'sw' | 'se'\r\n  | 'n'  | 's'  | 'e'  | 'w';\r\n\r\nconst RATIO_VALUES: Record<CropNamedRatio, number> = {\r\n  '16:9': 16 / 9,\r\n  '4:3':  4 / 3,\r\n  '3:2':  3 / 2,\r\n  '1:1':  1,\r\n  '3:4':  3 / 4,\r\n  '9:16': 9 / 16,\r\n};\r\n\r\n/**\r\n * Resolve uma proporção não-'free' pra valor numérico (W/H). Presets nomeados\r\n * vêm do RATIO_VALUES; qualquer proporção arbitrária (ex: '122:50', '3/4',\r\n * '300x400') é parseada por `parseRatio`. Fallback 16:9 se a string for\r\n * inválida — evita NaN propagando no resize/lock.\r\n */\r\nfunction ratioToNumber(ratio: Exclude<CropRatio, 'free'>): number {\r\n  const preset = RATIO_VALUES[ratio as CropNamedRatio];\r\n  if (preset != null) return preset;\r\n  const parsed = parseRatio(ratio);\r\n  return parsed ? parsed.w / parsed.h : RATIO_VALUES['16:9'];\r\n}\r\n\r\nconst FORMAT_MIME: Record<CropFormat, string> = {\r\n  jpeg: 'image/jpeg',\r\n  png:  'image/png',\r\n  webp: 'image/webp',\r\n};\r\n\r\nconst HANDLE_DIRECTIONS = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'] as const;\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-crop',\r\n  templateUrl: './crop.component.html',\r\n  styleUrls: ['./crop.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaIconComponent],\r\n  host: {\r\n    'class': 'matcha-crop',\r\n    '[attr.data-state]': 'state',\r\n    '[attr.data-shape]': 'shape',\r\n    '[attr.data-ratio]': 'ratio',\r\n    '[attr.data-stage]': 'stageTone',\r\n  },\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MatchaCropComponent), multi: true },\r\n  ],\r\n})\r\nexport class MatchaCropComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n  // ── Inputs ─────────────────────────────────────────────────────────\r\n  @Input() imageSrc: string = '';\r\n  @Input() ratio: CropRatio = '16:9';\r\n  @Input() shape: CropShape = 'rectangle';\r\n  @Input() title: string = 'Cortar imagem';\r\n  @Input() alt: string = 'Imagem para corte';\r\n  @Input({ transform: booleanAttribute }) showHeader: boolean = true;\r\n\r\n  /** Output dimensions */\r\n  @Input({ transform: numberAttribute }) outputWidth: number = 1280;\r\n  @Input() outputFormat: CropFormat = 'jpeg';\r\n  @Input({ transform: numberAttribute }) outputQuality: number = 0.92;\r\n  /**\r\n   * Alvo opcional de tamanho do arquivo de saída (MB). Quando definido e o\r\n   * formato é lossy (jpeg/webp), reduz outputQuality iterativamente até o blob\r\n   * caber no alvo — auto-contido, sem dependência de compressão externa.\r\n   * PNG (sem quality) ignora. null = sem limite.\r\n   */\r\n  @Input({ transform: numberAttribute }) outputMaxSizeMB: number | null = null;\r\n  /** Background pra PNG/WebP transparente (e.g. avatar circle). null = transparente. */\r\n  @Input() bgColor: string | null = null;\r\n  /**\r\n   * Fundo do stage. O default do tema é escuro (surface-inverse), feito pra foto opaca —\r\n   * uma assinatura PNG (traço escuro sobre transparente) sumia nele (IN-42580). 'auto'\r\n   * detecta o alfa da imagem ao carregar e liga o stage claro (xadrez); 'dark'/'light'\r\n   * forçam. Só afeta a exibição — o canvas de saída continua regido por bgColor/outputFormat.\r\n   */\r\n  @Input() stage: CropStage = 'auto';\r\n\r\n  /** Tamanho mínimo da área de crop em px (display). Default 48. */\r\n  @Input({ transform: numberAttribute }) minSize: number = 48;\r\n\r\n  /** Tier 2 features (toggles pra controlar superfície) */\r\n  @Input({ transform: booleanAttribute }) showZoom: boolean = true;\r\n  @Input({ transform: booleanAttribute }) showRatioLock: boolean = false;\r\n  @Input({ transform: booleanAttribute }) disableKeyboard: boolean = false;\r\n  /** Quando ratio='free', o usuário pode redimensionar livre. Quando false, lock força ratio fixo. */\r\n  @Input({ transform: booleanAttribute }) ratioLocked: boolean = true;\r\n\r\n  /**\r\n   * Habilita drag-pan da imagem (move a foto sob o crop box quando user clica\r\n   * fora da área de crop). Default true (canon Figma). Use case pra desligar:\r\n   * avatar/foto perfil onde zoom+drag-do-crop-box já cobrem posicionamento e\r\n   * o pan extra confunde o user — clique acidental movia a foto inteira.\r\n   */\r\n  @Input({ transform: booleanAttribute }) enablePan: boolean = true;\r\n\r\n  /**\r\n   * Habilita zoom via scroll wheel sobre o canvas. Default true. Desligar\r\n   * quando o cropper convive com scroll de modal/page — o wheel preventDefault\r\n   * intercepta a rolagem natural. Slider e ratio buttons continuam zoom OK.\r\n   */\r\n  @Input({ transform: booleanAttribute }) enableWheelZoom: boolean = true;\r\n\r\n  // ── Outputs ────────────────────────────────────────────────────────\r\n  @Output() cropped = new EventEmitter<CropResult>();\r\n  @Output() cancelled = new EventEmitter<void>();\r\n  @Output() stateChange = new EventEmitter<CropState>();\r\n  @Output() reset = new EventEmitter<void>();\r\n\r\n  /**\r\n   * Emite continuamente conforme o usuário arrasta/redimensiona/zoom/pan o\r\n   * crop. Coordenadas EM SOURCE PIXELS (não display) — pronto pra consumer\r\n   * renderizar live preview ou metadata de crop não-destrutivo.\r\n   *\r\n   * Payload: `{ x, y, width, height }` no espaço da imagem original.\r\n   */\r\n  @Output() cropChange = new EventEmitter<{ x: number; y: number; width: number; height: number }>();\r\n\r\n  // ── ViewChildren ───────────────────────────────────────────────────\r\n  @ViewChild('canvas',   { static: false }) canvasRef!:   ElementRef<HTMLDivElement>;\r\n  @ViewChild('imageEl',  { static: false }) imageRef!:    ElementRef<HTMLImageElement>;\r\n  @ViewChild('cropArea', { static: false }) cropAreaRef!: ElementRef<HTMLDivElement>;\r\n\r\n  // ── State ──────────────────────────────────────────────────────────\r\n  state: CropState = 'empty';\r\n  errorMessage: string = '';\r\n\r\n  /** Área de crop em coords do container (px). */\r\n  crop: CropArea = { x: 0, y: 0, width: 0, height: 0 };\r\n\r\n  /** Zoom multiplier (1.0 = fit, max 4×). */\r\n  zoom: number = 1;\r\n\r\n  /** Pan offset da imagem (px). 0,0 = imagem centrada. */\r\n  panX = 0;\r\n  panY = 0;\r\n\r\n  /** Dimensões reais da imagem nativa. */\r\n  imageWidth = 0;\r\n  imageHeight = 0;\r\n  private canvasObserver: ResizeObserver | null = null;\r\n  containerWidth = 0;\r\n  containerHeight = 0;\r\n\r\n  /** Display ratio computado em initCrop — quanto a imagem nativa foi escalada pra caber no container. */\r\n  private displayRatio = 1;\r\n\r\n  /** Estado do drag (move/resize/pan). */\r\n  private dragMode: DragMode | 'image-pan' = null;\r\n  private dragStart = { x: 0, y: 0, cropX: 0, cropY: 0, cropW: 0, cropH: 0, panX: 0, panY: 0 };\r\n\r\n  /** Flag pra mostrar grid de composição só durante drag/resize. */\r\n  isInteracting = false;\r\n\r\n  /** Hint inicial — esconde após primeira interação. */\r\n  showHint = true;\r\n\r\n  /** Image() interna pra drawImage (independente do template img). */\r\n  private image = new Image();\r\n\r\n  /** A imagem carregada tem pixel com alfa < 255 (PNG/WebP transparente). Alimenta stage='auto'. */\r\n  imageHasAlpha = false;\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {\r\n    this.image.crossOrigin = 'anonymous';\r\n    this.image.onload = () => this.onImageLoaded();\r\n    this.image.onerror = () => this.onImageError();\r\n  }\r\n\r\n  // ── Computed-ish getters ───────────────────────────────────────────\r\n  get ratioValue(): number {\r\n    if (this.ratio === 'free') return this.crop.height > 0 ? this.crop.width / this.crop.height : 1;\r\n    return ratioToNumber(this.ratio);\r\n  }\r\n\r\n  get isRatioLocked(): boolean {\r\n    // free + showRatioLock + !ratioLocked = livre. Outros casos = trava.\r\n    if (this.ratio === 'free') return this.showRatioLock ? this.ratioLocked : false;\r\n    return true;\r\n  }\r\n\r\n  get hasImage(): boolean {\r\n    return this.state === 'ready';\r\n  }\r\n\r\n  /** Tom efetivo do stage — vai pro host como data-stage; o tema pinta o canvas por ele. */\r\n  get stageTone(): 'dark' | 'light' {\r\n    if (this.stage === 'auto') return this.imageHasAlpha ? 'light' : 'dark';\r\n    return this.stage;\r\n  }\r\n\r\n  /** Output dimensions pra preview/aria */\r\n  get outputHeight(): number {\r\n    return Math.round(this.outputWidth / this.ratioValue);\r\n  }\r\n\r\n  /**\r\n   * Retângulo do CONTEÚDO da imagem (com zoom+pan aplicados) em coords do container.\r\n   *\r\n   * É MAPEAMENTO, não limite: converte coords do frame para pixels da imagem original\r\n   * (`emitCropChange`). Já foi usado pra clampar drag/resize — o que prendia o frame a uma\r\n   * borda que se mexia junto com o pan/zoom. O frame agora anda livre pelo container.\r\n   */\r\n  get imageRect(): { x: number; y: number; right: number; bottom: number; width: number; height: number } {\r\n    const w = this.imageWidth * this.displayRatio * this.zoom;\r\n    const h = this.imageHeight * this.displayRatio * this.zoom;\r\n    const x = (this.containerWidth - w) / 2 + this.panX;\r\n    const y = (this.containerHeight - h) / 2 + this.panY;\r\n    return { x, y, right: x + w, bottom: y + h, width: w, height: h };\r\n  }\r\n\r\n  /** clip-path pra punch-out do overlay — buraco onde tá o crop.\r\n   *  Pra path(), suporte a `%` é instável entre browsers — usar pixels absolutos\r\n   *  + evenodd pra fazer o sub-path interno virar buraco.\r\n   *\r\n   *  O anel EXTERNO é deliberadamente maior que qualquer canvas (OVERLAY_BLEED) em vez de\r\n   *  containerWidth/Height: essas duas são medidas uma vez e envelhecem (o canvas assume o\r\n   *  tamanho final DEPOIS, quando o crop substitui a dropzone do matcha-file-uploader), e o\r\n   *  overlay ficava do tamanho velho — imagem exposta fora do escuro. `.matcha-crop__canvas`\r\n   *  tem `overflow: hidden`, então quem apara a sobra é o CSS, que nunca fica velho. O buraco\r\n   *  continua vindo de `this.crop`, que é sempre atual. */\r\n  get overlayClipPath(): string {\r\n    const { x, y, width, height } = this.crop;\r\n    const B = OVERLAY_BLEED;\r\n    if (this.shape === 'circle') {\r\n      const cx = x + width / 2;\r\n      const cy = y + height / 2;\r\n      const r = Math.min(width, height) / 2;\r\n      // evenodd fill rule: outer rect (preto) - inner circle (transparente) = punch-out\r\n      return `path(evenodd, 'M ${-B} ${-B} L ${B} ${-B} L ${B} ${B} L ${-B} ${B} Z M ${cx - r} ${cy} A ${r} ${r} 0 1 0 ${cx + r} ${cy} A ${r} ${r} 0 1 0 ${cx - r} ${cy} Z')`;\r\n    }\r\n    // polygon: self-intersecting com winding rule cria buraco retangular\r\n    return `polygon(\r\n      ${-B}px ${-B}px, ${B}px ${-B}px, ${B}px ${B}px, ${-B}px ${B}px, ${-B}px ${-B}px,\r\n      ${x}px ${y}px,\r\n      ${x}px ${y + height}px,\r\n      ${x + width}px ${y + height}px,\r\n      ${x + width}px ${y}px,\r\n      ${x}px ${y}px\r\n    )`;\r\n  }\r\n\r\n  // ── Lifecycle ──────────────────────────────────────────────────────\r\n  ngAfterViewInit(): void {\r\n    this.observeCanvas();\r\n    if (this.imageSrc) {\r\n      this.loadImage(this.imageSrc);\r\n    } else {\r\n      this.setState('empty');\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['imageSrc'] && !changes['imageSrc'].firstChange) {\r\n      if (this.imageSrc) {\r\n        this.loadImage(this.imageSrc);\r\n      } else {\r\n        this.setState('empty');\r\n      }\r\n    }\r\n    if ((changes['ratio'] && !changes['ratio'].firstChange) ||\r\n        (changes['shape'] && !changes['shape'].firstChange)) {\r\n      if (this.image.complete && this.image.naturalWidth > 0) {\r\n        this.initCrop();\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.removeListeners();\r\n    this.canvasObserver?.disconnect();\r\n    this.canvasObserver = null;\r\n  }\r\n\r\n  /**\r\n   * O canvas assume o tamanho final DEPOIS do primeiro `initCrop` — dentro do\r\n   * `matcha-file-uploader` ele substitui a dropzone, e o layout so assenta no ciclo\r\n   * seguinte. Sem re-medir, `containerWidth/Height` e `displayRatio` ficam velhos, e o\r\n   * `displayRatio` alimenta o mapeamento display->source da exportacao: o recorte salvo\r\n   * saia deslocado. Redimensionar a janela reproduzia o mesmo.\r\n   */\r\n  private observeCanvas(): void {\r\n    if (typeof ResizeObserver === 'undefined') return;\r\n    const canvas = this.canvasRef?.nativeElement;\r\n    if (!canvas) return;\r\n    this.canvasObserver = new ResizeObserver(() => this.onCanvasResized());\r\n    this.canvasObserver.observe(canvas);\r\n  }\r\n\r\n  /**\r\n   * Re-mede e reposiciona o frame PROPORCIONALMENTE, preservando pan e zoom — por isso nao\r\n   * chama `initCrop`, que reseta os dois e recentraliza (certo pra imagem nova, errado pra\r\n   * resize: perderia o enquadramento que a pessoa acabou de fazer).\r\n   */\r\n  private onCanvasResized(): void {\r\n    const canvas = this.canvasRef?.nativeElement;\r\n    if (!canvas || this.state !== 'ready') return;\r\n    const w = canvas.clientWidth;\r\n    const h = canvas.clientHeight;\r\n    if (!w || !h) return;\r\n    if (w === this.containerWidth && h === this.containerHeight) return;\r\n\r\n    const scaleX = this.containerWidth ? w / this.containerWidth : 1;\r\n    const scaleY = this.containerHeight ? h / this.containerHeight : 1;\r\n    const scale = Math.min(scaleX, scaleY);\r\n\r\n    this.containerWidth = w;\r\n    this.containerHeight = h;\r\n    this.displayRatio = Math.min(w / this.imageWidth, h / this.imageHeight);\r\n\r\n    const width = Math.min(this.crop.width * scale, w);\r\n    const height = Math.min(this.crop.height * scale, h);\r\n    this.crop = {\r\n      width,\r\n      height,\r\n      x: this.clamp(this.crop.x * scaleX, 0, Math.max(0, w - width)),\r\n      y: this.clamp(this.crop.y * scaleY, 0, Math.max(0, h - height)),\r\n    };\r\n\r\n    this.emitCropChange();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // ── Image loading + state machine ──────────────────────────────────\r\n  private loadImage(src: string): void {\r\n    this.setState('loading');\r\n    this.image.src = src;\r\n  }\r\n\r\n  private onImageLoaded(): void {\r\n    this.imageWidth = this.image.naturalWidth;\r\n    this.imageHeight = this.image.naturalHeight;\r\n    if (this.imageWidth === 0 || this.imageHeight === 0) {\r\n      this.onImageError();\r\n      return;\r\n    }\r\n    this.imageHasAlpha = this.detectAlpha();\r\n    this.setState('ready');\r\n    // Defer pra próximo tick — garante que template renderizou após state change\r\n    queueMicrotask(() => this.initCrop());\r\n  }\r\n\r\n  /**\r\n   * Amostra a imagem num canvas pequeno (até 64px de lado) e procura alfa < 255.\r\n   * JPEG não tem alfa — data: URL jpeg sai sem tocar no canvas. Canvas sem 2d (jsdom),\r\n   * imagem cross-origin sem CORS (getImageData lança SecurityError) ou qualquer outra\r\n   * falha = trata como opaca, mantendo o stage escuro do tema.\r\n   */\r\n  private detectAlpha(): boolean {\r\n    if (/^data:image\\/jpe?g[;,]/i.test(this.imageSrc)) return false;\r\n    try {\r\n      const scale = Math.min(1, 64 / Math.max(this.imageWidth, this.imageHeight));\r\n      const w = Math.max(1, Math.round(this.imageWidth * scale));\r\n      const h = Math.max(1, Math.round(this.imageHeight * scale));\r\n      const canvas = document.createElement('canvas');\r\n      canvas.width = w;\r\n      canvas.height = h;\r\n      const ctx = canvas.getContext('2d');\r\n      if (!ctx) return false;\r\n      ctx.drawImage(this.image, 0, 0, w, h);\r\n      const data = ctx.getImageData(0, 0, w, h).data;\r\n      for (let i = 3; i < data.length; i += 4) {\r\n        if (data[i] < 255) return true;\r\n      }\r\n      return false;\r\n    } catch {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  private onImageError(): void {\r\n    this.errorMessage = 'Falha ao carregar imagem. Verifique CORS ou URL.';\r\n    this.setState('error');\r\n    console.error(\r\n      '[matcha-crop] imageSrc falhou ao carregar com crossOrigin=\"anonymous\". ' +\r\n      'Pra cortar (canvas.toDataURL) a imagem PRECISA vir com Access-Control-Allow-Origin. ' +\r\n      'Use data: URL (FileReader) ou CDN com CORS habilitado.',\r\n      { src: this.imageSrc }\r\n    );\r\n  }\r\n\r\n  private setState(s: CropState): void {\r\n    if (this.state === s) return;\r\n    this.state = s;\r\n    this.stateChange.emit(s);\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // ── Initialize crop area ───────────────────────────────────────────\r\n  initCrop(): void {\r\n    const container = this.canvasRef?.nativeElement;\r\n    if (!container) return;\r\n\r\n    this.containerWidth = container.clientWidth;\r\n    this.containerHeight = container.clientHeight;\r\n    if (this.containerWidth === 0 || this.containerHeight === 0) return;\r\n\r\n    // Reset pan & zoom on init\r\n    this.panX = 0;\r\n    this.panY = 0;\r\n    this.zoom = 1;\r\n\r\n    // Compute display ratio (image scaled to fit container)\r\n    this.displayRatio = Math.min(\r\n      this.containerWidth / this.imageWidth,\r\n      this.containerHeight / this.imageHeight\r\n    );\r\n\r\n    // Frame inicial: 80% do CONTAINER, respeitando o ratio, e centrado nele. Media pela\r\n    // imagem exibida mas centralizava no container — as duas coisas so coincidem quando a\r\n    // imagem preenche o canvas. Agora que o frame e livre, o container e a unica referencia.\r\n    const targetRatio = this.ratio === 'free' ? (this.imageWidth / this.imageHeight) : ratioToNumber(this.ratio);\r\n\r\n    let cropW: number, cropH: number;\r\n    if (targetRatio >= this.containerWidth / this.containerHeight) {\r\n      cropW = this.containerWidth * 0.8;\r\n      cropH = cropW / targetRatio;\r\n    } else {\r\n      cropH = this.containerHeight * 0.8;\r\n      cropW = cropH * targetRatio;\r\n    }\r\n\r\n    this.crop = {\r\n      width:  cropW,\r\n      height: cropH,\r\n      x: (this.containerWidth - cropW) / 2,\r\n      y: (this.containerHeight - cropH) / 2,\r\n    };\r\n\r\n    this.emitCropChange();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  /** Resetar — público pra consumer chamar via #cropRef.reset() */\r\n  resetCrop(): void {\r\n    this.initCrop();\r\n    this.reset.emit();\r\n  }\r\n\r\n  // ── Drag handlers ──────────────────────────────────────────────────\r\n  onCropDragStart(event: MouseEvent | TouchEvent): void {\r\n    if (this.state !== 'ready') return;\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.startDrag(event, 'move');\r\n  }\r\n\r\n  onHandleDragStart(event: MouseEvent | TouchEvent, dir: DragMode): void {\r\n    if (this.state !== 'ready') return;\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.startDrag(event, dir);\r\n  }\r\n\r\n  /** Pan da imagem por baixo do crop — drag sobre o canvas mas fora do crop area. */\r\n  onCanvasDragStart(event: MouseEvent | TouchEvent): void {\r\n    if (this.state !== 'ready') return;\r\n    // Opt-out: consumer pode desligar via `[enablePan]=\"false\"`. Pra avatar/\r\n    // foto perfil o pan atrapalha (move a foto ao tentar simplesmente clicar\r\n    // pra ajustar a crop box).\r\n    if (!this.enablePan) return;\r\n    // Não captura se foi click no crop area ou handle (eles têm stopPropagation).\r\n    // Tampouco em controles interativos dentro do canvas (zoom slider, botões) —\r\n    // `preventDefault` bloqueia o drag nativo do <input type=\"range\">, fazendo\r\n    // o slider só responder a scroll do mouse. Deixar o browser cuidar desses.\r\n    const target = event.target as HTMLElement;\r\n    if (target?.closest('input, button, [role=\"button\"]')) return;\r\n    event.preventDefault();\r\n    this.startDrag(event, 'image-pan');\r\n  }\r\n\r\n  private startDrag(event: MouseEvent | TouchEvent, mode: DragMode | 'image-pan'): void {\r\n    this.dragMode = mode;\r\n    this.isInteracting = true;\r\n    this.showHint = false;\r\n\r\n    const pos = this.getEventPosition(event);\r\n    this.dragStart = {\r\n      x: pos.x, y: pos.y,\r\n      cropX: this.crop.x, cropY: this.crop.y,\r\n      cropW: this.crop.width, cropH: this.crop.height,\r\n      panX: this.panX, panY: this.panY,\r\n    };\r\n\r\n    this.addListeners();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  private onDragMove = (event: MouseEvent | TouchEvent): void => {\r\n    if (!this.dragMode) return;\r\n    event.preventDefault();\r\n\r\n    const pos = this.getEventPosition(event);\r\n    const dx = pos.x - this.dragStart.x;\r\n    const dy = pos.y - this.dragStart.y;\r\n\r\n    if (this.dragMode === 'move') {\r\n      // Clampa no CONTAINER, nao na imagem: o frame anda livre pelo canvas, tenha ou nao\r\n      // imagem embaixo. Prender na imagem fazia o limite MUDAR conforme o pan/zoom (dois\r\n      // sistemas de coordenadas disputando o mesmo gesto) e ainda divergia do teclado, que\r\n      // sempre clampou no container. Ver a nota de recorte fora da imagem em doCrop().\r\n      const maxX = Math.max(0, this.containerWidth - this.crop.width);\r\n      const maxY = Math.max(0, this.containerHeight - this.crop.height);\r\n      this.crop = {\r\n        ...this.crop,\r\n        x: this.clamp(this.dragStart.cropX + dx, 0, maxX),\r\n        y: this.clamp(this.dragStart.cropY + dy, 0, maxY),\r\n      };\r\n    } else if (this.dragMode === 'image-pan') {\r\n      this.panX = this.dragStart.panX + dx;\r\n      this.panY = this.dragStart.panY + dy;\r\n    } else {\r\n      this.resizeCrop(dx, dy, this.dragMode);\r\n    }\r\n\r\n    this.emitCropChange();\r\n    this.cdr.markForCheck();\r\n  };\r\n\r\n  private onDragEnd = (): void => {\r\n    this.dragMode = null;\r\n    this.isInteracting = false;\r\n    this.removeListeners();\r\n    this.cdr.markForCheck();\r\n  };\r\n\r\n  /** Resize handlers — 8 direções, respeitando aspect lock e minSize. */\r\n  private resizeCrop(dx: number, dy: number, dir: DragMode): void {\r\n    if (!dir) return;\r\n    const min = this.minSize;\r\n    const lock = this.isRatioLocked;\r\n    const ratio = this.ratioValue;\r\n\r\n    let { x: nx, y: ny, width: nw, height: nh } = {\r\n      x: this.dragStart.cropX,\r\n      y: this.dragStart.cropY,\r\n      width: this.dragStart.cropW,\r\n      height: this.dragStart.cropH,\r\n    };\r\n\r\n    const right = nx + nw;\r\n    const bottom = ny + nh;\r\n\r\n    // Apply deltas based on direction\r\n    if (dir.includes('w')) { nx = Math.min(right - min, nx + dx); nw = right - nx; }\r\n    if (dir.includes('e')) { nw = Math.max(min, nw + dx); }\r\n    if (dir.includes('n')) { ny = Math.min(bottom - min, ny + dy); nh = bottom - ny; }\r\n    if (dir.includes('s')) { nh = Math.max(min, nh + dy); }\r\n\r\n    // Enforce aspect ratio if locked\r\n    if (lock) {\r\n      // Decide qual eixo é \"dominante\" baseado na direção (corner vs side)\r\n      const isCorner = dir.length === 2;\r\n      if (isCorner) {\r\n        // Match ratio via height\r\n        const targetH = nw / ratio;\r\n        if (dir.includes('n')) ny += (nh - targetH);\r\n        nh = targetH;\r\n      } else if (dir === 'n' || dir === 's') {\r\n        // Vertical resize → adjust width centered\r\n        const targetW = nh * ratio;\r\n        nx += (nw - targetW) / 2;\r\n        nw = targetW;\r\n      } else if (dir === 'e' || dir === 'w') {\r\n        const targetH = nw / ratio;\r\n        ny += (nh - targetH) / 2;\r\n        nh = targetH;\r\n      }\r\n    }\r\n\r\n    // Bordas do CONTAINER — mesmo motivo do move. A matematica do clamp proporcional abaixo\r\n    // nao muda; so deixa de ser a imagem que define o limite.\r\n    const minX = 0;\r\n    const minY = 0;\r\n    const maxRight = this.containerWidth;\r\n    const maxBottom = this.containerHeight;\r\n\r\n    if (lock) {\r\n      // Clamp PROPORCIONAL: cortar nw/nh separados quebraria o aspect lock na\r\n      // borda. Em vez disso, limita o box ao maior que cabe a partir da ÂNCORA\r\n      // (o ponto que não se move: canto oposto no corner; borda + centro do eixo\r\n      // cruzado no side handle) e re-deriva o outro eixo pelo ratio.\r\n      const fx = dir.includes('w') ? 1 : dir.includes('e') ? 0 : 0.5;\r\n      const fy = dir.includes('n') ? 1 : dir.includes('s') ? 0 : 0.5;\r\n      const ax = nx + fx * nw;\r\n      const ay = ny + fy * nh;\r\n\r\n      const maxWByX = Math.min(\r\n        fx > 0 ? (ax - minX) / fx : Infinity,\r\n        fx < 1 ? (maxRight - ax) / (1 - fx) : Infinity,\r\n      );\r\n      const maxHByY = Math.min(\r\n        fy > 0 ? (ay - minY) / fy : Infinity,\r\n        fy < 1 ? (maxBottom - ay) / (1 - fy) : Infinity,\r\n      );\r\n\r\n      let w = Math.min(nw, maxWByX, maxHByY * ratio);\r\n      if (w < min) w = min;\r\n      let h = w / ratio;\r\n      if (h < min) { h = min; w = h * ratio; }\r\n\r\n      nw = w; nh = h;\r\n      nx = ax - fx * nw;\r\n      ny = ay - fy * nh;\r\n    } else {\r\n      nx = this.clamp(nx, minX, Math.max(minX, maxRight - nw));\r\n      ny = this.clamp(ny, minY, Math.max(minY, maxBottom - nh));\r\n      nw = Math.min(nw, maxRight - nx);\r\n      nh = Math.min(nh, maxBottom - ny);\r\n    }\r\n\r\n    this.crop = { x: nx, y: ny, width: nw, height: nh };\r\n  }\r\n\r\n  /**\r\n   * Calcula o crop em SOURCE PIXELS (coords da imagem original) e emite via\r\n   * `cropChange`. Chamado em cada drag/resize/pan/zoom — pronto pra consumer\r\n   * usar em live preview ou armazenar metadata pra crop não-destrutivo.\r\n   */\r\n  private emitCropChange(): void {\r\n    if (this.state !== 'ready') return;\r\n    const rect = this.imageRect;\r\n    const srcRatio = this.displayRatio * this.zoom;\r\n    if (srcRatio <= 0) return;\r\n    this.cropChange.emit({\r\n      x:      (this.crop.x - rect.x) / srcRatio,\r\n      y:      (this.crop.y - rect.y) / srcRatio,\r\n      width:  this.crop.width  / srcRatio,\r\n      height: this.crop.height / srcRatio,\r\n    });\r\n  }\r\n\r\n  // ── Wheel zoom ─────────────────────────────────────────────────────\r\n  @HostListener('wheel', ['$event'])\r\n  onWheel(event: WheelEvent): void {\r\n    if (this.state !== 'ready' || !this.showZoom || !this.enableWheelZoom) return;\r\n    // Só faz zoom se mouse tá sobre o canvas\r\n    const canvas = this.canvasRef?.nativeElement;\r\n    if (!canvas || !canvas.contains(event.target as Node)) return;\r\n    event.preventDefault();\r\n    const delta = -event.deltaY * 0.001;\r\n    this.setZoom(this.zoom + delta);\r\n  }\r\n\r\n  setZoom(z: number): void {\r\n    this.zoom = this.clamp(z, 1, 4);\r\n    this.emitCropChange();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // ── Keyboard nav (A1+A2+A3) ────────────────────────────────────────\r\n  onCropKeydown(event: KeyboardEvent): void {\r\n    if (this.disableKeyboard || this.state !== 'ready') return;\r\n\r\n    const step = event.shiftKey ? 10 : 1;\r\n    let handled = true;\r\n\r\n    switch (event.key) {\r\n      case 'ArrowLeft':  this.crop.x = this.clamp(this.crop.x - step, 0, this.containerWidth - this.crop.width); break;\r\n      case 'ArrowRight': this.crop.x = this.clamp(this.crop.x + step, 0, this.containerWidth - this.crop.width); break;\r\n      case 'ArrowUp':    this.crop.y = this.clamp(this.crop.y - step, 0, this.containerHeight - this.crop.height); break;\r\n      case 'ArrowDown':  this.crop.y = this.clamp(this.crop.y + step, 0, this.containerHeight - this.crop.height); break;\r\n      case 'Home':       this.crop.x = 0; break;\r\n      case 'End':        this.crop.x = this.containerWidth - this.crop.width; break;\r\n      case 'PageUp':     this.crop.y = 0; break;\r\n      case 'PageDown':   this.crop.y = this.containerHeight - this.crop.height; break;\r\n      case 'Escape':     this.cancelled.emit(); return;\r\n      case 'Enter':      this.onCrop(); return;\r\n      case 'r': case 'R': this.resetCrop(); break;\r\n      default: handled = false;\r\n    }\r\n\r\n    if (handled) {\r\n      event.preventDefault();\r\n      this.showHint = false;\r\n      this.crop = { ...this.crop };\r\n      this.cdr.markForCheck();\r\n    }\r\n  }\r\n\r\n  /** A11y — anuncia posição/tamanho atuais pra screen reader. */\r\n  get cropAriaLabel(): string {\r\n    const w = Math.round(this.crop.width);\r\n    const h = Math.round(this.crop.height);\r\n    const x = Math.round(this.crop.x);\r\n    const y = Math.round(this.crop.y);\r\n    return `Área de recorte: ${w} por ${h} pixels, posição ${x}, ${y}. Use as setas para mover, Shift+Setas para mover 10px, R para resetar, Enter para aplicar.`;\r\n  }\r\n\r\n  // ── Utils ──────────────────────────────────────────────────────────\r\n  private clamp(v: number, min: number, max: number): number {\r\n    return Math.max(min, Math.min(max, v));\r\n  }\r\n\r\n  private addListeners(): void {\r\n    document.addEventListener('mousemove', this.onDragMove);\r\n    document.addEventListener('mouseup', this.onDragEnd);\r\n    document.addEventListener('touchmove', this.onDragMove, { passive: false });\r\n    document.addEventListener('touchend', this.onDragEnd);\r\n  }\r\n\r\n  private removeListeners(): void {\r\n    document.removeEventListener('mousemove', this.onDragMove);\r\n    document.removeEventListener('mouseup', this.onDragEnd);\r\n    document.removeEventListener('touchmove', this.onDragMove);\r\n    document.removeEventListener('touchend', this.onDragEnd);\r\n  }\r\n\r\n  private getEventPosition(event: MouseEvent | TouchEvent): { x: number; y: number } {\r\n    if ('touches' in event && event.touches.length > 0) {\r\n      return { x: event.touches[0].clientX, y: event.touches[0].clientY };\r\n    }\r\n    if ('changedTouches' in event && event.changedTouches.length > 0) {\r\n      return { x: event.changedTouches[0].clientX, y: event.changedTouches[0].clientY };\r\n    }\r\n    const me = event as MouseEvent;\r\n    return { x: me.clientX, y: me.clientY };\r\n  }\r\n\r\n  // ── Crop output ────────────────────────────────────────────────────\r\n  async onCrop(): Promise<void> {\r\n    if (this.cvaDisabled) return;\r\n    if (this.state !== 'ready') {\r\n      console.error('[matcha-crop] onCrop chamado com state=\"' + this.state + '\". Aguarde state=\"ready\".');\r\n      return;\r\n    }\r\n    if (this.crop.width === 0 || this.crop.height === 0) {\r\n      console.error('[matcha-crop] área de crop com tamanho 0 — initCrop não rodou.');\r\n      return;\r\n    }\r\n\r\n    const canvas = document.createElement('canvas');\r\n    const ctx = canvas.getContext('2d');\r\n    if (!ctx) return;\r\n\r\n    const outputW = this.outputWidth;\r\n    const outputH = this.outputHeight;\r\n    canvas.width = outputW;\r\n    canvas.height = outputH;\r\n\r\n    // Background (importante pra PNG/WebP com canto circular não ficar preto)\r\n    if (this.bgColor) {\r\n      ctx.fillStyle = this.bgColor;\r\n      ctx.fillRect(0, 0, outputW, outputH);\r\n    } else if (this.outputFormat === 'jpeg') {\r\n      // JPEG não tem alpha — sem bg = preto. Default white pra ser previsível.\r\n      ctx.fillStyle = '#ffffff';\r\n      ctx.fillRect(0, 0, outputW, outputH);\r\n    }\r\n\r\n    // Map display coords → image source coords (accounting for zoom + pan).\r\n    //\r\n    // O frame anda livre pelo canvas, entao ele PODE estar parcialmente (ou totalmente) fora\r\n    // da imagem — `srcX/srcY` saem negativos e `drawImage` simplesmente nao pinta essa parte.\r\n    // O que sobra e o fundo: branco no JPEG (o fillRect acima), transparente no PNG/WebP, ou\r\n    // `bgColor` se o consumer definir. E o preco de soltar o frame da imagem, e e deliberado:\r\n    // pan e zoom ja posicionam a imagem, e prender o frame nela fazia o limite mudar debaixo\r\n    // do gesto.\r\n    const displayW = this.imageWidth * this.displayRatio * this.zoom;\r\n    const displayH = this.imageHeight * this.displayRatio * this.zoom;\r\n    const offsetX = (this.containerWidth - displayW) / 2 + this.panX;\r\n    const offsetY = (this.containerHeight - displayH) / 2 + this.panY;\r\n\r\n    const srcRatio = this.displayRatio * this.zoom;\r\n    const srcX = (this.crop.x - offsetX) / srcRatio;\r\n    const srcY = (this.crop.y - offsetY) / srcRatio;\r\n    const srcW = this.crop.width / srcRatio;\r\n    const srcH = this.crop.height / srcRatio;\r\n\r\n    // Circular clip\r\n    if (this.shape === 'circle') {\r\n      ctx.save();\r\n      ctx.beginPath();\r\n      ctx.arc(outputW / 2, outputH / 2, Math.min(outputW, outputH) / 2, 0, Math.PI * 2);\r\n      ctx.closePath();\r\n      ctx.clip();\r\n    }\r\n\r\n    try {\r\n      ctx.drawImage(this.image, srcX, srcY, srcW, srcH, 0, 0, outputW, outputH);\r\n      if (this.shape === 'circle') ctx.restore();\r\n\r\n      const mime = FORMAT_MIME[this.outputFormat];\r\n      let quality = this.outputFormat === 'png' ? undefined : this.outputQuality;\r\n\r\n      let blob = await this.canvasToBlob(canvas, mime, quality);\r\n      // Alvo de tamanho: só lossy (quality definido) e quando outputMaxSizeMB setado.\r\n      if (blob && quality !== undefined && this.outputMaxSizeMB && this.outputMaxSizeMB > 0) {\r\n        const maxBytes = this.outputMaxSizeMB * 1024 * 1024;\r\n        const minQuality = 0.3;\r\n        const step = 0.15;\r\n        let iterations = 0;\r\n        while (blob && blob.size > maxBytes && quality > minQuality && iterations < 6) {\r\n          quality = Math.max(minQuality, quality - step);\r\n          blob = await this.canvasToBlob(canvas, mime, quality);\r\n          iterations++;\r\n        }\r\n      }\r\n      if (!blob) return;\r\n\r\n      const base64 = canvas.toDataURL(mime, quality);\r\n      this.cropped.emit({ base64, blob, width: outputW, height: outputH, format: this.outputFormat });\r\n      // CVA: o valor do form é o resultado do recorte (base64), comprometido no apply.\r\n      this.onChange(base64);\r\n      this.onTouched();\r\n    } catch (err) {\r\n      console.error(\r\n        '[matcha-crop] canvas tainted ou drawImage falhou. ' +\r\n        'Causa típica: imageSrc cross-origin sem header Access-Control-Allow-Origin. ' +\r\n        'Use data: URL (FileReader) ou CDN com CORS.',\r\n        err\r\n      );\r\n    }\r\n  }\r\n\r\n  /** Promisifica canvas.toBlob (callback-based) pra permitir re-encode iterativo. */\r\n  private canvasToBlob(canvas: HTMLCanvasElement, mime: string, quality?: number): Promise<Blob | null> {\r\n    return new Promise((resolve) => canvas.toBlob((blob) => resolve(blob), mime, quality));\r\n  }\r\n\r\n  onCancel(): void {\r\n    this.cancelled.emit();\r\n  }\r\n\r\n  // ── ControlValueAccessor ───────────────────────────────────────────\r\n  // O crop é uma FERRAMENTA com commit explícito: o valor do form é o\r\n  // RESULTADO do recorte (base64), emitido no apply (onChange em onCrop).\r\n  // A imagem-fonte vem por [imageSrc] — writeValue NÃO re-semeia o cropper.\r\n  private onChange: (value: string) => void = () => {};\r\n  private onTouched: () => void = () => {};\r\n  cvaDisabled = false;\r\n\r\n  writeValue(_value: string | null): void {\r\n    // no-op proposital — ver nota acima. A fonte do recorte é [imageSrc].\r\n  }\r\n  registerOnChange(fn: (v: string) => void): void { this.onChange = fn; }\r\n  registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.cvaDisabled = isDisabled;\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // ── Template helpers ───────────────────────────────────────────────\r\n  readonly handles = HANDLE_DIRECTIONS;\r\n\r\n  handleCursor(dir: typeof HANDLE_DIRECTIONS[number]): string {\r\n    return `${dir}-resize`;\r\n  }\r\n\r\n  /** Posição CSS de cada handle (% relative ao crop area). */\r\n  handleStyle(dir: typeof HANDLE_DIRECTIONS[number]): { [k: string]: string } {\r\n    const pos: Record<string, { top?: string; bottom?: string; left?: string; right?: string }> = {\r\n      nw: { top: '0%',  left: '0%' },\r\n      n:  { top: '0%',  left: '50%' },\r\n      ne: { top: '0%',  right: '0%' },\r\n      e:  { top: '50%', right: '0%' },\r\n      se: { bottom: '0%', right: '0%' },\r\n      s:  { bottom: '0%', left: '50%' },\r\n      sw: { bottom: '0%', left: '0%' },\r\n      w:  { top: '50%', left: '0%' },\r\n    };\r\n    return pos[dir] as { [k: string]: string };\r\n  }\r\n\r\n  trackByDir(_: number, dir: string): string { return dir; }\r\n}\r\n","<!-- Header (opcional) -->\r\n<div *ngIf=\"showHeader\" class=\"matcha-crop__header\">\r\n  <matcha-icon name=\"action_crop\" aria-hidden=\"true\"></matcha-icon>\r\n  <span class=\"matcha-crop__title\">{{ title }}</span>\r\n\r\n  <!-- Toolbar: reset + (aspect lock toggle pra ratio='free') -->\r\n  <div class=\"matcha-crop__toolbar\">\r\n    <button *ngIf=\"ratio === 'free' && showRatioLock\"\r\n            type=\"button\"\r\n            class=\"matcha-crop__icon-btn\"\r\n            [class.is-active]=\"ratioLocked\"\r\n            [attr.aria-pressed]=\"ratioLocked\"\r\n            [attr.aria-label]=\"ratioLocked ? 'Liberar proporção' : 'Travar proporção'\"\r\n            (click)=\"ratioLocked = !ratioLocked\">\r\n      <matcha-icon [name]=\"ratioLocked ? 'lock' : 'unlock'\" size=\"sm\" aria-hidden=\"true\"></matcha-icon>\r\n    </button>\r\n    <button *ngIf=\"hasImage\"\r\n            type=\"button\"\r\n            class=\"matcha-crop__icon-btn\"\r\n            aria-label=\"Resetar recorte (R)\"\r\n            (click)=\"resetCrop()\">\r\n      <matcha-icon name=\"refresh\" size=\"sm\" aria-hidden=\"true\"></matcha-icon>\r\n    </button>\r\n  </div>\r\n</div>\r\n\r\n<!-- Canvas — área de display + interaction -->\r\n<div class=\"matcha-crop__canvas\"\r\n     #canvas\r\n     [class.is-interacting]=\"isInteracting\"\r\n     (mousedown)=\"onCanvasDragStart($event)\"\r\n     (touchstart)=\"onCanvasDragStart($event)\">\r\n\r\n  <!-- ── EMPTY STATE ── -->\r\n  <ng-container *ngIf=\"state === 'empty'\">\r\n    <div class=\"matcha-crop__state matcha-crop__state--empty\" role=\"status\">\r\n      <matcha-icon name=\"image\" class=\"matcha-crop__state-icon\" aria-hidden=\"true\"></matcha-icon>\r\n      <p class=\"matcha-crop__state-title\">Nenhuma imagem carregada</p>\r\n      <p class=\"matcha-crop__state-desc\">Passe <code>imageSrc</code> com uma URL ou data: URL pra começar.</p>\r\n    </div>\r\n  </ng-container>\r\n\r\n  <!-- ── LOADING STATE ── -->\r\n  <ng-container *ngIf=\"state === 'loading'\">\r\n    <div class=\"matcha-crop__state matcha-crop__state--loading\" role=\"status\" aria-live=\"polite\">\r\n      <matcha-icon name=\"loading\" class=\"matcha-crop__state-icon matcha-crop__state-icon--spin\" aria-hidden=\"true\"></matcha-icon>\r\n      <p class=\"matcha-crop__state-title\">Carregando imagem…</p>\r\n    </div>\r\n  </ng-container>\r\n\r\n  <!-- ── ERROR STATE ── -->\r\n  <ng-container *ngIf=\"state === 'error'\">\r\n    <div class=\"matcha-crop__state matcha-crop__state--error\" role=\"alert\">\r\n      <matcha-icon name=\"alert-triangle\" class=\"matcha-crop__state-icon\" aria-hidden=\"true\"></matcha-icon>\r\n      <p class=\"matcha-crop__state-title\">Não foi possível carregar</p>\r\n      <p class=\"matcha-crop__state-desc\">{{ errorMessage }}</p>\r\n    </div>\r\n  </ng-container>\r\n\r\n  <!-- ── READY STATE ── -->\r\n  <ng-container *ngIf=\"state === 'ready'\">\r\n    <!-- Source image (com transform pra zoom + pan) -->\r\n    <img\r\n      #imageEl\r\n      class=\"matcha-crop__image\"\r\n      [src]=\"imageSrc\"\r\n      [alt]=\"alt\"\r\n      [style.transform]=\"'translate(' + panX + 'px, ' + panY + 'px) scale(' + zoom + ')'\"\r\n      draggable=\"false\" />\r\n\r\n    <!-- Overlay com punch-out (mask outside crop) -->\r\n    <div class=\"matcha-crop__overlay\"\r\n         [style.clip-path]=\"overlayClipPath\"\r\n         aria-hidden=\"true\"></div>\r\n\r\n    <!-- Crop area frame -->\r\n    <div\r\n      #cropArea\r\n      class=\"matcha-crop__area\"\r\n      [class.matcha-crop__area--circle]=\"shape === 'circle'\"\r\n      [style.left.px]=\"crop.x\"\r\n      [style.top.px]=\"crop.y\"\r\n      [style.width.px]=\"crop.width\"\r\n      [style.height.px]=\"crop.height\"\r\n      tabindex=\"0\"\r\n      role=\"application\"\r\n      [attr.aria-label]=\"cropAriaLabel\"\r\n      (mousedown)=\"onCropDragStart($event)\"\r\n      (touchstart)=\"onCropDragStart($event)\"\r\n      (keydown)=\"onCropKeydown($event)\">\r\n\r\n      <!-- Rule-of-thirds grid (só durante interação) -->\r\n      <div class=\"matcha-crop__grid\" *ngIf=\"isInteracting\" aria-hidden=\"true\">\r\n        <div class=\"matcha-crop__grid-line\"></div>\r\n        <div class=\"matcha-crop__grid-line\"></div>\r\n        <div class=\"matcha-crop__grid-line\"></div>\r\n        <div class=\"matcha-crop__grid-line\"></div>\r\n      </div>\r\n\r\n      <!-- 8 resize handles (corners + sides) -->\r\n      <button *ngFor=\"let dir of handles; trackBy: trackByDir\"\r\n              type=\"button\"\r\n              class=\"matcha-crop__handle\"\r\n              [class]=\"'matcha-crop__handle--' + dir\"\r\n              [style.cursor]=\"handleCursor(dir)\"\r\n              [ngStyle]=\"handleStyle(dir)\"\r\n              [attr.aria-label]=\"'Redimensionar ' + dir\"\r\n              tabindex=\"-1\"\r\n              (mousedown)=\"onHandleDragStart($event, dir)\"\r\n              (touchstart)=\"onHandleDragStart($event, dir)\"></button>\r\n\r\n      <!-- Initial hint -->\r\n      <span *ngIf=\"showHint\" class=\"matcha-crop__hint\" aria-hidden=\"true\">\r\n        Arraste para mover · cantos para redimensionar\r\n      </span>\r\n    </div>\r\n\r\n    <!-- Zoom slider (Tier 2) -->\r\n    <div *ngIf=\"showZoom\" class=\"matcha-crop__zoom-bar\" aria-label=\"Zoom\">\r\n      <matcha-icon name=\"image\" size=\"sm\" aria-hidden=\"true\"></matcha-icon>\r\n      <input type=\"range\"\r\n             class=\"matcha-crop__zoom-slider\"\r\n             min=\"1\" max=\"4\" step=\"0.05\"\r\n             [value]=\"zoom\"\r\n             (input)=\"setZoom(+$any($event.target).value)\"\r\n             aria-label=\"Zoom da imagem\"\r\n             [attr.aria-valuetext]=\"zoom.toFixed(2) + 'x'\" />\r\n      <matcha-icon name=\"image\" size=\"md\" aria-hidden=\"true\"></matcha-icon>\r\n      <span class=\"matcha-crop__zoom-value\">{{ zoom.toFixed(2) }}×</span>\r\n    </div>\r\n\r\n    <!-- Live region pra screen readers -->\r\n    <div class=\"matcha-crop__sr-live\" role=\"status\" aria-live=\"polite\">\r\n      <ng-container *ngIf=\"isInteracting\">\r\n        {{ cropAriaLabel }}\r\n      </ng-container>\r\n    </div>\r\n  </ng-container>\r\n</div>\r\n\r\n<!-- Footer with actions (só renderiza se há projetado) -->\r\n<div class=\"matcha-crop__footer\">\r\n  <ng-content select=\"[matcha-crop-actions]\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaCropComponent } from './crop.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaCropComponent, MatchaIconModule],\r\n  exports: [\r\n    MatchaCropComponent\r\n  ]\r\n})\r\nexport class MatchaCropModule {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ViewEncapsulation,\r\n    input,\r\n} from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-footer — barra inferior minimalista (1:1 Figma DSV3 matcha/footer 15930:27).\r\n *\r\n * Dimensões: h 28 desktop · h 24 mobile (xs breakpoint).\r\n * Padding: 8/16 desktop · 6/16 mobile.\r\n * Border-top: hairline surface/border. Border-radius top: 8px.\r\n * Conteúdo único projetado e centralizado horizontalmente — use matcha-brand.\r\n *\r\n * **A11y:**\r\n *   - role=\"contentinfo\" (landmark \"footer\" para leitores de tela)\r\n *   - [ariaLabel] descritivo (default \"Footer\", consumer deve customizar pra i18n)\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-footer',\r\n    templateUrl: './footer.component.html',\r\n    styleUrls: ['./footer.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    host: {\r\n        'role': 'contentinfo',\r\n        'class': 'matcha-footer',\r\n        '[attr.aria-label]': 'ariaLabel()',\r\n    },\r\n})\r\nexport class MatchaFooterComponent {\r\n    /** aria-label (descrição do footer pra leitor de tela). Customize pra i18n. */\r\n    readonly ariaLabel = input<string>('Footer');\r\n}\r\n","<!-- Footer canônico DSV3: ng-content único, host centraliza horizontalmente.\r\n     Spec Figma matcha/footer (nodeId 15930:27): brand inchurch centered. -->\r\n<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaFooterComponent } from './footer.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaFooterComponent],\r\n  exports: [MatchaFooterComponent]\r\n})\r\nexport class MatchaFooterModule {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ViewEncapsulation,\r\n    input,\r\n    output,\r\n} from '@angular/core';\r\nimport { MatchaIconButtonComponent } from '../matcha-icon-button/icon-button.component';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n/**\r\n * matcha-header — App topbar (1:1 Figma DSV3 matcha/header 15892:157).\r\n *\r\n * Dimensões: h 56px · padding 8/24/8/16 desktop · 8/16/8/16 mobile.\r\n * Border-bottom: hairline surface/border. Border-radius bottom: 8px (desktop).\r\n * 2 slots projetáveis:\r\n *   • `[matcha-header-left]`  — flex 1, conteúdo principal (brand, ID, chips).\r\n *   • `[matcha-header-right]` — flex 0, ações/user (button, avatar+chevron).\r\n *\r\n * Slots vazios são auto-hidden via `:not(:has(*))`.\r\n *\r\n * **Hamburger (mobile/tablet):**\r\n *   - `[showMenuTrigger]=\"true\"` — exibe o botão hamburguer no início do slot left.\r\n *   - `(menuTriggerClick)` — emitido ao clicar; consumer abre o nav-panel/drawer.\r\n *   - `[menuTriggerLabel]` — aria-label do botão (padrão: \"Abrir menu de navegação\").\r\n *\r\n * **A11y:**\r\n *   - role=\"banner\" (landmark \"header\" para leitores de tela)\r\n *   - [ariaLabel] descritivo (default \"Header\", consumer deve customizar pra i18n)\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-header',\r\n    templateUrl: './header.component.html',\r\n    styleUrls: ['./header.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    imports: [MatchaIconButtonComponent, MatchaIconComponent],\r\n    host: {\r\n        'role': 'banner',\r\n        '[attr.aria-label]': 'ariaLabel()',\r\n    },\r\n})\r\nexport class MatchaHeaderComponent {\r\n    /** aria-label (descrição do header pra leitor de tela). Customize pra i18n. */\r\n    readonly ariaLabel = input<string>('Header');\r\n\r\n    /** Exibe o botão hamburguer no início do slot left (mobile/tablet). */\r\n    readonly showMenuTrigger = input<boolean>(false);\r\n\r\n    /** aria-label do botão hamburguer. Customize pra i18n. */\r\n    readonly menuTriggerLabel = input<string>('Abrir menu de navegação');\r\n\r\n    /** Emitido quando o botão hamburguer é clicado. Consumer controla o nav-panel. */\r\n    readonly menuTriggerClick = output<void>();\r\n}\r\n","<!-- 2 slots: left (flex 1) + right (shrink). Auto justify-content space-between\r\n     via .matcha-header host. Slots vazios auto-hidden via CSS :not(:has(*)).\r\n     Hamburguer renderizado dentro do slot--left pra manter o space-between\r\n     com apenas 2 filhos diretos no host. -->\r\n<div class=\"matcha-header__slot matcha-header__slot--left\">\r\n    @if (showMenuTrigger()) {\r\n        <button matcha-icon-button\r\n                variant=\"ghost\"\r\n                size=\"sm\"\r\n                class=\"matcha-header__menu-trigger\"\r\n                [attr.aria-label]=\"menuTriggerLabel()\"\r\n                (click)=\"menuTriggerClick.emit()\">\r\n            <matcha-icon name=\"menu\" aria-hidden=\"true\"></matcha-icon>\r\n        </button>\r\n    }\r\n    <ng-content select=\"[matcha-header-left]\"></ng-content>\r\n</div>\r\n<div class=\"matcha-header__slot matcha-header__slot--right\">\r\n    <ng-content select=\"[matcha-header-right]\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaHeaderComponent } from './header.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaHeaderComponent],\r\n  exports: [MatchaHeaderComponent]\r\n})\r\nexport class MatchaHeaderModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaNotificationComponent } from './notification.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaNotificationComponent, MatchaIconModule],\r\n  exports: [\r\n    MatchaNotificationComponent\r\n  ]\r\n})\r\nexport class MatchaNotificationModule {}\r\n","import {\r\n  Component, Input, Output, EventEmitter, ElementRef, ViewChild, forwardRef,\r\n  ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, HostListener\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaButtonComponent } from '../matcha-button/button/button.component';\r\nimport { CropFormat, CropRatio, CropResult, CropStage, MatchaCropComponent } from '../matcha-crop/crop.component';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\nimport { parseRatio } from '../shared/ratio';\r\n\r\nexport interface UploadFile {\r\n  file: File;\r\n  name: string;\r\n  size: number;\r\n  progress: number;\r\n  state: 'pending' | 'uploading' | 'completed' | 'error';\r\n  previewUrl?: string;\r\n  /**\r\n   * Endereco do arquivo JA persistido. Quando informado, o nome do arquivo e renderizado\r\n   * como ancora (abre em nova aba) em vez de texto — o caso de uma linha semeada por\r\n   * `setFiles` a partir de um registro do servidor, em que o usuario precisa alcancar o\r\n   * arquivo que ja esta la. Nao se aplica a arquivo recem-selecionado, que ainda nao tem\r\n   * endereco.\r\n   */\r\n  url?: string;\r\n  errorMessage?: string;\r\n}\r\n\r\nexport interface UploadEvent {\r\n  files: UploadFile[];\r\n}\r\n\r\n/** Arquivo recusado na validação (tamanho ou tipo). */\r\nexport interface RejectedFile {\r\n  file: File;\r\n  reason: 'size' | 'type';\r\n  message: string;\r\n}\r\n\r\n/** Resultado do modo crop (imagem única recortada). */\r\nexport interface UploadCropResult {\r\n  base64: string;\r\n  metaData: { name: string; content_type: string; file: string };\r\n}\r\n\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-file-uploader',\r\n  templateUrl: './file-uploader.component.html',\r\n  styleUrls: ['./file-uploader.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n  imports: [CommonModule, MatchaIconComponent, MatchaCropComponent, MatchaButtonComponent],\r\n  host: {\r\n    'class': 'matcha-file-uploader',\r\n    '(paste)': 'onHostPaste($event)',\r\n  },\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MatchaFileUploaderComponent), multi: true },\r\n  ],\r\n})\r\nexport class MatchaFileUploaderComponent implements ControlValueAccessor {\r\n  @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\r\n  @ViewChild('cropper') cropperRef?: MatchaCropComponent;\r\n\r\n  @Input() accept: string = 'image/png,image/jpeg';\r\n  @Input() maxSize: number = 5 * 1024 * 1024; // 5MB\r\n  @Input() multiple: boolean = false;\r\n  @Input() disabled: boolean = false;\r\n  @Input() title: string = 'Enviar imagem';\r\n  @Input() hint: string = '';\r\n  /** Renderiza \"(Opcional)\" ao lado do title — canon Figma DSV3. */\r\n  @Input() optional: boolean = false;\r\n  /**\r\n   * Apresentação do arquivo selecionado:\r\n   *  - 'list' (default) — linha thumb 64×36 + nome + size + ações (multi/documentos).\r\n   *  - 'card' — preview preenchido 16:9 + ações no hover (Figma \"Drop filled\"),\r\n   *    para imagem única de capa/logo. Só aplica a imagem completed; demais\r\n   *    estados (uploading/pending/error/não-imagem) caem na linha.\r\n   */\r\n  @Input() layout: 'list' | 'card' = 'list';\r\n  /**\r\n   * Proporção do preview no `layout=\"card\"` (CSS aspect-ratio). Ex.: '16/9' capa,\r\n   * '122/50' logo, '1/1' avatar. Default '16/9'.\r\n   */\r\n  @Input() previewRatio: string = '16/9';\r\n  /**\r\n   * Encaixe da imagem no card: 'cover' (preenche, corta — capa) ou 'contain'\r\n   * (mostra inteira sobre fundo neutro — logo com transparência/branco). Default 'cover'.\r\n   */\r\n  @Input() previewFit: 'cover' | 'contain' = 'cover';\r\n  /**\r\n   * Simula upload (~500ms) com progress animado antes de marcar como completed.\r\n   * Default false — selecionar um arquivo já o marca como 'completed' (sem\r\n   * progress falso). Setar true só em demos/showcase sem BE conectado; quando o\r\n   * consumer controla o estado real de um upload, dirigir via setFiles().\r\n   */\r\n  @Input() simulateUpload: boolean = false;\r\n\r\n  /** Mensagem do erro de tamanho (override de i18n). Vazio = default pt-BR com o limite. */\r\n  @Input() sizeErrorMessage: string = '';\r\n  /** Mensagem do erro de tipo (override de i18n). Vazio = default pt-BR. */\r\n  @Input() typeErrorMessage: string = '';\r\n\r\n  // ── Modo crop inline (imagem única) ──\r\n  /**\r\n   * Habilita o fluxo de imagem com recorte inline (single): selecionar → cropping\r\n   * (matcha-crop) → confirmar → preview card. Funciona com [(formControlName)] via\r\n   * CVA (valor = base64 da imagem recortada). Default false (uploader genérico).\r\n   */\r\n  @Input() crop: boolean = false;\r\n  /** Proporção do recorte (matcha-crop). Vazio = cai no previewRatio. Ex.: '122/50'. */\r\n  @Input() cropRatio: string = '';\r\n  /** Largura final do recorte em px (outputWidth do matcha-crop). */\r\n  @Input() expectedWidth: number | null = null;\r\n  @Input() outputFormat: CropFormat = 'jpeg';\r\n  @Input() outputQuality: number = 0.92;\r\n  /** Fundo do stage do matcha-crop: 'auto' (claro se a imagem tiver alfa) | 'dark' | 'light'. */\r\n  @Input() cropStage: CropStage = 'auto';\r\n  /** Habilita colar imagem do clipboard (Ctrl+V) no modo crop. Default false. */\r\n  @Input() enablePaste: boolean = false;\r\n  @Input() cancelLabel: string = 'Cancelar';\r\n  @Input() cropLabel: string = 'Recortar';\r\n\r\n  /**\r\n   * Imagem JÁ PERSISTIDA (URL ou base64), para o modo NÃO-crop: renderiza o\r\n   * preview card com trocar/remover sem que exista `File` algum. É o que uma\r\n   * tela de edição precisa para abrir mostrando a capa gravada — e o que\r\n   * permite recortar FORA do uploader (num modal) e ainda assim usar o card\r\n   * padrão. No modo crop o preview vem de `imageSource`, e este input é\r\n   * ignorado. Só se aplica ao modo single.\r\n   */\r\n  @Input() previewSrc: string = '';\r\n\r\n  @Output() filesSelected = new EventEmitter<File[]>();\r\n  @Output() fileRemoved = new EventEmitter<UploadFile>();\r\n  @Output() uploadCancelled = new EventEmitter<UploadFile>();\r\n  /** Emite os arquivos recusados na validação (tamanho/tipo) — para snackbar i18n no consumer. */\r\n  @Output() filesRejected = new EventEmitter<RejectedFile[]>();\r\n  /** Modo crop: emite a imagem recortada (base64 + metaData) ao confirmar. */\r\n  @Output() croppedImage = new EventEmitter<UploadCropResult>();\r\n  /**\r\n   * Imagem do preview card removida. Existe porque `fileRemoved` exige um\r\n   * `UploadFile`, que não há quando a imagem veio de `previewSrc` ou de um\r\n   * recorte — e o consumer sem formulário não recebe o `onChange('')` do CVA.\r\n   */\r\n  @Output() imageRemoved = new EventEmitter<void>();\r\n\r\n  files: UploadFile[] = [];\r\n  isDragOver = false;\r\n\r\n  // Modo crop: imagem comprometida (preview) e imagem pendente (em recorte).\r\n  imageSource = '';\r\n  pendingImageSrc = '';\r\n  private originalFileName = '';\r\n\r\n  // CVA — valor polimórfico por modo: crop/imagem única = string (base64/URL);\r\n  // lista/documento = File (single) ou File[] (multiple).\r\n  private onChange: (value: unknown) => void = () => {};\r\n  private onTouched: () => void = () => {};\r\n  private cvaDisabled = false;\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n  /** Disabled efetivo — @Input OU CVA (setDisabledState). */\r\n  get isDisabled(): boolean { return this.disabled || this.cvaDisabled; }\r\n\r\n  /** Estado do modo crop derivado de pendingImageSrc/imageSource. */\r\n  get cropState(): 'empty' | 'cropping' | 'preview' {\r\n    if (this.pendingImageSrc) return 'cropping';\r\n    if (this.imageSource) return 'preview';\r\n    return 'empty';\r\n  }\r\n\r\n  /**\r\n   * Mostra a dropzone? crop → cropState empty. Senão: sempre no modo `multiple`\r\n   * (a dropzone persiste no topo da lista pra adicionar mais arquivos — canon\r\n   * Figma \"Lista\" 20196:11; lá ela vive dentro do shell, ver `showFilesInside`);\r\n   * no modo single, só quando não há arquivo (o item selecionado já oferece\r\n   * \"Trocar\") nem imagem persistida em `previewSrc`.\r\n   */\r\n  get showDropzone(): boolean {\r\n    if (this.crop) return this.cropState === 'empty';\r\n    if (this.multiple) return true;\r\n    return this.files.length === 0 && !this.previewSrc;\r\n  }\r\n\r\n  /**\r\n   * Modo múltiplo renderiza a lista DENTRO da área de upload (o \"shell\": uma\r\n   * moldura só, com a dropzone no topo e a lista rolável abaixo).\r\n   *\r\n   * Antes a lista era irmã da dropzone e empilhava para baixo sem limite: com\r\n   * 15 arquivos o componente empurrava o resto do formulário para fora da tela\r\n   * e as ações do primeiro item ficavam longe da zona de \"adicionar mais\".\r\n   * Dentro do shell a altura é previsível (`--matcha-file-uploader-list-max-height`),\r\n   * o scroll é interno e soltar arquivo EM CIMA da lista continua funcionando —\r\n   * os handlers de drag ficam no shell, não na dropzone.\r\n   *\r\n   * Single continua com a lista fora: lá existe no máximo um item e a dropzone\r\n   * dá lugar a ele, então não há o que empilhar. O modo crop tem fluxo próprio.\r\n   */\r\n  get showFilesInside(): boolean {\r\n    return this.multiple && !this.crop;\r\n  }\r\n\r\n  /**\r\n   * Card de preview com ações trocar/remover. No modo crop é o resultado do\r\n   * recorte interno; fora dele, é a imagem que o consumer já tem gravada\r\n   * (`previewSrc`) — enquanto nenhum arquivo novo foi escolhido.\r\n   */\r\n  get showPreviewCard(): boolean {\r\n    if (this.crop) return this.cropState === 'preview';\r\n    return !this.multiple && !!this.previewSrc && this.files.length === 0;\r\n  }\r\n\r\n  /** Fonte do card de preview, por modo. */\r\n  get previewImageSrc(): string {\r\n    return this.crop ? this.imageSource : this.previewSrc;\r\n  }\r\n\r\n  /** Ratio normalizado pro matcha-crop ('W:H'); cai no previewRatio se cropRatio vazio.\r\n   *  `parseRatio` aceita os três separadores e devolve null no inválido, então o\r\n   *  cast pra CropRatio é seguro. */\r\n  get cropRatioValue(): CropRatio {\r\n    const parsed = parseRatio(this.cropRatio || this.previewRatio || '16/9');\r\n    return (parsed ? `${parsed.w}:${parsed.h}` : '16:9') as CropRatio;\r\n  }\r\n\r\n  // ── ControlValueAccessor ──\r\n  /**\r\n   * Despacha por TIPO do valor (não pelo modo) pra cobrir os dois contratos:\r\n   *  - string → imagem única / crop (base64 ou URL existente) → vira preview.\r\n   *  - File | File[] → lista/documento → reconstrói as linhas (state completed).\r\n   *  - null/undefined → limpa tudo.\r\n   */\r\n  writeValue(value: unknown): void {\r\n    if (typeof value === 'string') {\r\n      this.imageSource = value;\r\n      this.pendingImageSrc = '';\r\n    } else if (value instanceof File || Array.isArray(value)) {\r\n      const arr = (Array.isArray(value) ? value : [value]).filter((f): f is File => f instanceof File);\r\n      this.files = arr.map(f => this.toUploadFile(f, 'completed'));\r\n    } else {\r\n      this.imageSource = '';\r\n      this.pendingImageSrc = '';\r\n      this.files = [];\r\n    }\r\n    this.cdr.markForCheck();\r\n  }\r\n  registerOnChange(fn: (v: unknown) => void): void { this.onChange = fn; }\r\n  registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n  setDisabledState(isDisabled: boolean): void { this.cvaDisabled = isDisabled; this.cdr.markForCheck(); }\r\n\r\n  /** Modo não-crop: empurra o(s) File(s) selecionado(s) pro FormControl (single = File|null,\r\n   *  multiple = File[]). Exclui linhas de erro. No-op no modo crop (lá o valor é a base64). */\r\n  private emitNonCropValue(): void {\r\n    if (this.crop) return;\r\n    const files = this.files.filter(f => f.state !== 'error').map(f => f.file);\r\n    this.onChange(this.multiple ? files : (files[0] ?? null));\r\n    this.onTouched();\r\n  }\r\n\r\n  get hintText(): string {\r\n    if (this.hint) return this.hint;\r\n    const types = this.accept.split(',').map(t => t.split('/')[1]?.toUpperCase()).filter(Boolean);\r\n    const maxMB = Math.round(this.maxSize / 1024 / 1024);\r\n    return `ou clique para selecionar (${types.join(', ')} até ${maxMB}MB)`;\r\n  }\r\n\r\n  // ── Drag events ──\r\n\r\n  onDragOver(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (this.isDisabled) return;\r\n    this.isDragOver = true;\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  /**\r\n   * `dragleave` também dispara ao cruzar a fronteira de um FILHO da zona (o\r\n   * ícone, cada linha de arquivo), e sem guarda o realce piscaria a cada item\r\n   * que o cursor sobrevoasse — muito visível agora que a lista mora dentro da\r\n   * área de upload. `relatedTarget` é o elemento para onde o ponteiro foi: se\r\n   * ainda está dentro da zona, o arraste não saiu de verdade.\r\n   */\r\n  onDragLeave(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n\r\n    const zone = event.currentTarget as HTMLElement | null;\r\n    const movedTo = event.relatedTarget as Node | null;\r\n    if (zone && movedTo && zone.contains(movedTo)) return;\r\n\r\n    this.isDragOver = false;\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  onDrop(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.isDragOver = false;\r\n    if (this.isDisabled) return;\r\n\r\n    const files = event.dataTransfer?.files;\r\n    if (files) this.handleFiles(Array.from(files));\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // ── Click to select ──\r\n\r\n  openFileDialog(): void {\r\n    if (this.isDisabled) return;\r\n    this.fileInput.nativeElement.click();\r\n  }\r\n\r\n  onFileSelected(event: Event): void {\r\n    const input = event.target as HTMLInputElement;\r\n    if (input.files) {\r\n      this.handleFiles(Array.from(input.files));\r\n    }\r\n    input.value = ''; // reset for re-upload\r\n  }\r\n\r\n  // ── File handling ──\r\n\r\n  private handleFiles(files: File[]): void {\r\n    if (this.crop) { this.handleCropFile(files[0]); return; }\r\n\r\n    const valid: File[] = [];\r\n    const rejected: RejectedFile[] = [];\r\n    for (const f of files) {\r\n      const reason = this.rejectReason(f);\r\n      if (reason) rejected.push({ file: f, reason, message: this.rejectionMessage(reason) });\r\n      else valid.push(f);\r\n    }\r\n\r\n    const initialState: UploadFile['state'] = this.simulateUpload ? 'uploading' : 'completed';\r\n    const validUploads: UploadFile[] = valid.map(f => this.toUploadFile(f, initialState));\r\n    // Arquivos recusados viram linha de erro (Estado=Erro no Figma) com a mensagem.\r\n    const errorUploads: UploadFile[] = rejected.map(r => ({\r\n      ...this.toUploadFile(r.file, 'error'),\r\n      errorMessage: r.message,\r\n    }));\r\n\r\n    if (this.multiple) {\r\n      this.files = [...this.files, ...validUploads, ...errorUploads];\r\n    } else {\r\n      // Single: prioriza o válido; se nenhum, mostra o erro pra dar feedback.\r\n      this.files = validUploads.length ? validUploads.slice(0, 1) : errorUploads.slice(0, 1);\r\n    }\r\n\r\n    this.filesSelected.emit(valid);\r\n    if (rejected.length) this.filesRejected.emit(rejected);\r\n    this.emitNonCropValue();\r\n    this.cdr.markForCheck();\r\n\r\n    if (this.simulateUpload) {\r\n      validUploads.forEach(uf => this.runSimulatedProgress(uf));\r\n    }\r\n  }\r\n\r\n  private toUploadFile(f: File, state: UploadFile['state']): UploadFile {\r\n    return {\r\n      file: f,\r\n      name: f.name,\r\n      size: f.size,\r\n      progress: 0,\r\n      state,\r\n      previewUrl: f.type.startsWith('image/') ? URL.createObjectURL(f) : undefined,\r\n    };\r\n  }\r\n\r\n  /** Motivo de recusa, ou null se válido. Tamanho primeiro, depois tipo. */\r\n  private rejectReason(f: File): RejectedFile['reason'] | null {\r\n    if (f.size > this.maxSize) return 'size';\r\n    if (!this.matchesAccept(f)) return 'type';\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * Casa o arquivo contra `accept` por EXTENSÃO (.ofx, .csv), MIME exato\r\n   * (image/png) ou wildcard de MIME (image/*). MIME sozinho não basta — vários\r\n   * formatos (OFX/CSV) chegam com type vazio/genérico.\r\n   */\r\n  private matchesAccept(file: File): boolean {\r\n    if (!this.accept) return true;\r\n    const tokens = this.accept.split(',').map(t => t.trim().toLowerCase()).filter(Boolean);\r\n    if (!tokens.length) return true;\r\n    const name = file.name.toLowerCase();\r\n    const type = (file.type || '').toLowerCase();\r\n    return tokens.some(token => {\r\n      if (token.startsWith('.')) return name.endsWith(token);          // extensão\r\n      if (token.endsWith('/*')) return type.startsWith(token.slice(0, -1)); // image/* → image/\r\n      return type === token;                                            // MIME exato\r\n    });\r\n  }\r\n\r\n  private rejectionMessage(reason: RejectedFile['reason']): string {\r\n    if (reason === 'size') {\r\n      if (this.sizeErrorMessage) return this.sizeErrorMessage;\r\n      const maxMB = Math.round(this.maxSize / 1024 / 1024);\r\n      return `Arquivo excede o tamanho máximo (${maxMB}MB).`;\r\n    }\r\n    return this.typeErrorMessage || 'Tipo de arquivo não suportado.';\r\n  }\r\n\r\n  /**\r\n   * Animação curta (~500ms) de progress 0 → 50 → 100 → completed.\r\n   * Width transition no SCSS (.matcha-file-uploader-file__progress-fill, 300ms ease)\r\n   * suaviza os passos entre setTimeout.\r\n   */\r\n  private runSimulatedProgress(uf: UploadFile): void {\r\n    setTimeout(() => {\r\n      if (uf.state !== 'uploading') return;\r\n      uf.progress = 50;\r\n      this.cdr.markForCheck();\r\n    }, 80);\r\n    setTimeout(() => {\r\n      if (uf.state !== 'uploading') return;\r\n      uf.progress = 100;\r\n      this.cdr.markForCheck();\r\n    }, 280);\r\n    setTimeout(() => {\r\n      if (uf.state !== 'uploading') return;\r\n      uf.state = 'completed';\r\n      this.cdr.markForCheck();\r\n    }, 500);\r\n  }\r\n\r\n  /**\r\n   * Desabilitado nao remove. A guarda mora aqui, e nao so no CSS: no modo\r\n   * multiplo a lista vive dentro do shell, que fica com `pointer-events: none`\r\n   * quando desabilitado — mas no modo single ela e irma do shell, e um metodo\r\n   * publico e chamavel por codigo de qualquer jeito. Mesma protecao que\r\n   * `openFileDialog`, `onDrop` e `onDragOver` ja tinham.\r\n   */\r\n  removeFile(file: UploadFile): void {\r\n    if (this.isDisabled) return;\r\n    if (file.previewUrl) URL.revokeObjectURL(file.previewUrl);\r\n    this.files = this.files.filter(f => f !== file);\r\n    this.fileRemoved.emit(file);\r\n    this.emitNonCropValue();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  /** Desabilitado nao cancela envio — mesma guarda de `removeFile`. */\r\n  cancelUpload(file: UploadFile): void {\r\n    if (this.isDisabled) return;\r\n    file.state = 'pending';\r\n    file.progress = 0;\r\n    this.uploadCancelled.emit(file);\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  /**\r\n   * Setter público pra files — trigger markForCheck pra OnPush re-render.\r\n   * Use pra controle programático externo (demos, restore de estado, paste-from-clipboard, etc.).\r\n   */\r\n  setFiles(files: UploadFile[]): void {\r\n    this.files = files;\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // ── Modo crop inline (imagem única) ──\r\n\r\n  /** Lê o arquivo como data URL e entra no estado de recorte. */\r\n  private handleCropFile(file?: File): void {\r\n    if (!file) return;\r\n    const reason = this.rejectReason(file);\r\n    if (reason) {\r\n      this.filesRejected.emit([{ file, reason, message: this.rejectionMessage(reason) }]);\r\n      return;\r\n    }\r\n    this.originalFileName = file.name;\r\n    const reader = new FileReader();\r\n    reader.onload = () => { this.pendingImageSrc = reader.result as string; this.cdr.markForCheck(); };\r\n    reader.onerror = () => {\r\n      this.filesRejected.emit([{ file, reason: 'type', message: 'Falha ao ler o arquivo.' }]);\r\n      this.cdr.markForCheck();\r\n    };\r\n    reader.readAsDataURL(file);\r\n  }\r\n\r\n  /** Botão \"Recortar\" — dispara o crop do matcha-crop (emite (cropped) → onCropResult). */\r\n  confirmCrop(): void { void this.cropperRef?.onCrop(); }\r\n\r\n  onCropResult(result: CropResult): void {\r\n    const base64 = result.base64;\r\n    const contentType = base64.split(';')[0].split(':')[1] || `image/${this.outputFormat}`;\r\n    const ext = this.outputFormat === 'jpeg' ? 'jpg' : this.outputFormat;\r\n    const baseName = this.originalFileName ? this.originalFileName.replace(/\\.[^.]+$/, '') : 'image';\r\n    this.imageSource = base64;\r\n    this.pendingImageSrc = '';\r\n    this.onChange(base64);\r\n    this.onTouched();\r\n    this.croppedImage.emit({\r\n      base64,\r\n      metaData: { name: `${baseName}.${ext}`, content_type: contentType, file: base64 },\r\n    });\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  cancelCrop(): void { this.pendingImageSrc = ''; this.cdr.markForCheck(); }\r\n\r\n  replaceImage(): void { this.openFileDialog(); }\r\n\r\n  removeImage(): void {\r\n    if (this.isDisabled) return;\r\n    this.imageSource = '';\r\n    this.pendingImageSrc = '';\r\n    this.previewSrc = '';\r\n    this.onChange('');\r\n    this.onTouched();\r\n    this.imageRemoved.emit();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  @HostListener('paste', ['$event'])\r\n  onHostPaste(event: ClipboardEvent): void {\r\n    if (!this.crop || !this.enablePaste || this.isDisabled) return;\r\n    const items = event.clipboardData?.items;\r\n    if (!items) return;\r\n    for (const item of Array.from(items)) {\r\n      if (item.type.startsWith('image/')) {\r\n        const f = item.getAsFile();\r\n        if (f) { event.preventDefault(); this.handleCropFile(f); return; }\r\n      }\r\n    }\r\n  }\r\n\r\n  // ── Helpers ──\r\n\r\n  formatSize(bytes: number): string {\r\n    if (bytes < 1024) return bytes + ' B';\r\n    if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB';\r\n    return (bytes / (1024 * 1024)).toFixed(1) + ' MB';\r\n  }\r\n  trackByIndex(index: number): number { return index; }\r\n}\r\n","<!-- ═══════════════════════════════════════════════════════════════════\r\n     ESTADO 1 — ÁREA DE UPLOAD\r\n     Dois arranjos, mesmo miolo (ng-template #dropzoneContent):\r\n\r\n       · SHELL (modo múltiplo) — uma moldura só: dropzone no topo + lista\r\n         rolável dentro. Os handlers de drag ficam no SHELL, então soltar\r\n         arquivo em cima da lista funciona. O clique/teclado que abre o\r\n         seletor fica só na dropzone: um role=\"button\" envolvendo os botões\r\n         de apagar transformaria cada clique de exclusão em \"abrir arquivo\".\r\n\r\n       · SOLTA (single / crop) — a dropzone é a própria zona de drop, como\r\n         sempre foi. Lá existe no máximo um item e a dropzone dá lugar a ele.\r\n\r\n     Spec Figma DSV3 (16152:209 · lista 20196:11)\r\n     ═══════════════════════════════════════════════════════════════════ -->\r\n<div *ngIf=\"showFilesInside\"\r\n     class=\"matcha-file-uploader-shell\"\r\n     [class.matcha-file-uploader-dragover]=\"isDragOver\"\r\n     [class.matcha-file-uploader-disabled]=\"isDisabled\"\r\n     (dragover)=\"onDragOver($event)\"\r\n     (dragleave)=\"onDragLeave($event)\"\r\n     (drop)=\"onDrop($event)\">\r\n\r\n  <div class=\"matcha-file-uploader-dropzone matcha-file-uploader-dropzone--inset\"\r\n       (click)=\"openFileDialog()\"\r\n       (keydown.enter)=\"openFileDialog()\"\r\n       (keydown.space)=\"$event.preventDefault(); openFileDialog()\"\r\n       role=\"button\"\r\n       [attr.tabindex]=\"isDisabled ? -1 : 0\"\r\n       [attr.aria-label]=\"title\"\r\n       [attr.aria-disabled]=\"isDisabled\">\r\n    <ng-container *ngTemplateOutlet=\"dropzoneContent\"></ng-container>\r\n  </div>\r\n\r\n  <!-- Lista rolável — altura teto em --matcha-file-uploader-list-max-height.\r\n       role=list explícito porque os itens não são <li>. -->\r\n  <div *ngIf=\"files.length\"\r\n       class=\"matcha-file-uploader-list\"\r\n       role=\"list\"\r\n       [attr.aria-label]=\"'Arquivos selecionados (' + files.length + ')'\">\r\n    <ng-container *ngFor=\"let file of files; trackBy: trackByIndex\">\r\n      <ng-container *ngTemplateOutlet=\"fileItem; context: { $implicit: file }\"></ng-container>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n\r\n<!-- ESTADO 1 (single/crop) — DROPZONE solta: a zona INTEIRA é o alvo\r\n     (clique + teclado). Sem botão interno (afordância única). -->\r\n<div *ngIf=\"!showFilesInside && showDropzone\" class=\"matcha-file-uploader-empty\">\r\n\r\n  <div class=\"matcha-file-uploader-dropzone\"\r\n       [class.matcha-file-uploader-dropzone--card]=\"layout === 'card'\"\r\n       [style.aspect-ratio]=\"layout === 'card' ? previewRatio : null\"\r\n       [class.matcha-file-uploader-dragover]=\"isDragOver\"\r\n       [class.matcha-file-uploader-disabled]=\"isDisabled\"\r\n       (dragover)=\"onDragOver($event)\"\r\n       (dragleave)=\"onDragLeave($event)\"\r\n       (drop)=\"onDrop($event)\"\r\n       (click)=\"openFileDialog()\"\r\n       (keydown.enter)=\"openFileDialog()\"\r\n       (keydown.space)=\"$event.preventDefault(); openFileDialog()\"\r\n       role=\"button\"\r\n       [attr.tabindex]=\"isDisabled ? -1 : 0\"\r\n       [attr.aria-label]=\"title\"\r\n       [attr.aria-disabled]=\"isDisabled\">\r\n    <ng-container *ngTemplateOutlet=\"dropzoneContent\"></ng-container>\r\n  </div>\r\n</div>\r\n\r\n<!-- Miolo da dropzone — idêntico nos dois arranjos: icon pill + title/optional/hint -->\r\n<ng-template #dropzoneContent>\r\n  <!-- Icon pill (bg interaction/disabled-bg + padding 40h/16v) -->\r\n  <div class=\"matcha-file-uploader-dropzone__icon-pill\" aria-hidden=\"true\">\r\n    <matcha-icon name=\"action_upload\"></matcha-icon>\r\n  </div>\r\n\r\n  <!-- Text block (title + optional + hint) -->\r\n  <div class=\"matcha-file-uploader-dropzone__text\">\r\n    <div class=\"matcha-file-uploader-dropzone__title-row\">\r\n      <span class=\"matcha-file-uploader-dropzone__title\">{{ title }}</span>\r\n      <span *ngIf=\"optional\" class=\"matcha-file-uploader-dropzone__optional\">(Opcional)</span>\r\n    </div>\r\n    <p *ngIf=\"hint\" class=\"matcha-file-uploader-dropzone__hint\">{{ hint }}</p>\r\n  </div>\r\n</ng-template>\r\n\r\n<input\r\n  #fileInput\r\n  class=\"matcha-file-uploader-input\"\r\n  type=\"file\"\r\n  [accept]=\"accept\"\r\n  [multiple]=\"crop ? false : multiple\"\r\n  (change)=\"onFileSelected($event)\" />\r\n\r\n<!-- ═══════════════════════════════════════════════════════════════════\r\n     MODO CROP — imagem única: cropping (matcha-crop inline) → preview card\r\n     ═══════════════════════════════════════════════════════════════════ -->\r\n<ng-container *ngIf=\"crop\">\r\n\r\n  <!-- Recorte inline (matcha-crop) + ações Cancelar/Recortar -->\r\n  <div *ngIf=\"cropState === 'cropping'\" class=\"matcha-file-uploader-cropper\">\r\n    <matcha-crop #cropper\r\n                 [imageSrc]=\"pendingImageSrc\"\r\n                 [ratio]=\"cropRatioValue\"\r\n                 [outputWidth]=\"expectedWidth || 1280\"\r\n                 [outputFormat]=\"outputFormat\"\r\n                 [outputQuality]=\"outputQuality\"\r\n                 [stage]=\"cropStage\"\r\n                 [showHeader]=\"false\"\r\n                 (cropped)=\"onCropResult($event)\"\r\n                 (cancelled)=\"cancelCrop()\">\r\n    </matcha-crop>\r\n    <div class=\"matcha-file-uploader-cropper__actions\">\r\n      <button matcha-button size=\"sm\" color=\"basic\" variant=\"ghost\" (click)=\"cancelCrop()\">\r\n        {{ cancelLabel }}\r\n      </button>\r\n      <button matcha-button size=\"sm\" color=\"accent\" (click)=\"confirmCrop()\">\r\n        {{ cropLabel }}\r\n      </button>\r\n    </div>\r\n  </div>\r\n\r\n</ng-container>\r\n\r\n<!-- ═══════════════════════════════════════════════════════════════════\r\n     PREVIEW CARD — imagem já resolvida, nos DOIS modos:\r\n       · crop     → a imagem recortada aqui dentro (cropState 'preview');\r\n       · não-crop → uma imagem JÁ PERSISTIDA, passada em `previewSrc` (a capa\r\n                    salva de uma tela de edição), sem File nenhum. É o que\r\n                    permite recortar fora — em modal — e ainda assim abrir a\r\n                    tela mostrando o que está gravado.\r\n     ═══════════════════════════════════════════════════════════════════ -->\r\n<div *ngIf=\"showPreviewCard\"\r\n     class=\"matcha-file-uploader-card\"\r\n     [class.matcha-file-uploader-card--contain]=\"previewFit === 'contain'\"\r\n     [style.aspect-ratio]=\"previewRatio\">\r\n  <img class=\"matcha-file-uploader-card__img\" [src]=\"previewImageSrc\" alt=\"\" [style.object-fit]=\"previewFit\" />\r\n  <div class=\"matcha-file-uploader-card__actions\">\r\n    <button type=\"button\" class=\"matcha-file-uploader-card__action\"\r\n            aria-label=\"Trocar imagem\" title=\"Trocar\"\r\n            [disabled]=\"isDisabled\" (click)=\"replaceImage()\">\r\n      <matcha-icon name=\"reload\"></matcha-icon>\r\n    </button>\r\n    <button type=\"button\"\r\n            class=\"matcha-file-uploader-card__action matcha-file-uploader-card__action--delete\"\r\n            aria-label=\"Remover imagem\" title=\"Apagar\"\r\n            [disabled]=\"isDisabled\" (click)=\"removeImage()\">\r\n      <matcha-icon name=\"delete\"></matcha-icon>\r\n    </button>\r\n  </div>\r\n</div>\r\n\r\n<!-- ═══════════════════════════════════════════════════════════════════\r\n     ESTADO 2/3 — FILE LIST fora do shell (single, não-crop)\r\n     No modo múltiplo a lista mora DENTRO do shell, lá em cima.\r\n     ═══════════════════════════════════════════════════════════════════ -->\r\n<ng-container *ngIf=\"!crop && !showFilesInside\">\r\n  <ng-container *ngFor=\"let file of files; trackBy: trackByIndex\">\r\n    <ng-container *ngTemplateOutlet=\"fileItem; context: { $implicit: file }\"></ng-container>\r\n  </ng-container>\r\n</ng-container>\r\n\r\n<!-- ═══════════════════════════════════════════════════════════════════\r\n     ITEM DE ARQUIVO — um único markup para os dois arranjos (shell e solto).\r\n     Spec Figma DSV3 (16152:227 Enviando · 16152:242 Completo ·\r\n     20252:2253 Drop filled)\r\n     ═══════════════════════════════════════════════════════════════════ -->\r\n<ng-template #fileItem let-file>\r\n\r\n<!-- LAYOUT CARD — preview preenchido 16:9 + ações no hover. Só imagem completed.\r\n     O role=listitem acompanha o da linha: dentro do role=list do shell, um filho\r\n     sem papel de item quebra a contagem que o leitor de tela anuncia. -->\r\n<div *ngIf=\"layout === 'card' && file.state === 'completed' && file.previewUrl\"\r\n     class=\"matcha-file-uploader-card\"\r\n     [attr.role]=\"showFilesInside ? 'listitem' : null\"\r\n     [class.matcha-file-uploader-card--contain]=\"previewFit === 'contain'\"\r\n     [style.aspect-ratio]=\"previewRatio\">\r\n  <img class=\"matcha-file-uploader-card__img\" [src]=\"file.previewUrl\" [alt]=\"file.name\"\r\n       [style.object-fit]=\"previewFit\" />\r\n  <div class=\"matcha-file-uploader-card__actions\">\r\n    <button\r\n      type=\"button\"\r\n      class=\"matcha-file-uploader-card__action\"\r\n      aria-label=\"Trocar imagem\"\r\n      title=\"Trocar\"\r\n      [disabled]=\"isDisabled\"\r\n      (click)=\"openFileDialog()\">\r\n      <matcha-icon name=\"reload\"></matcha-icon>\r\n    </button>\r\n    <button\r\n      type=\"button\"\r\n      class=\"matcha-file-uploader-card__action matcha-file-uploader-card__action--delete\"\r\n      aria-label=\"Remover imagem\"\r\n      title=\"Apagar\"\r\n      [disabled]=\"isDisabled\"\r\n      (click)=\"removeFile(file)\">\r\n      <matcha-icon name=\"delete\"></matcha-icon>\r\n    </button>\r\n  </div>\r\n</div>\r\n\r\n<div *ngIf=\"!(layout === 'card' && file.state === 'completed' && file.previewUrl)\"\r\n     class=\"matcha-file-uploader-file\"\r\n     [attr.role]=\"showFilesInside ? 'listitem' : null\"\r\n     [class.matcha-file-uploader-file--uploading]=\"file.state === 'uploading'\"\r\n     [class.matcha-file-uploader-file--completed]=\"file.state === 'completed'\"\r\n     [class.matcha-file-uploader-file--pending]=\"file.state === 'pending'\"\r\n     [class.matcha-file-uploader-file--error]=\"file.state === 'error'\">\r\n\r\n  <!-- Thumbnail 64×36 (16:9) -->\r\n  <div class=\"matcha-file-uploader-file__thumb\" aria-hidden=\"true\">\r\n    <img *ngIf=\"file.previewUrl\" [src]=\"file.previewUrl\" [alt]=\"file.name\" />\r\n    <!-- `archive`, nao `action_file`: aquele e alias LEGADO e mapeia pra `content`, o glifo de\r\n         midia — um arquivo sem preview aparecia como um monitor com play. -->\r\n    <matcha-icon *ngIf=\"!file.previewUrl\" name=\"archive\"></matcha-icon>\r\n  </div>\r\n\r\n  <!-- Info column (flex-1) -->\r\n  <div class=\"matcha-file-uploader-file__info\">\r\n    <a *ngIf=\"file.url\" class=\"matcha-file-uploader-file__name matcha-file-uploader-file__name--link\"\r\n       [href]=\"file.url\" target=\"_blank\" rel=\"noopener\">{{ file.name }}</a>\r\n    <span *ngIf=\"!file.url\" class=\"matcha-file-uploader-file__name\">{{ file.name }}</span>\r\n\r\n    <!-- ESTADO Enviando: progress bar abaixo do nome (semântica progressbar p/ leitor de tela) -->\r\n    <div *ngIf=\"file.state === 'uploading'\" class=\"matcha-file-uploader-file__progress\"\r\n         role=\"progressbar\"\r\n         [attr.aria-valuenow]=\"file.progress\" aria-valuemin=\"0\" aria-valuemax=\"100\"\r\n         [attr.aria-label]=\"'Enviando ' + file.name\">\r\n      <div class=\"matcha-file-uploader-file__progress-fill\" [style.width.%]=\"file.progress\"></div>\r\n    </div>\r\n\r\n    <!-- ESTADO Completo: size abaixo do nome · role=status anuncia a conclusão.\r\n         Sem size quando não há um (arquivo JÁ persistido, semeado por setFiles a\r\n         partir de um registro do servidor): \"0 B\" seria informação falsa. -->\r\n    <span *ngIf=\"file.state === 'completed' && file.size > 0\" class=\"matcha-file-uploader-file__size\"\r\n          role=\"status\" [attr.aria-label]=\"file.name + ' — envio concluído (' + formatSize(file.size) + ')'\">{{ formatSize(file.size) }}</span>\r\n\r\n    <!-- ESTADO Erro: errorMessage abaixo do nome · role=alert anuncia imediatamente -->\r\n    <span *ngIf=\"file.state === 'error'\" class=\"matcha-file-uploader-file__error-text\" role=\"alert\">{{ file.errorMessage }}</span>\r\n  </div>\r\n\r\n  <!-- ESTADO Enviando: percent + cancel (close X 20×20) -->\r\n  <span *ngIf=\"file.state === 'uploading'\" class=\"matcha-file-uploader-file__percent\">{{ file.progress }}%</span>\r\n  <button\r\n    *ngIf=\"file.state === 'uploading'\"\r\n    type=\"button\"\r\n    class=\"matcha-file-uploader-file__action matcha-file-uploader-file__action--cancel\"\r\n    aria-label=\"Cancelar upload\"\r\n    [disabled]=\"isDisabled\"\r\n    (click)=\"cancelUpload(file)\">\r\n    <matcha-icon name=\"action_close\"></matcha-icon>\r\n  </button>\r\n\r\n  <!-- ESTADO Completo/Pending/Erro: 2 botões explícitos —\r\n       Trocar (reload icon → openFileDialog) + Apagar (delete trash → removeFile).\r\n       Single mode apenas; multiple não tem \"trocar\" (cada item é independente). -->\r\n  <ng-container *ngIf=\"file.state === 'completed' || file.state === 'pending' || file.state === 'error'\">\r\n    <button\r\n      *ngIf=\"!multiple\"\r\n      type=\"button\"\r\n      class=\"matcha-file-uploader-file__action matcha-file-uploader-file__action--replace\"\r\n      aria-label=\"Trocar arquivo\"\r\n      title=\"Trocar\"\r\n      [disabled]=\"isDisabled\"\r\n      (click)=\"openFileDialog()\">\r\n      <matcha-icon name=\"reload\"></matcha-icon>\r\n    </button>\r\n\r\n    <button\r\n      type=\"button\"\r\n      class=\"matcha-file-uploader-file__action matcha-file-uploader-file__action--delete\"\r\n      [attr.aria-label]=\"'Remover ' + file.name\"\r\n      title=\"Apagar\"\r\n      [disabled]=\"isDisabled\"\r\n      (click)=\"removeFile(file)\">\r\n      <matcha-icon name=\"delete\"></matcha-icon>\r\n    </button>\r\n  </ng-container>\r\n</div>\r\n\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\nimport { MatchaFileUploaderComponent } from './file-uploader.component';\r\n\r\n@NgModule({\r\n  imports: [MatchaFileUploaderComponent, MatchaIconModule],\r\n  exports: [\r\n    MatchaFileUploaderComponent\r\n  ]\r\n})\r\nexport class MatchaFileUploaderModule {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    computed,\r\n    forwardRef,\r\n    input,\r\n    output,\r\n    signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\n// Canonical by extension; sm/md/lg accepted as @deprecated aliases (1:1, value-preserving).\r\nexport type MatchaFieldColorSize = 'small' | 'medium' | 'large';\r\n\r\n/**\r\n * Paleta canon DSV3 — semantic tokens primeiro, depois palette extras.\r\n * Consumer pode passar [palette] override pra restringir/expandir.\r\n */\r\nexport const MATCHA_FIELD_COLOR_DEFAULT_PALETTE: readonly string[] = [\r\n    'var(--matcha-color-accent)',\r\n    'var(--matcha-color-primary)',\r\n    'var(--matcha-color-success)',\r\n    'var(--matcha-color-warn)',\r\n    'var(--matcha-color-danger)',\r\n    'var(--matcha-color-info)',\r\n    'var(--matcha-color-palette-purple)',\r\n    'var(--matcha-color-palette-pink)',\r\n    'var(--matcha-color-palette-teal)',\r\n    'var(--matcha-color-palette-orange)',\r\n    'var(--matcha-color-palette-light-blue)',\r\n    'var(--matcha-color-palette-yellow)',\r\n];\r\n\r\nconst HEX_REGEX = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\r\n\r\n/**\r\n * matcha-field-color — Color picker canon DSV3 (matcha/field/color §39.2).\r\n *\r\n * Field-like trigger com swatch preview + popup com grid de cores curadas e\r\n * input HEX opcional. Implementa CVA — bind via [(ngModel)] ou [formControl].\r\n *\r\n * @example\r\n *   <matcha-field-color label=\"Cor do badge\" [(ngModel)]=\"badgeColor\">\r\n *   </matcha-field-color>\r\n *\r\n *   <matcha-field-color label=\"Tema\"\r\n *                       [palette]=\"customPalette\"\r\n *                       [allowCustom]=\"false\"\r\n *                       [formControl]=\"themeCtrl\">\r\n *   </matcha-field-color>\r\n *\r\n * **API:**\r\n *   - [palette]: string[] — overrides paleta padrão. Aceita HEX, var(--token), rgb(), hsl().\r\n *   - [allowCustom]: boolean (default true) — habilita input HEX no rodapé do panel.\r\n *   - [label]: string — texto acima do trigger.\r\n *   - [hint]: string — texto auxiliar abaixo do trigger.\r\n *   - [size]: 'sm' | 'md' | 'lg' (default 'md') — altura do trigger.\r\n *   - [disabled]: boolean — bloqueia abertura + visual atenuado.\r\n *\r\n * **CVA value:** string — pode ser HEX (#RRGGBB) ou CSS var (var(--token)).\r\n *\r\n * **A11y:** trigger é botão semântico com aria-expanded/aria-haspopup; grid de\r\n * swatches é radiogroup com Arrow keys + Enter pra selecionar; input HEX\r\n * validado on-blur (rejeita não-hex sem destruir o estado anterior).\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-field-color',\r\n    templateUrl: './matcha-field-color.component.html',\r\n    styleUrls: ['./matcha-field-color.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaIconComponent, MatchaPanelComponent],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MatchaFieldColorComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n    host: {\r\n        'class': 'matcha-field-color',\r\n        '[attr.data-size]': 'size()',\r\n        '[class.matcha-field-color-disabled]': 'disabled()',\r\n    },\r\n})\r\nexport class MatchaFieldColorComponent implements ControlValueAccessor {\r\n    // ── Inputs ──────────────────────────────────────────────────────────\r\n    readonly label       = input<string>('');\r\n    readonly hint        = input<string>('');\r\n    readonly placeholder = input<string>('Selecionar cor');\r\n    readonly palette     = input<readonly string[]>(MATCHA_FIELD_COLOR_DEFAULT_PALETTE);\r\n    readonly allowCustom = input(true, { transform: booleanAttribute });\r\n    readonly disabled    = input(false, { transform: booleanAttribute });\r\n    readonly size        = input<MatchaFieldColorSize, string>('medium', { transform: (v) => sizeAlias(v) as MatchaFieldColorSize });\r\n\r\n    // ── Outputs ─────────────────────────────────────────────────────────\r\n    readonly colorChange = output<string | null>();\r\n    readonly opened      = output<void>();\r\n    readonly closed      = output<void>();\r\n\r\n    // ── State ────────────────────────────────────────────────────────────\r\n    readonly selected     = signal<string | null>(null);\r\n    readonly panelOpen    = signal(false);\r\n    readonly customHex    = signal<string>('');\r\n    readonly customError  = signal<boolean>(false);\r\n\r\n    /** Display value pro trigger — preview color (HEX/CSS var) ou null se vazio. */\r\n    readonly previewColor = computed(() => this.selected());\r\n\r\n    /** Label display — HEX se selected é HEX, \"Personalizada\" se CSS var custom, ou placeholder. */\r\n    readonly displayLabel = computed<string>(() => {\r\n        const v = this.selected();\r\n        if (!v) return this.placeholder();\r\n        if (HEX_REGEX.test(v)) return v.toUpperCase();\r\n        // CSS var ou outro — mostra primeiros chars\r\n        return v.length > 24 ? v.slice(0, 21) + '...' : v;\r\n    });\r\n\r\n    // ── CVA ──────────────────────────────────────────────────────────────\r\n    private cvaChange: (v: string | null) => void = () => {};\r\n    private cvaTouched: () => void = () => {};\r\n\r\n    writeValue(value: string | null): void {\r\n        this.selected.set(value ?? null);\r\n        if (value && HEX_REGEX.test(value)) {\r\n            this.customHex.set(value.toUpperCase());\r\n        }\r\n    }\r\n    registerOnChange(fn: (v: string | null) => void): void { this.cvaChange = fn; }\r\n    registerOnTouched(fn: () => void): void { this.cvaTouched = fn; }\r\n    setDisabledState?(): void {\r\n        // disabled é via @Input — Angular Forms repassa via setDisabledState mas\r\n        // input() é read-only. Consumer deve usar [disabled] direto ou\r\n        // FormControl.disable() (que adiciona attr.disabled ao host).\r\n    }\r\n\r\n    // ── Actions ──────────────────────────────────────────────────────────\r\n    togglePanel(): void {\r\n        if (this.disabled()) return;\r\n        const next = !this.panelOpen();\r\n        this.panelOpen.set(next);\r\n        if (next) this.opened.emit();\r\n        else { this.closed.emit(); this.cvaTouched(); }\r\n    }\r\n\r\n    onPanelClose(): void {\r\n        if (this.panelOpen()) {\r\n            this.panelOpen.set(false);\r\n            this.closed.emit();\r\n            this.cvaTouched();\r\n        }\r\n    }\r\n\r\n    selectColor(color: string): void {\r\n        if (this.disabled()) return;\r\n        this.selected.set(color);\r\n        if (HEX_REGEX.test(color)) this.customHex.set(color.toUpperCase());\r\n        this.customError.set(false);\r\n        this.cvaChange(color);\r\n        this.colorChange.emit(color);\r\n        // Fecha o panel após seleção — UX canon\r\n        this.panelOpen.set(false);\r\n        this.closed.emit();\r\n    }\r\n\r\n    onCustomInput(event: Event): void {\r\n        const value = (event.target as HTMLInputElement).value;\r\n        this.customHex.set(value);\r\n        if (HEX_REGEX.test(value)) {\r\n            this.customError.set(false);\r\n            this.selected.set(value);\r\n            this.cvaChange(value);\r\n            this.colorChange.emit(value);\r\n        } else if (value.length > 0) {\r\n            this.customError.set(true);\r\n        }\r\n    }\r\n\r\n    onCustomBlur(): void {\r\n        const value = this.customHex();\r\n        if (value && !HEX_REGEX.test(value)) {\r\n            // Revert pro último válido OU limpa\r\n            const prev = this.selected();\r\n            this.customHex.set(prev && HEX_REGEX.test(prev) ? prev.toUpperCase() : '');\r\n            this.customError.set(false);\r\n        }\r\n    }\r\n\r\n    clear(): void {\r\n        if (this.disabled()) return;\r\n        this.selected.set(null);\r\n        this.customHex.set('');\r\n        this.customError.set(false);\r\n        this.cvaChange(null);\r\n        this.colorChange.emit(null);\r\n    }\r\n\r\n    // Keyboard nav no grid de swatches (Arrow keys + Enter)\r\n    onGridKeydown(event: KeyboardEvent, index: number): void {\r\n        const cols = 6; // padrão visual; ajuste se grid mudar\r\n        const total = this.palette().length;\r\n        let next: number | null = null;\r\n\r\n        switch (event.key) {\r\n            case 'ArrowRight': next = (index + 1) % total; break;\r\n            case 'ArrowLeft':  next = (index - 1 + total) % total; break;\r\n            case 'ArrowDown':  next = (index + cols) % total; break;\r\n            case 'ArrowUp':    next = (index - cols + total) % total; break;\r\n            case 'Enter':\r\n            case ' ':\r\n                this.selectColor(this.palette()[index]);\r\n                event.preventDefault();\r\n                return;\r\n            case 'Escape':\r\n                this.onPanelClose();\r\n                event.preventDefault();\r\n                return;\r\n            default: return;\r\n        }\r\n\r\n        if (next !== null) {\r\n            event.preventDefault();\r\n            queueMicrotask(() => {\r\n                const buttons = document.querySelectorAll<HTMLButtonElement>(\r\n                    '.matcha-field-color__swatch-btn'\r\n                );\r\n                buttons[next!]?.focus();\r\n            });\r\n        }\r\n    }\r\n}\r\n","<!-- Label -->\r\n<label *ngIf=\"label()\" class=\"matcha-field-color__label\">{{ label() }}</label>\r\n\r\n<!-- Trigger (field-like) -->\r\n<button #trigger\r\n        type=\"button\"\r\n        class=\"matcha-field-color__trigger\"\r\n        [class.is-open]=\"panelOpen()\"\r\n        [disabled]=\"disabled()\"\r\n        [attr.aria-haspopup]=\"'dialog'\"\r\n        [attr.aria-expanded]=\"panelOpen()\"\r\n        (click)=\"togglePanel()\">\r\n    <!-- Preview swatch -->\r\n    <span class=\"matcha-field-color__preview\"\r\n          [class.is-empty]=\"!previewColor()\"\r\n          [style.background]=\"previewColor() ?? null\"\r\n          aria-hidden=\"true\">\r\n        <matcha-icon *ngIf=\"!previewColor()\" name=\"gallery\" size=\"sm\"></matcha-icon>\r\n    </span>\r\n\r\n    <!-- Value text -->\r\n    <span class=\"matcha-field-color__value\"\r\n          [class.is-placeholder]=\"!previewColor()\">\r\n        {{ displayLabel() }}\r\n    </span>\r\n\r\n    <!-- Chevron -->\r\n    <matcha-icon class=\"matcha-field-color__chevron\"\r\n                 [class.is-open]=\"panelOpen()\"\r\n                 name=\"chevron-down\"\r\n                 size=\"sm\"\r\n                 aria-hidden=\"true\">\r\n    </matcha-icon>\r\n</button>\r\n\r\n<!-- Hint -->\r\n<span *ngIf=\"hint()\" class=\"matcha-field-color__hint\">{{ hint() }}</span>\r\n\r\n<!-- Panel popup -->\r\n<matcha-panel #panel\r\n              [triggerElement]=\"trigger\"\r\n              [open]=\"panelOpen()\"\r\n              role=\"dialog\"\r\n              [attr.aria-label]=\"label() || placeholder()\"\r\n              (closed)=\"onPanelClose()\">\r\n    <div class=\"matcha-field-color__panel\">\r\n        <!-- Swatch grid -->\r\n        <div class=\"matcha-field-color__grid\"\r\n             role=\"radiogroup\"\r\n             [attr.aria-label]=\"'Cores disponíveis'\">\r\n            <button *ngFor=\"let color of palette(); let i = index\"\r\n                    type=\"button\"\r\n                    class=\"matcha-field-color__swatch-btn\"\r\n                    [class.is-selected]=\"selected() === color\"\r\n                    [attr.aria-checked]=\"selected() === color\"\r\n                    [attr.aria-label]=\"color\"\r\n                    role=\"radio\"\r\n                    tabindex=\"0\"\r\n                    (click)=\"selectColor(color)\"\r\n                    (keydown)=\"onGridKeydown($event, i)\">\r\n                <span class=\"matcha-field-color__swatch-fill\"\r\n                      [style.background]=\"color\"\r\n                      aria-hidden=\"true\">\r\n                </span>\r\n                <matcha-icon *ngIf=\"selected() === color\"\r\n                             class=\"matcha-field-color__swatch-check\"\r\n                             name=\"check\"\r\n                             size=\"sm\"\r\n                             aria-hidden=\"true\">\r\n                </matcha-icon>\r\n            </button>\r\n        </div>\r\n\r\n        <!-- Custom HEX input (optional) -->\r\n        <div *ngIf=\"allowCustom()\" class=\"matcha-field-color__custom\">\r\n            <span class=\"matcha-field-color__custom-label\">HEX</span>\r\n            <input type=\"text\"\r\n                   class=\"matcha-field-color__custom-input\"\r\n                   [class.is-error]=\"customError()\"\r\n                   [value]=\"customHex()\"\r\n                   placeholder=\"#000000\"\r\n                   maxlength=\"7\"\r\n                   (input)=\"onCustomInput($event)\"\r\n                   (blur)=\"onCustomBlur()\">\r\n            <button *ngIf=\"selected()\"\r\n                    type=\"button\"\r\n                    class=\"matcha-field-color__clear\"\r\n                    aria-label=\"Limpar cor\"\r\n                    (click)=\"clear()\">\r\n                <matcha-icon name=\"close\" size=\"sm\"></matcha-icon>\r\n            </button>\r\n        </div>\r\n    </div>\r\n</matcha-panel>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaFieldColorComponent } from './matcha-field-color.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaFieldColorComponent],\r\n    exports: [MatchaFieldColorComponent],\r\n})\r\nexport class MatchaFieldColorModule {}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    HostListener,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    computed,\r\n    input,\r\n    output,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent } from '../matcha-icon/icon.component';\r\nimport { sizeAlias } from '../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../matcha-data-qa';\r\n\r\nexport type MatchaThumbnailSize = 'tiny' | 'small' | 'medium' | 'large' | 'huge';\r\nexport type MatchaThumbnailRadius = 'sm' | 'md' | 'lg' | 'pill';\r\n\r\n/**\r\n * matcha-thumbnail — Preview de imagem quadrado/retangular com sizes canon\r\n * (matcha/thumbnail §44.10).\r\n *\r\n * Caso de uso: capa de curso, ícone de conteúdo, preview de mídia em lista.\r\n * Substitui o pattern de \"frame Figma com IMAGE fill cru\" + permite badge\r\n * overlay e estado selected.\r\n *\r\n * **Sizes (square 1:1):**\r\n *   - tiny: 32×32 — denso (cells de table, listas inline)\r\n *   - small: 40×40 — list item avatar-like\r\n *   - medium: 56×56 — DEFAULT — card thumbnail (curso, sermão)\r\n *   - large: 80×80 — destaque secundário\r\n *   - huge: 120×120 — hero preview\r\n *\r\n * **Slots:**\r\n *   - [matcha-thumbnail-badge] — overlay no canto top-right (status, count, etc.)\r\n *\r\n * @example\r\n *   <matcha-thumbnail size=\"md\"\r\n *                     [src]=\"course.coverUrl\"\r\n *                     [alt]=\"course.title\">\r\n *   </matcha-thumbnail>\r\n *\r\n *   <matcha-thumbnail size=\"lg\" [src]=\"event.cover\" interactive\r\n *                     [selected]=\"isSelected\"\r\n *                     (clicked)=\"select(event)\">\r\n *     <matcha-chip matcha-thumbnail-badge variant=\"filled-alpha\" color=\"success\">\r\n *       Ativo\r\n *     </matcha-chip>\r\n *   </matcha-thumbnail>\r\n *\r\n * Sem src → renderiza ícone placeholder canon (action_gallery).\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-thumbnail',\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaIconComponent],\r\n    templateUrl: './matcha-thumbnail.component.html',\r\n    styleUrls: ['./matcha-thumbnail.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        'class': 'matcha-thumbnail',\r\n        '[attr.data-size]': 'size()',\r\n        '[attr.data-radius]': 'radius()',\r\n        '[class.matcha-thumbnail-interactive]': 'interactive()',\r\n        '[class.matcha-thumbnail-selected]': 'selected()',\r\n        '[attr.role]': 'interactive() ? \"button\" : null',\r\n        '[attr.tabindex]': 'interactive() ? \"0\" : null',\r\n        '[attr.aria-pressed]': 'interactive() ? (selected() ? \"true\" : \"false\") : null',\r\n    },\r\n})\r\nexport class MatchaThumbnailComponent {\r\n    readonly src         = input<string>('');\r\n    readonly alt         = input<string>('');\r\n    readonly size        = input<MatchaThumbnailSize, string>('medium', { transform: (v) => sizeAlias(v) as MatchaThumbnailSize });\r\n    readonly radius      = input<MatchaThumbnailRadius>('md');\r\n    /** Habilita click/keyboard + role=button + aria-pressed (toggle). */\r\n    readonly interactive = input(false, { transform: booleanAttribute });\r\n    /** Estado selecionado — adiciona ring accent canon. */\r\n    readonly selected    = input(false, { transform: booleanAttribute });\r\n    /** Ícone de placeholder quando src vazio. Default action_gallery. */\r\n    readonly placeholderIcon = input<string>('gallery');\r\n\r\n    readonly clicked = output<void>();\r\n\r\n    readonly hasImage = computed(() => !!this.src());\r\n\r\n    @HostListener('click')\r\n    onHostClick(): void {\r\n        if (!this.interactive()) return;\r\n        this.clicked.emit();\r\n    }\r\n\r\n    @HostListener('keydown.enter', ['$event'])\r\n    @HostListener('keydown.space', ['$event'])\r\n    onHostKeydown(event: KeyboardEvent): void {\r\n        if (!this.interactive()) return;\r\n        event.preventDefault();\r\n        this.clicked.emit();\r\n    }\r\n}\r\n","<img *ngIf=\"hasImage()\"\r\n     class=\"matcha-thumbnail__img\"\r\n     [src]=\"src()\"\r\n     [alt]=\"alt()\"\r\n     loading=\"lazy\" />\r\n\r\n<matcha-icon *ngIf=\"!hasImage()\"\r\n             class=\"matcha-thumbnail__placeholder-icon\"\r\n             [name]=\"placeholderIcon()\"\r\n             aria-hidden=\"true\">\r\n</matcha-icon>\r\n\r\n<!-- Badge overlay slot (top-right canon) -->\r\n<span class=\"matcha-thumbnail__badge\">\r\n    <ng-content select=\"[matcha-thumbnail-badge]\"></ng-content>\r\n</span>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaThumbnailComponent } from './matcha-thumbnail.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaThumbnailComponent],\r\n    exports: [MatchaThumbnailComponent],\r\n})\r\nexport class MatchaThumbnailModule {}\r\n","import { Pipe, PipeTransform, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatchaI18nService } from './matcha-i18n.service';\r\n\r\n/**\r\n * Translate pipe for Matcha DS components.\r\n *\r\n * Usage:\r\n *   {{ 'common.save' | matchaTranslate }}\r\n *   {{ 'validation.minLength' | matchaTranslate: { min: 3 } }}\r\n *   {{ 'paginator.range' | matchaTranslate: { start: 1, end: 10, total: 100 } }}\r\n */\r\n@Pipe({\r\n  name: 'matchaTranslate',\r\n  pure: false, // Impure to react to locale changes\r\n  standalone: true,\r\n})\r\nexport class MatchaTranslatePipe implements PipeTransform, OnDestroy {\r\n  private lastKey = '';\r\n  private lastParams: Record<string, string | number> | undefined;\r\n  private lastValue = '';\r\n  private sub: Subscription;\r\n\r\n  constructor(\r\n    private i18n: MatchaI18nService,\r\n    private cdr: ChangeDetectorRef,\r\n  ) {\r\n    this.sub = this.i18n.localeChange.subscribe(() => {\r\n      // Force re-evaluation when locale changes\r\n      if (this.lastKey) {\r\n        this.lastValue = this.i18n.translate(this.lastKey, this.lastParams);\r\n        this.cdr.markForCheck();\r\n      }\r\n    });\r\n  }\r\n\r\n  transform(key: string, params?: Record<string, string | number>): string {\r\n    if (key === this.lastKey && params === this.lastParams) {\r\n      return this.lastValue;\r\n    }\r\n    this.lastKey = key;\r\n    this.lastParams = params;\r\n    this.lastValue = this.i18n.translate(key, params);\r\n    return this.lastValue;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.sub.unsubscribe();\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaTranslatePipe } from './matcha-translate.pipe';\r\nimport { MatchaI18nService } from './matcha-i18n.service';\r\n\r\n@NgModule({\r\n  imports: [MatchaTranslatePipe],\r\n  exports: [MatchaTranslatePipe],\r\n  providers: [MatchaI18nService],\r\n})\r\nexport class MatchaI18nModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule({})\r\nexport class MatchaA11yModule {}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, HostBinding, Input, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatchaFormFieldModule } from '../../matcha-form-field/matcha-form-field.module';\r\nimport { MatchaSelectModule } from '../../matcha-select/matcha-select.module';\r\nimport { MatchaHintTextModule } from '../../matcha-hint-text/hint.module';\r\nimport { sizeAlias } from '../../shared/size-alias';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-field-select — campo de seleção completo (label + select + hint/error).\r\n *\r\n * Figma: matcha/field/select (State: Default|Focus|Error|Disabled|Filled × Size: SM|MD|LG)\r\n *\r\n * Uso:\r\n *   <matcha-field-select label=\"Cor\" placeholder=\"Escolha\"\r\n *                        [(ngModel)]=\"color\" [error]=\"err\" hint=\"...\">\r\n *     <matcha-option *ngFor=\"let c of colors\" [value]=\"c.id\">{{ c.label }}</matcha-option>\r\n *   </matcha-field-select>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-field-select',\r\n    templateUrl: './field-select.component.html',\r\n    styleUrls: ['./field-select.component.scss'],\r\n    standalone: true,\r\n    imports: [CommonModule, FormsModule, MatchaFormFieldModule, MatchaSelectModule, MatchaHintTextModule],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [\r\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MatchaFieldSelectComponent), multi: true },\r\n    ],\r\n})\r\nexport class MatchaFieldSelectComponent implements ControlValueAccessor {\r\n    @Input() label: string = '';\r\n    @Input() placeholder: string = 'Selecione';\r\n    @Input() hint: string = '';\r\n    @Input() error: string = '';\r\n    /** Canônico extenso; abreviados (sm/md/lg) aceitos como alias @deprecated. */\r\n    @Input({ transform: (v: string) => sizeAlias(v) as 'small' | 'medium' | 'large' }) size: 'small' | 'medium' | 'large' = 'medium';\r\n\r\n    private _required = true;\r\n    @Input()\r\n    set required(v: boolean | string) { this._required = v !== 'false' && v !== false; }\r\n    get required(): boolean { return this._required; }\r\n\r\n    private _disabled = false;\r\n    @Input()\r\n    set disabled(v: boolean | string) { this._disabled = v !== 'false' && v !== false; }\r\n    get disabled(): boolean { return this._disabled; }\r\n\r\n    @HostBinding('attr.data-state') get stateAttr(): string {\r\n        if (this._disabled) return 'disabled';\r\n        if (this.error) return 'error';\r\n        if (this.value != null && this.value !== '') return 'filled';\r\n        return 'default';\r\n    }\r\n    @HostBinding('attr.size') get sizeAttr(): string { return this.size; }\r\n    @HostBinding('attr.aria-invalid') get ariaInvalid(): string | null { return this.error ? 'true' : null; }\r\n\r\n    value: any = null;\r\n\r\n    private _onChange: (v: any) => void = () => {};\r\n    private _onTouched: () => void = () => {};\r\n\r\n    writeValue(value: any): void { this.value = value; }\r\n    registerOnChange(fn: (v: any) => void): void { this._onChange = fn; }\r\n    registerOnTouched(fn: () => void): void { this._onTouched = fn; }\r\n    setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\r\n\r\n    onSelectChange(value: any): void {\r\n        this.value = value;\r\n        this._onChange(value);\r\n        this._onTouched();\r\n    }\r\n\r\n    get showOptional(): boolean { return !this._required; }\r\n    get hasError(): boolean { return !!this.error; }\r\n    get hasHint(): boolean { return !!this.hint && !this.hasError; }\r\n}\r\n","<matcha-form-field [color]=\"hasError ? 'warn' : 'grey'\" [size]=\"size\">\r\n    <matcha-label *ngIf=\"label\">\r\n        {{ label }}<span *ngIf=\"showOptional\" class=\"matcha-field-select__optional\"> (opcional)</span>\r\n    </matcha-label>\r\n\r\n    <matcha-select\r\n        [placeholder]=\"placeholder\"\r\n        [ngModel]=\"value\"\r\n        (ngModelChange)=\"onSelectChange($event)\"\r\n        [ngModelOptions]=\"{ standalone: true }\"\r\n        [disabled]=\"disabled\">\r\n        <ng-content></ng-content>\r\n    </matcha-select>\r\n\r\n    <matcha-error *ngIf=\"hasError\">{{ error }}</matcha-error>\r\n</matcha-form-field>\r\n\r\n<matcha-hint-text *ngIf=\"hasHint\" type=\"info\">{{ hint }}</matcha-hint-text>\r\n","import { NgModule } from '@angular/core';\r\nimport { MatchaFieldSelectComponent } from './field-select/field-select.component';\r\n\r\n@NgModule({\r\n    imports: [MatchaFieldSelectComponent],\r\n    exports: [MatchaFieldSelectComponent],\r\n})\r\nexport class MatchaFieldSelectModule {}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Mensagens padrão dos validators. Usadas por componentes do DS que auto-reportam\r\n * erros (ex: matcha-date mostrando \"Data inválida\").\r\n *\r\n * Override via DI:\r\n *   providers: [{ provide: MATCHA_VALIDATOR_MESSAGES, useValue: { cpf: '...' } }]\r\n */\r\nexport interface MatchaValidatorMessages {\r\n    cpf:           string;\r\n    cnpj:          string;\r\n    cep:           string;\r\n    phoneBr:       string;\r\n    date:          string;\r\n    time:          string;\r\n    dateRange:     string;\r\n    email:         string;\r\n    url:           string;\r\n    required:      string;\r\n}\r\n\r\nexport const MATCHA_VALIDATOR_DEFAULT_MESSAGES: MatchaValidatorMessages = {\r\n    cpf:       'CPF inválido',\r\n    cnpj:      'CNPJ inválido',\r\n    cep:       'CEP inválido',\r\n    phoneBr:   'Telefone inválido',\r\n    date:      'Data inválida',\r\n    time:      'Horário inválido',\r\n    dateRange: 'Data inicial deve ser anterior à final',\r\n    email:     'E-mail inválido',\r\n    url:       'URL inválida',\r\n    required:  'Campo obrigatório',\r\n};\r\n\r\nexport const MATCHA_VALIDATOR_MESSAGES = new InjectionToken<MatchaValidatorMessages>(\r\n    'MATCHA_VALIDATOR_MESSAGES',\r\n    { providedIn: 'root', factory: () => MATCHA_VALIDATOR_DEFAULT_MESSAGES },\r\n);\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, catchError, map, of } from 'rxjs';\r\n\r\nexport interface ViaCepResponse {\r\n    cep: string;        // \"01310-100\"\r\n    logradouro: string; // \"Avenida Paulista\"\r\n    complemento: string;\r\n    bairro: string;     // \"Bela Vista\"\r\n    localidade: string; // \"São Paulo\"\r\n    uf: string;         // \"SP\"\r\n    ibge: string;\r\n    gia: string;\r\n    ddd: string;\r\n    siafi: string;\r\n    erro?: boolean;     // true quando CEP não existe\r\n}\r\n\r\n/**\r\n * Consulta endereço a partir do CEP via API pública https://viacep.com.br.\r\n *\r\n * Uso em form reativo:\r\n *   this.form.get('cep')?.valueChanges\r\n *       .pipe(filter(c => c?.replace(/\\D/g, '').length === 8))\r\n *       .subscribe(cep => this.viaCep.lookup(cep).subscribe(addr => {\r\n *           if (addr) this.form.patchValue({\r\n *               logradouro: addr.logradouro,\r\n *               bairro:     addr.bairro,\r\n *               cidade:     addr.localidade,\r\n *               uf:         addr.uf,\r\n *           });\r\n *       }));\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class MatchaViaCepService {\r\n    private http = inject(HttpClient);\r\n\r\n    /**\r\n     * Consulta o CEP. Retorna `null` quando CEP não existe ou em caso de erro HTTP.\r\n     * CEP é normalizado (remove traços/pontos) antes da consulta.\r\n     */\r\n    lookup(cep: string): Observable<ViaCepResponse | null> {\r\n        const digits = (cep ?? '').toString().replace(/\\D+/g, '');\r\n        if (digits.length !== 8) return of(null);\r\n\r\n        const url = `https://viacep.com.br/ws/${digits}/json/`;\r\n        return this.http.get<ViaCepResponse>(url).pipe(\r\n            map(res => res?.erro ? null : res),\r\n            catchError(() => of(null)),\r\n        );\r\n    }\r\n}\r\n","import { booleanAttribute, ChangeDetectorRef, Component, ElementRef, Input, Output, EventEmitter, HostListener, ChangeDetectionStrategy, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterLink } from '@angular/router';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-nav-item — Navigation item (sidebar menus)\r\n *\r\n * Item que navega deve receber `[routerLink]` (ou `[href]`): o row vira uma âncora\r\n * de verdade, e só então ctrl/cmd+clique e clique do meio abrem em nova aba e o\r\n * botão direito oferece \"abrir em nova aba\". Mesmo contrato do `matcha-breadcrumb`\r\n * e do `matcha-card`. Sem link, o row é `<div>` e o consumidor escuta `(navigate)`.\r\n *\r\n * Usage:\r\n *   <matcha-nav-item icon=\"home\" label=\"Dashboard\" [routerLink]=\"['/inicio']\" [active]=\"true\"></matcha-nav-item>\r\n *   <matcha-nav-item icon=\"settings\" label=\"Configurações\" [expanded]=\"true\" (toggle)=\"onToggle()\">\r\n *     <matcha-nav-item label=\"Geral\" [routerLink]=\"['/config/geral']\" indented [active]=\"true\"></matcha-nav-item>\r\n *     <matcha-nav-item label=\"Segurança\" [routerLink]=\"['/config/seguranca']\" indented></matcha-nav-item>\r\n *   </matcha-nav-item>\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-nav-item',\r\n  templateUrl: './nav-item.component.html',\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, CommonModule, RouterLink],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    class: 'matcha-nav-item',\r\n    '[class.matcha-nav-item--active]': 'active',\r\n    '[class.matcha-nav-item--expanded]': 'expanded',\r\n    '[class.matcha-nav-item--disabled]': 'disabled',\r\n    '[class.matcha-nav-item--indented]': 'indented',\r\n    role: 'treeitem',\r\n    '[attr.aria-selected]': 'active',\r\n    '[attr.aria-expanded]': 'hasChildren ? expanded : null',\r\n    '[attr.aria-disabled]': 'disabled',\r\n    // Com link, quem é focável é a âncora — manter tabindex no host também criaria\r\n    // DOIS pontos de parada de Tab por item de menu.\r\n    // `[attr.tabindex]`, não `[tabindex]`: na PROPRIEDADE, null é coagido pra 0 e o\r\n    // host continuaria focável.\r\n    '[attr.tabindex]': 'isLink ? null : (disabled ? -1 : 0)'\r\n  }\r\n})\r\nexport class MatchaNavItemComponent {\r\n  @Input() icon: string = '';\r\n  @Input() label: string = '';\r\n  // booleanAttribute permite atributos bare (`indented`, `active`) e bindings\r\n  // (`[active]=\"true\"`) sem erro de tipo no Angular strict template check.\r\n  @Input({ transform: booleanAttribute }) active: boolean = false;\r\n  @Input({ transform: booleanAttribute }) expanded: boolean = false;\r\n  @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n  @Input({ transform: booleanAttribute }) indented: boolean = false;\r\n  @Input() badge: string | number | null = null;\r\n  @Input({ transform: booleanAttribute }) hasChildren: boolean = false;\r\n\r\n  /** Angular Router link. Faz o row virar `<a>`. PRIORIDADE sobre href. */\r\n  @Input() routerLink: string | unknown[] | null | undefined = null;\r\n  /** URL de link plain (full page reload). Em apps Angular, prefira routerLink. */\r\n  @Input() href: string = '';\r\n\r\n  /** O row é uma âncora? Decide tabindex do host e quem trata o teclado. */\r\n  get isLink(): boolean {\r\n    return this.routerLink != null || !!this.href;\r\n  }\r\n\r\n  @Output() expandedChange = new EventEmitter<boolean>();\r\n  @Output() toggle = new EventEmitter<boolean>();\r\n  @Output() navigate = new EventEmitter<void>();\r\n\r\n  /** Elemento host — containers usam pra resolver hierarquia por containment. */\r\n  readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n  /**\r\n   * Aplica o estado de expansão de fora, para containers que coordenam um grupo\r\n   * (o `matcha-nav-drawer` em modo accordion). Não é para o consumidor: ele usa\r\n   * `[expanded]`/`[(expanded)]` normalmente.\r\n   *\r\n   * Existe porque o componente é OnPush — escrever `item.expanded` direto não\r\n   * marca a view como dirty e o chevron/filhos ficariam dessincronizados do\r\n   * estado real. No-op quando o valor já é o atual, então não gera emissão em\r\n   * cascata quando o coordenador varre a lista inteira.\r\n   */\r\n  _setExpanded(value: boolean): void {\r\n    if (this.expanded === value) return;\r\n\r\n    this.expanded = value;\r\n    this.expandedChange.emit(value);\r\n    this.toggle.emit(value);\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  // Click handler no row interno (não no host) — clique em nav-item filho não toggla o\r\n  // pai porque .__row e .__children são IRMÃOS no template: o click do filho nunca passa\r\n  // pelo row do pai. O isolamento vem da estrutura, então nada de stopPropagation aqui —\r\n  // o click precisa chegar ao document pro click-outside global dos overlays funcionar\r\n  // (matcha-panel escuta 'click' no document; um menu aberto sobre a nav ficaria preso).\r\n  onRowClick(event?: MouseEvent): void {\r\n    if (this.disabled) return;\r\n    if (this.hasChildren) {\r\n      this.expanded = !this.expanded;\r\n      this.expandedChange.emit(this.expanded);\r\n      this.toggle.emit(this.expanded);\r\n      return;\r\n    }\r\n\r\n    // Com link, a navegação é da âncora — NUNCA preventDefault aqui, senão\r\n    // ctrl+clique e clique do meio param de abrir nova aba. `(navigate)` continua\r\n    // emitindo como notificação (fechar drawer no mobile, marcar ativo), mas o\r\n    // consumidor não deve navegar nele.\r\n    if (this.isLink && event && (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey || event.button !== 0)) {\r\n      // Abriu em outra aba/janela: o usuário continua onde está, então nada de\r\n      // efeito colateral de \"entrei nesta página\".\r\n      return;\r\n    }\r\n\r\n    this.navigate.emit();\r\n  }\r\n\r\n  // Keyboard nav (Enter/Space) — host com tabindex captura; dispara onRowClick.\r\n  // Com link não entra: a âncora é o elemento focável e o Enter nela já navega\r\n  // nativamente (Space não ativa link, e é assim que deve ser).\r\n  @HostListener('keydown', ['$event'])\r\n  onKeydown(event: KeyboardEvent): void {\r\n    if (this.isLink) return;\r\n    if (event.key === 'Enter' || event.key === ' ') {\r\n      event.preventDefault();\r\n      this.onRowClick();\r\n    }\r\n  }\r\n}\r\n","<!-- Figma DSV3 matcha/nav-item: row visível (icon + label + badge + chevron)\r\n     dentro de .matcha-nav-item__row. Filhos expandidos vão em .__children\r\n     fora do row, evitando flex-row contamination. Click handler no row,\r\n     não no host — clicar em filho não dispara o toggle do pai. -->\r\n<!-- Item que NAVEGA é uma âncora de verdade (mesmo padrão do matcha-breadcrumb):\r\n     só assim ctrl/cmd+clique e clique do meio abrem em nova aba e o botão direito\r\n     oferece \"abrir em nova aba\". Um (click) que chama router.navigate ignora os\r\n     modificadores e nem dispara no botão do meio. O <div> fica para o item que\r\n     ALTERNA (collapsable) ou para quem não passa link e escuta (navigate). -->\r\n@if (routerLink != null) {\r\n  <a class=\"matcha-nav-item__row\"\r\n     [routerLink]=\"routerLink\"\r\n     [attr.aria-current]=\"active ? 'page' : null\"\r\n     (click)=\"onRowClick($event)\">\r\n    <ng-container *ngTemplateOutlet=\"rowContent\"></ng-container>\r\n  </a>\r\n} @else if (href) {\r\n  <!-- href plain — full page reload. Em apps Angular, prefira routerLink. -->\r\n  <a class=\"matcha-nav-item__row\"\r\n     [href]=\"href\"\r\n     [attr.aria-current]=\"active ? 'page' : null\"\r\n     (click)=\"onRowClick($event)\">\r\n    <ng-container *ngTemplateOutlet=\"rowContent\"></ng-container>\r\n  </a>\r\n} @else {\r\n  <div class=\"matcha-nav-item__row\"\r\n       (click)=\"onRowClick($event)\">\r\n    <ng-container *ngTemplateOutlet=\"rowContent\"></ng-container>\r\n  </div>\r\n}\r\n\r\n<ng-template #rowContent>\r\n    <matcha-icon *ngIf=\"icon\" [name]=\"icon\" size=\"sm\" class=\"matcha-nav-item__icon\" aria-hidden=\"true\"></matcha-icon>\r\n    <span class=\"matcha-nav-item__label\">{{ label }}</span>\r\n    <span *ngIf=\"badge != null\" class=\"matcha-nav-item__badge\">{{ badge }}</span>\r\n    <matcha-icon *ngIf=\"hasChildren\"\r\n                 name=\"chevron-right\"\r\n                 size=\"xs\"\r\n                 class=\"matcha-nav-item__chevron\"\r\n                 aria-hidden=\"true\"></matcha-icon>\r\n</ng-template>\r\n\r\n<div *ngIf=\"hasChildren && expanded\" class=\"matcha-nav-item__children\" role=\"group\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { booleanAttribute, Component, Input, Output, EventEmitter ,ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\n/**\r\n * matcha-nav-rail — 72px sidebar rail with module icons\r\n *\r\n * Usage:\r\n *   <matcha-nav-rail>\r\n *     <ng-container matcha-nav-rail-header>\r\n *       <img src=\"logo.svg\" />\r\n *     </ng-container>\r\n *     <button matcha-nav-rail-module [active]=\"true\" (click)=\"selectModule('people')\">\r\n *       <matcha-icon name=\"group\"></matcha-icon>\r\n *     </button>\r\n *     <ng-container matcha-nav-rail-footer>\r\n *       <matcha-icon name=\"settings\"></matcha-icon>\r\n *     </ng-container>\r\n *   </matcha-nav-rail>\r\n *\r\n * Labeled (84px, nome do módulo embaixo do ícone):\r\n *   <matcha-nav-rail labeled>\r\n *     <button matcha-nav-rail-module (click)=\"selectModule('people')\">\r\n *       <matcha-icon name=\"group\"></matcha-icon>\r\n *       <span matcha-nav-rail-module-label>Pessoas</span>\r\n *     </button>\r\n *   </matcha-nav-rail>\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-nav-rail',\r\n  templateUrl: './nav-rail.component.html',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    class: 'matcha-nav-rail',\r\n    '[class.matcha-nav-rail--labeled]': 'labeled',\r\n    role: 'navigation',\r\n    '[attr.aria-label]': '\"Módulos\"'\r\n  }\r\n})\r\nexport class MatchaNavRailComponent {\r\n  /**\r\n   * Revela o slot `[matcha-nav-rail-module-label]` de cada módulo e alarga o\r\n   * rail de 72px pra 84px. O label fica escondido enquanto isto for `false`,\r\n   * então o consumer pode deixar o `<span>` no template e só alternar a flag.\r\n   */\r\n  @Input({ transform: booleanAttribute }) labeled: boolean = false;\r\n}\r\n","<!-- Figma DSV3 matcha/nav-rail: header → divider → modules → divider → footer.\r\n     Ambos os dividers (28×1) são visíveis. Wrapper inteiro 72px, bg surface/card. -->\r\n<div class=\"matcha-nav-rail__header\">\r\n    <ng-content select=\"[matcha-nav-rail-header]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"matcha-nav-rail__divider\" aria-hidden=\"true\"></div>\r\n\r\n<div class=\"matcha-nav-rail__modules\">\r\n    <ng-content select=\"[matcha-nav-rail-module]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"matcha-nav-rail__divider\" aria-hidden=\"true\"></div>\r\n\r\n<div class=\"matcha-nav-rail__footer\">\r\n    <ng-content select=\"[matcha-nav-rail-footer]\"></ng-content>\r\n</div>\r\n\r\n","/**\n * Keyboard nav do padrão WAI-ARIA tree, compartilhada pelos containers de\n * `matcha-nav-item` (nav-panel e nav-drawer).\n *\n * ↑↓ navegam entre os items focáveis (skip disabled), Home/End vão pras pontas,\n * com wrap-around. Enter/Space são tratados pelo próprio nav-item.\n *\n * Extraído do nav-panel quando o nav-drawer passou a precisar do mesmo\n * comportamento — a lógica vive aqui pra não existir em duas cópias.\n */\n\nconst NAV_KEYS = ['ArrowDown', 'ArrowUp', 'Home', 'End'] as const;\n\n/** A tecla participa da navegação em árvore? */\nexport function isNavTreeKey(key: string): boolean {\n    return (NAV_KEYS as readonly string[]).includes(key);\n}\n\n/**\n * Move o foco entre os `matcha-nav-item` de `container` conforme a tecla.\n *\n * Retorna `true` quando o foco foi movido — o chamador usa isso pra decidir o\n * `preventDefault()`. Retorna `false` quando a tecla não é de navegação ou não\n * há item focável.\n */\nexport function moveNavTreeFocus(container: HTMLElement, key: string): boolean {\n    if (!isNavTreeKey(key)) return false;\n\n    const items = Array.from(\n        container.querySelectorAll<HTMLElement>('matcha-nav-item:not(.matcha-nav-item--disabled)'),\n    );\n    if (items.length === 0) return false;\n\n    // Item atualmente focado — ou o que contém o foco (o row interno é focável).\n    const active = document.activeElement as HTMLElement | null;\n    const currentIdx = items.findIndex(el => el === active || el.contains(active));\n    const lastIdx = items.length - 1;\n\n    let nextIdx: number;\n    switch (key) {\n        case 'ArrowDown':\n            nextIdx = currentIdx === -1 ? 0 : (currentIdx === lastIdx ? 0 : currentIdx + 1);\n            break;\n        case 'ArrowUp':\n            nextIdx = currentIdx === -1 ? lastIdx : (currentIdx === 0 ? lastIdx : currentIdx - 1);\n            break;\n        case 'Home':\n            nextIdx = 0;\n            break;\n        case 'End':\n            nextIdx = lastIdx;\n            break;\n        default:\n            return false;\n    }\n\n    items[nextIdx].focus();\n    return true;\n}\n","import { Component, ElementRef, HostListener, Input, ChangeDetectionStrategy, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\nimport { moveNavTreeFocus } from '../shared/nav-tree-keyboard';\r\n\r\n/**\r\n * matcha-nav-panel — 216px navigation sub-panel (1:1 Figma DSV3 matcha/nav-panel).\r\n *\r\n * Estrutura: 3 siblings dentro do panel:\r\n *   1. header (padding 20/20/16/20) com title-row (icon + text body-md)\r\n *   2. divider 192×1 hairline surface/border\r\n *   3. items slot (padding 12, gap 4) — recebe matcha-nav-items\r\n *\r\n * Bg: surface/card. Border: só right (1px hairline).\r\n *\r\n * Keyboard (WAI-ARIA tree pattern):\r\n *   - ↑↓ navegam entre items focáveis (skip disabled)\r\n *   - Home/End vão pro primeiro/último\r\n *   - Enter/Space ativam (handled pelo nav-item)\r\n *\r\n * Usage:\r\n *   <matcha-nav-panel moduleName=\"Pessoas\" moduleIcon=\"people\">\r\n *     <matcha-nav-item icon=\"people\" label=\"Membros\" [active]=\"true\"></matcha-nav-item>\r\n *     <matcha-nav-item icon=\"cells\" label=\"Grupos\"></matcha-nav-item>\r\n *   </matcha-nav-panel>\r\n */\r\n@Component({\r\n  hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n  selector: 'matcha-nav-panel',\r\n  templateUrl: './nav-panel.component.html',\r\n  standalone: true,\r\n  imports: [MatchaIconComponent, CommonModule],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    class: 'matcha-nav-panel',\r\n    role: 'navigation'\r\n  }\r\n})\r\nexport class MatchaNavPanelComponent {\r\n  /** Título do módulo (ex: \"Pessoas\", \"Eventos\"). Body-md regular 14/20. */\r\n  @Input() moduleName: string = '';\r\n  /** Ícone do módulo (matcha-icon name). Renderizado à esquerda do título. */\r\n  @Input() moduleIcon: string = '';\r\n\r\n  private hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n  /**\r\n   * Tree keyboard nav (WAI-ARIA): ↑↓ navegam entre nav-items, Home/End nas pontas.\r\n   * Skip nav-items disabled. Wrap-around no fim (↓ no último volta ao primeiro).\r\n   * Lógica compartilhada com o nav-drawer — ver `shared/nav-tree-keyboard.ts`.\r\n   */\r\n  @HostListener('keydown', ['$event'])\r\n  onKeydown(event: KeyboardEvent): void {\r\n    if (moveNavTreeFocus(this.hostRef.nativeElement, event.key)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n}\r\n","<!-- Figma DSV3 matcha/nav-panel: header (title-row 20/20/16/20) → divider 192×1 →\r\n     items slot (padding 12, gap 4). Estrutura 3 siblings.\r\n\r\n     Header: aceita slot custom via [matcha-nav-panel-header] OU default title-row\r\n     baseado em [moduleName]/[moduleIcon]. Slot custom esconde o default via CSS :has(). -->\r\n<header class=\"matcha-nav-panel__header\">\r\n    <!-- Slot custom — consumer pode projetar action, search, breadcrumb, etc. -->\r\n    <ng-content select=\"[matcha-nav-panel-header]\"></ng-content>\r\n\r\n    <!-- Default fallback — title + icon (Figma DSV3 canon). Some quando o slot é projetado. -->\r\n    <div *ngIf=\"moduleName\" class=\"matcha-nav-panel__title-row matcha-nav-panel__title-row--default\">\r\n        <matcha-icon *ngIf=\"moduleIcon\" [name]=\"moduleIcon\" size=\"sm\" class=\"matcha-nav-panel__title-icon\" aria-hidden=\"true\"></matcha-icon>\r\n        <span class=\"matcha-nav-panel__title\">{{ moduleName }}</span>\r\n    </div>\r\n</header>\r\n\r\n<div class=\"matcha-nav-panel__divider\" aria-hidden=\"true\"></div>\r\n\r\n<div class=\"matcha-nav-panel__items\" role=\"tree\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ElementRef,\r\n    HostListener,\r\n    Renderer2,\r\n    ViewChild,\r\n    booleanAttribute,\r\n    computed,\r\n    effect,\r\n    inject,\r\n    input,\r\n    output,\r\n    signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\r\nimport { MatchaEmptyStateComponent } from '../../matcha-empty-state/empty-state/empty-state.component';\r\nimport { MatchaDividerComponent } from '../../matcha-divider/divider/divider.component';\r\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\r\n\r\nexport interface CommandPaletteItem {\r\n    id: string;\r\n    label: string;\r\n    icon?: string;\r\n    shortcut?: string;\r\n    group?: string;\r\n    disabled?: boolean;\r\n    /** Rota Angular pra navegar ao selecionar (consumer usa em (select)). */\r\n    route?: string;\r\n    /**\r\n     * Sinônimos que também casam na busca, além de `label` e `group`.\r\n     *\r\n     * Serve pro vocabulário do usuário divergir do rótulo da tela: um item\r\n     * \"Registrar receita\" pode ser encontrado por \"dizimo\" ou \"oferta\".\r\n     * Não é exibido — só participa do filtro.\r\n     */\r\n    keywords?: string[];\r\n}\r\n\r\n/**\r\n * Remove acentuação e caixa para comparar termos.\r\n *\r\n * A busca precisa ser tolerante nos dois sentidos: quem digita \"celula\" acha\r\n * \"Células\", e quem digita \"célula\" acha um keyword escrito \"celula\". Sem isso\r\n * o filtro falha justamente no vocabulário mais comum em pt-BR (célula, oração,\r\n * mídia, notícia...).\r\n */\r\nfunction normalize(value: string): string {\r\n    return value\r\n        .toLowerCase()\r\n        .normalize('NFD')\r\n        .replace(/[̀-ͯ]/g, '');\r\n}\r\n\r\ninterface CommandPaletteGroup {\r\n    name: string | null;\r\n    items: CommandPaletteItem[];\r\n}\r\n\r\n/**\r\n * matcha-command-palette — ⌘K command palette canônico DSV3.\r\n *\r\n * Refatorado:\r\n *   • Portal-to-body: overlay+container renderizam em document.body\r\n *     → elimina containing-block trap por ancestor com transform/filter.\r\n *   • 100% tokens DSV3 (sem hardcode).\r\n *   • A11y WAI-ARIA combobox + listbox + active-descendant:\r\n *     - Focus FICA no input (sem keyboard trap).\r\n *     - aria-activedescendant aponta pro option highlighted.\r\n *     - Navegação via ↑↓/Home/End/Enter no próprio input.\r\n *   • Reusa matcha-empty-state pra \"nenhum resultado\".\r\n *\r\n * Usage:\r\n *   <matcha-command-palette\r\n *     [items]=\"commands\"\r\n *     [(open)]=\"isOpen\"\r\n *     (select)=\"onCommand($event)\"\r\n *     placeholder=\"Buscar...\">\r\n *   </matcha-command-palette>\r\n */\r\n@Component({\r\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\r\n    selector: 'matcha-command-palette',\r\n    templateUrl: './command-palette.component.html',\r\n    standalone: true,\r\n    imports: [CommonModule, MatchaIconComponent, MatchaEmptyStateComponent, MatchaDividerComponent],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: { class: 'matcha-command-palette-host' },\r\n})\r\nexport class MatchaCommandPaletteComponent {\r\n    /** Seq global pra IDs estáveis (listbox + options) — WAI-ARIA combobox pattern. */\r\n    private static uidSeq = 0;\r\n    private readonly uid = ++MatchaCommandPaletteComponent.uidSeq;\r\n    protected readonly listboxId = `matcha-cmd-listbox-${this.uid}`;\r\n    protected readonly inputId = `matcha-cmd-input-${this.uid}`;\r\n\r\n    @ViewChild('overlay') overlayRef?: ElementRef<HTMLElement>;\r\n    @ViewChild('searchInput') searchInputRef?: ElementRef<HTMLInputElement>;\r\n\r\n    // ── Inputs ─────────────────────────────────────────────────────────────\r\n    readonly items       = input<CommandPaletteItem[]>([]);\r\n    readonly placeholder = input<string>('Buscar comando...');\r\n    readonly emptyTitle  = input<string>('Nenhum resultado');\r\n    readonly emptyHint   = input<string>('Tente outro termo ou comando.');\r\n\r\n    /** Two-way: [(open)]=\"isOpen\" — abre/fecha externamente. */\r\n    readonly openInput = input<boolean, unknown>(false, { alias: 'open', transform: booleanAttribute });\r\n\r\n    // ── Outputs ────────────────────────────────────────────────────────────\r\n    readonly openChange = output<boolean>();\r\n    readonly select     = output<CommandPaletteItem>();\r\n\r\n    // ── Internal state (signals) ───────────────────────────────────────────\r\n    protected readonly _open      = signal(false);\r\n    protected readonly isClosing  = signal(false);\r\n    protected readonly query      = signal('');\r\n    protected readonly selectedIndex = signal(0);\r\n\r\n    private readonly EXIT_ANIMATION_MS = 180;\r\n    /** Parent original do overlay (ng-container do template). Salvo no open pra mover de volta no close. */\r\n    private originalParent: Node | null = null;\r\n    /** Reference direta ao overlay element — usada no cleanup mesmo se @ViewChild for null. */\r\n    private portaledOverlay: HTMLElement | null = null;\r\n    private lastFocusedTrigger: HTMLElement | null = null;\r\n    private closeTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n    private renderer  = inject(Renderer2);\r\n    private destroyRef = inject(DestroyRef);\r\n\r\n    constructor() {\r\n        // Sync external [open] → internal state.\r\n        // Lê openInput tracked; _open via untracked pra evitar loop quando abrimos internamente.\r\n        effect(() => {\r\n            const externalOpen = this.openInput();\r\n            // Sem tracking pro internal — só queremos reagir a mudanças externas.\r\n            const internalOpen = this._open();\r\n            if (externalOpen && !internalOpen && !this.isClosing()) {\r\n                this.openPalette();\r\n            } else if (!externalOpen && internalOpen && !this.isClosing()) {\r\n                this.closePalette();\r\n            }\r\n        }, { allowSignalWrites: true });\r\n\r\n        // Cleanup: sempre limpa o overlay do body se ainda estiver lá ao destruir.\r\n        this.destroyRef.onDestroy(() => this.cleanupPortal());\r\n    }\r\n\r\n    /** Remove overlay do body (idempotente, defensivo). Chamado no destroy + closePalette. */\r\n    private cleanupPortal(): void {\r\n        if (this.closeTimer) { clearTimeout(this.closeTimer); this.closeTimer = null; }\r\n        const overlay = this.portaledOverlay;\r\n        if (overlay && overlay.parentNode === document.body) {\r\n            try { document.body.removeChild(overlay); } catch {}\r\n        }\r\n        this.portaledOverlay = null;\r\n        this.originalParent = null;\r\n    }\r\n\r\n    // ── Computeds ──────────────────────────────────────────────────────────\r\n\r\n    /** Itens filtrados por query — substring em label, group OU keywords,\r\n     *  insensível a acento e caixa (ver normalize). */\r\n    protected readonly filteredItems = computed<CommandPaletteItem[]>(() => {\r\n        const q = normalize(this.query().trim());\r\n        const all = this.items();\r\n        if (!q) return all;\r\n        return all.filter(item =>\r\n            normalize(item.label).includes(q) ||\r\n            (item.group ? normalize(item.group).includes(q) : false) ||\r\n            (item.keywords?.some(keyword => normalize(keyword).includes(q)) ?? false),\r\n        );\r\n    });\r\n\r\n    /** Itens agrupados por `group` (preserva ordem original). */\r\n    protected readonly groupedItems = computed<CommandPaletteGroup[]>(() => {\r\n        const groups = new Map<string | null, CommandPaletteItem[]>();\r\n        for (const item of this.filteredItems()) {\r\n            const key = item.group ?? null;\r\n            if (!groups.has(key)) groups.set(key, []);\r\n            groups.get(key)!.push(item);\r\n        }\r\n        return Array.from(groups.entries()).map(([name, items]) => ({ name, items }));\r\n    });\r\n\r\n    /** ID do option ativo (WAI-ARIA aria-activedescendant). */\r\n    protected readonly activeDescendantId = computed<string | null>(() => {\r\n        const idx = this.selectedIndex();\r\n        const items = this.filteredItems();\r\n        if (idx < 0 || idx >= items.length) return null;\r\n        return this.getOptionId(idx);\r\n    });\r\n\r\n    protected getOptionId(globalIndex: number): string {\r\n        return `${this.listboxId}-opt-${globalIndex}`;\r\n    }\r\n\r\n    /** Index global do item dentro de filteredItems (pra aria-activedescendant em grupos). */\r\n    protected globalIndexOf(item: CommandPaletteItem): number {\r\n        return this.filteredItems().indexOf(item);\r\n    }\r\n\r\n    // ── Open/close ─────────────────────────────────────────────────────────\r\n\r\n    openPalette(): void {\r\n        if (this._open()) return;\r\n\r\n        // Se havia close pending, cancela.\r\n        if (this.closeTimer) { clearTimeout(this.closeTimer); this.closeTimer = null; }\r\n\r\n        this.isClosing.set(false);\r\n        this.query.set('');\r\n        this.selectedIndex.set(0);\r\n        this.lastFocusedTrigger = (document.activeElement as HTMLElement) ?? null;\r\n        this._open.set(true);\r\n        this.openChange.emit(true);\r\n\r\n        // Aguarda Angular renderizar o template (@ViewChild populado), depois porta pro body.\r\n        queueMicrotask(() => {\r\n            const overlay = this.overlayRef?.nativeElement;\r\n            if (overlay) {\r\n                this.originalParent  = overlay.parentNode;\r\n                this.portaledOverlay = overlay;\r\n                this.renderer.appendChild(document.body, overlay);\r\n            }\r\n            // Foca o input após o portal (timeout pra animação não roubar foco).\r\n            setTimeout(() => this.searchInputRef?.nativeElement?.focus(), 50);\r\n        });\r\n    }\r\n\r\n    closePalette(): void {\r\n        if (!this._open() || this.isClosing()) return;\r\n\r\n        this.isClosing.set(true);\r\n\r\n        // Após exit animation: devolve overlay ao parent (se ainda no DOM), destrói view,\r\n        // refoca trigger. Cleanup defensivo cobre destroy concorrente (route change).\r\n        this.closeTimer = setTimeout(() => {\r\n            this.closeTimer = null;\r\n            const overlay = this.portaledOverlay;\r\n\r\n            // Devolve ao parent original se ainda anexado ao body E parent ainda no DOM.\r\n            // Senão, remove direto (parent foi destruído, ex: route change).\r\n            if (overlay && overlay.parentNode === document.body) {\r\n                if (this.originalParent && document.contains(this.originalParent)) {\r\n                    this.renderer.appendChild(this.originalParent, overlay);\r\n                } else {\r\n                    try { document.body.removeChild(overlay); } catch {}\r\n                }\r\n            }\r\n            this.originalParent  = null;\r\n            this.portaledOverlay = null;\r\n\r\n            this._open.set(false);\r\n            this.isClosing.set(false);\r\n            this.openChange.emit(false);\r\n\r\n            // Refoca trigger SE ainda no DOM (route change pode tê-lo destruído).\r\n            const trigger = this.lastFocusedTrigger;\r\n            if (trigger && document.contains(trigger)) trigger.focus();\r\n            this.lastFocusedTrigger = null;\r\n        }, this.EXIT_ANIMATION_MS);\r\n    }\r\n\r\n    // ── Selection ──────────────────────────────────────────────────────────\r\n\r\n    selectItem(item: CommandPaletteItem): void {\r\n        if (item.disabled) return;\r\n        // Fecha INSTANTANEAMENTE (sem animação de exit) ANTES de emitir select.\r\n        // Por que: consumer pode chamar router.navigate() — o overlay precisa estar\r\n        // fora do DOM pra nova página renderizar limpa, sem palette \"preso\" por cima.\r\n        this.closeImmediate();\r\n        this.select.emit(item);\r\n    }\r\n\r\n    /** Fecha sem animação (selectItem flow — libera viewport pra navegação imediata). */\r\n    private closeImmediate(): void {\r\n        if (!this._open()) return;\r\n        if (this.closeTimer) { clearTimeout(this.closeTimer); this.closeTimer = null; }\r\n\r\n        // Devolve overlay ao parent original PRIMEIRO (pra Angular destruir view cleanly).\r\n        const overlay = this.portaledOverlay;\r\n        if (overlay && overlay.parentNode === document.body) {\r\n            if (this.originalParent && document.contains(this.originalParent)) {\r\n                this.renderer.appendChild(this.originalParent, overlay);\r\n            } else {\r\n                try { document.body.removeChild(overlay); } catch {}\r\n            }\r\n        }\r\n        this.portaledOverlay = null;\r\n        this.originalParent = null;\r\n\r\n        this._open.set(false);\r\n        this.isClosing.set(false);\r\n        this.openChange.emit(false);\r\n\r\n        const trigger = this.lastFocusedTrigger;\r\n        if (trigger && document.contains(trigger)) trigger.focus();\r\n        this.lastFocusedTrigger = null;\r\n    }\r\n\r\n    // ── Input handlers ─────────────────────────────────────────────────────\r\n\r\n    onSearchInput(value: string): void {\r\n        this.query.set(value);\r\n        this.selectedIndex.set(0);\r\n    }\r\n\r\n    /** Keydown no input — combobox pattern: navega listbox sem mover foco do input. */\r\n    onInputKeydown(event: KeyboardEvent): void {\r\n        const items = this.filteredItems();\r\n        switch (event.key) {\r\n            case 'ArrowDown':\r\n                if (items.length === 0) return;\r\n                this.selectedIndex.update(i => (i + 1) % items.length);\r\n                this.scrollSelectedIntoView();\r\n                event.preventDefault();\r\n                break;\r\n            case 'ArrowUp':\r\n                if (items.length === 0) return;\r\n                this.selectedIndex.update(i => (i - 1 + items.length) % items.length);\r\n                this.scrollSelectedIntoView();\r\n                event.preventDefault();\r\n                break;\r\n            case 'Home':\r\n                this.selectedIndex.set(0);\r\n                this.scrollSelectedIntoView();\r\n                event.preventDefault();\r\n                break;\r\n            case 'End':\r\n                if (items.length === 0) return;\r\n                this.selectedIndex.set(items.length - 1);\r\n                this.scrollSelectedIntoView();\r\n                event.preventDefault();\r\n                break;\r\n            case 'Enter':\r\n                if (items.length === 0) return;\r\n                const item = items[this.selectedIndex()];\r\n                if (item) this.selectItem(item);\r\n                event.preventDefault();\r\n                break;\r\n            case 'Escape':\r\n                this.closePalette();\r\n                event.preventDefault();\r\n                break;\r\n        }\r\n    }\r\n\r\n    /** Click no overlay — só fecha se foi no próprio overlay (não em filho). */\r\n    onOverlayClick(event: MouseEvent): void {\r\n        if (event.target === event.currentTarget) this.closePalette();\r\n    }\r\n\r\n    /** Cmd+K / Ctrl+K global toggle.\r\n     *\r\n     *  Não sequestra o atalho dentro de conteúdo editável: editores de texto\r\n     *  ricos usam Ctrl+K pro próprio comando (inserir link, tipicamente), e o\r\n     *  preventDefault incondicional matava esse atalho em toda a aplicação\r\n     *  hospedeira. Input e textarea comuns seguem abrindo o palette — ali o\r\n     *  Ctrl+K não concorre com nada. */\r\n    @HostListener('document:keydown', ['$event'])\r\n    onDocumentKeydown(event: KeyboardEvent): void {\r\n        if ((event.metaKey || event.ctrlKey) && event.key === 'k') {\r\n            if (this.isEditableContext(event.target)) return;\r\n            event.preventDefault();\r\n            if (this._open()) this.closePalette();\r\n            else this.openPalette();\r\n        }\r\n    }\r\n\r\n    /** O alvo do evento está dentro de um editor rico (contenteditable)? */\r\n    private isEditableContext(target: EventTarget | null): boolean {\r\n        const element = target as HTMLElement | null;\r\n        if (!element || typeof element.closest !== 'function') return false;\r\n\r\n        // O input do próprio palette é contenteditable=false, então não cai aqui\r\n        // — o toggle pra fechar com Cmd+K continua funcionando.\r\n        return !!element.closest('[contenteditable=\"\"], [contenteditable=\"true\"]');\r\n    }\r\n\r\n    private scrollSelectedIntoView(): void {\r\n        queueMicrotask(() => {\r\n            const overlay = this.overlayRef?.nativeElement;\r\n            const el = overlay?.querySelector('.matcha-command-palette__result--selected') as HTMLElement | null;\r\n            el?.scrollIntoView({ block: 'nearest' });\r\n        });\r\n    }\r\n\r\n    protected trackByIndex(index: number): number { return index; }\r\n    protected trackByGroupName(_i: number, g: CommandPaletteGroup): string {\r\n        return g.name ?? '__null__';\r\n    }\r\n}\r\n","<!-- Command palette canônico DSV3.\r\n     A11y: WAI-ARIA combobox + listbox + active-descendant.\r\n       · Focus FICA no input (sem keyboard trap).\r\n       · aria-activedescendant aponta pro option highlighted.\r\n       · ↑↓/Home/End/Enter no input navegam o listbox.\r\n     Portal: overlay+container movem pra document.body em openPalette()\r\n     pra escapar containing-block traps. -->\r\n<ng-container *ngIf=\"_open() || isClosing()\">\r\n    <!-- Overlay: único position:fixed — centra container via flexbox.\r\n         (click) só fecha se target for o próprio overlay (não filho). -->\r\n    <div #overlay\r\n         class=\"matcha-command-palette-overlay\"\r\n         [class.is-closing]=\"isClosing()\"\r\n         (click)=\"onOverlayClick($event)\">\r\n\r\n        <!-- Container: position:relative dentro do overlay flex (top-center). -->\r\n        <div class=\"matcha-command-palette\"\r\n             [class.is-closing]=\"isClosing()\"\r\n             role=\"dialog\"\r\n             aria-modal=\"true\"\r\n             aria-label=\"Command palette\">\r\n\r\n            <!-- Search ──────────────────────────────────────────────────── -->\r\n            <div class=\"matcha-command-palette__search\">\r\n                <matcha-icon name=\"search\"\r\n                             size=\"sm\"\r\n                             class=\"matcha-command-palette__search-icon\"\r\n                             aria-hidden=\"true\"></matcha-icon>\r\n\r\n                <input #searchInput\r\n                       class=\"matcha-command-palette__input\"\r\n                       type=\"text\"\r\n                       autocomplete=\"off\"\r\n                       spellcheck=\"false\"\r\n                       [id]=\"inputId\"\r\n                       [placeholder]=\"placeholder()\"\r\n                       [value]=\"query()\"\r\n                       (input)=\"onSearchInput($any($event.target).value)\"\r\n                       (keydown)=\"onInputKeydown($event)\"\r\n                       role=\"combobox\"\r\n                       aria-autocomplete=\"list\"\r\n                       [attr.aria-controls]=\"listboxId\"\r\n                       aria-expanded=\"true\"\r\n                       [attr.aria-activedescendant]=\"activeDescendantId()\"\r\n                       aria-label=\"Buscar comando\" />\r\n\r\n                <kbd class=\"matcha-command-palette__esc-hint\" aria-hidden=\"true\">ESC</kbd>\r\n            </div>\r\n\r\n            <!-- Divider — matcha-divider canônico DSV3, decorativo (não anuncia separação semântica). -->\r\n            <matcha-divider decorative class=\"matcha-command-palette__divider\"></matcha-divider>\r\n\r\n            <!-- Results listbox ─────────────────────────────────────────── -->\r\n            <div class=\"matcha-command-palette__results\"\r\n                 [id]=\"listboxId\"\r\n                 role=\"listbox\"\r\n                 aria-label=\"Resultados\">\r\n\r\n                <ng-container *ngFor=\"let group of groupedItems(); trackBy: trackByGroupName\">\r\n                    <!-- Section header (presentational) -->\r\n                    <div *ngIf=\"group.name\"\r\n                         class=\"matcha-command-palette__section\"\r\n                         role=\"presentation\">{{ group.name }}</div>\r\n\r\n                    <!-- Items: button[role=option] com ID estável pra aria-activedescendant.\r\n                         Sem (focus) — combobox mantém foco no input. mousedown.preventDefault\r\n                         impede que o input perca foco ao clicar no item. -->\r\n                    <button *ngFor=\"let item of group.items; trackBy: trackByIndex\"\r\n                            type=\"button\"\r\n                            role=\"option\"\r\n                            class=\"matcha-command-palette__result\"\r\n                            [id]=\"getOptionId(globalIndexOf(item))\"\r\n                            [class.matcha-command-palette__result--selected]=\"globalIndexOf(item) === selectedIndex()\"\r\n                            [attr.aria-selected]=\"globalIndexOf(item) === selectedIndex()\"\r\n                            [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\r\n                            [disabled]=\"!!item.disabled\"\r\n                            tabindex=\"-1\"\r\n                            (mousedown)=\"$event.preventDefault()\"\r\n                            (click)=\"selectItem(item)\"\r\n                            (mouseenter)=\"selectedIndex.set(globalIndexOf(item))\">\r\n                        <matcha-icon *ngIf=\"item.icon\"\r\n                                     [name]=\"item.icon\"\r\n                                     size=\"sm\"\r\n                                     class=\"matcha-command-palette__result-icon\"\r\n                                     aria-hidden=\"true\"></matcha-icon>\r\n                        <span class=\"matcha-command-palette__result-label\">{{ item.label }}</span>\r\n                        <kbd *ngIf=\"item.shortcut\" class=\"matcha-command-palette__shortcut\">{{ item.shortcut }}</kbd>\r\n                    </button>\r\n                </ng-container>\r\n\r\n                <!-- Empty state — matcha-empty-state canônico DSV3 (compact). -->\r\n                <matcha-empty-state *ngIf=\"filteredItems().length === 0\"\r\n                                    class=\"matcha-command-palette__empty\"\r\n                                    size=\"compact\"\r\n                                    icon=\"search\"\r\n                                    [title]=\"emptyTitle()\"\r\n                                    [description]=\"emptyHint()\"\r\n                                    [live]=\"true\"></matcha-empty-state>\r\n            </div>\r\n\r\n            <!-- Footer — dicas de keyboard (caption typography DSV3) -->\r\n            <div class=\"matcha-command-palette__footer\" aria-hidden=\"true\">\r\n                <span class=\"matcha-command-palette__footer-tip\">\r\n                    <kbd>↑</kbd><kbd>↓</kbd> navegar\r\n                </span>\r\n                <span class=\"matcha-command-palette__footer-tip\">\r\n                    <kbd>↵</kbd> abrir\r\n                </span>\r\n                <span class=\"matcha-command-palette__footer-tip\">\r\n                    <kbd>esc</kbd> fechar\r\n                </span>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostListener,\n    ViewEncapsulation,\n    booleanAttribute,\n    contentChildren,\n    effect,\n    inject,\n    input,\n    model,\n    output,\n} from '@angular/core';\nimport { MatchaDrawerComponent } from '../../matcha-drawer/drawer/drawer.component';\nimport { MatchaDrawerContainerComponent } from '../../matcha-drawer/drawer-container/drawer-container.component';\nimport { MatchaIconComponent } from '../../matcha-icon/icon.component';\nimport { MatchaIconButtonComponent } from '../../matcha-icon-button/icon-button.component';\nimport { MatchaNavItemComponent } from '../nav-item/nav-item.component';\nimport { MatchaDataQaDirective } from '../../matcha-data-qa';\nimport { moveNavTreeFocus } from '../shared/nav-tree-keyboard';\n\n/**\n * matcha-nav-drawer — navegação principal em drawer (Figma DSV3 node 19228:2014).\n *\n * É a forma da navegação quando não há espaço pro par rail + panel: em vez de\n * espremer duas colunas, a árvore inteira vira uma lista única sobre scrim.\n *\n * Compõe `matcha-drawer-container` + `matcha-drawer mode=\"over\"` — backdrop,\n * ESC, focus trap, scroll-lock, inert siblings e focus return vêm de lá; este\n * componente só define a anatomia de navegação (header, busca, árvore, footer).\n *\n * **Hierarquia de 3 níveis** — o drawer acrescenta o nível do módulo que no\n * desktop é o próprio `matcha-nav-panel`:\n *   1. módulo   → `matcha-nav-item` com ícone e `[hasChildren]`\n *   2. item     → `matcha-nav-item` (sem `indented`), `[hasChildren]` se colapsável\n *   3. sub-item → `matcha-nav-item` `indented`, sempre folha\n * O recuo do nível 2 vem do container (escopo deste componente), por isso o\n * `matcha-nav-item` não precisou de um segundo flag de indentação.\n *\n * **Interação** — clicar num item COM filhos expande, não navega (comportamento\n * nativo do `matcha-nav-item`); só folha emite `(navigate)`. Cabe ao consumidor\n * fechar o drawer ao navegar.\n *\n * Keyboard: ↑↓/Home/End percorrem a árvore (WAI-ARIA tree); ESC fecha.\n *\n * @example\n * <matcha-nav-drawer [(opened)]=\"menuOpen\" ariaLabel=\"Menu\">\n *   <matcha-nav-drawer-brand><matcha-brand set=\"inchurch\"></matcha-brand></matcha-nav-drawer-brand>\n *   <matcha-nav-drawer-search>\n *     <button type=\"button\" (click)=\"openSearch()\">Buscar...</button>\n *   </matcha-nav-drawer-search>\n *\n *   <matcha-nav-item icon=\"people\" label=\"Pessoas\" [hasChildren]=\"true\" [(expanded)]=\"peopleOpen\">\n *     <matcha-nav-item label=\"Membros\" (navigate)=\"go('/pessoas/membros')\"></matcha-nav-item>\n *     <matcha-nav-item label=\"Células\" [hasChildren]=\"true\" [(expanded)]=\"cellsOpen\">\n *       <matcha-nav-item indented label=\"Lista\" (navigate)=\"go('/celulas/lista')\"></matcha-nav-item>\n *     </matcha-nav-item>\n *   </matcha-nav-item>\n *\n *   <matcha-nav-drawer-footer>\n *     <matcha-nav-item icon=\"store\" label=\"Loja\" (navigate)=\"go('/loja')\"></matcha-nav-item>\n *   </matcha-nav-drawer-footer>\n * </matcha-nav-drawer>\n */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-nav-drawer',\n    templateUrl: './nav-drawer.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [\n        MatchaDrawerContainerComponent,\n        MatchaDrawerComponent,\n        MatchaIconComponent,\n        MatchaIconButtonComponent,\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'matcha-nav-drawer',\n        '[class.matcha-nav-drawer--opened]': 'opened()',\n        '[class.matcha-nav-drawer--contained]': 'contained()',\n    },\n})\nexport class MatchaNavDrawerComponent {\n    /** Estado aberto/fechado (two-way: `[(opened)]`). */\n    readonly opened = model<boolean>(false);\n\n    /** Largura do drawer. Figma: 320px, deixando peek do backdrop no phone de 375. */\n    readonly width = input<string>('var(--matcha-nav-drawer-width, 320px)');\n\n    /** aria-label do drawer e da árvore de navegação. */\n    readonly ariaLabel = input<string>('Menu de navegação');\n\n    /** aria-label do botão de fechar. */\n    readonly closeLabel = input<string>('Fechar menu');\n\n    /** Esconde o botão de fechar do header (quando o consumidor projeta o próprio). */\n    readonly hideCloseButton = input<boolean>(false);\n\n    /**\n     * Confina o drawer ao ancestral posicionado mais próximo em vez da viewport.\n     *\n     * Default `false`: o drawer é a navegação da app e cobre a viewport (fixed),\n     * sem exigir que o consumidor prepare o shell. `true` troca pra absolute —\n     * pra preview/embed dentro de um frame, como o playground da documentação.\n     */\n    readonly contained = input(false, { transform: booleanAttribute });\n\n    /**\n     * Permite vários módulos abertos ao mesmo tempo.\n     *\n     * Default `false` (accordion): abrir um módulo fecha o outro que estava\n     * aberto. Mesmo vocabulário e mesmo default do `matcha-accordion` — num\n     * drawer a altura é o recurso escasso, e dois módulos longos abertos\n     * empurram o resto pra fora da tela.\n     *\n     * Vale só para os módulos de PRIMEIRO nível. Colapsáveis internos de um\n     * módulo seguem independentes entre si: eles descrevem o mesmo assunto e\n     * comparar dois lado a lado é legítimo.\n     */\n    readonly multiple = input(false, { transform: booleanAttribute });\n\n    /** Emitido quando o drawer termina de fechar. */\n    readonly closed = output<void>();\n\n    private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    /**\n     * Todos os nav-items projetados, em qualquer profundidade. A hierarquia é\n     * derivada por containment de DOM (ver `rootItems`) em vez de exigir que o\n     * consumidor declare o nível — mesmo truque que o `matcha-accordion` usa pra\n     * localizar o item focado.\n     */\n    private readonly items = contentChildren(MatchaNavItemComponent, { descendants: true });\n\n    /** Trava de reentrância: fechar irmãos re-emite `expandedChange`. */\n    private syncingExpansion = false;\n\n    constructor() {\n        // Re-assina a cada mudança da lista; onCleanup desfaz antes do próximo run\n        // e na destruição. Mesmo padrão do matcha-accordion.\n        effect(onCleanup => {\n            const subs = this.items().map(item =>\n                item.expandedChange.subscribe((expanded: boolean) =>\n                    this.onItemExpandedChange(item, expanded),\n                ),\n            );\n            onCleanup(() => subs.forEach(sub => sub.unsubscribe()));\n        });\n    }\n\n    /** Módulos de primeiro nível: os nav-items que nenhum outro nav-item contém. */\n    private rootItems(): MatchaNavItemComponent[] {\n        const todos = this.items();\n        return todos.filter(\n            item =>\n                !todos.some(\n                    outro => outro !== item && outro.host.nativeElement.contains(item.host.nativeElement),\n                ),\n        );\n    }\n\n    /** Fecha o item e tudo que estiver aberto dentro dele. */\n    private collapseBranch(item: MatchaNavItemComponent): void {\n        for (const outro of this.items()) {\n            if (outro !== item && item.host.nativeElement.contains(outro.host.nativeElement)) {\n                outro._setExpanded(false);\n            }\n        }\n        item._setExpanded(false);\n    }\n\n    private onItemExpandedChange(origem: MatchaNavItemComponent, expanded: boolean): void {\n        if (this.syncingExpansion) return;\n\n        // Só coordena os módulos de primeiro nível.\n        if (!this.rootItems().includes(origem)) return;\n\n        this.syncingExpansion = true;\n        try {\n            if (expanded) {\n                if (this.multiple()) return;\n                for (const outro of this.rootItems()) {\n                    if (outro !== origem && outro.expanded) this.collapseBranch(outro);\n                }\n            } else {\n                // Fechou um módulo: colapsa o que estava aberto dentro dele, pra\n                // reabrir mostrar a lista limpa em vez do estado antigo.\n                for (const dentro of this.items()) {\n                    if (dentro !== origem && origem.host.nativeElement.contains(dentro.host.nativeElement)) {\n                        dentro._setExpanded(false);\n                    }\n                }\n            }\n        } finally {\n            this.syncingExpansion = false;\n        }\n    }\n\n    open(): void {\n        this.opened.set(true);\n    }\n\n    close(): void {\n        this.opened.set(false);\n    }\n\n    toggle(): void {\n        this.opened.update(isOpen => !isOpen);\n    }\n\n    /**\n     * Tree keyboard nav (WAI-ARIA) — mesma lógica do `matcha-nav-panel`.\n     * ESC é tratado pelo `matcha-drawer-container`, não aqui.\n     */\n    @HostListener('keydown', ['$event'])\n    onKeydown(event: KeyboardEvent): void {\n        if (moveNavTreeFocus(this.hostRef.nativeElement, event.key)) {\n            event.preventDefault();\n        }\n    }\n}\n\n/** Slot da marca/logo no header do drawer. */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-nav-drawer-brand',\n    template: '<ng-content></ng-content>',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { 'class': 'matcha-nav-drawer__brand' },\n})\nexport class MatchaNavDrawerBrandComponent {}\n\n/** Slot da busca, abaixo do header. Recebe o trigger do command palette. */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-nav-drawer-search',\n    template: '<ng-content></ng-content>',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { 'class': 'matcha-nav-drawer__search' },\n})\nexport class MatchaNavDrawerSearchComponent {}\n\n/** Slot de itens secundários, no rodapé do drawer. */\n@Component({\n    hostDirectives: [{ directive: MatchaDataQaDirective, inputs: ['data-qa'] }],\n    selector: 'matcha-nav-drawer-footer',\n    template: '<ng-content></ng-content>',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { 'class': 'matcha-nav-drawer__footer', 'role': 'group' },\n})\nexport class MatchaNavDrawerFooterComponent {}\n","<!-- Container + drawer over: backdrop, ESC, focus trap, scroll-lock e focus return\n     vêm do matcha-drawer. Aqui só a anatomia de navegação. -->\n<matcha-drawer-container>\n    <matcha-drawer mode=\"over\"\n                   position=\"start\"\n                   [width]=\"width()\"\n                   [ariaLabel]=\"ariaLabel()\"\n                   [(opened)]=\"opened\"\n                   (closedEnd)=\"closed.emit()\">\n\n        <div matcha-drawer-header>\n            <ng-content select=\"matcha-nav-drawer-brand\"></ng-content>\n            @if (!hideCloseButton()) {\n                <button matcha-icon-button\n                        type=\"button\"\n                        variant=\"ghost\"\n                        size=\"small\"\n                        color=\"basic\"\n                        class=\"matcha-nav-drawer__close\"\n                        [attr.aria-label]=\"closeLabel()\"\n                        (click)=\"close()\">\n                    <matcha-icon name=\"close\"></matcha-icon>\n                </button>\n            }\n        </div>\n\n        <div matcha-drawer-body>\n            <ng-content select=\"matcha-nav-drawer-search\"></ng-content>\n            <nav class=\"matcha-nav-drawer__items\"\n                 role=\"tree\"\n                 [attr.aria-label]=\"ariaLabel()\">\n                <ng-content></ng-content>\n            </nav>\n        </div>\n\n        <!-- Wrapper com o atributo do slot: o matcha-drawer projeta por seletor de\n             atributo, e re-projeção de <ng-content> não casa esse select. O slot\n             se esconde sozinho via :has() quando o consumidor não projeta nada. -->\n        <div matcha-drawer-footer>\n            <ng-content select=\"matcha-nav-drawer-footer\"></ng-content>\n        </div>\n    </matcha-drawer>\n</matcha-drawer-container>\n","import { NgModule } from '@angular/core';\r\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\r\n\r\nimport { MatchaNavItemComponent } from './nav-item/nav-item.component';\r\nimport { MatchaNavRailComponent } from './nav-rail/nav-rail.component';\r\nimport { MatchaNavPanelComponent } from './nav-panel/nav-panel.component';\r\nimport { MatchaCommandPaletteComponent } from './command-palette/command-palette.component';\r\nimport {\r\n  MatchaNavDrawerComponent,\r\n  MatchaNavDrawerBrandComponent,\r\n  MatchaNavDrawerSearchComponent,\r\n  MatchaNavDrawerFooterComponent,\r\n} from './nav-drawer/nav-drawer.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    MatchaNavItemComponent,\r\n    MatchaNavRailComponent,\r\n    MatchaNavPanelComponent,\r\n    MatchaCommandPaletteComponent,\r\n    MatchaNavDrawerComponent,\r\n    MatchaNavDrawerBrandComponent,\r\n    MatchaNavDrawerSearchComponent,\r\n    MatchaNavDrawerFooterComponent,\r\n    MatchaIconModule\r\n  ],\r\n  exports: [\r\n    MatchaNavItemComponent,\r\n    MatchaNavRailComponent,\r\n    MatchaNavPanelComponent,\r\n    MatchaCommandPaletteComponent,\r\n    MatchaNavDrawerComponent,\r\n    MatchaNavDrawerBrandComponent,\r\n    MatchaNavDrawerSearchComponent,\r\n    MatchaNavDrawerFooterComponent\r\n  ]\r\n})\r\nexport class MatchaNavModule {}\r\n","/*\r\n * Public API Surface of matcha-components\r\n */\r\n\r\n// =============================================================================\r\n// MATCHA COMPONENTS MODULE (barrel)\r\n// =============================================================================\r\nexport * from './lib/matcha-components.module';\r\n\r\n// =============================================================================\r\n// DATA-QA (test-handle directive — attached to every component via hostDirectives)\r\n// =============================================================================\r\nexport * from './lib/matcha-data-qa';\r\n\r\n// =============================================================================\r\n// ACCORDION\r\n// =============================================================================\r\nexport * from './lib/matcha-accordion/accordion.module';\r\nexport * from './lib/matcha-accordion/accordion/accordion.component';\r\nexport * from './lib/matcha-accordion/accordion-item/accordion-item.component';\r\nexport * from './lib/matcha-accordion/accordion-header/accordion-header.component';\r\nexport * from './lib/matcha-accordion/accordion-content/accordion-content.component';\r\n\r\n// =============================================================================\r\n// AUTOCOMPLETE — @deprecated (2026-08-05): use matcha-field type=\"select\"\r\n// (searchMode=\"backend\" pra lista remota/paginada). Exports mantidos até o\r\n// painel concluir a migração dos usos existentes; depois saem daqui.\r\n// =============================================================================\r\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.module';\r\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.component';\r\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.directive';\r\n\r\n// =============================================================================\r\n// AVATAR\r\n// =============================================================================\r\nexport * from './lib/matcha-avatar/avatar.module';\r\nexport * from './lib/matcha-avatar/avatar/avatar.component';\r\nexport * from './lib/matcha-avatar/avatar-group/avatar-group.component';\r\nexport * from './lib/matcha-avatar/avatar-name/avatar-name.component';\r\nexport * from './lib/matcha-avatar/avatar-caption/avatar-caption.component';\r\n\r\n// =============================================================================\r\n// CONTACT (átomo de exibição — ícone + número + link wa.me; reusado por\r\n// td[matcha-cell-contact] e por cards)\r\n// =============================================================================\r\nexport * from './lib/matcha-contact/contact.module';\r\nexport * from './lib/matcha-contact/contact/contact.component';\r\n\r\n// =============================================================================\r\n// BREAKPOINT OBSERVER\r\n// =============================================================================\r\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observable.module';\r\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observer.service';\r\n\r\n// =============================================================================\r\n// BUTTON\r\n// =============================================================================\r\nexport * from './lib/matcha-button/button.module';\r\nexport * from './lib/matcha-button/button/button.component';\r\n\r\n// =============================================================================\r\n// BUTTON TOGGLE\r\n// =============================================================================\r\nexport * from './lib/matcha-button-toggle/button-toggle.module';\r\nexport * from './lib/matcha-button-toggle/button-toggle/button-toggle.component';\r\n\r\n// =============================================================================\r\n// ICON BUTTON (NEW — Fase 2: substitui <button matcha-button icon=\"true\">)\r\n// =============================================================================\r\nexport * from './lib/matcha-icon-button/icon-button.module';\r\nexport * from './lib/matcha-icon-button/icon-button.component';\r\n\r\n// =============================================================================\r\n// LINK (NEW — Fase 2: substitui <button matcha-button link=\"true\">)\r\n// =============================================================================\r\nexport * from './lib/matcha-link/link.module';\r\nexport * from './lib/matcha-link/link.component';\r\n\r\n// =============================================================================\r\n// BADGE (directive — aplicável em qualquer elemento)\r\n// =============================================================================\r\nexport * from './lib/matcha-badge/matcha-badge.module';\r\nexport * from './lib/matcha-badge/matcha-badge.directive';\r\n\r\n// =============================================================================\r\n// CARD\r\n// =============================================================================\r\nexport * from './lib/matcha-card/card.module';\r\nexport * from './lib/matcha-card/card/card.component';\r\n\r\n// =============================================================================\r\n// CHECKBOX\r\n// =============================================================================\r\nexport * from './lib/matcha-checkbox/checkbox.module';\r\nexport * from './lib/matcha-checkbox/checkbox/checkbox.component';\r\n\r\n// =============================================================================\r\n// CHIP\r\n// =============================================================================\r\nexport * from './lib/matcha-chip/chip.module';\r\nexport * from './lib/matcha-chip/chip/chip.component';\r\nexport * from './lib/matcha-chip/chip-list/chip-list.component';\r\n\r\n// =============================================================================\r\n// STATUS PILL\r\n// =============================================================================\r\nexport * from './lib/matcha-status-pill/status-pill.module';\r\nexport * from './lib/matcha-status-pill/status-pill/status-pill.component';\r\n\r\n// =============================================================================\r\n// CALENDAR (usado internamente por DATE/DATETIME — também standalone)\r\n// =============================================================================\r\nexport * from './lib/matcha-calendar/matcha-calendar.module';\r\nexport * from './lib/matcha-calendar/calendar/matcha-calendar.component';\r\n\r\n// =============================================================================\r\n// DATE\r\n// =============================================================================\r\nexport * from './lib/matcha-date/matcha-date.module';\r\nexport * from './lib/matcha-date/date/matcha-date.component';\r\nexport * from './lib/matcha-datetime/matcha-datetime.module';\r\nexport * from './lib/matcha-datetime/datetime/matcha-datetime.component';\r\n\r\n// =============================================================================\r\n// FIELD RANGE (genérico — substitui DATE RANGE e TIME RANGE)\r\n// =============================================================================\r\nexport * from './lib/matcha-field-range/field-range.module';\r\nexport * from './lib/matcha-field-range/field-range/field-range.component';\r\n\r\n// =============================================================================\r\n// DIVIDER\r\n// =============================================================================\r\nexport * from './lib/matcha-divider/divider.module';\r\nexport * from './lib/matcha-divider/divider/divider.component';\r\n\r\n// =============================================================================\r\n// DRAWER\r\n// =============================================================================\r\nexport * from './lib/matcha-drawer/drawer.module';\r\nexport * from './lib/matcha-drawer/drawer/drawer.component';\r\nexport * from './lib/matcha-drawer/drawer-container/drawer-container.component';\r\nexport * from './lib/matcha-drawer/drawer-content/drawer-content.component';\r\n\r\n// =============================================================================\r\n// DROP LIST\r\n// =============================================================================\r\nexport * from './lib/matcha-drop-list/drop-list.module';\r\nexport * from './lib/matcha-drop-list/drop-list/drop-list.component';\r\nexport * from './lib/matcha-drop-list/directives/drag.directive';\r\nexport * from './lib/matcha-drop-list/directives/drag-handle.directive';\r\nexport * from './lib/matcha-drop-list/directives/drop-zone.directive';\r\nexport * from './lib/matcha-drop-list/services/drop-list.service';\r\n\r\n// =============================================================================\r\n// ELEVATION\r\n// =============================================================================\r\nexport * from './lib/matcha-elevation/elevation.module';\r\nexport * from './lib/matcha-elevation/elevation.directive';\r\n\r\n// =============================================================================\r\n// EMPTY STATE\r\n// =============================================================================\r\nexport * from './lib/matcha-empty-state/empty-state/empty-state.component';\r\n\r\n// =============================================================================\r\n// TREE VIEW (árvore hierárquica data-driven com DnD — container + item + node tpl)\r\n//   matcha-tree-view  — container data-driven (tree mode, reparenting, depth)\r\n//   matcha-tree-view-item — row visual (slot, Figma DSV3 matcha/tree-view/item)\r\n//   matchaTreeNode    — template de linha\r\n// =============================================================================\r\nexport * from './lib/matcha-tree-view/tree-view/tree-view.component';\r\nexport * from './lib/matcha-tree-view/tree-node.directive';\r\nexport * from './lib/matcha-tree-view/tree-view-item/tree-view-item.component';\r\nexport * from './lib/matcha-tree-view/tree-children/tree-children.component';\r\nexport * from './lib/matcha-tree-view/tree-controller';\r\nexport * from './lib/matcha-tree-view/grip.directive';\r\n\r\n// =============================================================================\r\n// ICON BADGE (NEW — bubble colorido com ícone)\r\n// =============================================================================\r\nexport * from './lib/matcha-icon-badge/icon-badge.component';\r\n\r\n// =============================================================================\r\n// BANNER (NEW — notificação persistente dispensável)\r\n// =============================================================================\r\nexport * from './lib/matcha-banner/banner.component';\r\nexport * from './lib/matcha-banner/banner-stack.component';\r\n\r\n// =============================================================================\r\n// STAT CARD (NEW — KPI tile)\r\n// =============================================================================\r\nexport * from './lib/matcha-stat-card/stat-card.component';\r\n\r\n// =============================================================================\r\n// PAGINATION (NEW — variant minimal)\r\n// =============================================================================\r\nexport * from './lib/matcha-pagination/pagination.module';\r\nexport * from './lib/matcha-pagination/pagination.component';\r\n\r\n// =============================================================================\r\n// PROGRESS RING (NEW — donut/ring 0-100)\r\n// =============================================================================\r\nexport * from './lib/matcha-progress-ring/progress-ring.component';\r\n\r\n// =============================================================================\r\n// FIELD (API canônica type-driven — preferencial)\r\n// =============================================================================\r\nexport * from './lib/matcha-field/matcha-field.module';\r\nexport * from './lib/matcha-field/matcha-field.component';\r\n\r\n// =============================================================================\r\n// FORM FIELD (low-level — use matcha-field quando possível)\r\n// =============================================================================\r\nexport * from './lib/matcha-form-field/matcha-form-field.module';\r\nexport * from './lib/matcha-form-field/matcha-form-field/matcha-form-field.component';\r\nexport * from './lib/matcha-form-field/matcha-label/matcha-label.component';\r\nexport * from './lib/matcha-form-field/matcha-error/matcha-error.component';\r\nexport * from './lib/matcha-form-field/matcha-prefix/matcha-prefix.component';\r\nexport * from './lib/matcha-form-field/matcha-suffix/matcha-suffix.component';\r\n\r\n// =============================================================================\r\n// GRID\r\n// =============================================================================\r\nexport * from './lib/matcha-grid/grid.module';\r\nexport * from './lib/matcha-grid/grid.component';\r\n\r\n// =============================================================================\r\n// HIGHLIGHT\r\n// =============================================================================\r\nexport * from './lib/matcha-highlight/highlight.module';\r\nexport * from './lib/matcha-highlight/highlight.component';\r\nexport * from './lib/matcha-highlight/copy-button/copy-button.component';\r\n\r\n// =============================================================================\r\n// HINT TEXT\r\n// =============================================================================\r\nexport * from './lib/matcha-hint-text/hint.module';\r\nexport * from './lib/matcha-hint-text/hint/hint-text.component';\r\n\r\n// =============================================================================\r\n// ICON\r\n// =============================================================================\r\nexport * from './lib/matcha-icon/icon.module';\r\nexport * from './lib/matcha-icon/icon.component';\r\nexport * from './lib/matcha-icon/figma-icons';\r\nexport * from './lib/matcha-icon/legacy-icon-map';\r\n\r\n// =============================================================================\r\n// BRAND — assets de marca (social, bancos, app-stores, marcas internas)\r\n// =============================================================================\r\nexport * from './lib/matcha-brand/brand.module';\r\nexport * from './lib/matcha-brand/brand.component';\r\nexport * from './lib/matcha-brand/figma-brands';\r\n\r\n// =============================================================================\r\n// BREADCRUMB — trilha de navegação hierárquica (faltava no public-api)\r\n// =============================================================================\r\nexport * from './lib/matcha-breadcrumb/breadcrumb.module';\r\nexport * from './lib/matcha-breadcrumb/breadcrumb/breadcrumb.component';\r\nexport * from './lib/matcha-breadcrumb/breadcrumb-item/breadcrumb-item.component';\r\n\r\n// =============================================================================\r\n// FLAG — bandeiras de país (country) + operadoras de pagamento (payment)\r\n// =============================================================================\r\nexport * from './lib/matcha-flag/flag.module';\r\nexport * from './lib/matcha-flag/flag.component';\r\nexport * from './lib/matcha-flag/figma-flags';\r\n\r\n// =============================================================================\r\n// INFINITE SCROLL\r\n// =============================================================================\r\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll.module';\r\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component';\r\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\r\n\r\n// =============================================================================\r\n// PERIOD\r\n// =============================================================================\r\nexport * from './lib/matcha-period/matcha-period.module';\r\nexport * from './lib/matcha-period/matcha-period.component';\r\nexport * from './lib/matcha-period/matcha-period.types';\r\n\r\n// =============================================================================\r\n// PHONE\r\n// =============================================================================\r\nexport * from './lib/matcha-phone/phone.module';\r\nexport * from './lib/matcha-phone/phone.component';\r\nexport * from './lib/matcha-phone/matcha-phone-countries';\r\n\r\n// =============================================================================\r\n// LAZYLOAD\r\n// =============================================================================\r\nexport * from './lib/matcha-lazyload/lazyload.module';\r\nexport * from './lib/matcha-lazyload/lazyload/lazyload.component';\r\nexport * from './lib/matcha-lazyload/lazyload-data/lazyload-data.component';\r\n\r\n// =============================================================================\r\n// LIST\r\n// =============================================================================\r\nexport * from './lib/matcha-list/list.module';\r\nexport * from './lib/matcha-list/list/list.component';\r\nexport * from './lib/matcha-list/list-item/list-item.component';\r\n\r\n// =============================================================================\r\n// MASK\r\n// =============================================================================\r\nexport * from './lib/matcha-mask/matcha-mask.module';\r\nexport * from './lib/matcha-mask/matcha-mask-compatible.directive';\r\nexport * from './lib/matcha-mask/matcha-mask.pipe';\r\nexport * from './lib/matcha-mask/matcha-mask.service';\r\nexport * from './lib/matcha-mask/matcha-mask-applier.service';\r\nexport * from './lib/matcha-mask/matcha-mask.config';\r\nexport * from './lib/matcha-mask/matcha-mask-expression.enum';\r\n\r\n// =============================================================================\r\n// MASONRY\r\n// =============================================================================\r\nexport * from './lib/matcha-masonry/masonry.module';\r\nexport * from './lib/matcha-masonry/masonry/masonry.component';\r\n\r\n// =============================================================================\r\n// MENU\r\n// =============================================================================\r\nexport * from './lib/matcha-menu/matcha-menu.module';\r\nexport * from './lib/matcha-menu/matcha-menu.component';\r\nexport * from './lib/matcha-menu/matcha-menu-trigger.directive';\r\nexport * from './lib/matcha-menu/matcha-menu-item.directive';\r\nexport * from './lib/matcha-menu/matcha-submenu-trigger.directive';\r\nexport * from './lib/matcha-menu/matcha-action-item.component';\r\nexport * from './lib/matcha-menu/matcha-action-divider.component';\r\n\r\n// =============================================================================\r\n// MODAL\r\n// =============================================================================\r\nexport * from './lib/matcha-modal/matcha-modal.module';\r\nexport * from './lib/matcha-modal/modal/modal.component';\r\nexport * from './lib/matcha-modal/modal-header/modal-header.component';\r\nexport * from './lib/matcha-modal/modal-content/modal-content.component';\r\nexport * from './lib/matcha-modal/modal-footer/modal-footer.component';\r\nexport * from './lib/matcha-modal/modal-options/modal-options.component';\r\nexport * from './lib/matcha-modal/modal.service';\r\nexport * from './lib/matcha-modal/overlay.service';\r\n\r\n// =============================================================================\r\n// MSG BOX\r\n// =============================================================================\r\nexport * from './lib/matcha-msg-box/msg-box.module';\r\nexport * from './lib/matcha-msg-box/msg-box/msg-box.component';\r\nexport * from './lib/matcha-msg-box/msg-box-actions/msg-box-actions.component';\r\n\r\n// =============================================================================\r\n// OPTION\r\n// =============================================================================\r\nexport * from './lib/matcha-option/matcha-option.module';\r\nexport * from './lib/matcha-option/matcha-option.component';\r\nexport * from './lib/matcha-option/matcha-option-parent.interface';\r\n\r\n// =============================================================================\r\n// OVERFLOW DRAGGABLE\r\n// =============================================================================\r\nexport * from './lib/matcha-overflow-draggable/matcha-overflow-draggable.component';\r\n\r\n// =============================================================================\r\n// PAGE BUILDER\r\n// =============================================================================\r\nexport * from './lib/matcha-page-builder/matcha-page-builder.module';\r\nexport * from './lib/matcha-page-builder/matcha-page-builder.component';\r\n\r\n// =============================================================================\r\n// PAGE LAYOUT\r\n// =============================================================================\r\nexport * from './lib/matcha-page-layout/page-layout.module';\r\nexport * from './lib/matcha-page-layout/page-layout.component';\r\nexport * from './lib/matcha-page-layout/page-footer/page-footer.component';\r\n\r\n// =============================================================================\r\n// PAGINATOR\r\n// =============================================================================\r\nexport * from './lib/matcha-paginator/paginator.module';\r\nexport * from './lib/matcha-paginator/paginator/paginator.component';\r\nexport * from './lib/matcha-paginator/paginator/page-event.interface';\r\nexport * from './lib/matcha-paginator/paginator-intl.service';\r\n\r\n// =============================================================================\r\n// PANEL\r\n// =============================================================================\r\nexport * from './lib/matcha-panel/matcha-panel.module';\r\nexport * from './lib/matcha-panel/matcha-panel.component';\r\n\r\n// =============================================================================\r\n// PROGRESS BAR\r\n// =============================================================================\r\nexport * from './lib/matcha-progress-bar/progress-bar.module';\r\nexport * from './lib/matcha-progress-bar/progress-bar/progress-bar.component';\r\n\r\n// =============================================================================\r\n// RADIO\r\n// =============================================================================\r\nexport * from './lib/matcha-radio/radio.module';\r\nexport * from './lib/matcha-radio/radio/radio.component';\r\nexport * from './lib/matcha-radio/radio-group/radio-group.component';\r\n\r\n// =============================================================================\r\n// RIPPLE\r\n// =============================================================================\r\nexport * from './lib/matcha-ripple/ripple.module';\r\nexport * from './lib/matcha-ripple/ripple.directive';\r\n\r\n// =============================================================================\r\n// SELECT\r\n// =============================================================================\r\nexport * from './lib/matcha-select/matcha-select.module';\r\nexport * from './lib/matcha-select/matcha-select.component';\r\nexport * from './lib/matcha-select/matcha-select.directive';\r\n\r\n// =============================================================================\r\n// SELECT MULTIPLE\r\n// =============================================================================\r\nexport * from './lib/matcha-select-multiple/matcha-select-multiple.module';\r\nexport * from './lib/matcha-select-multiple/matcha-select-multiple.component';\r\n\r\n// =============================================================================\r\n// SKELETON\r\n// =============================================================================\r\nexport * from './lib/matcha-skeleton/skeleton.module';\r\nexport * from './lib/matcha-skeleton/skeleton/skeleton.component';\r\n\r\n// =============================================================================\r\n// MSG BOX\r\n// =============================================================================\r\nexport * from './lib/matcha-msg-box/msg-box.module';\r\nexport * from './lib/matcha-msg-box/msg-box/msg-box.component';\r\nexport * from './lib/matcha-msg-box/msg-box-actions/msg-box-actions.component';\r\n\r\n// =============================================================================\r\n// SLIDE TOGGLE\r\n// =============================================================================\r\nexport * from './lib/matcha-slide-toggle/slide-toggle.module';\r\nexport * from './lib/matcha-slide-toggle/slide-toggle/slide-toggle.component';\r\n\r\n// =============================================================================\r\n// SLIDER\r\n// =============================================================================\r\nexport * from './lib/matcha-slider/slider.module';\r\nexport * from './lib/matcha-slider/slider/slider.component';\r\n\r\n// =============================================================================\r\n// SNACK BAR\r\n// =============================================================================\r\nexport * from './lib/matcha-snack-bar/snack-bar.module';\r\nexport * from './lib/matcha-snack-bar/snack-bar/snack-bar.component';\r\nexport * from './lib/matcha-snack-bar/snack-bar.service';\r\n\r\n// =============================================================================\r\n// SPIN\r\n// =============================================================================\r\nexport * from './lib/matcha-spin/spin.module';\r\nexport * from './lib/matcha-spin/spin/spin.component';\r\n\r\n// =============================================================================\r\n// SPINNER\r\n// =============================================================================\r\nexport * from './lib/matcha-spinner/spinner.module';\r\nexport * from './lib/matcha-spinner/spinner/spinner.component';\r\n\r\n// =============================================================================\r\n// STEPPER\r\n// =============================================================================\r\nexport * from './lib/matcha-stepper/stepper.module';\r\nexport * from './lib/matcha-stepper/stepper/stepper.component';\r\nexport * from './lib/matcha-stepper/stepper-content/stepper-content.component';\r\nexport * from './lib/matcha-stepper/stepper-controller/stepper-controller.component';\r\nexport * from './lib/matcha-stepper/step/step.component';\r\nexport * from './lib/matcha-stepper/stepper.service';\r\nexport * from './lib/matcha-stepper/next-step.directive';\r\nexport * from './lib/matcha-stepper/prev-step.directive';\r\n\r\n// =============================================================================\r\n// TABLE\r\n// =============================================================================\r\nexport * from './lib/matcha-table/table.module';\r\nexport * from './lib/matcha-table/table.component';\r\nexport * from './lib/matcha-table/table-sortable-header.directive';\r\nexport * from './lib/matcha-table/table-clickable-row.directive';\r\nexport * from './lib/matcha-table/table-truncate-cell.directive';\r\nexport * from './lib/matcha-table/table-empty-row.directive';\r\nexport * from './lib/matcha-table/table-loading-row.directive';\r\nexport * from './lib/matcha-table/table-resizable-column.directive';\r\nexport * from './lib/matcha-table/table-cell-align.directive';\r\nexport * from './lib/matcha-table/table-selection';\r\n\r\n// =============================================================================\r\n// TABLE CELL (matcha-cell-*) — células canônicas pra <td> do matcha-table\r\n// =============================================================================\r\nexport * from './lib/matcha-table-cell/table-cell.module';\r\nexport * from './lib/matcha-table-cell/identity-cell.component';\r\nexport * from './lib/matcha-table-cell/media-cell.component';\r\nexport * from './lib/matcha-table-cell/status-cell.component';\r\nexport * from './lib/matcha-table-cell/contact-cell.component';\r\nexport * from './lib/matcha-table-cell/action-cell.directive';\r\n\r\n// =============================================================================\r\n// TABS\r\n// =============================================================================\r\nexport * from './lib/matcha-tabs/tabs.module';\r\nexport * from './lib/matcha-tabs/tabs/tabs.component';\r\nexport * from './lib/matcha-tabs/tab-item/tab-item.component';\r\n\r\n// =============================================================================\r\n// TIME\r\n// =============================================================================\r\nexport * from './lib/matcha-time/time.module';\r\nexport * from './lib/matcha-time/time/time.component';\r\nexport * from './lib/matcha-time/time-panel/time-panel.component';\r\n\r\n// =============================================================================\r\n// TITLE\r\n// =============================================================================\r\nexport * from './lib/matcha-title/title.module';\r\nexport * from './lib/matcha-title/title/title.component';\r\n\r\n// =============================================================================\r\n// TEXT (Corpo, Labels, Utilitários — Display/Hero fica de fora, ver conventions.md)\r\n// =============================================================================\r\nexport * from './lib/matcha-text/matcha-text.module';\r\nexport * from './lib/matcha-text/matcha-text.component';\r\n\r\n// =============================================================================\r\n// TOOLBAR (canon DSV3 slot-based · 1:1 Figma 15866:92)\r\n// =============================================================================\r\nexport * from './lib/matcha-toolbar/toolbar.module';\r\nexport * from './lib/matcha-toolbar/toolbar.component';\r\n\r\n// =============================================================================\r\n// TOOLTIP\r\n// =============================================================================\r\nexport * from './lib/matcha-tooltip/tooltip.module';\r\nexport * from './lib/matcha-tooltip/tooltip.directive';\r\n\r\n// =============================================================================\r\n// SECTION (NEW — form section dividers)\r\n// =============================================================================\r\nexport * from './lib/matcha-section/section.module';\r\nexport * from './lib/matcha-section/section.component';\r\n\r\n// =============================================================================\r\n// TEXT EDITOR (NEW — rich text editor wrapper)\r\n// =============================================================================\r\nexport * from './lib/matcha-text-editor/text-editor.module';\r\nexport * from './lib/matcha-text-editor/text-editor/text-editor.component';\r\nexport * from './lib/matcha-text-editor/suneditor/suneditor-config';\r\n\r\n// =============================================================================\r\n// CHART CARD (NEW — dashboard chart wrapper)\r\n// =============================================================================\r\nexport * from './lib/matcha-chart-card/chart-card.module';\r\nexport * from './lib/matcha-chart-card/chart-card.component';\r\n\r\n// =============================================================================\r\n// IMAGE (NEW — responsive image component)\r\n// =============================================================================\r\nexport * from './lib/matcha-image/image.module';\r\nexport * from './lib/matcha-image/image.component';\r\n\r\n// =============================================================================\r\n// CROP (NEW — image cropper)\r\n// =============================================================================\r\nexport * from './lib/matcha-crop/crop.module';\r\nexport * from './lib/matcha-crop/crop.component';\r\n\r\n// =============================================================================\r\n// FOOTER (NEW — app footer bar)\r\n// =============================================================================\r\nexport * from './lib/matcha-footer/footer.module';\r\nexport * from './lib/matcha-footer/footer.component';\r\n\r\n// =============================================================================\r\n// HEADER (NEW — app topbar, 1:1 Figma DSV3 matcha/header)\r\n// =============================================================================\r\nexport * from './lib/matcha-header/header.module';\r\nexport * from './lib/matcha-header/header.component';\r\n\r\n// =============================================================================\r\n// NOTIFICATION (NEW — toast notification)\r\n// =============================================================================\r\nexport * from './lib/matcha-notification/notification.module';\r\nexport * from './lib/matcha-notification/notification.component';\r\n\r\n// =============================================================================\r\n// UPLOADER (NEW — file upload component)\r\n// =============================================================================\r\nexport * from './lib/matcha-file-uploader/file-uploader.module';\r\nexport * from './lib/matcha-file-uploader/file-uploader.component';\r\n\r\n// =============================================================================\r\n// FIELD COLOR (NEW — color picker §39.2)\r\n// =============================================================================\r\nexport * from './lib/matcha-field-color/matcha-field-color.module';\r\nexport * from './lib/matcha-field-color/matcha-field-color.component';\r\n\r\n// =============================================================================\r\n// THUMBNAIL (NEW — image preview com sizes canon §44.10)\r\n// =============================================================================\r\nexport * from './lib/matcha-thumbnail/matcha-thumbnail.module';\r\nexport * from './lib/matcha-thumbnail/matcha-thumbnail.component';\r\n\r\n// =============================================================================\r\n// I18N (NEW — internationalization service, pipe, locales)\r\n// =============================================================================\r\nexport * from './lib/matcha-i18n';\r\n\r\n// =============================================================================\r\n// A11Y (NEW — accessibility utilities, focus trap, announcer)\r\n// =============================================================================\r\nexport * from './lib/matcha-a11y';\r\n\r\n// =============================================================================\r\n// FIELD — specialized form fields matching Figma matcha/field/* (piloto: select)\r\n// =============================================================================\r\nexport * from './lib/matcha-field-select/field-select.module';\r\nexport * from './lib/matcha-field-select/field-select/field-select.component';\r\n\r\n// =============================================================================\r\n// VALIDATORS — funções puras Angular-compatible (CPF, CNPJ, CEP, phone, etc.)\r\n// =============================================================================\r\nexport * from './lib/matcha-validators';\r\n\r\n// =============================================================================\r\n// NAV — sistema de navegação app shell (rail 72 + panel 216 + nav-item + cmd-palette\r\n//       + nav-drawer, a forma da navegação quando não cabe rail + panel)\r\n// =============================================================================\r\nexport * from './lib/matcha-nav/matcha-nav.module';\r\nexport * from './lib/matcha-nav/nav-rail/nav-rail.component';\r\nexport * from './lib/matcha-nav/nav-panel/nav-panel.component';\r\nexport * from './lib/matcha-nav/nav-item/nav-item.component';\r\nexport * from './lib/matcha-nav/nav-drawer/nav-drawer.component';\r\nexport * from './lib/matcha-nav/command-palette/command-palette.component';\r\nexport * from './lib/matcha-nav/shared/nav-tree-keyboard';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatchaDataQaDirective","i2.MatchaCheckboxComponent","_idCounter","SIZE_ALIASES","normalizeSize","i3.MatchaOptionComponent","i4.MatchaPanelComponent","i5.MatchaFormFieldComponent","i6.MatchaLabelComponent","i7.MatchaIconComponent","i8.MatchaDividerComponent","i2","i1.MatchaOverlayService","i1.MatchaDropListService","i2.MatchaDataQaDirective","i3","i1.MatchaDragDirective","i3.MatchaDragDirective","i3.MatchaImageComponent","i4.MatchaTextComponent","i2.MatchaStatusPillComponent","i2.MatchaContactComponent","i1.MatchaI18nService","i4.MatchaFormFieldComponent","i5.MatchaLabelComponent","i6.MatchaErrorComponent","i7.MatchaSelectComponent","i8.MatchaHintTextComponent","map"],"mappings":"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A,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAA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"}