@testgorilla/tgo-ui 4.1.2-beta → 4.1.3-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/autocomplete/autocomplete.component.d.ts +1 -1
- package/components/autocomplete/autocomplete.component.module.d.ts +7 -8
- package/components/autocomplete/index.d.ts +5 -0
- package/components/autocomplete/public-api.d.ts +4 -0
- package/components/avatar/avatar.component.module.d.ts +1 -1
- package/components/avatar/index.d.ts +5 -0
- package/components/avatar/public-api.d.ts +4 -0
- package/components/card/index.d.ts +5 -0
- package/components/card/public-api.d.ts +4 -0
- package/components/checkbox/checkbox.component.d.ts +1 -1
- package/components/checkbox/checkbox.component.module.d.ts +4 -5
- package/components/checkbox/index.d.ts +5 -0
- package/components/checkbox/public-api.d.ts +4 -0
- package/components/core/has-validation-error.pipe.d.ts +15 -0
- package/components/core/keyboard-events.model.d.ts +11 -0
- package/components/core/public-api.d.ts +7 -0
- package/components/core/select-text.directive.d.ts +19 -0
- package/components/datepicker/datepicker.component.module.d.ts +1 -1
- package/components/dropdown/dropdown.component.module.d.ts +2 -3
- package/components/dropdown/index.d.ts +5 -0
- package/components/dropdown/public-api.d.ts +4 -0
- package/components/empty-state/index.d.ts +5 -0
- package/components/empty-state/public-api.d.ts +4 -0
- package/components/field/field.component.d.ts +1 -1
- package/components/field/field.component.module.d.ts +3 -5
- package/components/field/index.d.ts +5 -0
- package/components/field/public-api.d.ts +4 -0
- package/components/file-upload/file-upload.component.module.d.ts +1 -1
- package/components/filter-button/filter-button.component.module.d.ts +3 -3
- package/components/filter-button/index.d.ts +5 -0
- package/components/filter-button/public-api.d.ts +4 -0
- package/components/inline-field/index.d.ts +5 -0
- package/components/inline-field/inline-field.component.d.ts +2 -2
- package/components/inline-field/inline-field.component.module.d.ts +1 -1
- package/components/inline-field/public-api.d.ts +4 -0
- package/components/logo/index.d.ts +5 -0
- package/components/logo/public-api.d.ts +4 -0
- package/components/multi-input/multi-input.component.module.d.ts +5 -6
- package/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.d.ts +1 -1
- package/components/navbar/navbar.component.d.ts +2 -2
- package/components/navbar/navbar.component.module.d.ts +2 -2
- package/components/paginator/index.d.ts +5 -0
- package/components/paginator/public-api.d.ts +3 -0
- package/components/password-criteria/password.component.module.d.ts +2 -2
- package/components/password-strength/password-strength.component.module.d.ts +1 -1
- package/components/phone-input/phone-input.component.module.d.ts +2 -2
- package/components/progress-bar/index.d.ts +5 -0
- package/components/progress-bar/public-api.d.ts +3 -0
- package/components/prompt/prompt.component.d.ts +1 -1
- package/components/prompt/prompt.module.d.ts +3 -3
- package/components/radial-progress/index.d.ts +5 -0
- package/components/radial-progress/public-api.d.ts +4 -0
- package/components/radio-button/index.d.ts +5 -0
- package/components/radio-button/public-api.d.ts +4 -0
- package/components/radio-button/radio-button.component.d.ts +1 -1
- package/components/radio-button/radio-button.component.module.d.ts +1 -1
- package/components/rating/index.d.ts +5 -0
- package/components/rating/public-api.d.ts +3 -0
- package/components/scale/index.d.ts +5 -0
- package/components/scale/public-api.d.ts +3 -0
- package/components/segmented-bar/index.d.ts +5 -0
- package/components/segmented-bar/public-api.d.ts +4 -0
- package/components/segmented-button/index.d.ts +5 -0
- package/components/segmented-button/public-api.d.ts +4 -0
- package/components/selectable-card/selectable-card.component.d.ts +1 -1
- package/components/selectable-card/selectable-card.component.module.d.ts +2 -2
- package/components/side-sheet/side-sheet.component.module.d.ts +1 -1
- package/components/slider/index.d.ts +5 -0
- package/components/slider/public-api.d.ts +4 -0
- package/components/spider-chart/spider-chart.module.d.ts +1 -1
- package/components/spinner/index.d.ts +5 -0
- package/components/spinner/public-api.d.ts +4 -0
- package/components/stepper/stepper.component.module.d.ts +1 -1
- package/components/table/table.component.module.d.ts +1 -1
- package/components/tag/index.d.ts +5 -0
- package/components/tag/public-api.d.ts +4 -0
- package/components/toggle/index.d.ts +5 -0
- package/components/toggle/public-api.d.ts +3 -0
- package/components/toggle/toggle.component.module.d.ts +1 -1
- package/components/universal-skills-report/universal-skills-report.component.module.d.ts +1 -1
- package/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.d.ts +1 -1
- package/components/validation-error/index.d.ts +5 -0
- package/components/validation-error/public-api.d.ts +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +1045 -0
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +173 -0
- package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-card.mjs +164 -0
- package/fesm2022/testgorilla-tgo-ui-components-card.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs +402 -0
- package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-core.mjs +240 -1
- package/fesm2022/testgorilla-tgo-ui-components-core.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +434 -0
- package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +326 -0
- package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-field.mjs +638 -0
- package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +314 -0
- package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +367 -0
- package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-logo.mjs +218 -0
- package/fesm2022/testgorilla-tgo-ui-components-logo.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs +110 -0
- package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs +128 -0
- package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +152 -0
- package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs +373 -0
- package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-rating.mjs +150 -0
- package/fesm2022/testgorilla-tgo-ui-components-rating.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-scale.mjs +158 -0
- package/fesm2022/testgorilla-tgo-ui-components-scale.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs +137 -0
- package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs +128 -0
- package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +274 -0
- package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs +108 -0
- package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-tag.mjs +239 -0
- package/fesm2022/testgorilla-tgo-ui-components-tag.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs +216 -0
- package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs +79 -0
- package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs.map +1 -0
- package/fesm2022/testgorilla-tgo-ui.mjs +3057 -9093
- package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
- package/package.json +99 -7
- package/public-api.d.ts +0 -63
- /package/{directives → components/autocomplete}/select-text.directive.d.ts +0 -0
- /package/{pipes → components/avatar}/name-initials.pipe.d.ts +0 -0
- /package/{utils → components/core}/autocomplete-utils.d.ts +0 -0
- /package/{models → components/core}/checkbox.model.d.ts +0 -0
- /package/{directives → components/core}/digits-only.directive.d.ts +0 -0
- /package/{utils → components/core}/hex-to-rgb.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui.mjs","sources":["../../../projects/tgo-canopy-ui/models/universal-skills-report.model.ts","../../../projects/tgo-canopy-ui/services/universal-skills.service.ts","../../../projects/tgo-canopy-ui/components/accordion/accordion.component.ts","../../../projects/tgo-canopy-ui/components/accordion/accordion.component.html","../../../projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.ts","../../../projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.html","../../../projects/tgo-canopy-ui/pipes/memoize-func.pipe.ts","../../../projects/tgo-canopy-ui/pipes/ui-ordinal-suffix.pipe.ts","../../../projects/tgo-canopy-ui/components/universal-skills-report/universal-skills-report.component.ts","../../../projects/tgo-canopy-ui/components/universal-skills-report/universal-skills-report.component.html","../../../projects/tgo-canopy-ui/components/accordion/accordion.component.module.ts","../../../projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.module.ts","../../../projects/tgo-canopy-ui/components/universal-skills-report/universal-skills-report.component.module.ts","../../../projects/tgo-canopy-ui/utils/alert-bars.utils.ts","../../../projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.ts","../../../projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.html","../../../projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.module.ts","../../../projects/tgo-canopy-ui/components/ai-feedback/ai-feedback.component.ts","../../../projects/tgo-canopy-ui/components/ai-feedback/ai-feedback.component.html","../../../projects/tgo-canopy-ui/components/ai-feedback/ai-feedback.module.ts","../../../projects/tgo-canopy-ui/components/card/card.component.ts","../../../projects/tgo-canopy-ui/components/card/card.component.html","../../../projects/tgo-canopy-ui/components/card/card.component.module.ts","../../../projects/tgo-canopy-ui/components/validation-error/validation-error.component.ts","../../../projects/tgo-canopy-ui/components/validation-error/validation-error.component.html","../../../projects/tgo-canopy-ui/pipes/has-validation-error.pipe.ts","../../../projects/tgo-canopy-ui/components/checkbox/checkbox.component.ts","../../../projects/tgo-canopy-ui/components/checkbox/checkbox.component.html","../../../projects/tgo-canopy-ui/components/selectable-card/selectable-card.component.ts","../../../projects/tgo-canopy-ui/components/selectable-card/selectable-card.component.html","../../../projects/tgo-canopy-ui/components/validation-error/validation-error.module.ts","../../../projects/tgo-canopy-ui/components/checkbox/focus-visible.directive.ts","../../../projects/tgo-canopy-ui/components/checkbox/checkbox.component.module.ts","../../../projects/tgo-canopy-ui/components/selectable-card/selectable-card.component.module.ts","../../../projects/tgo-canopy-ui/components/dialog/dialog.component.ts","../../../projects/tgo-canopy-ui/components/dialog/dialog.component.html","../../../projects/tgo-canopy-ui/components/dialog/dialog.service.ts","../../../projects/tgo-canopy-ui/components/dialog/dialog.component.module.ts","../../../projects/tgo-canopy-ui/components/media-dialog/media-dialog.component.ts","../../../projects/tgo-canopy-ui/components/media-dialog/media-dialog.component.html","../../../projects/tgo-canopy-ui/components/donut-chart/donut-chart.component.ts","../../../projects/tgo-canopy-ui/components/donut-chart/donut-chart.component.html","../../../projects/tgo-canopy-ui/components/donut-chart/donut-chart.component.module.ts","../../../projects/tgo-canopy-ui/directives/digits-only.directive.ts","../../../projects/tgo-canopy-ui/components/field/field.component.ts","../../../projects/tgo-canopy-ui/components/field/field.component.html","../../../projects/tgo-canopy-ui/components/field/field.component.module.ts","../../../projects/tgo-canopy-ui/components/inline-field/inline-field.component.ts","../../../projects/tgo-canopy-ui/components/inline-field/inline-field.component.html","../../../projects/tgo-canopy-ui/components/inline-field/inline-field.component.module.ts","../../../projects/tgo-canopy-ui/models/colors.model.ts","../../../projects/tgo-canopy-ui/directives/drag-drop.directive.ts","../../../projects/tgo-canopy-ui/components/file-upload/file-upload.component.ts","../../../projects/tgo-canopy-ui/components/file-upload/file-upload.component.html","../../../projects/tgo-canopy-ui/components/file-upload/file-upload.component.module.ts","../../../projects/tgo-canopy-ui/components/icon-label/icon-label.component.ts","../../../projects/tgo-canopy-ui/components/icon-label/icon-label.component.html","../../../projects/tgo-canopy-ui/components/icon-label/icon-label.component.module.ts","../../../projects/tgo-canopy-ui/components/logo/logo.model.ts","../../../projects/tgo-canopy-ui/components/logo/logo.component.ts","../../../projects/tgo-canopy-ui/components/logo/logo.component.html","../../../projects/tgo-canopy-ui/components/logo/logo.component.module.ts","../../../projects/tgo-canopy-ui/components/avatar/avatar.model.ts","../../../projects/tgo-canopy-ui/pipes/name-initials.pipe.ts","../../../projects/tgo-canopy-ui/components/avatar/avatar.component.ts","../../../projects/tgo-canopy-ui/components/avatar/avatar.component.html","../../../projects/tgo-canopy-ui/components/avatar/avatar.component.module.ts","../../../projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.ts","../../../projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.html","../../../projects/tgo-canopy-ui/models/screen-breakpoints.model.ts","../../../projects/tgo-canopy-ui/components/side-sheet/side-sheet.service.ts","../../../projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.ts","../../../projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.html","../../../projects/tgo-canopy-ui/components/navbar/navbar.component.ts","../../../projects/tgo-canopy-ui/components/navbar/navbar.component.html","../../../projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.module.ts","../../../projects/tgo-canopy-ui/components/navbar/navbar.component.module.ts","../../../projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.ts","../../../projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.html","../../../projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.module.ts","../../../projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.ts","../../../projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.html","../../../projects/tgo-canopy-ui/models/keyboard-events.model.ts","../../../projects/tgo-canopy-ui/components/tag/tag.component.ts","../../../projects/tgo-canopy-ui/components/tag/tag.component.html","../../../projects/tgo-canopy-ui/components/prompt/prompt.component.ts","../../../projects/tgo-canopy-ui/components/prompt/prompt.component.html","../../../projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.module.ts","../../../projects/tgo-canopy-ui/components/tag/tag.component.module.ts","../../../projects/tgo-canopy-ui/components/prompt/prompt.module.ts","../../../projects/tgo-canopy-ui/components/radio-button/radio-button.component.ts","../../../projects/tgo-canopy-ui/components/radio-button/radio-button.component.html","../../../projects/tgo-canopy-ui/components/radio-button/radio-button.component.module.ts","../../../projects/tgo-canopy-ui/components/snackbar/snackbar.component.ts","../../../projects/tgo-canopy-ui/components/snackbar/snackbar.component.html","../../../projects/tgo-canopy-ui/components/snackbar/snackbar.service.ts","../../../projects/tgo-canopy-ui/components/snackbar/snackbar.component.module.ts","../../../projects/tgo-canopy-ui/pipes/data-property-getter.ts","../../../projects/tgo-canopy-ui/utils/color-contrast.ts","../../../projects/tgo-canopy-ui/components/dropdown/dropdown.component.ts","../../../projects/tgo-canopy-ui/components/dropdown/dropdown.component.html","../../../projects/tgo-canopy-ui/components/dropdown/dropdown.component.module.ts","../../../projects/tgo-canopy-ui/components/spinner/spinner.component.ts","../../../projects/tgo-canopy-ui/components/spinner/spinner.component.html","../../../projects/tgo-canopy-ui/components/spinner/spinner.module.ts","../../../projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.ts","../../../projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.html","../../../projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.module.ts","../../../projects/tgo-canopy-ui/components/datepicker/datepicker.service.ts","../../../projects/tgo-canopy-ui/components/datepicker/date-adapter.ts","../../../projects/tgo-canopy-ui/components/datepicker/no-date-format.directive.ts","../../../projects/tgo-canopy-ui/components/datepicker/datepicker.component.ts","../../../projects/tgo-canopy-ui/components/datepicker/datepicker.component.html","../../../projects/tgo-canopy-ui/components/datepicker/datepicker.component.module.ts","../../../projects/tgo-canopy-ui/components/rating/half-star.pipe.ts","../../../projects/tgo-canopy-ui/components/rating/rating.component.ts","../../../projects/tgo-canopy-ui/components/rating/rating.component.html","../../../projects/tgo-canopy-ui/components/rating/rating.component.module.ts","../../../projects/tgo-canopy-ui/utils/hex-to-rgb.ts","../../../projects/tgo-canopy-ui/components/scale/scale.component.ts","../../../projects/tgo-canopy-ui/components/scale/scale.component.html","../../../projects/tgo-canopy-ui/components/scale/scale.component.module.ts","../../../projects/tgo-canopy-ui/components/scale-table/scale-table.component.ts","../../../projects/tgo-canopy-ui/components/scale-table/scale-table.component.html","../../../projects/tgo-canopy-ui/components/toggle/toggle.component.ts","../../../projects/tgo-canopy-ui/components/toggle/toggle.component.html","../../../projects/tgo-canopy-ui/components/toggle/toggle.component.module.ts","../../../projects/tgo-canopy-ui/providers/is-mobile.ts","../../../projects/tgo-canopy-ui/providers/is-large-tablet.ts","../../../projects/tgo-canopy-ui/components/step/step.component.ts","../../../projects/tgo-canopy-ui/components/step/step.component.html","../../../projects/tgo-canopy-ui/components/radial-progress/radial-progress.model.ts","../../../projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.ts","../../../projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.html","../../../projects/tgo-canopy-ui/directives/step-line-element.directive.ts","../../../projects/tgo-canopy-ui/components/stepper/stepper.component.ts","../../../projects/tgo-canopy-ui/components/stepper/stepper.component.html","../../../projects/tgo-canopy-ui/components/step/step.component.module.ts","../../../projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.module.ts","../../../projects/tgo-canopy-ui/components/stepper/stepper.component.module.ts","../../../projects/tgo-canopy-ui/utils/autocomplete-utils.ts","../../../projects/tgo-canopy-ui/components/autocomplete/autocomplete.model.ts","../../../projects/tgo-canopy-ui/components/autocomplete/prevent-input.directive.ts","../../../projects/tgo-canopy-ui/directives/select-text.directive.ts","../../../projects/tgo-canopy-ui/components/autocomplete/transform-Item.pipe.ts","../../../projects/tgo-canopy-ui/components/autocomplete/includes.pipe.ts","../../../projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.ts","../../../projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.html","../../../projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.module.ts","../../../projects/tgo-canopy-ui/components/empty-state/empty-state.component.ts","../../../projects/tgo-canopy-ui/components/empty-state/empty-state.component.html","../../../projects/tgo-canopy-ui/components/empty-state/empty-state.component.module.ts","../../../projects/tgo-canopy-ui/components/table/table.model.ts","../../../projects/tgo-canopy-ui/utils/table.utils.ts","../../../projects/tgo-canopy-ui/components/paginator/paginator.component.ts","../../../projects/tgo-canopy-ui/components/paginator/paginator.component.html","../../../projects/tgo-canopy-ui/directives/dynamic-component.directive.ts","../../../projects/tgo-canopy-ui/components/table/sentence-case.pipe.ts","../../../projects/tgo-canopy-ui/components/table/table.component.ts","../../../projects/tgo-canopy-ui/components/table/table.component.html","../../../projects/tgo-canopy-ui/components/paginator/paginator.component.module.ts","../../../projects/tgo-canopy-ui/components/table/table.component.module.ts","../../../projects/tgo-canopy-ui/components/slider/slider.component.ts","../../../projects/tgo-canopy-ui/components/slider/slider.component.html","../../../projects/tgo-canopy-ui/components/slider/slider.component.module.ts","../../../projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.ts","../../../projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.html","../../../projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.module.ts","../../../projects/tgo-canopy-ui/components/page-header/page-header.component.ts","../../../projects/tgo-canopy-ui/components/page-header/page-header.component.html","../../../projects/tgo-canopy-ui/components/page-header/page-header.component.module.ts","../../../projects/tgo-canopy-ui/components/tabs/tabs.component.ts","../../../projects/tgo-canopy-ui/components/tabs/tabs.component.html","../../../projects/tgo-canopy-ui/components/tabs/tab.directive.ts","../../../projects/tgo-canopy-ui/components/tabs/tabs.component.module.ts","../../../projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.ts","../../../projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.html","../../../projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.module.ts","../../../projects/tgo-canopy-ui/components/password-criteria/password.component.ts","../../../projects/tgo-canopy-ui/components/password-criteria/password.component.html","../../../projects/tgo-canopy-ui/components/password-criteria/password.component.module.ts","../../../projects/tgo-canopy-ui/components/phone-input/join-strings.pipe.ts","../../../projects/tgo-canopy-ui/components/phone-input/phone-input.component.ts","../../../projects/tgo-canopy-ui/components/phone-input/phone-input.component.html","../../../projects/tgo-canopy-ui/components/phone-input/phone-input.component.module.ts","../../../projects/tgo-canopy-ui/components/password-strength/password-strength.component.ts","../../../projects/tgo-canopy-ui/components/password-strength/password-strength.component.html","../../../projects/tgo-canopy-ui/components/password-strength/password-strength.component.module.ts","../../../projects/tgo-canopy-ui/components/multi-input/required-multi-input.validator.ts","../../../projects/tgo-canopy-ui/components/multi-input/multi-input.component.ts","../../../projects/tgo-canopy-ui/components/multi-input/multi-input.component.html","../../../projects/tgo-canopy-ui/components/multi-input/multi-input.component.module.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel-data-injection-token.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.model.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.animations.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.service.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.component.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.component.html","../../../projects/tgo-canopy-ui/components/spider-chart/spider-chart.model.ts","../../../projects/tgo-canopy-ui/components/spider-chart/spider-chart.component.ts","../../../projects/tgo-canopy-ui/components/spider-chart/spider-chart.component.html","../../../projects/tgo-canopy-ui/components/spider-chart/spider-chart.module.ts","../../../projects/tgo-canopy-ui/components/checklist/checklist.component.ts","../../../projects/tgo-canopy-ui/components/checklist/checklist.component.html","../../../projects/tgo-canopy-ui/components/media-card/media-card.component.ts","../../../projects/tgo-canopy-ui/components/media-card/media-card.component.html","../../../projects/tgo-canopy-ui/components/gaussian-chart/gaussian-chart.component.ts","../../../projects/tgo-canopy-ui/components/gaussian-chart/gaussian-chart.component.html","../../../projects/tgo-canopy-ui/components/gaussian-chart/gaussian-chart.module.ts","../../../projects/tgo-canopy-ui/components/universal-skills-spider-charts/universal-skills-spider-charts.component.ts","../../../projects/tgo-canopy-ui/components/universal-skills-spider-charts/universal-skills-spider-charts.component.html","../../../projects/tgo-canopy-ui/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.ts","../../../projects/tgo-canopy-ui/components/filter-button/filter-button.component.ts","../../../projects/tgo-canopy-ui/components/filter-button/filter-button.component.html","../../../projects/tgo-canopy-ui/components/filter-button/filter-button.component.module.ts","../../../projects/tgo-canopy-ui/pipes/truncate.pipe.ts","../../../projects/tgo-canopy-ui/components/breadcrumb/breadcrumb.component.ts","../../../projects/tgo-canopy-ui/components/breadcrumb/breadcrumb.component.html","../../../projects/tgo-canopy-ui/components/breadcrumb/breadcrumb.component.module.ts","../../../projects/tgo-canopy-ui/public-api.ts","../../../projects/tgo-canopy-ui/testgorilla-tgo-ui.ts"],"sourcesContent":["import { SpiderChartData } from '../components/spider-chart/spider-chart.model';\n\nexport interface SkillAreaGroup {\n title: string;\n description: string;\n skillAreaList: SkillAreaData[];\n}\n\nexport interface SkillAreaSpiderChartData {\n title: string;\n description: string;\n spiderChartData: SpiderChartData;\n}\n\nexport interface SkillAreaData {\n percentileScoring: number;\n poolPercentileScoring?: number;\n skillAreaName: SkillAreaTypes;\n}\n\n//TODO Update this model after backend/endpoint definitions\nexport enum SkillAreaGroupTypes {\n FocusingOnObjectives = 1,\n WorkingWithPeople = 2,\n ManagingOnesSelf = 3,\n}\n\n//TODO Update this model after backend/endpoint definitions\nexport enum SkillAreaTypes {\n BusinessSavvy = 'BUSINESS_SAVVY',\n StrategicPerspective = 'STRATEGIC_PERSPECTIVE',\n CustomerFocus = 'CUSTOMER_FOCUS',\n NavigatingComplexity = 'NAVIGATING_COMPLEXITY',\n AgileDecisionMaking = 'AGILE_DECISION_MAKING',\n EmbracingInnovation = 'EMBRACING_INNOVATION',\n PlanningAndPrioritizing = 'PLANNING_AND_PRIORITIZING',\n OrganizingResources = 'ORGANIZING_RESOURCES',\n DrivingResults = 'DRIVING_RESULTS',\n\n WorkingCollaboratively = 'WORKING_COLLABORATIVELY',\n SocialAgility = 'SOCIAL_AGILITY',\n CommunicatingEffectively = 'COMMUNICATING_EFFECTIVELY',\n HandlingConflict = 'HANDLING_CONFLICT',\n ValuingDiversity = 'VALUING_DIVERSITY',\n DevelopingOthers = 'DEVELOPING_OTHERS',\n\n ShowingResilience = 'SHOWING_RESILIENCE',\n NavigatingAmbiguity = 'NAVIGATING_AMBIGUITY',\n SelfAwareness = 'SELF_AWARENESS',\n SelfDevelopment = 'SELF_DEVELOPMENT',\n BeingBold = 'BEING_BOLD',\n EarningTrust = 'EARNING_TRUST',\n}\n","import { Injectable } from '@angular/core';\nimport {\n SkillAreaData,\n SkillAreaGroup,\n SkillAreaGroupTypes,\n SkillAreaTypes,\n} from '../models/universal-skills-report.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UniversalSkillsService {\n readonly translationContext = 'UNIVERSAL_SKILLS_REPORT.';\n\n private skillAreaGroupMap: Record<SkillAreaGroupTypes, SkillAreaGroup>;\n private staticSkillAreaGroupMap: SkillAreaTypes[][] = [\n [\n SkillAreaTypes.BusinessSavvy,\n SkillAreaTypes.StrategicPerspective,\n SkillAreaTypes.CustomerFocus,\n SkillAreaTypes.NavigatingComplexity,\n SkillAreaTypes.AgileDecisionMaking,\n SkillAreaTypes.EmbracingInnovation,\n SkillAreaTypes.PlanningAndPrioritizing,\n SkillAreaTypes.OrganizingResources,\n SkillAreaTypes.DrivingResults,\n ],\n [\n SkillAreaTypes.WorkingCollaboratively,\n SkillAreaTypes.SocialAgility,\n SkillAreaTypes.CommunicatingEffectively,\n SkillAreaTypes.HandlingConflict,\n SkillAreaTypes.ValuingDiversity,\n SkillAreaTypes.DevelopingOthers,\n ],\n [\n SkillAreaTypes.ShowingResilience,\n SkillAreaTypes.NavigatingAmbiguity,\n SkillAreaTypes.SelfAwareness,\n SkillAreaTypes.SelfDevelopment,\n SkillAreaTypes.EarningTrust,\n SkillAreaTypes.BeingBold,\n ],\n ];\n\n initializeSkillAreaGroupMap(): void {\n this.skillAreaGroupMap = {\n [SkillAreaGroupTypes.FocusingOnObjectives]: {\n title: `${this.translationContext}SKILL_AREA_GROUP_TYPES.FOCUSING_ON_OBJECTIVES.TITLE`,\n description: `${this.translationContext}SKILL_AREA_GROUP_TYPES.FOCUSING_ON_OBJECTIVES.DESCRIPTION`,\n skillAreaList: [],\n },\n [SkillAreaGroupTypes.WorkingWithPeople]: {\n title: `${this.translationContext}SKILL_AREA_GROUP_TYPES.WORKING_WITH_PEOPLE.TITLE`,\n description: `${this.translationContext}SKILL_AREA_GROUP_TYPES.WORKING_WITH_PEOPLE.DESCRIPTION`,\n skillAreaList: [],\n },\n [SkillAreaGroupTypes.ManagingOnesSelf]: {\n title: `${this.translationContext}SKILL_AREA_GROUP_TYPES.MANAGING_ONES_SELF.TITLE`,\n description: `${this.translationContext}SKILL_AREA_GROUP_TYPES.MANAGING_ONES_SELF.DESCRIPTION`,\n skillAreaList: [],\n },\n };\n }\n\n prepareSkillAreaGroupMap(skillAreaDataList: SkillAreaData[]): void {\n skillAreaDataList?.forEach(currentItem => {\n const formattedSkillAreaType = currentItem.skillAreaName;\n\n if (this.staticSkillAreaGroupMap[0].includes(formattedSkillAreaType)) {\n this.skillAreaGroupMap[SkillAreaGroupTypes.FocusingOnObjectives]?.skillAreaList?.push(currentItem);\n }\n\n if (this.staticSkillAreaGroupMap[1].includes(formattedSkillAreaType)) {\n this.skillAreaGroupMap[SkillAreaGroupTypes.WorkingWithPeople]?.skillAreaList?.push(currentItem);\n }\n\n if (this.staticSkillAreaGroupMap[2].includes(formattedSkillAreaType)) {\n this.skillAreaGroupMap[SkillAreaGroupTypes.ManagingOnesSelf]?.skillAreaList?.push(currentItem);\n }\n });\n }\n\n getSkillAreaGroupMap(): Record<SkillAreaGroupTypes, SkillAreaGroup> {\n return this.skillAreaGroupMap;\n }\n\n getStaticSkillAreaGroupMap(): SkillAreaTypes[][] {\n return this.staticSkillAreaGroupMap;\n }\n}\n","import { booleanAttribute, Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { AccordionVariant, ToggleIconPosition } from './accordion.model';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\n@Component({\n selector: 'ui-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n standalone: false\n})\nexport class AccordionComponent {\n /**\n * The label displayed for the accordion.\n * @type {string}\n * @required\n * @memberof AccordionComponent\n */\n @Input({ required: true }) label: string;\n\n /**\n * Determines whether the accordion is initially open.\n * @type {boolean}\n * @default false\n * @memberof AccordionComponent\n */\n @Input({ transform: booleanAttribute }) open = false;\n\n /**\n * Disables the accordion if set to true.\n * @type {boolean}\n * @default false\n * @memberof AccordionComponent\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * Indicates whether to show a premium icon.\n * @type {boolean}\n * @default false\n * @memberof AccordionComponent\n */\n @Input({ transform: booleanAttribute }) showPremiumIcon = false;\n\n /**\n * The tooltip text for the premium icon.\n * @type {string}\n * @default ''\n * @memberof AccordionComponent\n */\n @Input() premiumTooltipText = '';\n\n /**\n *\n * Defines the application theme where accordion is used\n *\n * @type {ApplicationTheme}\n * @memberof AccordionComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Changed premium icon on this icon\n *\n * @type {IconName}\n * @memberof AccordionComponent\n */\n @Input() labelIcon: IconName;\n\n /**\n *\n * Select accordion variant. Don`t work on Classic theme\n *\n * @type {AccordionVariant}\n * @memberof AccordionComponent\n */\n @Input() variant: AccordionVariant = 'standard';\n\n /**\n *\n * Projects content with attribute 'customHeader'\n *\n * @type {boolean}\n * @memberof AccordionComponent\n */\n @Input() allowCustomHeader: boolean = false;\n\n /**\n *\n * Sets background color of content to none\n *\n * @type {boolean}\n * @memberof AccordionComponent\n */\n @Input() noBackgroundColor: boolean = false;\n\n /**\n *\n * Defines the toggle icon position\n *\n * @type {boolean}\n * @memberof AccordionComponent\n */\n @Input() toggleIconPosition: ToggleIconPosition = 'right';\n\n @Output() closed = new EventEmitter<void>();\n @Output() opened = new EventEmitter<void>();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n protected toggle(open: boolean): void {\n this.open = open;\n\n if (this.open) {\n this.opened.emit();\n } else {\n this.closed.emit();\n }\n }\n}\n","<mat-accordion class=\"accordion-wrapper\" [class.disabled]=\"disabled\" [ngClass]=\"variant\" [attr.theme]=\"applicationTheme\">\n <mat-expansion-panel [expanded]=\"open\"\n [class.bgcolor-none]=\"noBackgroundColor\"\n (opened)=\"toggle(true)\"\n (closed)=\"toggle(false)\">\n <mat-expansion-panel-header\n [tabIndex]=\"disabled ? -1 : 0\"\n [class.custom-height]=\"allowCustomHeader\"\n [class.left-toggle]=\"toggleIconPosition === 'left'\"\n [attr.aria-label]=\"label\"\n >\n <mat-panel-title *ngIf=\"!allowCustomHeader; else customHeader\">\n <div *ngIf=\"variant === 'table' && applicationTheme !== 'classic'; else default\" class=\"table-container\">\n <ui-icon [size]=\"'24'\" [ngClass]=\"{ open }\" [name]=\"'Arrow-chevron-down-filled'\"></ui-icon>\n <div class=\"accordion-label\">\n {{ label }}\n </div>\n </div>\n <ng-template #default>\n <div class=\"accordion-label\">\n {{ label }}\n <ng-content select=\"[subHeader]\"></ng-content>\n <ui-icon\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"premiumTooltipText\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"labelIcon ? labelIcon : applicationTheme === 'classic' ? 'Premium' : 'Premium-circle-in-line'\"\n *ngIf=\"showPremiumIcon || labelIcon\"\n ></ui-icon>\n </div>\n </ng-template>\n </mat-panel-title>\n <ng-template #customHeader>\n <ng-content select=\"[customHeader]\"></ng-content>\n </ng-template>\n <mat-panel-description>\n <div class=\"accordion-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <ng-content></ng-content>\n </mat-expansion-panel>\n</mat-accordion>\n","import { ChangeDetectionStrategy, Component, HostBinding, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { ProgressBarMode } from '@angular/material/progress-bar';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\n@Component({\n selector: 'ui-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ProgressBarComponent implements OnInit {\n /**\n * Color of the progress bar.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof ProgressBarComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null;\n\n /**\n * Progress value of the progress bar.\n * Defaults to zero.\n *\n * @type {number}\n * @memberof ProgressBarComponent\n */\n @Input() progress = 0;\n\n /**\n * Mode of the progress bar.\n * Mode must be one of these values: determinate, indeterminate, buffer, query.\n * Defaults to 'determinate'.\n *\n * @type {ProgressBarMode}\n * @memberof ProgressBarComponent\n */\n @Input() mode: ProgressBarMode = 'determinate';\n\n /**\n * Buffer value of the progress bar.\n * Defaults to zero.\n *\n * @type {number}\n * @memberof ProgressBarComponent\n */\n @Input() buffer = 0;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof ProgressBarComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ProgressBarComponent\n */\n @Input() ariaLabel = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ProgressBarComponent\n */\n @Input() ariaDescribedBy = '';\n\n /**\n * Shows the percentage amount\n * @property showPercentage\n * @type {boolean}\n * @memberof ProgressBarComponent\n */\n @Input() showPercentage = false;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n if (!this.companyColor) {\n this.companyColor = this.applicationTheme === 'classic' ? '#46A997' : '#D410AA';\n }\n }\n}\n","@if (showPercentage) {\n <div class=\"percentage\">{{ progress }}%</div>\n}\n\n<mat-progress-bar\n [mode]=\"mode\"\n [value]=\"progress\"\n [bufferValue]=\"buffer\"\n title=\"progress-bar\"\n class=\"progress-bar\"\n [attr.theme]=\"applicationTheme\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-live]=\"'polite'\"\n [attr.aria-describedby]=\"'describedBy'\"\n>\n</mat-progress-bar>\n<div style=\"position: absolute; left: -9999px\" role=\"alert\" *ngIf=\"mode === 'indeterminate'\">\n {{ 'COMMON.LOADING' | uiTranslate | async }}\n</div>\n<div style=\"display: none\" id=\"describedBy\">\n {{ ariaDescribedBy }}\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * USAGE:\n * {{ argument | memoizeFunc : method [: context] }}\n *\n * You could provide multiple arguments for the function like that:\n * {{ [argument1, argument2] | memoizeFunc : method [: context] }}\n *\n *\n * FUNCTION WITH CONTEXT\n * We still could have optimization in impure functions with Angular pipes. Just provide context as second parameter\n * to the memoizeFunc pipe.\n *\n * {{ argument | memoizeFunc : method : this }}\n *\n * Alternative variant use 'bind'\n *\n * {{ argument | memoizeFunc : method.bind(this) }}\n *\n * */\n@Pipe({\n name: 'memoizeFunc',\n standalone: true,\n})\nexport class MemoizeFuncPipe implements PipeTransform {\n transform<T, K>(value: T, handler: (value: T) => K, context?: any): K {\n if (context) {\n return handler.call(context, value);\n }\n\n return handler(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ordinalSuffix',\n standalone: true,\n})\nexport class OrdinalSuffixPipe implements PipeTransform {\n\n transform(value: number): string {\n const lastDigit = value % 10;\n const lastTwoDigits = value % 100;\n\n if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {\n return 'PERCENTILE_SUFFIXES.TH';\n }\n\n switch (lastDigit) {\n case 1:\n return 'PERCENTILE_SUFFIXES.ST';\n case 2:\n return 'PERCENTILE_SUFFIXES.ND';\n case 3:\n return 'PERCENTILE_SUFFIXES.RD';\n default:\n return 'PERCENTILE_SUFFIXES.TH';\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { RebrandBadgeColor, RebrandBadgeColorEnum } from '@testgorilla/tgo-ui/components/badge';\nimport { SkillAreaData, SkillAreaGroup, SkillAreaGroupTypes } from '../../models/universal-skills-report.model';\nimport { UniversalSkillsService } from '../../services/universal-skills.service';\n\n@Component({\n selector: 'ui-universal-skills-report',\n templateUrl: './universal-skills-report.component.html',\n styleUrls: ['./universal-skills-report.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class UniversalSkillsReportComponent implements OnInit {\n /**\n * Defines the application theme\n * @property applicationTheme\n * @type {ApplicationTheme}\n * @memberof UniversalSkillsReportComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * The list of items to be used\n * @property items\n * @type {SkillAreaData[]}\n * @memberof UniversalSkillsReportComponent\n */\n @Input() skillAreaDataList: SkillAreaData[];\n\n readonly translationContext = 'UNIVERSAL_SKILLS_REPORT.';\n\n skillAreaGroupMap: Record<SkillAreaGroupTypes, SkillAreaGroup>;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private universalSkillsService: UniversalSkillsService\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n this.universalSkillsService.initializeSkillAreaGroupMap();\n this.universalSkillsService.prepareSkillAreaGroupMap(this.skillAreaDataList);\n this.skillAreaGroupMap = this.universalSkillsService.getSkillAreaGroupMap();\n }\n\n getScoreBadgeLabel(percentileScoring: number): string {\n return `PERCENTILE_LABEL_TYPES.${this.checkScoreClassification([percentileScoring, true])}`;\n }\n\n getScoreBadgeColor(percentileScoring: number): RebrandBadgeColor {\n return this.checkScoreClassification([percentileScoring, false]) as RebrandBadgeColor;\n }\n\n checkScoreClassification([percentileScoring, isLabelRequest]: [number, boolean]): string | RebrandBadgeColor {\n let scoreBadgeLabel = '';\n let scoreBadgeColor: RebrandBadgeColor = RebrandBadgeColorEnum.BLUE_10;\n\n if (percentileScoring >= 1 && percentileScoring <= 19) {\n scoreBadgeLabel = 'WELL_BELOW_AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.GREY_30;\n }\n\n if (percentileScoring >= 20 && percentileScoring <= 39) {\n scoreBadgeLabel = 'BELOW_AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.GREY_10;\n }\n\n if (percentileScoring >= 40 && percentileScoring <= 59) {\n scoreBadgeLabel = 'AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.BLUE_10;\n }\n\n if (percentileScoring >= 60 && percentileScoring <= 79) {\n scoreBadgeLabel = 'ABOVE_AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.BLUE_20;\n }\n\n if (percentileScoring >= 80 && percentileScoring <= 100) {\n scoreBadgeLabel = 'WELL_ABOVE_AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.BLUE_40;\n }\n\n return isLabelRequest ? scoreBadgeLabel : scoreBadgeColor;\n }\n}\n","<div\n *ngFor=\"let skillAreaGroup of skillAreaGroupMap | keyvalue\"\n class=\"universal-skills-report\"\n>\n <section class=\"title-and-info\">\n <h4>{{skillAreaGroup.value.title | uiTranslate | async}}</h4>\n <span>{{skillAreaGroup.value.description | uiTranslate | async}}</span>\n </section>\n\n <section class=\"accordion-items\">\n <ui-accordion\n *ngFor=\"let skillAreaData of skillAreaGroup?.value?.skillAreaList\"\n class=\"universal-skills-accordion\"\n label=\"-\"\n [allowCustomHeader]=\"true\"\n >\n <div\n customHeader\n class=\"custom-header\"\n >\n <h4 class=\"custom-header-subtitle\">{{ (translationContext + 'SKILL_AREA_TYPES.' + skillAreaData.skillAreaName + '.TITLE') | uiTranslate | async}}</h4>\n\n <div class=\"inner-container\">\n <ui-badge\n class=\"percentile-scoring-badge\"\n [label]=\"((skillAreaData.percentileScoring | memoizeFunc : getScoreBadgeLabel : this) | uiTranslate | async) || 'neutral'\"\n [rebrandColor]=\"skillAreaData.percentileScoring | memoizeFunc : getScoreBadgeColor : this\"\n [applicationTheme]=\"'light'\"\n ></ui-badge>\n\n <h5 class=\"percentile-quantity\">\n {{skillAreaData?.percentileScoring}}\n <sup class=\"percentile-suffix\">{{(skillAreaData.percentileScoring | ordinalSuffix) | uiTranslate | async}}</sup>\n {{(translationContext + 'PERCENTILE') | uiTranslate | async}}\n </h5>\n\n <ui-progress-bar\n class=\"percentile-scoring-bar\"\n mode=\"determinate\"\n [progress]=\"skillAreaData.percentileScoring\"\n ></ui-progress-bar>\n </div>\n </div>\n\n <div class=\"content-container\">\n <p class=\"skill-description\">{{ (translationContext + 'SKILL_AREA_TYPES.' + skillAreaData.skillAreaName + '.DESCRIPTION') | uiTranslate | async}}</p>\n\n <h5>{{(skillAreaData.percentileScoring | memoizeFunc : getScoreBadgeLabel : this) | uiTranslate | async}} score</h5>\n\n <div class=\"inner-container\">\n <p>{{ (translationContext +\n 'SKILL_AREA_TYPES.' +\n skillAreaData.skillAreaName + '.' +\n ([skillAreaData.percentileScoring, true] | memoizeFunc : checkScoreClassification : this) +\n '.GENERAL')\n | uiTranslate | async}}</p>\n </div>\n\n <div class=\"inner-container\">\n <p>{{ (translationContext +\n 'SKILL_AREA_TYPES.' +\n skillAreaData.skillAreaName + '.' +\n ([skillAreaData.percentileScoring, true] | memoizeFunc : checkScoreClassification : this) +\n '.WORK_ENVIRONMENT')\n | uiTranslate | async}}</p>\n </div>\n\n <div class=\"inner-container\">\n <p>{{ (translationContext +\n 'SKILL_AREA_TYPES.' +\n skillAreaData.skillAreaName + '.' +\n ([skillAreaData.percentileScoring, true] | memoizeFunc : checkScoreClassification : this) +\n '.RECOMMENDATIONS')\n | uiTranslate | async}}</p>\n </div>\n </div>\n </ui-accordion>\n </section>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccordionComponent } from './accordion.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { MatExpansionModule } from \"@angular/material/expansion\";\n\n\n\n@NgModule({\n declarations: [\n AccordionComponent\n ],\n exports: [\n AccordionComponent\n ],\n imports: [\n CommonModule,\n IconComponentModule,\n ButtonComponentModule,\n MatTooltipModule,\n MatExpansionModule\n ]\n})\nexport class AccordionComponentModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { ProgressBarComponent } from './progress-bar.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [ProgressBarComponent],\n imports: [CommonModule, MatProgressBarModule, UiTranslatePipe],\n exports: [ProgressBarComponent],\n providers: [],\n})\nexport class ProgressBarComponentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, KeyValuePipe } from '@angular/common';\nimport { UniversalSkillsReportComponent } from './universal-skills-report.component';\nimport { AccordionComponentModule } from '../accordion/accordion.component.module';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { ProgressBarComponentModule } from '../progress-bar/progress-bar.component.module';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { OrdinalSuffixPipe } from '../../pipes/ui-ordinal-suffix.pipe';\n\n@NgModule({\n declarations: [UniversalSkillsReportComponent],\n imports: [\n CommonModule,\n AccordionComponentModule,\n BadgeComponentModule,\n ProgressBarComponentModule,\n MemoizeFuncPipe,\n UiTranslatePipe,\n OrdinalSuffixPipe,\n KeyValuePipe,\n ],\n exports: [UniversalSkillsReportComponent]\n})\nexport class UniversalSkillsReportComponentModule {\n}\n","import { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { AlertVariant } from './alert-bar.model';\n\nexport const alertBarsUtil = {\n //Set css class and iconName according type\n setIcon: (alertType: string): IconName => {\n if (alertType === 'success') {\n return 'Round-check';\n }\n if (alertType === 'info') {\n return 'Info';\n }\n if (alertType === 'warning') {\n return 'Warning';\n }\n if (alertType === 'error') {\n return 'Error';\n }\n return '';\n },\n\n //Set cssClass for fixed or static position\n setPosition: (fixed: boolean): string => {\n if (fixed === true) {\n return 'fixed';\n } else {\n return 'static';\n }\n },\n\n //Set css class for alertbanner\n setCssClass: (fullWidth: boolean, type: string, position: string, variant: AlertVariant = 'banner'): string => {\n const isFullWidth = !!fullWidth ? 'full-width' : '';\n const _type = variant === 'banner' ? type : (type === 'success') ? 'info' : type;\n return `${_type} ${position} ${isFullWidth} ${variant}`;\n },\n};\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { AlertBarType, AlertVariant } from '../../utils/alert-bar.model';\nimport { alertBarsUtil } from '../../utils/alert-bars.utils';\nimport { LinkTargetType } from './alert-banner.model';\n\n@Component({\n selector: 'ui-alert-banner',\n templateUrl: './alert-banner.component.html',\n styleUrls: ['./alert-banner.component.scss'],\n animations: [\n trigger('openClose', [\n transition(':enter', [animate('0.2s ease-out', style({ opacity: 1 }))]),\n transition(':leave', [animate('0.2s ease-in', style({ opacity: 0 }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AlertBannerComponent implements OnInit, OnChanges {\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private domSanitizer: DomSanitizer\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n /**\n * Alert Banner type\n *\n * @type {AlertBarType}\n * @default 'success'\n * @memberof AlertBannerComponent\n */\n @Input() alertType: AlertBarType = 'success';\n\n /**\n * Alert Banner variant\n *\n * @type {AlertVariant}\n * @default 'banner'\n * @memberof AlertBannerComponent\n */\n @Input() alertVariant: AlertVariant = 'banner';\n\n /**\n * Alert banner message\n *\n * @memberof AlertBannerComponent\n */\n @Input() set message(msg: string) {\n this._message = this.domSanitizer.bypassSecurityTrustHtml(msg);\n }\n\n /**\n * Include dismmiss button\n *\n * @default true\n * @memberof AlertBannerComponent\n */\n @Input() includeDismissButton = true;\n\n /**\n * Include shadow or not\n *\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() shadow = false;\n\n /**\n * Link text that will appended at the end of message\n *\n * @default ''\n * @memberof AlertBannerComponent\n */\n @Input() linkText? = '';\n\n /**\n * Link url\n *\n * @memberof AlertBannerComponent\n */\n @Input() linkUrl?: string;\n\n /**\n * Link target\n *\n * @type {@type {LinkTargetType}}\n * @default '_blank'\n * @memberof AlertBannerComponent\n */\n @Input() linkTarget?: LinkTargetType = '_blank';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @default 'light'\n * @memberof AlertBannerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Sets the full width\n *\n * @type {boolean}\n * @memberof AlertBannerComponent\n */\n @Input() isFullWidth: boolean | undefined;\n\n /**\n * Close button tooltip\n *\n * @type {string}\n * @default ''\n * @memberof AlertBannerComponent\n */\n @Input() closeButtonTooltip = '';\n\n /**\n * Shows icon\n *\n * @type {boolean}\n * @default true\n * @memberof AlertBannerComponent\n */\n @Input() hasIcon = true;\n\n /**\n * Sets the alert banner position\n *\n * @type {boolean}\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() fixed = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof AlertBannerComponent\n */\n @Input() ariaDescribedby = '';\n\n @Input() set secondaryAlerts(alerts: string[]) {\n this._secondaryAlerts = alerts.map(alert => this.domSanitizer.bypassSecurityTrustHtml(alert));\n }\n\n @HostBinding('class.display-none') get isDismissed() {\n return this.dismissAlertBanner;\n }\n\n iconName: IconName;\n visible = true;\n fullWidth: boolean;\n position: string;\n cssClass: string;\n _message: SafeHtml = '';\n _secondaryAlerts: SafeHtml[] = [];\n dismissAlertBanner = false;\n\n ngOnInit(): void {\n this.updateBanner();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // eslint-disable-next-line dot-notation\n if (changes['alertType']) {\n this.updateBanner();\n }\n }\n\n private updateBanner(): void {\n this.iconName = alertBarsUtil.setIcon(this.alertType);\n this.position = alertBarsUtil.setPosition(this.fixed);\n this.fullWidth = this.isFullWidth ?? this.alertVariant === 'banner';\n this.cssClass = alertBarsUtil.setCssClass(this.fullWidth, this.alertType, this.position, this.alertVariant);\n }\n\n //Hide snackbar when dismiss button is clicked\n dismissClick() {\n this.visible = false;\n setTimeout(() => {\n this.dismissAlertBanner = true;\n }, 200);\n }\n}\n","<div\n [ngClass]=\"cssClass\"\n [@openClose]\n *ngIf=\"visible\"\n role=\"alert\"\n class=\"alert-container\"\n [attr.theme]=\"applicationTheme\"\n [class.shadow]=\"alertVariant === 'callout' && shadow\"\n [attr.aria-live]=\"(alertType === 'error' || alertType === 'warning') ? 'assertive' : 'polite'\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [tabIndex]=\"0\"\n>\n <span style=\"position: absolute; left: -9999px\" id=\"labelledby\">{{ ('ALERT_BANNER.' + (alertType | uppercase)) | uiTranslate | async }}</span>\n <span [style.display]=\"'none'\" id=\"describedby\">{{ ariaDescribedby }}</span>\n <div class=\"primary-alert-container\">\n <div class=\"alert-text\">\n @if (hasIcon) {\n <ui-icon class=\"left-icon\" [name]=\"iconName\" size=\"24\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n }\n <span [innerHTML]=\"_message\"></span>\n <a *ngIf=\"!!linkText\" [target]=\"linkTarget\" [href]=\"linkUrl\">{{ linkText }}</a>\n </div>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme === 'classic'\"\n variant=\"text\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n (buttonClickEvent)=\"dismissClick()\"\n ></ui-button>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme !== 'classic' && alertVariant !== 'callout'\"\n class=\"right-icon\"\n [variant]=\"'icon-button'\"\n [applicationTheme]=\"applicationTheme\"\n [iconName]=\"'Close'\"\n [size]=\"'small'\"\n [justIcon]=\"true\"\n [tooltip]=\"(closeButtonTooltip || ('COMMON.CLOSE' | uiTranslate | async))!\"\n (click)=\"dismissClick()\"\n ></ui-button>\n </div>\n <div class=\"secondary-alerts-container\">\n <div class=\"alert-text\" *ngFor=\"let alert of _secondaryAlerts\">\n <ui-icon class=\"left-icon\" [name]=\"'Stop-filled'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n <span [innerHTML]=\"alert\"></span>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { AlertBannerComponent } from './alert-banner.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [AlertBannerComponent],\n imports: [CommonModule, ButtonComponentModule, IconComponentModule, UiTranslatePipe],\n exports: [AlertBannerComponent],\n})\nexport class AlertBannerComponentModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, signal } from '@angular/core';\nimport { AiFeedbackSelection } from './ai-feedback.model';\nimport { TooltipPosition } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ui-ai-feedback',\n templateUrl: './ai-feedback.component.html',\n styleUrl: './ai-feedback.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AiFeedbackComponent {\n @Input() set selection(selection: AiFeedbackSelection) {\n this.selected.set(selection || null);\n }\n\n @Input() tooltipPosition: TooltipPosition = 'above';\n\n @Output() selectedValue: EventEmitter<AiFeedbackSelection> = new EventEmitter<AiFeedbackSelection>();\n\n selected = signal<AiFeedbackSelection>(null);\n readonly optionYes: AiFeedbackSelection = 'yes';\n readonly optionNo: AiFeedbackSelection = 'no';\n\n onSelectionChange(selection: AiFeedbackSelection): void {\n const newValue = this.selected() === selection ? null : selection;\n this.selected.set(newValue);\n\n this.selectedValue.emit(this.selected());\n }\n}\n","<div class=\"ai-feedback\" [attr.aria-label]=\"'AI_FEEDBACK.TITLE' | uiTranslate\">\n <span>{{ 'AI_FEEDBACK.TITLE' | uiTranslate | async}}</span>\n <div class=\"ai-feedback-buttons\">\n @if(selected() !== optionNo) {\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-up-in-line'\"\n [size]=\"'small'\"\n [tooltipPosition]=\"tooltipPosition\"\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\n [iconFilled]=\"selected() === optionYes\"\n (buttonClickEvent)=\"onSelectionChange(optionYes)\"\n variant=\"icon-button\"\n role=\"button\"\n ></ui-button>\n }\n\n @if(selected() !== optionYes) {\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-down-in-line'\"\n [iconFilled]=\"selected() === optionNo\"\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\n [size]=\"'small'\"\n (buttonClickEvent)=\"onSelectionChange(optionNo)\"\n variant=\"icon-button\"\n role=\"button\"\n ></ui-button>\n }\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { AiFeedbackComponent } from './ai-feedback.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { AsyncPipe } from '@angular/common';\n\n@NgModule({\n declarations: [AiFeedbackComponent],\n imports: [ButtonComponentModule, UiTranslatePipe, AsyncPipe],\n exports: [AiFeedbackComponent],\n})\nexport class AiFeedbackModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IconSize } from '@testgorilla/tgo-ui/components/icon';\nimport { CardSize, CardVariant } from './card.model';\n\n@Component({\n selector: 'ui-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CardComponent implements OnChanges, OnInit {\n /**\n * Card size. Defaults \"medium\".\n *\n * @type {CardSize}\n * @memberof CardComponent\n */\n @Input() size: CardSize = 'medium';\n\n /**\n * Card variants. Defaults \"default\".\n *\n * @type {CardVariant}\n * @memberof CardComponent\n */\n @Input() variant: CardVariant = 'default';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof CardComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Show errors below card.\n *\n * @type {string[]}\n * @memberof CardComponent\n */\n @Input() set errors(errors: string[]) {\n this.safeErrors = errors?.filter(Boolean).map(error => this.domSanitizer.bypassSecurityTrustHtml(error));\n }\n\n /**\n * Errors size\n *\n * @type {string}\n * @memberof CardComponent\n */\n @Input() errorsSize? = 'default';\n\n /**\n * Marks card as selected\n *\n * @type {boolean}\n * @memberof CardComponent\n */\n @Input() selected = false;\n\n /**\n * Marks card as readonly. Defaults \"false\".\n *\n * @type {boolean}\n * @memberof CardComponent\n */\n @Input() allowSelect = false;\n\n /**\n * Marks card as focusable. Defaults \"true\".\n *\n * @type {boolean}\n * @memberof CardComponent\n */\n @Input() allowFocus = true;\n\n /**\n * Emits when card is being selected\n */\n @Output() cardSelected = new EventEmitter<boolean>();\n\n safeErrors: SafeHtml[];\n\n classes = '';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private domSanitizer: DomSanitizer\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnChanges(): void {\n this.classes = `card-size-${this.size ?? 'medium'} ${this.cardVariant ?? 'default'}`;\n }\n\n ngOnInit(): void {\n this.classes = `card-size-${this.size ?? 'medium'} ${this.cardVariant ?? 'default'}`;\n }\n\n get cardVariant(): CardVariant {\n return this.safeErrors?.length ? 'error' : this.variant;\n }\n\n get errorIconSize(): IconSize {\n return this.errorsSize === 'small' ? '16' : '24';\n }\n\n get isSelected(): boolean {\n // educative, premium, ai, actionDriver and neutral variants shouldn't have any selected/interactive states\n return (\n this.selected &&\n this.variant !== 'educative' &&\n this.variant !== 'premium' &&\n this.variant !== 'ai' &&\n this.variant !== 'actionDriver' &&\n this.variant !== 'neutral'\n );\n }\n\n selectCard() {\n if (\n this.allowSelect &&\n this.variant !== 'educative' &&\n this.variant !== 'premium' &&\n this.variant !== 'ai' &&\n this.variant !== 'actionDriver' &&\n this.variant !== 'neutral' &&\n this.variant !== 'default'\n ) {\n this.selected = true;\n this.cardSelected.emit(this.selected);\n }\n }\n}\n","<div\n class=\"card-container\"\n (keydown.enter)=\"selectCard()\"\n (keydown.space)=\"selectCard()\"\n (click)=\"selectCard()\"\n [ngClass]=\"[classes, isSelected ? 'selected' : '']\"\n [attr.theme]=\"applicationTheme\"\n [attr.tabindex]=\"allowFocus ? 0 : null\"\n>\n <ng-content></ng-content>\n</div>\n@if (safeErrors?.length) {\n <div class=\"errors\"\n [class.errors-small]=\"errorsSize === 'small'\">\n @for (error of safeErrors; track error) {\n <div class=\"error\">\n <ui-icon [size]=\"errorIconSize\" [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CardComponent } from './card.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\n\n@NgModule({\n declarations: [CardComponent],\n imports: [CommonModule, IconComponentModule],\n exports: [CardComponent],\n})\nexport class CardComponentModule {}\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { errorType } from './validation-error.model';\nimport { NgControl } from '@angular/forms';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\n@Component({\n selector: 'ui-validation-error',\n templateUrl: './validation-error.component.html',\n styleUrls: ['./validation-error.component.scss'],\n standalone: false\n})\nexport class ValidationErrorComponent {\n @Input() ngControl: NgControl;\n @Input() touchedOn = true;\n @Input() errorMessage = '';\n\n @Input() label: string | undefined | null;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof ValidationErrorComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n getErrorValue(type: errorType): number {\n const ngControlErrors: any = this.ngControl.errors;\n switch (type) {\n case 'maxlength':\n return ngControlErrors.maxlength.requiredLength;\n case 'minlength':\n return ngControlErrors.minlength.requiredLength;\n case 'max':\n return ngControlErrors.max.max;\n case 'min':\n return ngControlErrors.min.min;\n default:\n return 0;\n }\n }\n\n translationContextErrors = 'ERRORS.';\n}\n","<div class=\"errors\" *ngIf=\"ngControl?.hasError('maxlength')\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContextErrors + 'MAX_LENGTH' | uiTranslate : { maxlength: getErrorValue('maxlength') } | async }}</span>\n</div>\n\n<div class=\"errors\" *ngIf=\"ngControl?.hasError('minlength')\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContextErrors + 'MIN_LENGTH' | uiTranslate : { maxlength: getErrorValue('minlength') } | async }}</span>\n</div>\n\n<div class=\"errors\" *ngIf=\"ngControl?.hasError('min')\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContextErrors + 'MIN' | uiTranslate : { min: getErrorValue('min') } | async }}</span>\n</div>\n\n<div class=\"errors\" *ngIf=\"ngControl?.hasError('max')\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContextErrors + 'MAX' | uiTranslate : { max: getErrorValue('max') } | async }}</span>\n</div>\n\n<div class=\"errors\" *ngIf=\"ngControl?.hasError('required') && (touchedOn ? ngControl?.touched : true)\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContextErrors + (label ? 'REQUIRED_FIELD' : 'REQUIRED') | uiTranslate : { label } | async }}</span>\n</div>\n\n<div class=\"errors\" *ngIf=\"ngControl?.hasError('email')\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContextErrors + 'EMAIL_INCORRECT' | uiTranslate | async }}</span>\n</div>\n\n<div class=\"custom-errors\" *ngIf=\"errorMessage\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ errorMessage }}</span>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'hasValidationError',\n standalone: true,\n})\nexport class HasValidationErrorPipe implements PipeTransform {\n /**\n * List of the error types that are handled\n */\n private readonly errorTypes = ['maxlength', 'minlength', 'min', 'max', 'required', 'email'];\n\n /**\n * Checks if the error on the NgControl is in the list of handled error types\n * @param value\n */\n transform(value: Record<string, any> | null | undefined): boolean {\n return value ? !!Object.keys(value).filter(key => this.errorTypes.includes(key)).length : false;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Alignment } from '../../models/checkbox.model';\nimport { FocusableOption, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ui-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n host: {\n // Needs to be removed since it causes some a11y issues. (https://github.com/angular/components/issues/21266)\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-required]': 'null',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the mat-checkbox element.\n '(focus)': 'checkboxElement.focus()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\n// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\nexport class CheckboxComponent\n implements OnInit, FocusableOption, ControlValueAccessor, DoCheck, OnChanges, AfterViewInit, OnDestroy\n{\n /**\n * Determines whether the checkbox is disabled.\n * Default: false.\n *\n * @type {boolean}\n * @memberof CheckboxComponent\n */\n @Input() disabled = false;\n\n /**\n * Determines whether the checkbox is checked.\n * Default: false.\n *\n * @type {boolean}\n * @memberof CheckboxComponent\n */\n @Input() checked = false;\n\n /**\n * Determines whether the checkbox is indeterminate.\n * It can be used to represent a checkbox with three states, e.g. a checkbox that represents a nested list of checkable items.\n * Default: false.\n *\n * @type {boolean}\n * @memberof CheckboxComponent\n */\n @Input() indeterminate = false;\n\n /**\n * Determines whether the checkbox color.\n * Default: Test Gorilla primary color.\n *\n * @type {string}\n * @memberof CheckboxComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null;\n\n /**\n * Name value will be applied to the input element if present.\n *\n * @type {string}\n * @memberof CheckboxComponent\n */\n @Input() name = '';\n\n /**\n * Text content will be applied to the input element if present.\n *\n * @type {string}\n * @memberof CheckboxComponent\n */\n @Input() label = '';\n\n /**\n * Determines whether the checkbox is a multiple choice cell.\n * Default: false\n *\n * @type {boolean}\n * @memberof CheckboxComponent\n */\n @Input() multiple = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof CheckboxComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof CheckboxComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof CheckboxComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * Defines if checkbox has error\n *\n * @type {boolean}\n * @memberof CheckboxComponent\n */\n @Input() hasError = false;\n\n /**\n * Hide in-build errors for Reactive Forms\n *\n * @type {number}\n * @memberof CheckboxComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof CheckboxComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof CheckboxComponent\n */\n @Input() ariaLabelledby = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof CheckboxComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Truncate text if it is too long\n * @type {string}\n * @memberof CheckboxComponent\n */\n @Input() truncateText = false;\n\n /**\n * Text alignment\n * @type {'center' | 'top'}\n * @memberof CheckboxComponent\n */\n @Input() alignment: Alignment = 'center';\n\n /**\n * Sets the tab index for the checkbox component.\n * This determines the order in which elements receive focus when the user navigates through them using the Tab key.\n * Default value is 0.\n *\n * @type {number}\n * @memberof CheckboxComponent\n */\n @Input() tabIndex = 0;\n\n /**\n * Event emitted when the checkbox's checked value changes.\n *\n * @type {boolean}\n * @memberof CheckboxComponent\n */\n @Output() changed = new EventEmitter<boolean>();\n\n /**\n * @ignore\n */\n onChange = (_: any) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n showTooltip = false;\n classMultiple: string;\n\n @ViewChild('tooltip') tooltipElement: MatTooltip;\n @ViewChild('checkbox') checkboxElement: MatCheckbox;\n protected origin: string | null = null;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private cdr: ChangeDetectorRef,\n @Optional() @Self() public ngControl: NgControl,\n private focusMonitor: FocusMonitor,\n private ngZone: NgZone,\n private destroyRef: DestroyRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnChanges(): void {\n this.setCompanyColor();\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n ngAfterViewInit(): void {\n const checkboxNativeInput = this.checkboxElement._inputElement.nativeElement;\n checkboxNativeInput.setAttribute('role', 'checkbox');\n checkboxNativeInput.setAttribute('aria-checked', (!!this.checked).toString());\n checkboxNativeInput.setAttribute('aria-disabled', (!!this.disabled).toString());\n checkboxNativeInput.setAttribute('aria-label', this.label);\n checkboxNativeInput.setAttribute('aria-required', this.ariaRequired.toString());\n this.focusMonitor\n .monitor(this.checkboxElement._inputElement.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin => this.ngZone.run(this.focusAction.bind(this, origin)));\n }\n\n focusAction(origin: FocusOrigin) {\n this.origin = origin;\n this.cdr.markForCheck();\n this.onFocus(origin === 'keyboard');\n }\n\n ngOnDestroy(): void {\n this.focusMonitor.stopMonitoring(this.checkboxElement._inputElement.nativeElement);\n }\n\n emitChange(event: MatCheckboxChange): void {\n this.changed.emit(event.checked);\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnInit() {\n this.classMultiple = this.setClass();\n this.setCompanyColor();\n }\n\n toggleChecked(): void {\n this.checked = !this.checked;\n this.changed.emit(this.checked);\n this.onTouch();\n this.onChange(this.checked);\n if (!this.disabled) {\n this.indeterminate = false;\n this.classMultiple = this.setClass();\n }\n this.checkboxElement._inputElement.nativeElement.setAttribute('aria-checked', (!!this.checked).toString());\n this.checkboxElement._inputElement.nativeElement.setAttribute('aria-disabled', (!!this.disabled).toString());\n }\n\n setClass(): string {\n if (this.multiple) {\n return this.checked || this.indeterminate ? 'multiple-checked' : 'multiple-unchecked';\n }\n return '';\n }\n\n writeValue(value: boolean): void {\n this.checked = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onLabelEllipsisChange(isEllipsis: boolean): void {\n this.showTooltip = isEllipsis;\n }\n\n onFocus(isFocus: boolean): void {\n setTimeout(() => {\n if (this.tooltipElement) {\n if (isFocus && this.showTooltip) {\n this.tooltipElement.show();\n } else {\n this.tooltipElement.hide();\n }\n }\n }, 0);\n }\n\n private setCompanyColor(): void {\n this.companyColor = this.companyColor\n ? this.companyColor\n : this.applicationTheme === 'classic'\n ? '#46A997'\n : '#D410AA';\n }\n\n focus(): void {\n this.checkboxElement.focus();\n }\n}\n","<div\n #checkboxContainer\n [class]=\"multiple ? 'checkbox-container' : 'checkbox'\"\n [ngClass]=\"classMultiple\"\n [attr.alignment]=\"alignment\"\n [attr.truncate-text]=\"truncateText\"\n [attr.theme]=\"applicationTheme\"\n [attr.hasError]=\"hasError\"\n (keydown.enter)=\"toggleChecked(); checkboxContainer.focus()\"\n (keydown.space)=\"toggleChecked(); checkboxContainer.focus()\"\n>\n <mat-checkbox\n #checkbox\n (mouseleave)=\"checkbox.disableRipple = true\"\n (mouseenter)=\"checkbox.disableRipple = false\"\n [indeterminate]=\"indeterminate\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [tabIndex]=\"tabIndex\"\n [name]=\"name\"\n [ngClass]=\"[checkbox.disableRipple ? 'disable-ripple' : '', origin ? 'cdk-' + origin + '-focused' : '']\"\n [aria-label]=\"ariaLabel\"\n [aria-labelledby]=\"ariaLabelledby ? ariaLabelledby : label\"\n [aria-describedby]=\"ariaDescribedby || 'ariaDescribedby'\"\n (click)=\"toggleChecked()\"\n (keydown.enter)=\"$event.preventDefault()\"\n (keydown.space)=\"$event.preventDefault()\"\n class=\"checkbox\"\n >\n @if (label) {\n <span\n #tooltip=\"matTooltip\"\n class=\"label\"\n uiEllipseText\n (onChangeTextState)=\"onLabelEllipsisChange($event)\"\n [matTooltip]=\"showTooltip && truncateText ? label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ label }}\n </span>\n }\n <ng-content select=\"[checkbox-label]\"></ng-content>\n </mat-checkbox>\n\n <mat-hint class=\"error\" *ngIf=\"ngControl?.errors | hasValidationError\">\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\"></ui-validation-error>\n </mat-hint>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { CardSize } from '../card/card.model';\n\n@Component({\n selector: 'ui-selectable-card',\n templateUrl: './selectable-card.component.html',\n styleUrls: ['./selectable-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectableCardComponent {\n /**\n * Card size. Defaults to \"medium\".\n */\n size = input<CardSize>('medium');\n\n /**\n * Whether the card is selected (input from parent).\n */\n selected = input<boolean>(false);\n\n /**\n * Whether the checkbox is disabled.\n */\n isCheckboxDisabled = input<boolean>(false);\n\n /**\n * Event emitted when the card is selected, with the current selected state.\n */\n cardSelected = output<boolean>();\n\n /**\n * Internal override for selected state (when user interacts).\n */\n private internalSelectedOverride = signal<boolean | null>(null);\n\n /**\n * Computed selected state that prioritizes user interaction over input.\n */\n isSelected = computed(() => {\n const override = this.internalSelectedOverride();\n return override !== null ? override : this.selected();\n });\n\n /**\n * Handles card selection, toggles internal state and emits the new value.\n */\n handleSelect(): void {\n if (this.isCheckboxDisabled()) {\n return;\n }\n \n const newValue = !this.isSelected();\n this.internalSelectedOverride.set(newValue);\n this.cardSelected.emit(newValue);\n }\n}\n","<ui-card\n class=\"selectable-card\"\n [size]=\"size()\"\n [selected]=\"isSelected()\"\n [allowSelect]=\"!isCheckboxDisabled()\"\n [allowFocus]=\"false\"\n [variant]=\"isCheckboxDisabled() ? 'default' : 'state'\"\n (cardSelected)=\"handleSelect()\"\n>\n <ui-checkbox class=\"selectable-card-checkbox\" [checked]=\"isSelected()\" [disabled]=\"isCheckboxDisabled()\">\n <div checkbox-label>\n <ng-content select=\"[ui-selectable-card-label]\"></ng-content>\n </div>\n </ui-checkbox>\n <ng-content select=\"[ui-selectable-card-content]\"></ng-content>\n</ui-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ValidationErrorComponent } from './validation-error.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [ValidationErrorComponent],\n exports: [ValidationErrorComponent],\n imports: [CommonModule, IconComponentModule, UiTranslatePipe],\n})\nexport class ValidationErrorModule {}\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[uiFocusVisible]',\n standalone: true\n})\nexport class FocusVisibleDirective {\n @Output() uiFocusVisible = new EventEmitter<boolean>();\n private hadKeyboardEvent = false;\n\n constructor() {}\n\n @HostListener('document:keydown', ['$event'])\n handleKeyboardEvent(): void {\n this.hadKeyboardEvent = true;\n }\n\n @HostListener('focus', ['$event'])\n onFocus(): void {\n if (this.hadKeyboardEvent) {\n this.uiFocusVisible.next(true);\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.uiFocusVisible.next(false);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { CheckboxComponent } from './checkbox.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '../validation-error/validation-error.module';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\nimport { EllipseTextDirective } from \"@testgorilla/tgo-ui/components/core\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { FocusVisibleDirective } from \"./focus-visible.directive\";\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, MatCheckboxModule, FormsModule, ReactiveFormsModule, MatInputModule, IconComponentModule, UiTranslatePipe, ValidationErrorModule, HasValidationErrorPipe, EllipseTextDirective, MatTooltipModule, FocusVisibleDirective],\n exports: [CheckboxComponent],\n})\nexport class CheckboxComponentModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SelectableCardComponent } from './selectable-card.component';\nimport { CardComponentModule } from '../card/card.component.module';\nimport { CheckboxComponentModule } from '../checkbox/checkbox.component.module';\n\n@NgModule({\n declarations: [SelectableCardComponent],\n imports: [CommonModule, CardComponentModule, CheckboxComponentModule],\n exports: [SelectableCardComponent],\n})\nexport class SelectableCardComponentModule {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport { ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\n@Component({\n selector: 'ui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class DialogComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * Dialog title\n *\n * @memberof DialogComponent\n */\n @Input() title? = '';\n\n /**\n * Show close button\n *\n * @memberof DialogComponent\n */\n @Input() showCloseButton = true;\n\n /**\n * Fuction called before dialgo is closed\n *\n * @memberof DialogComponent\n */\n @Input() canCloseFn: () => boolean = () => true;\n\n /**\n * Secondary button label\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonLabel? = '';\n\n /**\n * Footer dialog message\n *\n * @memberof DialogComponent\n */\n @Input() footerMessage? = '';\n\n /**\n * Primary button label\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonLabel? = '';\n\n /**\n * Primary button icon name\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonIconName?: IconName | '' = '';\n\n /**\n * Secondary button type\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonType: ButtonColor = 'ghost';\n\n /**\n * Primary button type\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonType: ButtonColor = 'primary';\n\n /**\n * Primary button test id\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonDataTestId: string | null = null;\n\n /**\n * Secondary button test id\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonDataTestId: string | null = null;\n\n /**\n * Color of the dialog.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = '';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n /**\n *\n * Disable primary button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disablePrimaryButton = false;\n /**\n *\n * Disable close button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disableClose = false;\n\n /**\n *\n * Disable button when canCloseFn is used\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() shouldDisableButtons = true;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() ariaLabelledby = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Defines how modal was opened (with keyboard or not)\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() keyboardOpen = false;\n\n primaryButtonIconPosition = input<ButtonIconPosition>('left');\n\n @Output() closeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() secondaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() primaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('closeButton') closeButton: ButtonComponent;\n\n modalClosed = false;\n\n @HostListener('keydown.esc', ['$event'])\n onEsc(_: KeyboardEvent) {\n this.dismiss();\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<DialogComponent>,\n @Inject(MAT_DIALOG_DATA) private data: { applicationTheme: ApplicationTheme }\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n disableButtons = false;\n protected readonly translationContext = 'DIALOG.';\n\n @ContentChild('dialogHeader')\n customHeader?: any;\n\n get hasCustomHeader(): boolean {\n return !!this.customHeader;\n }\n\n ngOnInit(): void {\n this.areButtonsDisabled();\n if (this.data?.applicationTheme) {\n this.applicationTheme = this.data.applicationTheme;\n }\n if (this.applicationTheme !== 'classic') {\n this.companyColor = this.companyColor || '#D410AA';\n } else {\n this.companyColor = this.companyColor || '#46A997';\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['canCloseFn']) {\n this.dialogRef.disableClose = !this.canCloseFn();\n this.areButtonsDisabled();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.keyboardOpen) {\n setTimeout(() => {\n this.closeButton.buttonElement.focus('keyboard');\n }, 100);\n }\n }\n\n //Disable primary button when canClose is false\n areButtonsDisabled() {\n this.disableButtons = !this.canCloseFn() && this.shouldDisableButtons;\n }\n\n //Close modal\n dismiss(): void {\n if (this.canCloseFn()) {\n this.dialogRef.disableClose = false;\n this.dialogRef.close();\n this.modalClosed = true;\n }\n }\n\n onClose(event: Event): void {\n this.closeEvent.emit(event);\n this.modalClosed = true;\n }\n\n onSecondaryButtonClick(event: Event): void {\n this.secondaryButtonClickEvent.emit(event);\n }\n\n onPrimaryButtonClick(event: Event): void {\n this.primaryButtonClickEvent.emit(event);\n }\n}\n","<div class=\"dialog-container\" [attr.theme]=\"applicationTheme\">\n <div\n mat-dialog-title\n class=\"dialog-title\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [attr.aria-describedby]=\"'ariaDescribedby'\"\n >\n <span [style.display]=\"'none'\" id=\"ariaDescribedby\">{{ ariaDescribedby }}</span>\n\n <!-- Default header content -->\n <ng-container *ngIf=\"!hasCustomHeader\">\n <h3 class=\"bold\" id=\"labelledby\">{{ title }}</h3>\n <div *ngIf=\"showCloseButton\">\n <ui-button\n #closeButton\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"onClose($event)\"\n (buttonClickEvent)=\"dismiss()\"\n id=\"dialog-close-button\"\n ></ui-button>\n </div>\n </ng-container>\n\n <!-- Custom header content projection -->\n <ng-content select=\"[dialogHeader]\"></ng-content>\n </div>\n <mat-dialog-content>\n <ng-content></ng-content>\n </mat-dialog-content>\n <div\n mat-dialog-actions\n *ngIf=\"secondaryButtonLabel !== '' || primaryButtonLabel !== ''\"\n [class.dialog-action-w-message]=\"!!footerMessage\"\n >\n @if (footerMessage) {\n <div class=\"actions-footer-message\">{{ footerMessage }}</div>\n }\n <ui-button\n *ngIf=\"!!secondaryButtonLabel\"\n [companyColor]=\"companyColor\"\n [variant]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [label]=\"secondaryButtonLabel\"\n [attr.data-testid]=\"secondaryButtonDataTestId\"\n (click)=\"onSecondaryButtonClick($event)\"\n ></ui-button>\n <ui-button\n *ngIf=\"!!primaryButtonLabel\"\n [iconPosition]=\"primaryButtonIconPosition()\"\n [iconName]=\"primaryButtonIconName ? primaryButtonIconName : undefined\"\n [variant]=\"primaryButtonType\"\n [disabled]=\"disableButtons || disablePrimaryButton\"\n [applicationTheme]=\"applicationTheme\"\n (click)=\"onPrimaryButtonClick($event)\"\n [label]=\"primaryButtonLabel\"\n [companyColor]=\"companyColor\"\n [attr.data-testid]=\"primaryButtonDataTestId\"\n (buttonClickEvent)=\"dismiss()\"\n ></ui-button>\n </div>\n\n <!-- This is announcement for screen reader that dialog was closed-->\n <div aria-live=\"assertive\" role=\"alert\" style=\"position: absolute; left: -9999px\">\n <span *ngIf=\"modalClosed\">{{ 'DIALOG.CLOSED' | uiTranslate | async }}</span>\n </div>\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { DialogConfig } from './dialog.model';\n\nexport type DialogSize = 'small' | 'large' | 'x-large';\n@Injectable()\nexport class DialogService {\n constructor(\n private matDialog: MatDialog,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {}\n\n open<K = any, R = any, T = any>(\n dialogComponent: ComponentType<T>,\n dialogConfig?: DialogConfig<K>\n ): MatDialogRef<T, R> {\n const {\n applicationTheme = 'light',\n size = 'small',\n panelClass = '',\n extraData = {},\n backdropClass = '',\n keyboardOpen = false,\n config = {},\n } = dialogConfig || {};\n // Open the dialog using UI custom styles\n return this.matDialog.open(dialogComponent, {\n ...config,\n data: {\n applicationTheme: this.defaultAppTheme ?? applicationTheme,\n ...extraData,\n keyboardOpen,\n },\n backdropClass: backdropClass || '',\n panelClass:\n applicationTheme === 'classic'\n ? ['ui-dialog-wrapper', panelClass, size]\n : ['ui-dialog-wrapper', panelClass, applicationTheme, size],\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DialogComponent } from './dialog.component';\nimport { DialogService } from './dialog.service';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [DialogComponent],\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, UiTranslatePipe],\n exports: [DialogComponent],\n providers: [{ provide: MAT_DIALOG_DATA, useValue: {} }, { provide: MatDialogRef, useValue: {} }, DialogService],\n})\nexport class DialogComponentModule {}\n","import { Component, Inject, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DialogComponentModule } from '../dialog/dialog.component.module';\nimport { MediaDialogData, MediaDialogStep } from './media-dialog.model';\nimport { ProgressBarComponentModule } from '../progress-bar/progress-bar.component.module';\n\n@Component({\n selector: 'ui-media-dialog',\n templateUrl: './media-dialog.component.html',\n styleUrls: ['./media-dialog.component.scss'],\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, DialogComponentModule, ProgressBarComponentModule]\n})\nexport class MediaDialogComponent {\n primaryButtonLabel: string | undefined;\n secondaryButtonLabel: string | undefined;\n backButtonLabel: string | undefined;\n title: string | undefined;\n primaryButtonDataTestId = 'media-dialog.confirm-button';\n secondaryButtonDataTestId = 'media-dialog.cancel-button';\n backButtonDataTestId = 'media-dialog.back-button';\n\n mediaContainer: TemplateRef<any>;\n subheader: string | undefined;\n body: SafeHtml;\n\n currentStepIndex = 0;\n steps: MediaDialogStep[] = [];\n\n constructor(\n public dialogRef: MatDialogRef<MediaDialogComponent>,\n @Inject(MAT_DIALOG_DATA) private data: MediaDialogData,\n protected domSanitizer: DomSanitizer\n ) {\n this.steps = data.steps ?? [];\n if (this.steps.length < 1) {\n this.dialogRef.close();\n throw new Error('MediaDialogComponent: steps must contain at least one step.');\n }\n this.setStep(0);\n }\n\n private setStep(index: number): void {\n const step = this.steps[index];\n this.currentStepIndex = index;\n this.title = step.title;\n this.subheader = step.subheader;\n this.body = this.domSanitizer.bypassSecurityTrustHtml(step.body ?? '');\n this.mediaContainer = step.mediaContainer;\n this.primaryButtonLabel = step?.primaryButtonLabel;\n this.secondaryButtonLabel = step?.secondaryButtonLabel;\n this.backButtonLabel = step?.backButtonLabel;\n this.primaryButtonDataTestId = step?.primaryButtonDataTestId ?? 'media-dialog.confirm-button';\n this.secondaryButtonDataTestId = step?.secondaryButtonDataTestId ?? 'media-dialog.cancel-button';\n this.backButtonDataTestId = step?.backButtonDataTestId ?? 'media-dialog.back-button';\n }\n\n onPrimaryButtonClick(): void {\n const isLastStep = this.currentStepIndex === this.steps.length - 1;\n\n if (isLastStep) {\n this.dialogRef.close(true);\n } else {\n this.setStep(this.currentStepIndex + 1);\n }\n }\n\n onBackButtonClick(): void {\n if (this.currentStepIndex > 0) {\n this.setStep(this.currentStepIndex - 1);\n }\n }\n\n onSecondaryButtonClick(): void {\n this.dialogRef.close(false);\n }\n\n dismiss(): void {\n this.dialogRef.close(null);\n }\n}\n","<ng-container>\n @if (steps && steps.length > 1) {\n <ui-progress-bar [progress]=\"(currentStepIndex + 1) * (100 / steps.length)\"></ui-progress-bar>\n }\n\n <ui-dialog\n [title]=\"title\"\n (closeEvent)=\"dialogRef.close(null)\"\n [showCloseButton]=\"true\"\n >\n @if (mediaContainer) {\n <div class=\"media-container\">\n <ng-container [ngTemplateOutlet]=\"mediaContainer\"></ng-container>\n </div>\n }\n\n @if (subheader) {\n <h4 class=\"subheader\">{{ subheader }}</h4>\n }\n\n @if (body) {\n <div [innerHTML]=\"body\"></div>\n }\n\n <div mat-dialog-actions class=\"footer\">\n <div>\n @if (backButtonLabel && currentStepIndex > 0) {\n <ui-button\n variant=\"text-inline\"\n size=\"medium\"\n [label]=\"backButtonLabel\"\n [attr.data-testid]=\"backButtonDataTestId\"\n (click)=\"onBackButtonClick()\"\n ></ui-button>\n }\n </div>\n\n <div class=\"action-buttons\">\n @if (secondaryButtonLabel) {\n <ui-button\n variant=\"ghost\"\n [label]=\"secondaryButtonLabel\"\n [attr.data-testid]=\"secondaryButtonDataTestId\"\n (click)=\"onSecondaryButtonClick()\"\n ></ui-button>\n }\n @if (primaryButtonLabel) {\n <ui-button\n variant=\"primary\"\n [label]=\"primaryButtonLabel\"\n [attr.data-testid]=\"primaryButtonDataTestId\"\n (click)=\"onPrimaryButtonClick()\"\n ></ui-button>\n }\n </div>\n </div>\n </ui-dialog>\n</ng-container>\n","import { Component, computed, input } from '@angular/core';\nimport { DonutChartData } from './donut-chart.component.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ChartOptions } from 'chart.js';\nimport DataLabelsPlugin from 'chartjs-plugin-datalabels';\n\n@Component({\n selector: 'ui-donut-chart',\n templateUrl: './donut-chart.component.html',\n styleUrls: ['./donut-chart.component.scss'],\n standalone: false\n})\nexport class DonutChartComponent {\n donutChartData = input<DonutChartData>();\n applicationTheme = input<ApplicationTheme>('light');\n\n readonly chartData = computed(() => {\n const data = this.donutChartData();\n return data\n ? {\n labels: data.labels,\n datasets: [\n {\n data: data.data,\n backgroundColor: data.backgroundColor,\n borderWidth: 0,\n },\n ],\n }\n : { labels: [], datasets: [] };\n });\n\n // Plugin to display the total in the center\n centerTextPlugin = {\n id: 'centerText',\n beforeDraw: (chart: any) => {\n const {\n ctx,\n chartArea: { width, height },\n } = chart;\n const total = chart.data.datasets[0].data.reduce((a: number, b: number) => a + b, 0);\n const padding = 32;\n ctx.save();\n ctx.font = 'bold 14px ModernGothic';\n ctx.fillStyle = '#242424';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(total.toString(), (width + padding) / 2, (height + padding) / 2);\n ctx.restore();\n },\n };\n\n // Plugin to draw lines from the donut segments to the labels\n labelLinePlugin = {\n id: 'labelLinePlugin',\n afterDatasetDraw: (chart: any) => {\n const { ctx, data } = chart;\n const meta = chart.getDatasetMeta(0);\n const radialOffset = 10; // length of the radial segment (elbow)\n const horizontalLength = 20; // new length of the horizontal segment\n const fontSize = 14;\n\n ctx.save();\n ctx.strokeStyle = '#666';\n ctx.lineWidth = 1;\n ctx.font = `${fontSize}px ModernGothic`;\n ctx.fillStyle = '#242424';\n\n meta.data.forEach((arc: any, index: number) => {\n const angle = (arc.startAngle + arc.endAngle) / 2;\n const radius = arc.outerRadius;\n const centerX = arc.x;\n const centerY = arc.y;\n\n // Start point: outer edge of the arc\n const startX = centerX + Math.cos(angle) * radius;\n const startY = centerY + Math.sin(angle) * radius;\n\n // Elbow: short line outward\n const midX = centerX + Math.cos(angle) * (radius + radialOffset);\n const midY = centerY + Math.sin(angle) * (radius + radialOffset);\n\n // Extended horizontal line\n const direction = Math.cos(angle) >= 0 ? 1 : -1;\n const endX = midX + direction * horizontalLength;\n const endY = midY;\n\n // Draw line with elbow\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineTo(midX, midY);\n ctx.lineTo(endX, endY);\n ctx.stroke();\n\n // Draw value at the end\n const value = data.datasets[0].data?.[index] ?? '';\n const textX = endX + direction * 5;\n ctx.textAlign = direction > 0 ? 'left' : 'right';\n ctx.textBaseline = 'middle';\n ctx.fillText(value, textX, endY);\n });\n\n ctx.restore();\n },\n };\n\n public donutChartPlugins = [DataLabelsPlugin, this.centerTextPlugin, this.labelLinePlugin];\n\n public donutChartOptions: ChartOptions<'doughnut'> = {\n responsive: true,\n cutout: '65%',\n aspectRatio: 2,\n layout: {\n padding: 16,\n },\n plugins: {\n legend: {\n onClick: () => null, // Disable legend click events\n position: 'right',\n labels: {\n font: {\n family: 'ModernGothic',\n size: 14,\n },\n boxWidth: 14,\n padding: 20,\n },\n },\n tooltip: {\n enabled: false,\n },\n datalabels: {\n display: false,\n },\n },\n };\n}\n","<div style=\"height: 200px;\">\n <canvas\n baseChart\n [data]=\"chartData()\"\n type=\"doughnut\"\n [options]=\"donutChartOptions\"\n [plugins]=\"donutChartPlugins\"\n >\n </canvas>\n</div>\n","import { NgModule } from '@angular/core';\nimport { DonutChartComponent } from './donut-chart.component';\nimport { NgChartsModule } from 'ng2-charts';\nimport { Chart, registerables } from 'chart.js';\n\nChart.register(...registerables);\n\n@NgModule({\n declarations: [DonutChartComponent],\n exports: [DonutChartComponent],\n imports: [NgChartsModule],\n})\nexport class DonutChartComponentModule {}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\nconst ARROW_DOWN_KEY_CODE = 40;\n\n@Directive({\n selector: '[digitsOnly]',\n standalone: true,\n})\nexport class DigitsOnlyDirective {\n constructor(private el: ElementRef) {}\n\n @Input() allowNegative = false;\n @Input() allowDecimal = false;\n @Input() allowOnlyDigits = false;\n regex: RegExp;\n\n @HostListener('keypress', ['$event'])\n onKeyPress(event: KeyboardEvent) {\n this.validate(event, event.key);\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: Event) {\n const pastedText = <ClipboardEvent>event && (<ClipboardEvent>event)?.clipboardData?.getData('text/plain'); // Non-IE browsers\n this.validate(event, pastedText || '');\n }\n\n @HostListener('keydown', [`$event`])\n onKeydown(event: any) {\n if (!this.allowNegative) {\n if ((event as any).which === ARROW_DOWN_KEY_CODE && event.target.value && +event.target.value <= 0) {\n event.preventDefault();\n return;\n } else if ((event as any).which === ARROW_DOWN_KEY_CODE && event.target.value === '') {\n this.el.nativeElement.value = 1;\n return;\n }\n }\n }\n\n @HostListener('input', ['$event'])\n onInput(event: any) {\n if (!this.allowNegative && (event.target.value && +event.target.value < 0)) {\n setTimeout(() => this.el.nativeElement.value = 0, 0);\n }\n }\n\n validate(event: Event, text: string) {\n if (this.allowOnlyDigits) {\n const txtInput = this.el.nativeElement;\n const newValue =\n txtInput.value.substring(0, txtInput.selectionStart) + text + txtInput.value.substring(txtInput.selectionEnd);\n if (!this.regex) {\n this.regex = // eslint-disable-next-line no-eval\n eval(\n `/^${this.allowNegative ? '-?' : ''}${this.allowDecimal ? '((\\\\d+\\\\.?)|(\\\\.?))\\\\d*' : '\\\\d*'}$/g`\n ) as RegExp;\n }\n if (!newValue.match(this.regex)) {\n event.preventDefault();\n return;\n }\n }\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n input,\n Input,\n NgZone,\n OnInit,\n Optional,\n Output,\n Self,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { FieldType } from '../../components/field/field.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { BadgeVariant } from '@testgorilla/tgo-ui/components/badge';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\n/**\n * A global counter used to generate unique field IDs.\n * This variable is incremented each time a new field ID is needed.\n *\n * @remarks\n * This is primarily used to ensure that each field component\n * has a unique identifier within the application / useful for their Aria Labels.\n */\nexport let fieldID = 0;\n\n@Component({\n selector: 'ui-field',\n templateUrl: './field.component.html',\n styleUrls: ['./field.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class FieldComponent implements OnInit, ControlValueAccessor, DoCheck, AfterViewInit {\n @HostBinding() class = 'ui-field';\n\n /**\n * Indicator of the autocomplete width\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @HostBinding('class.full-width')\n @Input()\n fullWidth = true;\n\n /**\n * Indicator of the field height\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @HostBinding('class.full-height')\n @Input()\n fullHeight = false;\n\n /**\n * Form field label\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() label? = '';\n\n /**\n * Form field label from html\n *\n * @memberof FieldComponent\n */\n labelHtml = input(null, {\n transform: (value: string) => this.domSanitizer.bypassSecurityTrustHtml(value),\n });\n\n /**\n * Icon to display alongside the label\n *\n * @type {IconName}\n * @memberof FieldComponent\n */\n @Input() labelIcon?: IconName;\n\n /**\n * Input name attribute\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() fieldName?: string;\n\n /**\n * Input placeholder\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() placeholder? = '';\n\n /**\n * Input id\n *\n * @type {string}\n * @memberof FieldComponent\n */\n id = input(`field-${fieldID++}`);\n\n /**\n * Input value\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() value = '';\n\n /**\n * Variant of badge to use\n *\n * @type {BadgeVariant}\n * @memberof FieldComponent\n */\n @Input() badgeVariant?: BadgeVariant | undefined;\n\n _errors: SafeHtml[];\n /**\n * Input field errors\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() set errors(errors: string[]) {\n this._errors = errors?.filter(Boolean).map(error => this.domSanitizer.bypassSecurityTrustHtml(error));\n this.errorsLength = this.setErrorsLength();\n }\n\n /**\n * Determines if input is disabled\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() disabled: boolean;\n\n /**\n * Input is required or not\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() required: boolean;\n\n /**\n * Input is readonly or not\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() readOnly = false;\n\n /**\n * Hint text\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() hintMessage = '';\n\n /**\n * Input type\n *\n * @type {FieldType}\n * @memberof FieldComponent\n */\n @HostBinding('attr.field-class')\n @Input()\n type: FieldType = 'text';\n\n /**\n * Input is update only on blur\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() updateOnBlur = false;\n\n /**\n * allow only digits in input\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() allowOnlyDigits = false;\n\n /**\n * allow autocomplete off in input\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() isAutocompleteOff = false;\n\n /**\n * allow negative numbers\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() allowNegative = true;\n\n /**\n * Show reserved content below form field\n * @property showBottomContent\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() showBottomContent = true;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FieldComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * Show loading button. Only for text\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() loading = false;\n\n /**\n * Show icon when field is valid\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() isValid = false;\n\n /**\n * Max characters number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() maxCharacters = 255;\n\n /**\n * Trim text on blur\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() trimOnBlur = false;\n /**\n * Trim text on submit\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() trimOnSubmit = false;\n /**\n * Max rows for multi-line type\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() maxRows = 0;\n /**\n * has text area counter\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() hasTextAreaCounter = true;\n\n /**\n * Hide in build errors for Reactive Forms\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * Set maximum number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() max: number | undefined;\n\n /**\n * Set minimum number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() min: number | undefined;\n\n /**\n * Sets textarea height. Default 110\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() textareaHeight = 110;\n\n /**\n * Sets textarea borderless. Default false\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() borderless = false;\n\n @Input() autosizableTextarea = false;\n\n /**\n * Indicates if this field is filled by AI\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() isAIVariant = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria Labeled By Element Id.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaLabelledbyId = computed(() => `${this.id()}-labeledBy`);\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria LabeledBy Text.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaLabelledby = input<string | undefined>(undefined);\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria Described By Element Id.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaDescribedbyId = computed(() => `${this.id()}-describedBy`);\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria DescribedBy Text.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaDescribedby = input<string | undefined>(undefined);\n\n /**\n * Show state of error\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() hasError = false;\n\n @Output() validateEvent = new EventEmitter<string>();\n @Output() fieldBlur = new EventEmitter<void>();\n\n @ViewChild('inputElement', { read: ElementRef }) field: ElementRef<HTMLInputElement>;\n @ViewChild('autosize') autosize: CdkTextareaAutosize;\n\n get getPasswordIcon(): IconName {\n if (this.applicationTheme === 'classic') {\n return this.showPassword ? 'Eye-hide' : 'Eye-view';\n } else {\n if (!this.isActiveField && !this.isActiveHover) {\n return this.showPassword ? 'View-in-line' : 'Hide-in-line';\n } else {\n return this.showPassword ? 'View-filled' : 'Hide-filled';\n }\n }\n }\n\n isActiveField = false;\n isActiveHover = false;\n\n keyboardFocused = signal(false);\n\n protected readonly translationContext = 'FIELD.';\n\n /**\n * @ignore\n */\n onChange = (_: any) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n @Optional() @Self() public ngControl: NgControl,\n private focusMonitor: FocusMonitor,\n private ngZone: NgZone,\n private destroyRef: DestroyRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.field)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin =>\n this.ngZone.run(() => {\n this.keyboardFocused.set(origin === 'keyboard');\n })\n );\n\n if (this.type === 'multi-line') {\n this.autosize.resizeToFitContent(true);\n }\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n showClose: boolean;\n showPassword: boolean;\n currentType: string;\n errorsLength: boolean;\n\n ngOnInit(): void {\n this.setSearchInput();\n this.currentType = this.getType();\n }\n\n validate(): void {\n this.validateEvent.emit(this.value);\n }\n\n //set search input initial value\n setSearchInput(): void {\n if (this.type === 'search' || this.type === 'collapsed-search') {\n this.matIconRegistry.addSvgIcon('Search', this.domSanitizer.bypassSecurityTrustResourceUrl('/icons/Search.svg'));\n if (this.value) {\n this.showClose = true;\n } else {\n this.showClose = false;\n }\n } else {\n this.showClose = false;\n }\n }\n\n //change type for reveal password\n getType(): string {\n if (this.type === 'password' && this.showPassword) {\n return 'text';\n }\n return this.type;\n }\n\n //Clear input value\n clearValue(): void {\n this.value = '';\n this.onChange(this.value);\n this.onChangeInputSearch();\n }\n\n //toggle for password\n showPasswordClick() {\n this.showPassword = !this.showPassword;\n this.currentType = this.getType();\n }\n\n //Set options for search input\n onChangeInputSearch() {\n if (this.type === 'search' || this.type === 'collapsed-search') {\n if (!this.value) {\n this.showClose = false;\n }\n if (this.value) {\n this.showClose = true;\n }\n }\n }\n\n // Set errors length for validation\n // Consider only those errors which which are not empty\n setErrorsLength(): boolean {\n if (!!this._errors) {\n return this._errors.filter(err => !!err).length > 0 ? true : false;\n }\n return false;\n }\n\n //Save input value\n onInput(event: any) {\n this.value = event.target.value;\n this.errorsLength = this.setErrorsLength();\n if (!this.updateOnBlur) {\n this.onTouch();\n }\n if (this.allowOnlyDigits && !this.allowNegative && +this.value < 0) {\n this.value = '0';\n } else {\n this.onChange(this.type === 'number' && this.value !== '' ? +this.value : this.value);\n }\n }\n\n writeValue(value?: any): void {\n if (value !== null && value !== undefined) {\n this.value = value;\n } else {\n this.value = '';\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onActive(state: boolean, action: string): void {\n if (action === 'hover') {\n this.isActiveHover = state;\n } else if (action === 'focus') {\n this.isActiveField = state;\n\n if (!state && this.trimOnBlur) {\n this.clearSpace();\n }\n }\n }\n\n onSubmit(): void {\n if (this.trimOnSubmit) {\n this.clearSpace();\n }\n }\n\n private clearSpace(): void {\n this.value = this.value.trim();\n this.onChange(this.value);\n }\n\n onBlur(): void {\n this.fieldBlur.emit();\n }\n\n trackByFn = (index: number, value: any) => value.changingThisBreaksApplicationSecurity;\n\n focus(): void {\n this.field.nativeElement.focus();\n }\n\n refocusPasswordButton(btn: any) {\n setTimeout(() => {\n btn.focus('keyboard');\n }, 0);\n }\n}\n","<ng-container>\n <mat-form-field\n [ngStyle]=\"{\n '--textarea-height': textareaHeight - 10 + 'px',\n '--textarea-height-container': textareaHeight + 'px',\n }\"\n #uiField\n appearance=\"outline\"\n hideRequiredMarker=\"true\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError ? 'warn' : 'accent'\"\n [ngClass]=\"{\n 'hide-bottom-content': !showBottomContent,\n textarea: type === 'textarea',\n 'multi-line': type === 'multi-line',\n 'multi-line-textarea': type === 'multi-line' && autosizableTextarea && borderless,\n 'keyboard-focused': keyboardFocused(),\n 'has-label': !!label,\n 'has-value': !!value,\n 'text-area-borderless': type === 'textarea' && borderless,\n }\"\n (mouseenter)=\"onActive(true, 'hover')\"\n (mouseleave)=\"onActive(false, 'hover')\"\n >\n <span [style.display]=\"'none'\" [id]=\"ariaDescribedbyId()\">\n @if (required) {\n <span>{{ 'ERRORS.REQUIRED' | uiTranslate | async }}</span>\n }\n {{ ariaDescribedby() }}\n </span>\n <span [style.display]=\"'none'\" [id]=\"ariaLabelledbyId()\">\n {{ ariaLabelledby() ?? label }}\n </span>\n <mat-label\n *ngIf=\"(label || labelHtml()) && ((type !== 'search' && applicationTheme === 'classic') || applicationTheme !== 'classic')\"\n class=\"label-with-icon\"\n >\n @if(isAIVariant || labelIcon) {\n <ui-icon\n [name]=\"isAIVariant ? 'Sparkle-in-line' : labelIcon!\"\n [size]=\"'16'\"\n class=\"label-icon\"\n ></ui-icon>\n }\n <span>\n @if(labelHtml()) {\n <span [innerHTML]=\"labelHtml()\"></span>\n } @else {\n {{ label }}\n }@if(required) {<span>*</span>}\n </span>\n </mat-label>\n <mat-icon\n *ngIf=\"type === 'search' || type === 'collapsed-search'\"\n matIconPrefix\n class=\"search-icon\"\n [svgIcon]=\"'Search'\"\n ></mat-icon>\n <input\n [readonly]=\"readOnly\"\n *ngIf=\"type !== 'textarea' && type !== 'multi-line'; else textarea\"\n matInput\n #inputElement\n (blur)=\"onTouch(); onActive(false, 'focus'); onBlur()\"\n (input)=\"onInput($event)\"\n [id]=\"id()\"\n (keyup)=\"onChangeInputSearch()\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled || loading\"\n [type]=\"currentType\"\n (keyup.enter)=\"onSubmit()\"\n [max]=\"max\"\n [min]=\"min\"\n [name]=\"fieldName!\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-invalid]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError\"\n [attr.aria-labelledby]=\"ariaLabelledbyId()\"\n [attr.aria-describedby]=\"ariaDescribedbyId()\"\n role=\"textbox\"\n digitsOnly\n [autocomplete]=\"isAutocompleteOff ? 'off' : 'on'\"\n [allowOnlyDigits]=\"allowOnlyDigits\"\n [allowNegative]=\"allowNegative\"\n (focusin)=\"onActive(true, 'focus')\"\n />\n\n <ng-template #textarea>\n <textarea\n matInput\n #inputElement\n #autosize=\"cdkTextareaAutosize\"\n [readonly]=\"readOnly\"\n (blur)=\"onTouch(); onActive(false, 'focus'); onBlur()\"\n (input)=\"onInput($event)\"\n [id]=\"id()\"\n (keyup)=\"onChangeInputSearch()\"\n (keyup.enter)=\"onSubmit()\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [type]=\"currentType\"\n [name]=\"fieldName!\"\n [required]=\"required\"\n [attr.aria-label]=\"!label ? ariaLabel : ''\"\n [attr.aria-invalid]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError\"\n [attr.aria-labelledby]=\"ariaLabelledbyId()\"\n [attr.aria-describedby]=\"ariaDescribedbyId()\"\n role=\"textbox\"\n [cdkTextareaAutosize]=\"type === 'multi-line'\"\n [cdkAutosizeMinRows]=\"type === 'multi-line' ? 1 : 5\"\n [cdkAutosizeMaxRows]=\"type === 'multi-line' ? maxRows : 5\"\n (focusin)=\"onActive(true, 'focus')\"\n ></textarea>\n </ng-template>\n\n <div class=\"options\" *ngIf=\"type === 'search' || type === 'collapsed-search' || type === 'password' || type === 'validation-text'\">\n <div class=\"options-container\">\n <ui-button\n *ngIf=\"showClose\"\n variant=\"secondary\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n [label]=\"('COMMON.CLEAR' | uiTranslate | async)!\"\n (buttonClickEvent)=\"clearValue()\"\n [ariaLabel]=\"ariaLabel + '--' + ('COMMON.CLEAR' | uiTranslate | async)\"\n ></ui-button>\n <ui-button\n class=\"password\"\n variant=\"secondary\"\n [tooltip]=\"((showPassword ? 'FIELD.HIDE_PASSWORD' : 'FIELD.SHOW_PASSWORD') | uiTranslate | async)!\"\n *ngIf=\"type === 'password'\"\n [justIcon]=\"true\"\n role=\"switch\"\n [attr.aria-checked]=\"showPassword\"\n [iconName]=\"getPasswordIcon\"\n [applicationTheme]=\"applicationTheme\"\n (click)=\"showPasswordClick()\"\n #btn\n (keydown.enter)=\"refocusPasswordButton(btn)\"\n (keydown.space)=\"refocusPasswordButton(btn)\"\n ></ui-button>\n\n <ng-container\n *ngIf=\"\n type === 'validation-text' && (applicationTheme === 'dark' || applicationTheme === 'light') && value.length\n \"\n >\n <ui-button\n *ngIf=\"!isValid\"\n class=\"validation\"\n [variant]=\"'text'\"\n [applicationTheme]=\"'light'\"\n [label]=\"'Validate'\"\n [loading]=\"loading\"\n (click)=\"validate()\"\n [disabled]=\"disabled\"\n [size]=\"'small'\"\n ></ui-button>\n <ui-icon class=\"valid\" [color]=\"'white'\" applicationTheme=\"light\" [name]=\"'Check'\" *ngIf=\"isValid\"></ui-icon>\n </ng-container>\n </div>\n </div>\n @if (hasTextAreaCounter) {\n <mat-hint class=\"info\" *ngIf=\"type === 'textarea' && !errorsLength && !(ngControl?.errors | hasValidationError)\"\n >{{ value.length }} / {{ maxCharacters }}</mat-hint\n >\n }\n\n <mat-hint\n class=\"info\"\n *ngIf=\"hintMessage && !errorsLength && !(ngControl?.errors | hasValidationError) && type !== 'textarea'\"\n >{{ hintMessage }}</mat-hint\n >\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-template [ngIf]=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-template>\n\n <ui-validation-error\n *ngIf=\"ngControl && !hideBuiltInErrors\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n ></ui-validation-error>\n </mat-hint>\n\n @if (badgeVariant) {\n <ui-badge class=\"field-badge\"\n [variant]=\"badgeVariant\"></ui-badge>\n }\n </mat-form-field>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { DigitsOnlyDirective } from '../../directives/digits-only.directive';\nimport { FieldComponent } from './field.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '../validation-error/validation-error.module';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\n\n@NgModule({\n declarations: [FieldComponent],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n FormsModule,\n ReactiveFormsModule,\n ButtonComponentModule,\n MatIconModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n DigitsOnlyDirective,\n BadgeComponentModule,\n ],\n exports: [FieldComponent],\n})\nexport class FieldComponentModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener,\n input,\n OnInit,\n output,\n ViewChild,\n ViewEncapsulation,\n computed,\n signal,\n Optional,\n Self,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport {\n InlineFieldState,\n InlineFieldButtonConfig,\n InlineFieldValidation,\n InlineFieldChangeEvent,\n} from './inline-field.model';\nimport { FieldComponent } from '../field/field.component';\nimport { FieldType } from '../field/field.model';\n\n/**\n * A global counter used to generate unique inline field IDs.\n */\nexport let inlineFieldID = 0;\n\n@Component({\n selector: 'ui-inline-field',\n templateUrl: './inline-field.component.html',\n styleUrls: ['./inline-field.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.theme]': 'applicationTheme()',\n '[attr.state]': 'state()',\n '[attr.editing]': 'isEditing()',\n '[class.full-width]': 'fullWidth()',\n },\n standalone: false\n})\nexport class InlineFieldComponent implements OnInit, ControlValueAccessor {\n @HostBinding() class = 'ui-inline-field';\n\n /**\n * Component ID for accessibility\n */\n id = input(`inline-field-${inlineFieldID++}`);\n\n /**\n * Field label\n */\n label = input('');\n\n /**\n * Field placeholder\n */\n placeholder = input('');\n\n /**\n * Current value\n */\n value = input('');\n\n /**\n * Whether the field is required\n */\n required = input(false);\n\n /**\n * Whether the field is disabled\n */\n disabled = input(false);\n\n /**\n * Application theme\n */\n applicationTheme = input<ApplicationTheme>('light');\n\n /**\n * Field type\n */\n fieldType = input<FieldType>('text');\n\n /**\n * Field type\n */\n maxRows = input<number>(0);\n\n /**\n * Error messages\n */\n errors = input<string[]>([]);\n\n /**\n * Whether to show errors\n */\n showErrors = input(true);\n\n /**\n * Button configuration\n */\n buttonConfig = input<InlineFieldButtonConfig>({\n saveLabel: 'Save',\n cancelLabel: 'Cancel',\n saveIcon: 'Check-filled',\n cancelIcon: 'Close-filled',\n });\n\n /**\n * Validation configuration\n */\n validation = input<InlineFieldValidation>({});\n\n /**\n * ARIA label\n */\n ariaLabel = input('');\n\n /**\n * Full width\n */\n fullWidth = input(false);\n\n /**\n * Emitted when save button is clicked\n */\n save = output<InlineFieldChangeEvent>();\n\n /**\n * Emitted when cancel button is clicked\n */\n cancel = output<void>();\n\n /**\n * Emitted when value changes\n */\n valueChange = output<string>();\n\n /**\n * Emitted when editing mode changes\n */\n editingModeChange = output<boolean>();\n\n /**\n * Emitted on focus\n */\n focusEvent = output<void>();\n\n /**\n * Emitted on blur\n */\n blurEvent = output<void>();\n\n @ViewChild('fieldElement') fieldComponent: FieldComponent;\n\n private _isEditing = signal(false);\n private _originalValue = signal('');\n private _currentValue = signal('');\n private _state = signal<InlineFieldState>('default');\n\n isEditing = computed(() => this._isEditing());\n currentValue = computed(() => this._currentValue());\n state = computed(() => this._state());\n\n saveButtonConfig = computed(() => ({\n label: this.buttonConfig().saveLabel || 'Save',\n iconName: this.buttonConfig().saveIcon || 'Check-filled',\n variant: 'secondary-inverted' as const,\n size: 'small' as const,\n disabled: this.disabled(),\n }));\n\n cancelButtonConfig = computed(() => ({\n label: this.buttonConfig().cancelLabel || 'Cancel',\n iconName: this.buttonConfig().cancelIcon || 'Close-filled',\n variant: 'secondary-inverted' as const,\n size: 'small' as const,\n disabled: this.disabled(),\n }));\n\n private onChange = (_value: string) => {};\n private onTouched = () => {};\n\n constructor(\n private cdr: ChangeDetectorRef,\n private destroyRef: DestroyRef,\n private elementRef: ElementRef,\n @Optional() @Self() public ngControl: NgControl\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this._currentValue.set(this.value());\n this._originalValue.set(this.value());\n this.updateState();\n }\n\n writeValue(value: string): void {\n const newValue = value || '';\n this._currentValue.set(newValue);\n if (!this.isEditing()) {\n this._originalValue.set(newValue);\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n this.updateState();\n this.cdr.markForCheck();\n }\n\n @HostListener('focusout', ['$event'])\n onComponentFocusOut(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement;\n const isLeavingComponent = !relatedTarget || !this.elementRef.nativeElement.contains(relatedTarget);\n\n if (isLeavingComponent && this.isEditing()) {\n this._currentValue.set(this._originalValue());\n this.exitEditMode();\n this.onChange(this._originalValue());\n this.cancel.emit();\n }\n }\n\n @HostListener('keydown.escape', ['$event'])\n onEscapePressed(event: KeyboardEvent): void {\n if (this.isEditing()) {\n event.preventDefault();\n this.cancelEdit();\n }\n }\n\n @HostListener('keydown.enter', ['$event'])\n onEnterPressed(event: KeyboardEvent): void {\n if (this.isEditing() && !event.shiftKey) {\n event.preventDefault();\n this.saveEdit();\n }\n }\n\n @HostListener('keydown.tab', ['$event'])\n onTabPressed(): void {\n return;\n }\n\n onInputFocus(): void {\n if (!this.disabled() && !this.isEditing()) {\n this.enterEditMode();\n }\n this._state.set('focused');\n this.focusEvent.emit();\n this.onTouched();\n }\n\n onInputBlur(): void {\n this.blurEvent.emit();\n }\n\n onInputChange(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n const newValue = inputElement.value;\n this._currentValue.set(newValue);\n this.valueChange.emit(newValue);\n }\n\n focus(): void {\n if (this.fieldComponent) {\n this.fieldComponent.focus();\n this.fieldComponent.field?.nativeElement?.select();\n }\n }\n\n enterEditMode(): void {\n if (this.disabled() || this.isEditing()) {\n return;\n }\n\n this._originalValue.set(this._currentValue());\n this._isEditing.set(true);\n this._state.set('editing');\n this.editingModeChange.emit(true);\n\n this.cdr.markForCheck();\n }\n\n saveEdit(): void {\n if (!this.isEditing()) {\n return;\n }\n\n const newValue = this.currentValue();\n const hasValidationError = this.hasValidationError(newValue);\n\n if (hasValidationError) {\n this._state.set('error');\n this.cdr.markForCheck();\n return;\n }\n\n const changeEvent: InlineFieldChangeEvent = {\n value: newValue,\n saved: true,\n previousValue: this._originalValue(),\n };\n\n this._originalValue.set(newValue);\n this.exitEditMode();\n this.onChange(newValue);\n this.save.emit(changeEvent);\n }\n\n cancelEdit(): void {\n if (!this.isEditing()) {\n return;\n }\n\n this._currentValue.set(this._originalValue());\n this.exitEditMode();\n this.cancel.emit();\n }\n\n private exitEditMode(): void {\n this._isEditing.set(false);\n this.updateState();\n this.editingModeChange.emit(false);\n this.cdr.markForCheck();\n }\n\n private updateState(): void {\n if (this.disabled()) {\n this._state.set('disabled');\n } else if (this.errors().length > 0) {\n this._state.set('error');\n } else if (this.isEditing()) {\n this._state.set('editing');\n } else {\n this._state.set('default');\n }\n }\n\n private hasValidationError(value: string): boolean {\n const config = this.validation();\n\n return (\n this.hasRequiredError(value, config) ||\n this.hasMinLengthError(value, config) ||\n this.hasMaxLengthError(value, config) ||\n this.hasPatternError(value, config) ||\n this.hasCustomValidationError(value, config)\n );\n }\n\n private hasRequiredError(value: string, config: InlineFieldValidation): boolean {\n return !!config.required && (!value || value.trim().length === 0);\n }\n\n private hasMinLengthError(value: string, config: InlineFieldValidation): boolean {\n return !!config.minLength && value.length < config.minLength;\n }\n\n private hasMaxLengthError(value: string, config: InlineFieldValidation): boolean {\n return !!config.maxLength && value.length > config.maxLength;\n }\n\n private hasPatternError(value: string, config: InlineFieldValidation): boolean {\n return !!config.pattern && !config.pattern.test(value);\n }\n\n private hasCustomValidationError(value: string, config: InlineFieldValidation): boolean {\n return !!config.customValidator && config.customValidator(value);\n }\n}\n","<div class=\"inline-field-container\">\n <div class=\"field-wrapper\" [ngClass]=\"{ 'is-editing': isEditing() }\">\n <ui-field\n [id]=\"id() + '-input'\"\n [label]=\"label()\"\n [placeholder]=\"placeholder()\"\n [value]=\"currentValue()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [errors]=\"errors()\"\n [showBottomContent]=\"showErrors()\"\n [ariaLabel]=\"ariaLabel()\"\n [applicationTheme]=\"applicationTheme()\"\n [fullWidth]=\"true\"\n [isAutocompleteOff]=\"true\"\n [type]=\"fieldType()\"\n [maxRows]=\"maxRows()\"\n (input)=\"onInputChange($event)\"\n (fieldBlur)=\"onInputBlur()\"\n (focusin)=\"onInputFocus()\"\n #fieldElement\n data-testid=\"inline-field\"\n ></ui-field>\n\n <div *ngIf=\"isEditing()\" class=\"action-buttons\">\n <ui-button\n [label]=\"saveButtonConfig().label\"\n [iconName]=\"saveButtonConfig().iconName\"\n [variant]=\"saveButtonConfig().variant\"\n [size]=\"saveButtonConfig().size\"\n [disabled]=\"saveButtonConfig().disabled\"\n [applicationTheme]=\"applicationTheme()\"\n [iconPosition]=\"'left'\"\n (buttonClickEvent)=\"saveEdit()\"\n [attr.aria-label]=\"'Save ' + (label() || 'field')\"\n class=\"save-button\"\n ></ui-button>\n\n <ui-button\n [label]=\"cancelButtonConfig().label\"\n [iconName]=\"cancelButtonConfig().iconName\"\n [variant]=\"cancelButtonConfig().variant\"\n [size]=\"cancelButtonConfig().size\"\n [disabled]=\"cancelButtonConfig().disabled\"\n [applicationTheme]=\"applicationTheme()\"\n [iconPosition]=\"'left'\"\n (buttonClickEvent)=\"cancelEdit()\"\n [attr.aria-label]=\"'Cancel editing ' + (label() || 'field')\"\n class=\"cancel-button\"\n ></ui-button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { FieldComponentModule } from '../field/field.component.module';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\n\nimport { InlineFieldComponent } from './inline-field.component';\n\n@NgModule({\n declarations: [InlineFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n ButtonComponentModule,\n FieldComponentModule,\n IconComponentModule,\n ],\n exports: [InlineFieldComponent],\n})\nexport class InlineFieldComponentModule {}\n","export enum Color {\n // Teal colors\n TGO_TEAL_60B = '#1C443C',\n TGO_TEAL_30B = '#31766A',\n TGO_TEAL_DEFAULT = '#46A997',\n TGO_TEAL_30W = '#7EC3B6',\n TGO_TEAL_60W = '#B5DDD5',\n TGO_TEAL_SECONDARY = '#CBD6CB',\n TGO_TEAL_90W = '#ECF6F5',\n\n // Petrol colors\n TGO_PETROL_60B = '#102930',\n TGO_PETROL_30B = '#1B4754',\n TGO_PETROL_DEFAULT = '#276678',\n TGO_PETROL_30W = '#6894A0',\n TGO_PETROL_60W = '#A9C2C9',\n TGO_PETROL_SECONDARY = '#C8D7DE',\n TGO_PETROL_90W = '#E9F0F1',\n\n // Error colors\n TGO_ERROR_60B = '#513131',\n TGO_ERROR_30B = '#8E5655',\n TGO_ERROR_60W = '#E3C3C6',\n TGO_ERROR_SECONDARY = '#F0DAD9',\n TGO_ERROR_DEFAULT = '#CB7B7A',\n\n // Warning colors\n TGO_WARNING_SECONDARY = '#F0D6BB',\n TGO_WARNING_DEFAULT = '#CCA45F',\n\n // Black colors - grayscale\n TGO_BLACK = '#000000',\n TGO_DARK = '#888888',\n TGO_MEDIUM = '#E0E0E0',\n TGO_GREY = '#EDEDED',\n TGO_LIGHT = '#F6F6F6',\n TGO_WHITE = '#FFFFFF',\n\n // Brand colors\n BRAND_60 = '#A90686',\n BRAND_50 = '#D410AA',\n BRAND_40 = '#FF54DA',\n BRAND_30 = '#FFB3EE',\n BRAND_20 = '#FFE6FA',\n BRAND_10 = '#FFF2FC',\n\n // Grayscale colors\n GRAYSCALE_50 = '#666666',\n GRAYSCALE_40 = '#919191',\n GRAYSCALE_30 = '#D3D3D3',\n GRAYSCALE_20 = '#E9E9E9',\n GRAYSCALE_10 = '#F4F4F4',\n\n // Additional colors\n BLACK = '#242424',\n\n // Accent colors\n ACCENT_20 = '#FFF5ED',\n ACCENT_10 = '#FFFAF6',\n\n // Informative colors\n INFORMATIVE_50 = '#1A47AA',\n INFORMATIVE_40 = '#0165FC',\n INFORMATIVE_30 = '#277CFD',\n INFORMATIVE_20 = '#99C1FE',\n INFORMATIVE_10 = '#D9E8FF',\n\n // Success colors\n SUCCESS_50 = '#3C9A13',\n SUCCESS_40 = '#56C71A',\n SUCCESS_30 = '#80D63E',\n SUCCESS_20 = '#AAE47A',\n SUCCESS_10 = '#D4F2C3',\n\n // Error additional colors\n ERROR_50 = '#E02800',\n ERROR_40 = '#FF3003',\n ERROR_30 = '#FF6E4F',\n ERROR_20 = '#FFAC9A',\n ERROR_10 = '#FFEAE6',\n\n // Warning additional colors\n WARNING_50 = '#D07D00',\n WARNING_40 = '#FF9A03',\n WARNING_30 = '#FFC268',\n WARNING_20 = '#FFE1B3',\n WARNING_10 = '#FFF5E6',\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[uiDragDrop]',\n standalone: false\n})\nexport class DragDropDirective {\n constructor() { }\n\n @HostBinding('class.file-over') file: boolean;\n @Output() fileDropped = new EventEmitter<any>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.file = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.file = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.file = false;\n let files: FileList;\n if (!!event.dataTransfer) {\n files = event.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { Color } from '../../models/colors.model';\n\n@Component({\n selector: 'ui-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUploadComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('inOutAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n trigger('inOutAnimationProgress', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n trigger('inOutAnimationChange', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n ],\n standalone: false\n})\nexport class FileUploadComponent implements OnInit, OnChanges, ControlValueAccessor {\n @HostBinding() class = 'ui-file-upload';\n\n /**\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() maxFileSizeMB: number;\n\n /**\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() minFileSizeMB: number;\n\n /**\n * Supported files for input field\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() supportedFileTypes?: string;\n\n /**\n * Upload progress\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() uploadProgress: number;\n\n /**\n * Show Upload progress percentage or not\n *\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() showUploadProgress: boolean = true;\n\n /**\n * Custom progress message\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() fileProcessingMessage: string | undefined;\n\n /**\n * File upload errors\n *\n * @type {string[]}\n * @memberof FileUploadComponent\n */\n @Input() errors?: string[] | null;\n\n /**\n * File upload disabled\n *\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() disabled = false;\n\n /**\n * Existing file information\n *\n * @type {(File | null)}\n * @memberof FileUploadComponent\n */\n @Input() file: File | null = null;\n\n /**\n * Color of the file upload.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() companyColor: string | null = '';\n\n @HostBinding('style.--color')\n compColor: string;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FileUploadComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * Whether to show the file size information.\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() showFileSize = true;\n\n @Output() OnDrop: EventEmitter<File> = new EventEmitter<File>();\n\n @ViewChild('fileDrop') fileDrop: ElementRef<HTMLInputElement>;\n\n protected readonly translationContext = 'FILE_UPLOAD.';\n\n /**\n * @ignore\n */\n onChange = (_: any) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n get fileSizeInMB(): string | null {\n return this.file ? (this.file.size / (1024 * 1024)).toFixed(2) : null;\n }\n\n isMissedMinSize = false;\n progress = false;\n success = false;\n browse: boolean;\n isCanceled = false;\n colorUploadSuccess = Color.SUCCESS_50;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.browse = true;\n }\n\n //When file is dropped\n onFileDropped(files: FileList) {\n this.emitFile(files);\n }\n\n //When input changes\n onChangeUpload(event: Event) {\n this.isCanceled = false;\n const element = event.currentTarget as HTMLInputElement;\n // Prevents clearing items when user selects cancel in the dialog. Cancel event can emit empty file list.\n if (element.files?.length) {\n this.emitFile(element.files || new FileList());\n }\n }\n\n //Emit drop file\n emitFile(files: FileList) {\n const [file] = Array.from(files);\n this.file = file;\n this.errors = null;\n this.onTouch();\n this.isMissedMinSize =\n !file?.size && !this.minFileSizeMB ? true : this.fileSizeToMB(file?.size ?? 0) <= this.minFileSizeMB;\n if (!this.isMissedMinSize) {\n this.onChange(this.file);\n this.OnDrop.emit(file);\n }\n }\n\n //Show progress-bar\n showProgress(): boolean {\n this.browse = false;\n return !!(this.file && !this.errors && !this.isMissedMinSize);\n }\n\n //Show success elements\n showSuccess(): boolean {\n return !!(this.file && this.uploadProgress === 100 && !this.errors && !this.isMissedMinSize);\n }\n\n //Show browse when there are error\n showBrowse(): boolean {\n return !!(this.errors || this.isMissedMinSize);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.isCanceled) {\n if (changes['uploadProgress'] || changes['file']) {\n this.progress = this.showProgress();\n this.success = this.showSuccess();\n this.browse = this.showBrowse();\n }\n if (changes['errors']) {\n this.progress = this.showProgress();\n this.success = this.showSuccess();\n this.browse = this.showBrowse();\n }\n if (changes['applicationTheme']) {\n this.compColor = this.getCompanyColor();\n }\n }\n }\n\n writeValue(value?: File): void {\n if (value) {\n this.file = value || null;\n } else {\n this.file = null;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private getCompanyColor(): string {\n return this.companyColor || (this.applicationTheme === 'classic' ? '#46A997' : '#D410AA');\n }\n\n private fileSizeToMB(fileSize: number): number {\n return fileSize / 1024 / 1024;\n }\n\n onKeydown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n this.fileDrop?.nativeElement?.click();\n } else if (ev.key === 'Escape') {\n this.file = null;\n this.success = false;\n this.progress = false;\n this.errors = null;\n this.isMissedMinSize = false;\n this.browse = true;\n this.isCanceled = true;\n }\n }\n}\n","<ng-container>\n <div\n class=\"upload-file-container\"\n uiDragDrop\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{ 'upload-errors': !!errors || isMissedMinSize, 'upload-file-container-disabled': disabled }\"\n (fileDropped)=\"onFileDropped($event)\"\n [tabIndex]=\"0\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"fileDrop?.nativeElement?.click()\"\n >\n <div *ngIf=\"browse && !(success && !!file && progress)\" [@inOutAnimation] class=\"upload-files\">\n <div class=\"upload-browse\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n\n <div class=\"errors\" *ngIf=\"!!errors || isMissedMinSize\" role=\"alert\">\n <ng-container *ngIf=\"!!errors\">\n <span *ngFor=\"let error of errors\"><ui-icon name=\"Error\" class=\"error-icon\"></ui-icon> {{ error }}</span>\n </ng-container>\n\n <span *ngIf=\"isMissedMinSize\">\n <ui-icon name=\"Error\" class=\"error-icon\"></ui-icon>\n {{ translationContext + 'MIN_SIZE_ERROR' | uiTranslate: { min: minFileSizeMB } | async }}\n </span>\n </div>\n <input\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"'upload-supported-files'\"\n [tabIndex]=\"-1\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"file\"\n [accept]=\"supportedFileTypes\"\n [disabled]=\"disabled\"\n (change)=\"onChangeUpload($event)\"\n />\n <p *ngIf=\"applicationTheme === 'classic'; else rebrandedDnDCopyTpl\">\n {{ translationContext + 'DRAG_AND_DROP_OR' | uiTranslate | async }}\n <span class=\"semibold\"> {{ translationContext + 'BROWSE' | uiTranslate | async | lowercase }}</span>\n {{ translationContext + 'YOUR_FILES' | uiTranslate | async }}\n </p>\n <span class=\"upload-text\">{{ maxFileSizeMB }}{{ translationContext + 'MAX_SIZE' | uiTranslate | async }}</span>\n <span *ngIf=\"minFileSizeMB\" class=\"upload-text\"\n >{{ minFileSizeMB }}{{ translationContext + 'MIN_SIZE' | uiTranslate | async }}</span\n >\n </div>\n </div>\n @if (success) {\n <div class=\"upload-success\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n <span class=\"upload-success-text\"\n ><ui-icon name=\"Check-round-in-line\" [color]=\"colorUploadSuccess\"></ui-icon\n >{{ translationContext + 'FILE_UPLOADING_SUCCESS' | uiTranslate | async }}</span\n >\n <input\n [tabIndex]=\"-1\"\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"success || progress ? '' : 'supported-file-types'\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"fileTest\"\n [accept]=\"supportedFileTypes\"\n (change)=\"onChangeUpload($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"upload-text\">{{ file?.name }}</span>\n @if (showFileSize) {\n <span class=\"upload-text\">{{\n translationContext + 'FILE_SIZE' | uiTranslate: { fileSize: fileSizeInMB } | async\n }}</span>\n }\n </div>\n }\n <div class=\"upload-progress\" [@inOutAnimationProgress] *ngIf=\"!!progress && !!file && !success\">\n <p>{{ file.name }}</p>\n <ui-progress-bar\n [progress]=\"uploadProgress\"\n [companyColor]=\"compColor\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-progress-bar>\n <p class=\"upload-text\">\n {{ fileProcessingMessage ?? (translationContext + 'UPLOADING' | uiTranslate | async) }}\n @if (showUploadProgress) {\n <span>{{ uploadProgress }}</span\n >%\n }\n </p>\n </div>\n\n <ng-template #iconTpl>\n <ui-icon\n *ngIf=\"applicationTheme === 'classic'; else rebrandedIconTpl\"\n class=\"upload-icon\"\n name=\"File-upload\"\n ></ui-icon>\n <ng-template #rebrandedIconTpl>\n <ui-icon class=\"upload-icon\" name=\"Upload\" [size]=\"'24'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n </ng-template>\n </ng-template>\n <ng-template #rebrandedDnDCopyTpl>\n <p id=\"'drag-and-drop'\">{{ translationContext + 'DRAG_AND_DROP' | uiTranslate | async }}</p>\n </ng-template>\n\n <div\n *ngIf=\"!!supportedFileTypes\"\n [attr.theme]=\"applicationTheme\"\n class=\"upload-supported-files\"\n id=\"upload-supported-files\"\n >\n <span>{{ translationContext + 'SUPPORTED_FILE_TYPES' | uiTranslate | async }}</span\n >{{ supportedFileTypes }}\n </div>\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { DragDropDirective } from '../../directives/drag-drop.directive';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '../progress-bar/progress-bar.component.module';\nimport { FileUploadComponent } from './file-upload.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [FileUploadComponent, DragDropDirective],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n ProgressBarComponentModule,\n UiTranslatePipe,\n ],\n exports: [FileUploadComponent],\n})\nexport class FileUploadComponentModule {}\n","import { Component, HostBinding, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { IconName, IconSize } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\n@Component({\n selector: 'ui-icon-label',\n templateUrl: './icon-label.component.html',\n styleUrls: ['./icon-label.component.scss'],\n standalone: false\n})\nexport class IconLabelComponent implements OnInit {\n /**\n * Icon size\n *\n * @type {IconSize}\n * @memberof IconLabelComponent\n */\n @Input() iconSize: IconSize = '16';\n\n /**\n * Icon name\n *\n * @type {IconName}\n * @memberof IconLabelComponent\n */\n @Input() iconName: IconName;\n\n /**\n * Label\n *\n * @memberof IconLabelComponent\n */\n @Input() text = '';\n\n /**\n * Icon color\n *\n * @type {IconColor}\n * @memberof IconLabelComponent\n */\n @Input() iconColor? = '';\n\n /**\n * Indent between icon and label\n *\n * @type {string}\n * @memberof IconLabelComponent\n */\n @HostBinding('style.--icon-indent')\n @Input()\n iconIndent? = '8';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof IconLabelComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {}\n}\n","<ui-icon [name]=\"iconName\" [size]=\"iconSize\" [color]=\"iconColor\" aria-hidden=\"true\"></ui-icon>\n<span>{{ text }}</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { IconLabelComponent } from './icon-label.component';\n\n@NgModule({\n declarations: [IconLabelComponent],\n imports: [CommonModule, IconComponentModule],\n exports: [IconLabelComponent],\n providers: [],\n})\nexport class IconLabelComponentModule {}\n","export enum LogoTypeEnum {\n DEFAULT = 'default',\n POWEREDBY = 'poweredby',\n REVERSE = 'reverse',\n PRIMARY_BRANDMARK_PINK = 'primary-brandmark-pink',\n PRIMARY_LOCKUP_PINK = 'primary-lockup-pink',\n PRIMARY_WORDMARK_PINK = 'primary-wordmark-pink',\n SECONDARY_BRANDMARK_BLACK = 'secondary-brandmark-black',\n SECONDARY_BRANDMARK_CREAM = 'secondary-brandmark-cream',\n SECONDARY_LOCKUP_BLACK = 'secondary-lockup-black',\n SECONDARY_LOCKUP_CREAM = 'secondary-lockup-cream',\n SECONDARY_WORDMARK_BLACK = 'secondary-wordmark-black',\n SECONDARY_WORDMARK_CREAM = 'secondary-wordmark-cream',\n}\n\nexport enum LogoPathEnum {\n DEFAULT = '/images/testgorilla.svg',\n POWEREDBY = '/images/poweredbyTG.svg',\n REVERSE = '/images/reverseTG.svg',\n PRIMARY_BRANDMARK_PINK = '/images/rebrand-logo/primary_brandmark_pink.svg',\n PRIMARY_LOCKUP_PINK = '/images/rebrand-logo/primary_lockup_pink.svg',\n PRIMARY_WORDMARK_PINK = '/images/rebrand-logo/primary_wordmark_pink.svg',\n SECONDARY_BRANDMARK_BLACK = '/images/rebrand-logo/secondary_brandmark_black.svg',\n SECONDARY_BRANDMARK_CREAM = '/images/rebrand-logo/secondary_brandmark_cream.svg',\n SECONDARY_LOCKUP_BLACK = '/images/rebrand-logo/secondary_lockup_black.svg',\n SECONDARY_LOCKUP_CREAM = '/images/rebrand-logo/secondary_lockup_cream.svg',\n SECONDARY_WORDMARK_BLACK = '/images/rebrand-logo/secondary_wordmark_black.svg',\n SECONDARY_WORDMARK_CREAM = '/images/rebrand-logo/secondary_wordmark_cream.svg',\n REBRAND_POWEREDBY = '/images/rebrand-logo/powered-by.svg',\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { LogoPathEnum, LogoTypeEnum } from './logo.model';\n\n@Component({\n selector: 'ui-logo',\n templateUrl: './logo.component.html',\n styleUrls: ['./logo.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class LogoComponent implements OnInit, OnChanges {\n /**\n * Logo type\n *\n * @type {LogoTypeEnum}\n * @memberof LogoComponent\n */\n @Input() type: LogoTypeEnum = LogoTypeEnum.DEFAULT;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof LogoComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Label. Only for ppoweredby type\n *\n * @type {string}\n * @memberof LogoComponent\n */\n @Input() label = 'POWERED BY';\n\n /**\n * Set logo width\n * @default 200\n * @type {number}\n * @memberof LogoComponent\n */\n @Input() width = 200;\n\n /**\n *\n * Allow change logo width\n *\n * @type {string}\n * @memberof LogoComponent\n */\n @Input() allowResizing = false;\n\n protected readonly LogoTypeEnum = LogoTypeEnum;\n\n /**\n * @ignore\n */\n logoURL: String;\n\n /**\n * @ignore\n */\n setURL = () => {\n if (this.applicationTheme === 'classic') {\n switch (this.type) {\n case LogoTypeEnum.POWEREDBY: {\n this.logoURL = LogoPathEnum.POWEREDBY;\n break;\n }\n case LogoTypeEnum.REVERSE: {\n this.logoURL = LogoPathEnum.REVERSE;\n break;\n }\n default: {\n this.logoURL = LogoPathEnum.DEFAULT;\n break;\n }\n }\n } else {\n switch (this.type) {\n case LogoTypeEnum.PRIMARY_BRANDMARK_PINK: {\n this.logoURL = LogoPathEnum.PRIMARY_BRANDMARK_PINK;\n break;\n }\n case LogoTypeEnum.PRIMARY_LOCKUP_PINK: {\n this.logoURL = LogoPathEnum.PRIMARY_LOCKUP_PINK;\n break;\n }\n case LogoTypeEnum.PRIMARY_WORDMARK_PINK: {\n this.logoURL = LogoPathEnum.PRIMARY_WORDMARK_PINK;\n break;\n }\n case LogoTypeEnum.SECONDARY_BRANDMARK_BLACK: {\n this.logoURL = LogoPathEnum.SECONDARY_BRANDMARK_BLACK;\n break;\n }\n case LogoTypeEnum.SECONDARY_BRANDMARK_CREAM: {\n this.logoURL = LogoPathEnum.SECONDARY_BRANDMARK_CREAM;\n break;\n }\n case LogoTypeEnum.SECONDARY_LOCKUP_BLACK: {\n this.logoURL = LogoPathEnum.SECONDARY_LOCKUP_BLACK;\n break;\n }\n case LogoTypeEnum.SECONDARY_LOCKUP_CREAM: {\n this.logoURL = LogoPathEnum.SECONDARY_LOCKUP_CREAM;\n break;\n }\n case LogoTypeEnum.SECONDARY_WORDMARK_BLACK: {\n this.logoURL = LogoPathEnum.SECONDARY_WORDMARK_BLACK;\n break;\n }\n case LogoTypeEnum.SECONDARY_WORDMARK_CREAM: {\n this.logoURL = LogoPathEnum.SECONDARY_WORDMARK_CREAM;\n break;\n }\n case LogoTypeEnum.POWEREDBY: {\n this.logoURL = LogoPathEnum.REBRAND_POWEREDBY;\n break;\n }\n default: {\n this.logoURL = LogoPathEnum.PRIMARY_LOCKUP_PINK;\n break;\n }\n }\n }\n };\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n /**\n * @ignore\n */\n ngOnInit(): void {\n this.setURL();\n }\n\n /**\n * @ignore\n */\n ngOnChanges(changes: SimpleChanges): void {\n this.setURL();\n if (changes['width']) {\n this.changeWidth(changes['width'].currentValue);\n }\n }\n\n private changeWidth(changedWidth: number): void {\n if (changedWidth >= 200 || this.allowResizing) {\n this.width = changedWidth;\n } else {\n this.width = 200;\n }\n }\n}\n","<ng-container *ngIf=\"applicationTheme === 'classic'; else rebrandLogo\">\n <img [attr.src]=\"logoURL\" [alt]=\"type\">\n</ng-container>\n\n<ng-template #rebrandLogo>\n <div *ngIf=\"label && type === LogoTypeEnum.POWEREDBY; else others\" class=\"logo-label\" [style.width]=\"width + 'px'\">\n <h3 class=\"bold\">{{ label }}</h3>\n <img [attr.src]=\"logoURL\" [alt]=\"type\" [width]=\"width\">\n </div>\n\n <ng-template #others>\n <img [attr.src]=\"logoURL\" [alt]=\"type\" [width]=\"width\">\n </ng-template>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { LogoComponent } from './logo.component';\nimport { NgIf } from '@angular/common';\n\n@NgModule({\n declarations: [LogoComponent],\n imports: [NgIf],\n exports: [LogoComponent],\n})\nexport class LogoComponentModule {}\n","import { IconSize } from '@testgorilla/tgo-ui/components/icon';\n\nexport enum AvatarSize {\n SMALL = 'small',\n SMALL_MEDIUM = 'smallMedium',\n MEDIUM = 'medium',\n LARGE = 'large',\n}\n\nexport type AvatarSizeType = `${AvatarSize}`;\n\nexport const iconSize: Record<string, IconSize> = {\n small: '16',\n medium: '24',\n large: '80',\n};\n\nexport enum AvatarBackgroundColor {\n PINK = '#FFE6FA',\n BLUE ='#D9E8FF',\n GREEN = '#E2F4B3',\n ORANGE = '#FFE1B3',\n RED = '#FFAC9A',\n}\n\nexport type BackgroundAvatarColorType = 'red' | 'blue' | 'green' | 'orange' | 'pink';\n\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'nameInitials',\n standalone: false\n})\nexport class NameInitialsPipe implements PipeTransform {\n transform(value: string): string {\n const initials = value.split(' ').filter(Boolean);\n if (initials.length > 1) {\n return initials\n .map((initial, i) => (i === 0 || i === initials.length - 1 ? initial[0].toUpperCase() : ''))\n .join('');\n } else {\n const firstLetters = value.substring(0, 2);\n return `${firstLetters[0]?.toUpperCase() ?? ''}${firstLetters[1]?.toLowerCase() ?? ''}`;\n }\n }\n}\n","import { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { AvatarBackgroundColor, AvatarSize, AvatarSizeType, BackgroundAvatarColorType, iconSize } from './avatar.model';\n\n@Component({\n selector: 'ui-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n standalone: false\n})\nexport class AvatarComponent {\n /**\n * Input property for specifying the size of the avatar.\n * @type {AvatarSize}\n * @default AvatarSize.SMALL\n * @memberof AvatarComponent\n */\n @Input() size: AvatarSizeType = AvatarSize.SMALL;\n /**\n * Input property for specifying the URL of the image to display in the avatar.\n * @type {string}\n * @memberof AvatarComponent\n */\n @Input() imageUrl = '';\n\n /**\n * Input property for specifying the initials to display in the avatar.\n * @type {string}\n * @memberof AvatarComponent\n */\n @Input() name = '';\n\n /**\n * Input property for specifying the tooltip text for edit.\n * @type {string}\n * @memberof AvatarComponent\n */\n @Input() tooltipText = '';\n\n /**\n * Input property that makes avatar editable.\n * @type {boolean}\n * @memberof AvatarComponent\n */\n @Input() allowEdit = false;\n\n /**\n *\n * Defines the application theme where\n *\n * @type {ApplicationTheme}\n * @memberof AvatarComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Defines the background color\n *\n * @type {BackgroundAvatarColorType}\n * @memberof AvatarComponent\n */\n @Input() set backgroundColor(colorName: BackgroundAvatarColorType) {\n this.backgroundAvatarColor = AvatarBackgroundColor[colorName.toUpperCase() as keyof typeof AvatarBackgroundColor];\n }\n\n /**\n * Event emitted when the edit button is clicked.\n * @type {Event}\n * @memberof AvatarComponent\n */\n @Output() editClick = new EventEmitter<Event>();\n\n protected backgroundAvatarColor: string;\n protected readonly iconSize = iconSize;\n protected readonly avatarSize = AvatarSize;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n protected onEditClick(event: Event): void {\n this.editClick.emit(event);\n }\n}\n","<div\n class=\"avatar-container\"\n [attr.type]=\"!imageUrl && !name ? 'icon' : 'initials'\"\n [ngClass]=\"[size]\"\n [attr.theme]=\"applicationTheme\"\n [ngStyle]=\"{ backgroundColor: backgroundAvatarColor }\"\n>\n <span *ngIf=\"name && !imageUrl\">\n {{ name | nameInitials }}\n </span>\n <img [attr.aria-hidden]=\"true\" *ngIf=\"imageUrl\" [attr.src]=\"imageUrl\" [alt]=\"\">\n <ui-icon\n *ngIf=\"!imageUrl && !name\"\n [attr.aria-hidden]=\"true\"\n [color]=\"applicationTheme === 'classic' ? 'dark' : 'rebrand-black'\"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"iconSize[size]\"\n [name]=\"'User-profile'\"\n ></ui-icon>\n <div class=\"edit-avatar\" *ngIf=\"size === avatarSize.LARGE && allowEdit\">\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n [companyColor]=\"'black'\"\n [size]=\"'small'\"\n [iconName]=\"'Edit'\"\n [variant]=\"'icon-button'\"\n [tooltip]=\"tooltipText\"\n [ariaLabel]=\"(('AVATAR.EDIT_AVATAR') | uiTranslate | async)!\"\n (buttonClickEvent)=\"onEditClick($event)\"\n ></ui-button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarComponent } from './avatar.component';\nimport { NameInitialsPipe } from '../../pipes/name-initials.pipe';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from \"@testgorilla/tgo-ui/components/core\";\n\n@NgModule({\n declarations: [AvatarComponent, NameInitialsPipe],\n imports: [CommonModule, IconComponentModule, MatTooltipModule, ButtonComponentModule, UiTranslatePipe],\n exports: [AvatarComponent],\n})\nexport class AvatarComponentModule {}\n","import {\n Component,\n computed,\n EventEmitter,\n input,\n Input,\n InputSignal,\n Output,\n Signal,\n TemplateRef,\n} from '@angular/core';\nimport { IRoute, MenuItem } from \"../navbar.model\";\nimport { AsyncPipe, NgClass, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { UiTranslatePipe } from \"@testgorilla/tgo-ui/components/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { AccordionComponentModule } from \"../../accordion/accordion.component.module\";\nimport { AvatarComponentModule } from \"../../avatar/avatar.component.module\";\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { AvatarSize } from \"../../avatar/avatar.model\";\nimport { ApplicationTheme } from \"@testgorilla/tgo-ui/components/core\";\n\n@Component({\n selector: 'ui-mobile-navbar-side-sheet',\n templateUrl: './mobile-navbar-side-sheet.component.html',\n styleUrls: ['./mobile-navbar-side-sheet.component.scss'],\n imports: [\n NgForOf,\n NgClass,\n IconComponentModule,\n MatIconModule,\n MatMenuModule,\n UiTranslatePipe,\n MatButtonModule,\n AccordionComponentModule,\n NgIf,\n NgTemplateOutlet,\n AvatarComponentModule,\n ButtonComponentModule,\n AsyncPipe,\n ]\n})\nexport class MobileNavbarSideSheetComponent {\n @Input() routes: IRoute[] = [];\n activedRoute: InputSignal<string> = input('');\n @Input() email = '';\n @Input() userName = '';\n @Input() menuItems: MenuItem[] = [];\n @Input() contentTemplateRef: TemplateRef<any>;\n @Input() userInfoExtraTemplateRef: TemplateRef<any>;\n @Input() isDesktop = false;\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n @Output() navigateEvent: EventEmitter<string> = new EventEmitter<string>();\n @Output() menuItemClicked: EventEmitter<string> = new EventEmitter<string>();\n @Output() logoutEvent: EventEmitter<void> = new EventEmitter<void>();\n\n protected readonly translationContext = 'NAVBAR.';\n protected avatarSize = AvatarSize;\n\n activeRoutesMap:Signal<Map<string, boolean>> = computed(() => {\n const currentRoute = this.activedRoute();\n return new Map(this.routes.map(route => [route.id, currentRoute?.startsWith(route.id)]));\n });\n\n navigate(routeId: string) {\n this.navigateEvent.emit(`/${routeId}`);\n }\n\n logout(): void {\n this.logoutEvent.emit();\n }\n\n clickMenuItem(id: string) {\n this.menuItemClicked.emit(id);\n }\n}\n","<div class=\"mobile-navbar-container\">\n <ng-container *ngIf=\"isDesktop\" [ngTemplateOutlet]=\"userInfo\"></ng-container>\n\n <div class=\"routes\">\n <div\n *ngFor=\"let route of routes\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n (click)=\"navigate(route.id)\"\n class=\"route\"\n [ngClass]=\"{ active: activeRoutesMap().get(route.id) }\"\n >\n <span>{{ route.title }}</span>\n </div>\n </div>\n\n <div class=\"settings\">\n <ng-container *ngFor=\"let e of menuItems\">\n <div *ngIf=\"e\" class=\"menu-item\">\n <ui-button\n [attr.data-testid]=\"e.id\"\n data-test-role=\"menu-item\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"e.icon\"\n [label]=\"e.text\"\n (buttonClickEvent)=\"clickMenuItem(e.id)\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n [ariaLabel]=\"e.text + '--' + e.text\"\n ></ui-button>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div class=\"bottom-content\" [ngClass]=\"{ desktop: isDesktop }\">\n <ng-container *ngIf=\"!isDesktop\" [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n <ng-container *ngIf=\"isDesktop; else tablet\">\n <div class=\"menu-item\">\n <ui-button\n data-testid=\"logout-button\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"'Logout-in-line'\"\n [label]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n (buttonClickEvent)=\"logout()\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n ></ui-button>\n </div>\n </ng-container>\n\n <ng-template #tablet>\n <ng-container [ngTemplateOutlet]=\"userInfo\"></ng-container>\n </ng-template>\n</div>\n\n<ng-template #userInfo>\n <div class=\"user-info\" [ngClass]=\"{ desktop: isDesktop }\">\n <ui-avatar [size]=\"avatarSize.MEDIUM\" [name]=\"userName\"></ui-avatar>\n <div class=\"details-container\">\n <div class=\"name-container\">\n <span class=\"user-name dd-privacy-mask\">{{ userName }}</span>\n <span class=\"user-email dd-privacy-mask\">{{ email }}</span>\n @if (userInfoExtraTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"userInfoExtraTemplateRef\"></ng-container>\n }\n </div>\n <ui-button\n *ngIf=\"!isDesktop\"\n data-testid=\"logout-button\"\n [tooltip]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n [iconName]=\"'Logout-in-line'\"\n [applicationTheme]=\"'light'\"\n [variant]=\"'icon-button'\"\n (click)=\"logout()\"\n ></ui-button>\n </div>\n </div>\n</ng-template>\n","export enum ScreenBreakpoints {\n MOBILE = 600,\n TABLET = 1023,\n LARGE_TABLET = 1280,\n}\n","import { ApplicationRef, Injectable, ViewContainerRef } from '@angular/core';\nimport { SideSheetConfig } from './side-sheet.model';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SideSheetService {\n private componentRef$ = new Subject<SideSheetConfig | null>();\n\n constructor(private applicationRef: ApplicationRef) {}\n\n open<T>(config: SideSheetConfig): T {\n const { componentRef, ...configFields } = config;\n const rootViewContainerRef = this.applicationRef.components[0].injector.get(ViewContainerRef);\n const componentReference = rootViewContainerRef.createComponent(config.componentRef);\n this.componentRef$.next({ ...configFields, componentRef: componentReference });\n return componentReference.instance as T;\n }\n\n close(): void {\n this.componentRef$.next(null);\n }\n\n getComponentRef(): Observable<SideSheetConfig | null> {\n return this.componentRef$.asObservable();\n }\n}\n","import {\n Component,\n DestroyRef,\n EventEmitter, HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { SideSheetService } from './side-sheet.service';\nimport { SideSheetConfig, SideSheetPosition } from './side-sheet.model';\nimport { MatDrawer } from '@angular/material/sidenav';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\n@Component({\n selector: 'ui-side-sheet',\n templateUrl: './side-sheet.component.html',\n styleUrls: ['./side-sheet.component.scss'],\n standalone: false\n})\nexport class SideSheetComponent implements OnInit {\n /**\n * Set position. Defaults \"end\"\n *\n * @type {SideSheetPosition}\n * @memberof SideSheetComponent\n */\n @Input() position: SideSheetPosition = 'end';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SideSheetComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n @Output() openChange = new EventEmitter<boolean>();\n\n @ViewChild('drawer') drawer: MatDrawer;\n @ViewChild('container', { read: ViewContainerRef, static: false }) container: ViewContainerRef;\n\n @HostListener('keydown.esc', ['$event'])\n onEscPress(_: KeyboardEvent): void {\n void this.drawer.close();\n }\n\n protected title = '';\n protected showBackButton = false;\n protected showTitleTooltip = false;\n protected showLogo = false;\n protected componentRef$ = this.sideSheetService.getComponentRef();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private sideSheetService: SideSheetService,\n private destroyRef: DestroyRef,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.setComponentRef();\n }\n\n private setComponentRef(): void {\n this.componentRef$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(config => {\n if (config && config.componentRef && this.container && this.drawer) {\n this.setConfig(config);\n this.drawer.toggle();\n this.container.clear();\n this.container.insert(config.componentRef.hostView);\n } else if (!config) {\n this.drawer.toggle();\n this.container.clear();\n }\n });\n }\n\n private setConfig(config: SideSheetConfig): void {\n this.title = config.title ?? '';\n this.showLogo = config.showLogo ?? false;\n this.showBackButton = config.showBackButton ?? false;\n this.showTitleTooltip = config.showTitleTooltip ?? false;\n\n if (config.closed) {\n config.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.drawer.close();\n });\n }\n }\n\n protected onClose(): void {\n this.drawer.toggle();\n }\n\n onOpenChange(isOpened: boolean): void {\n this.openChange.emit(isOpened);\n }\n}\n","<ng-container>\n <mat-drawer-container class=\"side-sheet-container\" [attr.theme]=\"applicationTheme\" [hasBackdrop]=\"true\">\n <mat-drawer (closedStart)=\"onOpenChange(false)\" (openedStart)=\"onOpenChange(true)\" #drawer [mode]=\"'over'\" [autoFocus]=\"false\" class=\"side-sheet-content\" [position]=\"position\">\n <div class=\"header\">\n <div class=\"title\">\n <ui-button\n *ngIf=\"showBackButton\"\n [variant]=\"'icon-button'\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-filled'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onClose()\"\n ></ui-button>\n <span\n *ngIf=\"title\"\n [matTooltip]=\"showTitleTooltip ? title : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >{{ title }}</span>\n <ui-logo *ngIf=\"showLogo\"></ui-logo>\n </div>\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"(('COMMON.CLOSE') | uiTranslate | async)!\"\n (click)=\"onClose()\"\n ></ui-button>\n </div>\n <ng-container #container></ng-container>\n </mat-drawer>\n <mat-drawer-content>\n <ng-content></ng-content>\n </mat-drawer-content>\n </mat-drawer-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n EventEmitter,\n Inject,\n input,\n Input,\n InputSignal,\n Optional,\n Output,\n Signal,\n TemplateRef,\n} from '@angular/core';\nimport { IRoute, MenuItem, MenuState, ScreenSize } from './navbar.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { map, ReplaySubject, startWith, Subject, switchMap, tap } from 'rxjs';\nimport { SideSheetService } from '../side-sheet/side-sheet.service';\nimport { MobileNavbarSideSheetComponent } from './mobile-navbar-side-sheet/mobile-navbar-side-sheet.component';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { ScreenBreakpoints } from '../../models/screen-breakpoints.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LogoTypeEnum } from '../logo/logo.model';\nimport { AvatarSize } from '../avatar/avatar.model';\n\n@Component({\n selector: 'ui-navbar',\n templateUrl: './navbar.component.html',\n styleUrls: ['./navbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class NavbarComponent {\n /**\n * Routes object\n *\n * @type {IRoute}\n * @memberof NavbarComponent\n * @ignore\n */\n @Input() routes: IRoute[] = [];\n\n /**\n * Actived route id\n *\n * @type {InputSignal<string>}\n * @memberof NavbarComponent\n */\n activedRoute: InputSignal<string> = input('');\n\n /**\n * User first name and last name\n *\n * @type {string}\n * @memberof NavbarComponent\n */\n @Input() userName = '';\n\n /**\n * User email\n *\n * @type {string}\n * @memberof NavbarComponent\n */\n @Input() email = '';\n\n /**\n * Menu items to show in menu above the Log out button\n *\n * @type {string}\n * @memberof NavbarComponent\n */\n @Input() menuItems: MenuItem[] = [];\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof NavbarComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * It's ng-content for mobile version\n *\n * @type {ApplicationTheme}\n * @memberof NavbarComponent\n */\n @Input() contentTemplateRef: TemplateRef<any>;\n /**\n * Additional info template reference for the extra user info in the dropdown/sidesheet\n * @type {TemplateRef<any>}\n * @memberof NavbarComponent\n */\n @Input() userInfoExtraTemplateRef: TemplateRef<any>;\n\n /**\n * Mobile breakpoint\n * @type {number}\n * @memberof NavbarComponent\n */\n @Input() set mobileBreakpoint(value: number) {\n if (value) {\n this._mobileBreakpoint$.next(value);\n }\n }\n\n /**\n *\n * Show avatar with user initials\n *\n * @type {boolean}\n * @memberof NavbarComponent\n */\n @Input() isAvatar = true;\n\n /**\n * Sets class for the menu\n *\n * @type {string}\n * @memberof NavbarComponent\n */\n @Input() menuClass = '';\n\n /**\n * @ignore\n */\n @Output() navigateEvent: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * @ignore\n */\n @Output() menuItemClicked: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * @ignore\n */\n @Output() logoutEvent: EventEmitter<void> = new EventEmitter<void>();\n @Output() menuState: EventEmitter<MenuState> = new EventEmitter<MenuState>();\n\n protected screenSize: ScreenSize = 'desktop';\n protected readonly translationContext = 'NAVBAR.';\n private readonly _mobileBreakpoint$ = new ReplaySubject<number>(1);\n private readonly _tabletBreakpoint$ = new ReplaySubject<number>(1);\n private readonly mobileBreakpointObs$ = this._mobileBreakpoint$.pipe(startWith(ScreenBreakpoints.MOBILE));\n private readonly tabletBreakpointObs$ = this._tabletBreakpoint$.pipe(startWith(ScreenBreakpoints.TABLET));\n protected readonly isMobile$ = this.mobileBreakpointObs$.pipe(\n switchMap(breakpoint =>\n this.breakpointObserver.observe(`(max-width: ${breakpoint}px)`).pipe(\n map(v => v.matches),\n tap(isMobile => (isMobile ? (this.screenSize = 'mobile') : 'desktop'))\n )\n )\n );\n protected readonly isTablet$ = this.tabletBreakpointObs$.pipe(\n switchMap(breakpoint =>\n this.breakpointObserver.observe(`(max-width: ${breakpoint}px)`).pipe(\n map(v => v.matches),\n tap(isTablet => (isTablet ? (this.screenSize = 'tablet') : 'desktop'))\n )\n )\n );\n protected isOpened = false;\n protected logoType = LogoTypeEnum;\n\n activeRoutesMap: Signal<Map<string, boolean>> = computed(() => {\n const currentRoute = this.activedRoute();\n return new Map(this.routes.map(route => [route.id, currentRoute?.startsWith(route.id)]));\n });\n\n constructor(\n private readonly breakpointObserver: BreakpointObserver,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private sideSheetService: SideSheetService,\n private destroyRef: DestroyRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n openMobileMenu(): void {\n const isSideSheetClosed$ = new Subject<void>();\n const navbarSideSheetComponent = this.sideSheetService.open<MobileNavbarSideSheetComponent>({\n componentRef: MobileNavbarSideSheetComponent,\n showLogo: true,\n closed: isSideSheetClosed$,\n });\n\n navbarSideSheetComponent.userName = this.userName;\n navbarSideSheetComponent.menuItems = this.menuItems;\n navbarSideSheetComponent.activedRoute = this.activedRoute;\n navbarSideSheetComponent.routes = this.routes;\n navbarSideSheetComponent.email = this.email;\n navbarSideSheetComponent.contentTemplateRef = this.contentTemplateRef;\n navbarSideSheetComponent.userInfoExtraTemplateRef = this.userInfoExtraTemplateRef;\n navbarSideSheetComponent.applicationTheme = this.applicationTheme;\n\n navbarSideSheetComponent.logoutEvent.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.logoutEvent.emit();\n isSideSheetClosed$.next();\n });\n\n navbarSideSheetComponent.menuItemClicked.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n this.menuItemClicked.emit(value);\n isSideSheetClosed$.next();\n });\n\n navbarSideSheetComponent.navigateEvent.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n this.navigateEvent.emit(value);\n isSideSheetClosed$.next();\n });\n }\n\n navigate(routeId: string) {\n this.navigateEvent.emit(`/${routeId}`);\n }\n\n logout(): void {\n this.logoutEvent.emit();\n }\n\n clickMenuItem(id: string) {\n this.menuItemClicked.emit(id);\n }\n\n onChangeMenuState(isOpened: boolean, screenSize: ScreenSize) {\n this.isOpened = isOpened;\n this.menuState.emit({ isOpened, screenSize });\n }\n\n protected readonly AvatarSize = AvatarSize;\n}\n","<ui-side-sheet\n [applicationTheme]=\"applicationTheme\"\n (openChange)=\"onChangeMenuState($event, screenSize)\"\n [position]=\"(isMobile$ | async) ? 'start' : 'end'\"\n>\n <mat-toolbar [attr.theme]=\"applicationTheme\">\n <div class=\"custom-toolbar row\">\n <ui-logo\n [applicationTheme]=\"applicationTheme\"\n class=\"logo\"\n (click)=\"navigate('')\"\n [allowResizing]=\"true\"\n [width]=\"(isMobile$ | async) ? 160 : (isTablet$ | async) ? 30 : 160\"\n [type]=\"\n (isMobile$ | async)\n ? logoType.DEFAULT\n : (isTablet$ | async)\n ? logoType.PRIMARY_BRANDMARK_PINK\n : logoType.DEFAULT\n \"\n ></ui-logo>\n\n <ui-button\n (click)=\"openMobileMenu()\"\n *ngIf=\"isMobile$ | async\"\n [variant]=\"'text'\"\n [companyColor]=\"'#242424'\"\n [applicationTheme]=\"'light'\"\n [iconName]=\"isOpened ? 'Close-in-line' : 'Menu-burger-in-line'\"\n [justIcon]=\"true\"\n ></ui-button>\n\n <div class=\"navigation row\">\n <a\n *ngFor=\"let route of routes\"\n (click)=\"navigate(route.id); $event.preventDefault()\"\n [href]=\"route.id\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n [ngClass]=\"{ active: activeRoutesMap().get(route.id) }\"\n >\n <ui-badge\n *ngIf=\"route?.badgeOptions\"\n [label]=\"route.badgeOptions!.text\"\n [rebrandColor]=\"route.badgeOptions!.color\"\n ></ui-badge>\n <span>{{ route.title }}</span>\n </a>\n </div>\n\n <div class=\"actions\">\n <div class=\"custom-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n <button mat-button class=\"profile-menu\" *ngIf=\"isTablet$ | async; else pc\" (click)=\"openMobileMenu()\">\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n\n <ng-template #pc>\n <button\n mat-button\n class=\"profile-menu\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n (menuOpened)=\"onChangeMenuState(true, 'desktop')\"\n (menuClosed)=\"onChangeMenuState(false, 'desktop')\"\n [matMenuTriggerFor]=\"menu\"\n >\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n </ng-template>\n\n <ng-template #buttonContent>\n <div class=\"profile-button-content\">\n <ng-container *ngIf=\"isAvatar; else onlyName\">\n <ui-avatar\n data-testid=\"profile-button\"\n [ngClass]=\"{ opened: menu._panelAnimationState !== 'void' }\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"userName\"\n [size]=\"AvatarSize.SMALL_MEDIUM\"\n ></ui-avatar>\n </ng-container>\n\n <ng-template #onlyName>\n {{ userName }}\n </ng-template>\n\n <mat-icon *ngIf=\"applicationTheme === 'classic'; else newThemeIcon\" iconPositionEnd>expand_more</mat-icon>\n <ng-template #newThemeIcon>\n <ui-icon\n [size]=\"'24'\"\n *ngIf=\"!isAvatar\"\n [name]=\"menu._panelAnimationState === 'void' ? 'Arrow-chevron-down-filled' : 'Arrow-chevron-up-filled'\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-icon>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n </mat-toolbar>\n\n <ng-content></ng-content>\n\n <mat-menu [class]=\"menuClass\" #menu=\"matMenu\">\n <ng-container *ngIf=\"applicationTheme === 'classic'; else newTheme\">\n <button\n *ngFor=\"let e of menuItems\"\n mat-menu-item\n (click)=\"clickMenuItem(e.id)\"\n [attr.data-testid]=\"e.id\"\n data-test-role=\"profile-menu-item\"\n >\n <div class=\"menu-item\">\n <ui-icon *ngIf=\"e?.icon\" [name]=\"e.icon\" size=\"24\"></ui-icon>\n {{ e.text }}\n </div>\n </button>\n\n <button data-testid=\"logout-button\" mat-menu-item (click)=\"logout()\">\n <mat-icon>power_settings_new</mat-icon>\n {{ translationContext + 'LOG_OUT' | uiTranslate | async }}\n </button>\n </ng-container>\n\n <ng-template #newTheme>\n <ui-mobile-navbar-side-sheet\n [isDesktop]=\"true\"\n [menuItems]=\"menuItems\"\n [userName]=\"userName\"\n [routes]=\"routes\"\n [activedRoute]=\"activedRoute()\"\n [email]=\"email\"\n [applicationTheme]=\"applicationTheme\"\n [contentTemplateRef]=\"contentTemplateRef\"\n [userInfoExtraTemplateRef]=\"userInfoExtraTemplateRef\"\n (menuItemClicked)=\"clickMenuItem($event)\"\n (logoutEvent)=\"logout()\"\n >\n </ui-mobile-navbar-side-sheet>\n </ng-template>\n </mat-menu>\n</ui-side-sheet>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SideSheetComponent } from './side-sheet.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { LogoComponentModule } from \"../logo/logo.component.module\";\n\n@NgModule({\n declarations: [SideSheetComponent],\n exports: [SideSheetComponent],\n imports: [\n CommonModule,\n IconComponentModule,\n ButtonComponentModule,\n MatTooltipModule,\n MatSidenavModule,\n UiTranslatePipe,\n LogoComponentModule,\n ],\n})\nexport class SideSheetComponentModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { LogoComponentModule } from '../logo/logo.component.module';\nimport { NavbarComponent } from './navbar.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { AvatarComponentModule } from \"../avatar/avatar.component.module\";\nimport { SideSheetComponentModule } from \"../side-sheet/side-sheet.component.module\";\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { MobileNavbarSideSheetComponent } from './mobile-navbar-side-sheet/mobile-navbar-side-sheet.component';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\n\n@NgModule({\n declarations: [NavbarComponent],\n imports: [\n CommonModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatRippleModule,\n MatMenuModule,\n LogoComponentModule,\n IconComponentModule,\n UiTranslatePipe,\n AvatarComponentModule,\n SideSheetComponentModule,\n ButtonComponentModule,\n MobileNavbarSideSheetComponent,\n BadgeComponentModule\n ],\n exports: [NavbarComponent],\n})\nexport class NavbarComponentModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PageEvent } from '@angular/material/paginator';\n\n@Component({\n selector: 'ui-paginator',\n templateUrl: './deprecated-paginator.component.html',\n styleUrls: ['./deprecated-paginator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class DeprecatedPaginatorComponent implements OnInit {\n // TODO: Some properties and methods are ignored on purpose because of a current issue with compodoc and angular 13\n // https://github.com/StoryFnbookjs/StoryFnbook/issues/16865\n // https://github.com/StoryFnbookjs/StoryFnbook/issues/17004\n\n /**\n * Paginator size options\n *\n * @type {number[]}\n * @memberof PaginatorComponent\n */\n readonly pageSizeOptions = [10, 25, 50];\n\n /**\n * Data length\n *\n * @type {number}\n * @memberof PaginatorComponent\n */\n @Input() length = 0;\n\n /**\n * Default page size\n *\n * @type {number}\n * @memberof PaginatorComponent\n */\n @Input() defaultPageSize = 25;\n\n /**\n * @ignore\n */\n @Output() paginatorChangedEvent: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n /**\n * @ignore\n */\n ngOnInit(): void {}\n\n constructor() {}\n\n paginatorChanged(paginator: PageEvent) {\n this.paginatorChangedEvent.emit(paginator);\n }\n}\n","<mat-paginator [length]=\"length\"\n [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"paginatorChanged($event)\">\n</mat-paginator>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { DeprecatedPaginatorComponent } from './deprecated-paginator.component';\n\n@NgModule({\n declarations: [DeprecatedPaginatorComponent],\n imports: [CommonModule, MatPaginatorModule],\n exports: [DeprecatedPaginatorComponent],\n providers: [],\n})\nexport class DeprecatedPaginatorComponentModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnInit,\n Optional,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n OnChanges,\n AfterViewInit,\n} from '@angular/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { MenuConfig, OverflowMenuButtonModify, OverflowMenuButtonsType } from './overflow-menu.model';\nimport { ButtonColor, ButtonSize } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\nconst DEFAULT_MENU_CONFIG: MenuConfig = {\n overlapTrigger: false,\n panelClass: '',\n xPosition: 'after',\n yPosition: 'below',\n};\n\n@Component({\n selector: 'ui-overflow-menu',\n templateUrl: './overflow-menu.component.html',\n styleUrls: ['./overflow-menu.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class OverflowMenuComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * Menu buttons\n *\n * @type {OverflowMenuButtonsType[]}\n * @memberof OverflowMenuComponent\n */\n @Input() buttons: OverflowMenuButtonsType[];\n\n /**\n * Menu icon trigger\n *\n * @memberof OverflowMenuComponent\n */\n @Input() iconTrigger: IconName = 'Menu-ellipsis';\n\n /**\n * Label menu\n *\n * @memberof OverflowMenuComponent\n */\n @Input() menuLabel = '';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof OverflowMenuComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof OverflowMenuComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof OverflowMenuComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input for description.\n * @type {text}\n * @memberof OverflowMenuComponent\n */\n @Input() describedby = '';\n\n /**\n * Custom template for the button (optional)\n *\n * @type {TemplateRef<any>}\n * @memberof OverflowMenuComponent\n */\n @Input() contentTemplateRef: TemplateRef<any>;\n\n /**\n * Button variant for the overflow menu trigger\n * When null, uses the default icon rendering\n *\n * @type {ButtonColor | null}\n * @memberof OverflowMenuComponent\n */\n @Input() buttonVariant: ButtonColor | null = null;\n\n /**\n * Button size for the overflow menu trigger\n *\n * @type {ButtonSize}\n * @memberof OverflowMenuComponent\n */\n @Input() buttonSize: ButtonSize = 'medium';\n\n @Input() menuConfig: MenuConfig = DEFAULT_MENU_CONFIG;\n\n @Input() isDynamicMenu = false;\n\n @Input() withRemovableOption = false;\n\n @Output() selectItem: EventEmitter<string> = new EventEmitter<string>();\n\n @Output() menuOpened = new EventEmitter<void>();\n\n @Output() menuClosed = new EventEmitter<void>();\n\n @ViewChildren(MatMenu) matmenus: QueryList<MatMenu>;\n @ViewChildren(MatMenuTrigger) matTrigger: QueryList<MatMenuTrigger>;\n @ViewChild('buttonElement') buttonElement: any;\n\n menuItems: string[] = [];\n submenus: Array<OverflowMenuButtonModify[]> = [];\n\n isMenuRendered = signal(false);\n isMenuOpened = signal(false);\n isFocused = signal(false);\n\n get menuItemHasHovered(): boolean {\n return this.submenus.some(menu => menu.some(item => item.isHovered));\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private focusMonitor: FocusMonitor,\n private ngZone: NgZone\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n this.createSubmenus(this.buttons, 's0', 1);\n this.reindex();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['buttons'] && this.isDynamicMenu) {\n this.resetSubmenus();\n this.createSubmenus(this.buttons, 's0', 1);\n this.reindex();\n }\n }\n\n ngAfterViewInit() {\n this.isMenuRendered.set(true);\n\n setTimeout(() => {\n this.focusMonitor.monitor(this.buttonElement).subscribe(origin =>\n this.ngZone.run(() => {\n if (origin === 'keyboard') {\n this.isFocused.set(true);\n } else {\n if (!this.isMenuOpened()) {\n this.isFocused.set(false);\n }\n }\n })\n );\n }, 300);\n }\n\n onSelectItem(event: Event, value: string) {\n if (!!value) {\n this.selectItem.emit(value);\n }\n }\n\n onMenuOpened(): void {\n this.menuOpened.emit();\n this.isMenuOpened.set(true);\n\n if (this.isFocused()) {\n setTimeout(() => {\n this.matmenus.first._allItems.first.focus('keyboard');\n }, 300);\n }\n }\n\n onMenuClosed(): void {\n this.isMenuOpened.set(false);\n this.menuClosed.emit();\n }\n\n onButtonFocus(button: OverflowMenuButtonModify) {\n if (this.isFocused()) {\n button.isFocused = true;\n }\n }\n\n onButtonBlur(button: OverflowMenuButtonModify) {\n button.isFocused = false;\n }\n\n onButtonClick(button: OverflowMenuButtonModify, $event: Event) {\n if (button.disabled) {\n $event.preventDefault();\n $event.stopPropagation();\n } else {\n this.onSelectItem($event, button.value);\n }\n }\n\n onSubmenuOpened(): void {\n this.isMenuOpened.set(!this.isMenuOpened);\n if (this.isFocused()) {\n setTimeout(() => {\n this.matmenus.last._allItems.first.focus('keyboard');\n }, 300);\n }\n }\n\n trackByButton = (_: number, btn: OverflowMenuButtonModify) => btn.action ?? btn.value ?? btn.label;\n\n onButtonHover(button: OverflowMenuButtonModify, state: boolean) {\n button.isHovered = state;\n }\n\n getMenu(index: any) {\n return index >= 0 && this.matmenus ? (this.matmenus.find((x, i) => i === index) ?? null) : null;\n }\n\n private reindex() {\n this.submenus.forEach((menu: OverflowMenuButtonsType[]) => {\n menu.forEach((item: OverflowMenuButtonsType) => {\n if (item.subMenu !== -1) {\n item.subMenu = this.menuItems.indexOf(`${item.action}`);\n }\n });\n });\n }\n\n private resetSubmenus() {\n this.submenus = [];\n this.menuItems = [];\n }\n\n private createSubmenus(menu: OverflowMenuButtonsType[], prefix: string, count: number): void {\n this.menuItems.push(prefix);\n this.submenus.push(\n menu.map((item: OverflowMenuButtonsType, index: number) => ({\n label: item.label,\n icon: item.icon,\n isDestructive: item.isDestructive,\n tooltipText: item.tooltipText,\n value: item.value,\n disabled: item.disabled,\n btnTemplate: item.btnTemplate,\n subMenu: item.subMenu ? 0 : -1,\n action: item.action ? item.action : prefix + index,\n isTitleButton: item.isTitleButton,\n hideTitleButton: item.hideTitleButton,\n }))\n );\n\n menu.forEach((item: OverflowMenuButtonsType, index: number) => {\n if (item.subMenu) {\n this.createSubmenus((item as { subMenu: OverflowMenuButtonsType[] }).subMenu, prefix + index, count + 1);\n }\n });\n }\n}\n","<div class=\"overflow-menu-container\" [attr.theme]=\"applicationTheme\">\n <button\n #buttonElement\n mat-button\n [ngClass]=\"{\n 'icon-button': !contentTemplateRef && !buttonVariant,\n 'content-template': contentTemplateRef,\n 'no-hover': buttonVariant,\n }\"\n *ngIf=\"isMenuRendered()\"\n [matMenuTriggerFor]=\"matmenus.first\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-expanded]=\"isMenuOpened()\"\n disableRipple\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"onMenuClosed()\"\n class=\"overflow-menu-opener\"\n [matTooltip]=\"menuLabel\"\n >\n <span [id]=\"'describedby'\" [style.display]=\"'none'\">{{ describedby }}</span>\n @if (buttonVariant) {\n <ui-button\n [variant]=\"buttonVariant\"\n [justIcon]=\"true\"\n [iconName]=\"iconTrigger\"\n [applicationTheme]=\"applicationTheme\"\n [disabled]=\"false\"\n [size]=\"buttonSize\"\n >\n </ui-button>\n } @else if (contentTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n } @else {\n <ui-icon\n [name]=\"iconTrigger\"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [color]=\"'rebrand-black'\"\n ></ui-icon>\n }\n </button>\n\n @for (menu of submenus; track submenus[$index]) {\n <mat-menu\n [xPosition]=\"menuConfig.xPosition\"\n [yPosition]=\"menuConfig.yPosition\"\n #matMenu\n [class]=\"'overflow-menu ' + menuConfig.panelClass\"\n [overlapTrigger]=\"menuConfig.overlapTrigger\"\n backdropClass=\"overflow-menu-backdrop\"\n >\n <ng-container *ngFor=\"let button of menu; index as id; trackBy: trackByButton\">\n @if (button.btnTemplate) {\n <!-- Menu option by provided button template-->\n <ng-container\n [ngTemplateOutlet]=\"button.btnTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"\n ></ng-container>\n } @else if (withRemovableOption) {\n <!-- Simple menu option that can be removed dynamically -->\n <div class=\"menu-option\" [ngClass]=\"{ 'is-destructive': button.isDestructive, disabled: button.disabled }\">\n <span\n [id]=\"'labelledby-' + button.label + id\"\n class=\"label\"\n uiEllipseText\n [refresh]=\"isMenuOpened()\"\n [maxDiffPixels]=\"1\"\n [isMultiline]=\"true\"\n (onChangeTextState)=\"button.isTextEllipsed = $event\"\n >{{ button.label }}\n </span>\n\n @if (button.icon) {\n <ui-button\n variant=\"icon-button\"\n [applicationTheme]=\"applicationTheme\"\n [iconName]=\"button.icon\"\n [tooltip]=\"button.tooltipText ? button.tooltipText : button.isTextEllipsed ? button.label : ''\"\n [tooltipPosition]=\"'above'\"\n [size]=\"'medium'\"\n (focus)=\"onButtonFocus(button)\"\n (blur)=\"onButtonBlur(button)\"\n (mouseenter)=\"onButtonHover(button, true)\"\n (mouseleave)=\"onButtonHover(button, false)\"\n (click)=\"onSelectItem($event, button.value)\"\n >\n </ui-button>\n }\n </div>\n } @else {\n <!-- Default non-removable menu option -->\n @if (button.isTitleButton && !button.hideTitleButton) {\n <div class=\"menu-title\">{{ button.label }}</div>\n }\n\n @if (!button.isTitleButton) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"getMenu(button.subMenu)\"\n (menuOpened)=\"onSubmenuOpened()\"\n (focus)=\"onButtonFocus(button)\"\n (blur)=\"onButtonBlur(button)\"\n (mouseenter)=\"onButtonHover(button, true)\"\n (mouseleave)=\"onButtonHover(button, false)\"\n [ngClass]=\"{ 'is-destructive': button.isDestructive, disabled: button.disabled }\"\n disableRipple\n (click)=\"onButtonClick(button, $event)\"\n [matTooltip]=\"button.tooltipText ? button.tooltipText : button.isTextEllipsed ? button.label : ''\"\n [attr.aria-labelledby]=\"'labelledby-' + button.label + id\"\n [attr.aria-describedby]=\"'describedby-' + button.label + id\"\n [attr.aria-label]=\"button.ariaLabel || null\"\n role=\"menuitem\"\n matTooltipPosition=\"right\"\n >\n <span [id]=\"'describedby-' + button.label + id\" [style.display]=\"'none'\">\n {{\n button.disabled\n ? ('MENU.MENUITEM_DISABLED' | uiTranslate | async) + ' ' + (button.describedby || '')\n : button.describedby\n }}\n </span>\n @if (button.icon) {\n <ui-icon\n [name]=\"button.icon\"\n [toggleIconStyle]=\"true\"\n [filled]=\"\n button.disabled ? false : button.isHovered ? true : menuItemHasHovered ? false : !!button.isFocused\n \"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [color]=\"button.disabled ? 'dark' : button.isDestructive ? 'red' : 'rebrand-black'\"\n ></ui-icon>\n }\n <span\n [id]=\"'labelledby-' + button.label + id\"\n class=\"label\"\n uiEllipseText\n [refresh]=\"isMenuOpened()\"\n [maxDiffPixels]=\"1\"\n [isMultiline]=\"true\"\n (onChangeTextState)=\"button.isTextEllipsed = $event\"\n >{{ button.label }}</span\n >\n </button>\n }\n }\n </ng-container>\n\n <ng-content select=\"[menu-content]\"></ng-content>\n </mat-menu>\n }\n</div>\n","export enum IKeyboardEvent {\n ENTER = 'Enter',\n SPACE = ' ',\n ARROW_DOWN = 'ArrowDown',\n ARROW_UP = 'ArrowUp',\n ESCAPE = 'Escape',\n HOME = 'Home',\n END = 'End',\n PAGE_UP = 'PageUp',\n PAGE_DOWN = 'PageDown',\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n signal,\n ViewChild\n} from '@angular/core';\nimport { debounceTime, map, ReplaySubject } from 'rxjs';\nimport { IconColor, IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IKeyboardEvent } from \"../../models/keyboard-events.model\";\n\n@Component({\n selector: 'ui-tag',\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n standalone: false\n})\nexport class TagComponent implements AfterViewInit, OnInit {\n /**\n * Tag's label\n *\n * @memberof TagComponent\n */\n @Input() set label(value: string) {\n this.labelText = value;\n if (this.labelElement) {\n this.isLabelEllipseActive();\n }\n }\n\n /**\n * Icon\n *\n * @type {string}\n * @memberof TagComponent\n */\n @Input() icon: IconName = '';\n\n /**\n * Whether to allow the tag to be closed.\n *\n * @type {boolean}\n * @default false\n * @memberof TagComponent\n */\n @Input() allowClose = false;\n\n /**\n * Whether the tag is in read-only mode.\n *\n * @type {boolean}\n * @default false\n * @memberof TagComponent\n */\n @Input() readOnly = false;\n\n /**\n * Whether the tag is selected.\n *\n * @type {boolean}\n * @default false\n * @memberof TagComponent\n */\n @Input() isSelected = false;\n\n /**\n * Display icon when is selected\n *\n * @type {boolean}\n * @default false\n * @memberof TagComponent\n */\n @Input() showIconWhenSelected = false;\n\n /**\n * Specifies whether the element is disabled.\n *\n * @type {boolean}\n * @default false\n * @memberof TagComponent\n */\n @Input() isDisabled = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof TagComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof TagComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof TagComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * Event triggered when the tag should be closed.\n *\n * @event\n * @memberof TagComponent\n */\n @Output() close = new EventEmitter<void>();\n\n /**\n * Event triggered when a press action occurs.\n *\n * @event\n * @memberof TagComponent\n */\n @Output() press = new EventEmitter<boolean>();\n\n /**\n * Subject that needs to be triggered when Label input changes, to check if it's truncated\n * @private\n * @type {void}\n * @memberof TagComponent\n */\n private checkLabelEllipsis$ = new ReplaySubject<void>(1);\n\n /**\n * Observable that indicates if the Label is truncated\n * debounceTime is used to wait for view to be initialized after receiving a new Label input\n * @protected\n * @type {boolean}\n * @memberof TagComponent\n */\n protected isEllipseActiveObs$ = this.checkLabelEllipsis$.pipe(\n debounceTime(100),\n map(() => {\n const el = this.labelElement.nativeElement;\n return el.offsetWidth < el.scrollWidth;\n })\n );\n protected labelText = '';\n protected isHovered = false;\n protected shrink = false;\n protected iconToPass: IconName;\n protected iconColor: IconColor;\n protected closeBtnFocused = signal(false);\n\n @ViewChild('labelElement') labelElement: ElementRef<HTMLElement>;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.iconToPass = this.icon;\n this.iconColor = 'black';\n }\n\n ngAfterViewInit(): void {\n this.isLabelEllipseActive();\n }\n\n onPress(): void {\n if (!this.readOnly && !this.allowClose) {\n this.isSelected = this.showIconWhenSelected ? !this.isSelected : false;\n this.press.emit(this.isSelected);\n }\n }\n\n setHoverState(state: boolean) {\n this.isHovered = state;\n if (this.applicationTheme !== 'classic') {\n if (state) {\n this.iconToPass = `${this.icon}-filled` as IconName;\n } else {\n this.iconToPass = this.icon;\n }\n this.iconColor = this.isHovered ? 'white' : 'black';\n }\n }\n\n setShrinkState(state: boolean) {\n this.shrink = state;\n }\n\n onClose(): void {\n this.close.emit();\n }\n\n private isLabelEllipseActive(): void {\n this.checkLabelEllipsis$.next();\n }\n\n get tabIndex(): number {\n return this.isDisabled || this.readOnly ? -1 : 0;\n }\n\n get filled(): boolean {\n return this.readOnly || this.allowClose || this.isSelected;\n }\n\n onKeydown($event: KeyboardEvent): void {\n if (($event.key === IKeyboardEvent.ENTER || $event.key === IKeyboardEvent.SPACE) && !this.closeBtnFocused()) {\n this.onPress();\n } else if (this.closeBtnFocused() && ($event.key === IKeyboardEvent.ENTER || $event.key === IKeyboardEvent.SPACE)) {\n this.onClose();\n }\n }\n}\n","<div class=\"tag-wrapper\">\n <div\n [matTooltip]=\"(isEllipseActiveObs$ | async) ? labelText : ''\" [matTooltipClass]=\"applicationTheme\"\n [tabindex]=\"tabIndex\"\n class=\"tag-container\"\n [attr.data-testid]=\"'tag--container'\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{\n filled: filled,\n readonly: readOnly,\n disabled: isDisabled,\n outlined: !isSelected,\n shrink\n }\"\n (click)=\"onPress()\"\n (mouseenter)=\"setHoverState(true)\" (mouseleave)=\"setHoverState(false)\"\n (mousedown)=\"setShrinkState(true)\" (mouseup)=\"setShrinkState(false)\"\n (touchstart)=\"setShrinkState(true)\" (touchend)=\"setShrinkState(false)\"\n (keydown)=\"onKeydown($event)\"\n [attr.aria-label]=\"ariaLabel || labelText\"\n [attr.aria-required]=\"ariaRequired\"\n >\n <ui-icon *ngIf=\"icon\" class=\"icon\" [color]=\"iconColor\" [name]=\"iconToPass\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n <ui-icon *ngIf=\"isSelected && showIconWhenSelected\" [color]=\"iconColor\" class=\"icon\" [name]=\"'Check'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n <span class=\"tag-label\" #labelElement>{{ labelText }}</span>\n <ui-icon (focus)=\"closeBtnFocused.set(true)\" (blur)=\"closeBtnFocused.set(false)\" [tabindex]=\"tabIndex\" *ngIf=\"allowClose\" class=\"delete-icon\"\n [attr.aria-label]=\"'TAG.REMOVE' | uiTranslate | async\"\n [color]=\"iconColor\" (click)=\"onClose()\" [name]=\"'Close'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnInit,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { OverflowMenuButtonsType } from '../overflow-menu/overflow-menu.model';\nimport { debounceTime, filter, firstValueFrom, fromEvent, map, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FieldComponent } from '../field/field.component';\nimport { PromptData, PromptTag } from './prompt.model';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ui-prompt',\n templateUrl: './prompt.component.html',\n styleUrl: './prompt.component.scss',\n providers: [\n UiTranslatePipe,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PromptComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PromptComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n tags = input<PromptTag[]>([]);\n maxCharacters = input<number>(255);\n supportedFileTypes = input<string>('');\n autoClear = input<boolean>(true);\n showSendButton = input<boolean>(false);\n enableFileUpload = input<boolean>(false);\n\n promptData = output<PromptData>();\n\n promptFilesList = signal<File[]>([]);\n promptTextValue = signal<string>('');\n fileListMenuConfig = signal<OverflowMenuButtonsType[]>([]);\n\n tagsVisible = signal<PromptTag[]>([]);\n tagsInDropdown = signal<PromptTag[]>([]);\n autocompleteSuggestion = signal<string>('');\n\n isDropdownOpened = signal<boolean>(false);\n isFieldHovered = signal(false);\n isFieldFocused = signal(false);\n isHighlighted = computed(() => this.isFieldHovered() || this.isFieldFocused());\n\n private destroyRef = inject(DestroyRef);\n private translationPipe = inject(UiTranslatePipe);\n\n fileDrop = viewChild<ElementRef<HTMLInputElement>>('fileDropRef');\n tagDropdown = viewChild<ElementRef<HTMLInputElement>>('tagDropdown');\n fieldComponentRef = viewChild.required<FieldComponent>('textarea');\n\n readonly dropdownPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n ];\n\n ngOnInit() {\n this.initTags();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.syncInputChange();\n }, 0);\n }\n\n async uploadFile(event: Event): Promise<void> {\n const files = (event.currentTarget as HTMLInputElement).files;\n if (files && files.length) {\n this.promptFilesList.update(list => {\n list.push(files.item(0) as File);\n return list;\n });\n this.emitValue();\n await this.updateFileMenu();\n }\n }\n\n sendPromptData(): void {\n this.promptData.emit({ text: this.promptTextValue() || '', files: this.promptFilesList() });\n\n if (this.autoClear()) {\n this.clearPromptData();\n }\n }\n\n selectedMenuOption(menuOptionValue: string): void {\n const updatedConfig = this.fileListMenuConfig().filter(menu => menu.value !== menuOptionValue);\n const updatedFileList = this.promptFilesList().filter(file => file.name !== menuOptionValue);\n this.promptFilesList.set(updatedFileList);\n this.fileListMenuConfig.set(updatedConfig);\n }\n\n selectTag(tag: PromptTag, event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n\n this.isDropdownOpened.set(false);\n this.promptTextValue.set(tag.label);\n this.autocompleteSuggestion.set(`${tag.label} ${tag.autocomplete}`);\n this.fieldComponentRef().field.nativeElement.focus();\n this.onTouch();\n }\n\n onTextareaTab(event: Event): void {\n if (this.autocompleteSuggestion()) {\n event.preventDefault();\n this.promptTextValue.set(this.autocompleteSuggestion());\n this.autocompleteSuggestion.set('');\n }\n }\n\n dropdownOutsideClick(): void {\n this.isDropdownOpened.set(false);\n }\n\n toggleDropdown(): void {\n this.isDropdownOpened.set(!this.isDropdownOpened());\n }\n\n focusTagDropdown(): void {\n setTimeout(() => {\n this.tagDropdown()?.nativeElement.focus();\n }, 300);\n }\n\n private syncInputChange() {\n if (!this.fieldComponentRef()?.field?.nativeElement) {\n return;\n }\n\n fromEvent(this.fieldComponentRef().field.nativeElement, 'input')\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map((event: Event) => (event.target as HTMLInputElement).value),\n debounceTime(200),\n filter(value => typeof value === 'string'),\n tap(value => {\n this.promptTextValue.set(value);\n if (this.autocompleteSuggestion()) {\n this.autocompleteSuggestion.set('');\n }\n this.emitValue();\n })\n )\n .subscribe();\n }\n\n private initTags(): void {\n if (!this.tags()?.length) {\n return;\n }\n if (this.tags().length <= 5) {\n this.tagsVisible.set(this.tags());\n return;\n }\n\n this.tagsVisible.set(this.tags().slice(0, 5));\n this.tagsInDropdown.set(this.tags().slice(5));\n }\n\n private async updateFileMenu(): Promise<void> {\n const menuConfig: OverflowMenuButtonsType[] = [];\n const tooltip = await firstValueFrom(this.translationPipe.transform('COMMON.DELETE'));\n this.promptFilesList().forEach(file => {\n menuConfig.push({\n label: file.name,\n value: file.name,\n icon: 'Delete',\n tooltipText: tooltip,\n });\n });\n this.fileListMenuConfig.set(menuConfig);\n }\n\n private clearPromptData(): void {\n this.promptTextValue.set('');\n this.promptFilesList.set([]);\n this.fileListMenuConfig.set([]);\n }\n\n writeValue(value: PromptData): void {\n this.promptTextValue.set(value.text || '');\n this.promptFilesList.set(value.files || []);\n }\n private onChange = (v: any) => {};\n private onTouch = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n private emitValue(): void {\n this.onChange({ text: this.promptTextValue() || '', files: this.promptFilesList() });\n this.onTouch();\n }\n}\n","<ng-container>\n <div\n class=\"prompt-container\"\n cdkOverlayOrigin\n #promptOrigin=\"cdkOverlayOrigin\"\n #promptContainerRef\n [ngClass]=\"{ 'prompt-container-focused': isHighlighted() }\"\n >\n <div class=\"prompt-autocomplete\">\n <textarea tabindex=\"-1\" class=\"ghost\" id=\"autocomplete\" [value]=\"autocompleteSuggestion()\" readonly></textarea>\n\n <ui-field\n #textarea\n class=\"prompt-text\"\n role=\"input\"\n [showBottomContent]=\"false\"\n [borderless]=\"true\"\n [type]=\"'multi-line'\"\n [autosizableTextarea]=\"true\"\n [maxCharacters]=\"maxCharacters()\"\n [placeholder]=\"('PROMPT.ASK_ANYTHING' | uiTranslate | async)!\"\n [value]=\"promptTextValue() || ''\"\n [hasTextAreaCounter]=\"false\"\n (mouseenter)=\"isFieldHovered.set(true)\"\n (mouseleave)=\"isFieldHovered.set(false)\"\n (focusin)=\"isFieldFocused.set(true)\"\n (fieldBlur)=\"isFieldFocused.set(false)\"\n (keydown.tab)=\"onTextareaTab($event)\"\n ></ui-field>\n </div>\n <div class=\"prompt-footer flex-container\">\n <div class=\"flex-container\">\n @if (enableFileUpload()) {\n <ui-button\n [variant]=\"'icon-button'\"\n [tooltip]=\"('PROMPT.ADD_FILES' | uiTranslate | async)!\"\n [tooltipPosition]=\"'above'\"\n [ariaLabel]=\"('PROMPT.ADD_FILES' | uiTranslate | async)!\"\n [iconName]=\"'Plus'\"\n (click)=\"fileDrop()?.nativeElement?.click()\"\n ></ui-button>\n <input\n [tabIndex]=\"-1\"\n class=\"form-control\"\n #fileDropRef\n type=\"file\"\n id=\"file-upload\"\n [accept]=\"supportedFileTypes()\"\n (change)=\"uploadFile($event)\"\n />\n\n @if (promptFilesList().length) {\n <div class=\"menu\">\n <ui-badge\n [notificationsAmount]=\"promptFilesList().length\"\n [variant]=\"'notification'\"\n class=\"menu-badge\"\n ></ui-badge>\n <ui-overflow-menu\n [matTooltip]=\"('PROMPT.FILES' | uiTranslate | async)!\"\n [matTooltipPosition]=\"'above'\"\n [buttonSize]=\"'medium'\"\n [iconTrigger]=\"'Document'\"\n [buttonVariant]=\"'ghost'\"\n [buttons]=\"fileListMenuConfig()\"\n [isDynamicMenu]=\"true\"\n [withRemovableOption]=\"true\"\n (selectItem)=\"selectedMenuOption($event)\"\n ></ui-overflow-menu>\n </div>\n }\n }\n </div>\n\n @if (tags()?.length && !promptTextValue()) {\n <div class=\"flex-container carousel\">\n <div class=\"tag-container flex-container\" role=\"list\" #tagsScrollContainer>\n @for (tag of tagsVisible(); track tag) {\n <ui-tag\n [label]=\"tag.label\"\n role=\"listitem\"\n [ariaLabel]=\"tag.label\"\n (click)=\"selectTag(tag, $event)\"\n (keyup.enter)=\"selectTag(tag, $event)\"\n (keyup.space)=\"selectTag(tag, $event)\"\n ></ui-tag>\n }\n\n @if (tagsInDropdown().length) {\n <ui-button\n class=\"view-more\"\n variant=\"text-inline\"\n [label]=\"('PROMPT.VIEW_MORE' | uiTranslate | async)!\"\n [ariaLabel]=\"('PROMPT.VIEW_MORE' | uiTranslate | async)!\"\n [size]=\"'medium'\"\n (click)=\"toggleDropdown()\"\n (keydown.enter)=\"focusTagDropdown()\"\n cdkOverlayOrigin\n #dropdownTrigger=\"cdkOverlayOrigin\"\n ></ui-button>\n }\n </div>\n\n <div class=\"flex-container\">\n <ui-button\n [variant]=\"'icon-button'\"\n [size]=\"'small'\"\n [ariaLabel]=\"'Scroll left button'\"\n [iconName]=\"'Arrow-chevron-left-in-line'\"\n [disabled]=\"tagsScrollContainer.scrollLeft === 0\"\n (click)=\"tagsScrollContainer.scrollBy({ left: -100, behavior: 'smooth' })\"\n ></ui-button>\n <ui-button\n [variant]=\"'icon-button'\"\n [size]=\"'small'\"\n [iconName]=\"'Arrow-chevron-right-in-line'\"\n [ariaLabel]=\"'Scroll right button'\"\n [disabled]=\"\n tagsScrollContainer.scrollLeft + tagsScrollContainer.clientWidth >= tagsScrollContainer.scrollWidth\n \"\n (click)=\"tagsScrollContainer.scrollBy({ left: 100, behavior: 'smooth' })\"\n ></ui-button>\n </div>\n </div>\n }\n\n @if (showSendButton()) {\n <ui-button\n class=\"send-button\"\n [variant]=\"'secondary'\"\n [iconName]=\"'Arrow-up-in-line'\"\n [tooltip]=\"('COMMON.SEND' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.SEND' | uiTranslate | async)!\"\n [tooltipPosition]=\"'above'\"\n [size]=\"'medium'\"\n [disabled]=\"!promptTextValue() && !promptFilesList().length\"\n (click)=\"sendPromptData()\"\n ></ui-button>\n }\n </div>\n </div>\n\n <!-- Dropdown for hidden tags -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"promptOrigin\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpened()\"\n [cdkConnectedOverlayPositions]=\"dropdownPositions\"\n [cdkConnectedOverlayWidth]=\"promptContainerRef?.offsetWidth || 0\"\n (overlayOutsideClick)=\"dropdownOutsideClick()\"\n >\n <div class=\"dropdown-container\" role=\"list\" #tagDropdown tabindex=\"0\">\n @for (tag of tagsInDropdown(); track tag) {\n <div\n class=\"dropdown-tag\"\n tabindex=\"0\"\n [attr.aria-label]=\"tag.label\"\n role=\"listitem\"\n (click)=\"selectTag(tag, $event)\"\n (keyup.enter)=\"selectTag(tag, $event)\"\n (keyup.space)=\"selectTag(tag, $event)\"\n >\n {{ tag.label }}\n </div>\n }\n </div>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { OverflowMenuComponent } from './overflow-menu.component';\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { EllipseTextDirective } from \"@testgorilla/tgo-ui/components/core\";\nimport { UiTranslatePipe } from \"@testgorilla/tgo-ui/components/core\";\n\n@NgModule({\n declarations: [OverflowMenuComponent],\n imports: [CommonModule, ButtonComponentModule, IconComponentModule, MatMenuModule, MatButtonModule, MatTooltipModule, EllipseTextDirective, UiTranslatePipe],\n exports: [OverflowMenuComponent],\n})\nexport class OverflowMenuComponentModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TagComponent } from './tag.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatInputModule } from \"@angular/material/input\";\nimport { UiTranslatePipe } from \"@testgorilla/tgo-ui/components/core\";\n\n@NgModule({\n declarations: [TagComponent],\n imports: [CommonModule, IconComponentModule, TooltipComponentModule, MatTooltipModule, MatInputModule, UiTranslatePipe],\n exports: [TagComponent],\n providers: [],\n})\nexport class TagComponentModule {}\n","import { NgModule } from '@angular/core';\nimport { PromptComponent } from './prompt.component';\nimport { FieldComponentModule } from '../field/field.component.module';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { OverflowMenuComponentModule } from '../overflow-menu/overflow-menu.component.module';\nimport { TagComponentModule } from '../tag/tag.component.module';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { CardComponentModule } from '../card/card.component.module';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n\n@NgModule({\n declarations: [PromptComponent],\n imports: [\n CommonModule,\n FieldComponentModule,\n ButtonComponentModule,\n OverflowMenuComponentModule,\n TagComponentModule,\n BadgeComponentModule,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n CardComponentModule,\n CdkTextareaAutosize,\n TooltipComponentModule,\n MatTooltip,\n UiTranslatePipe,\n ],\n exports: [PromptComponent],\n})\nexport class PromptModule {}\n","/* eslint-disable no-underscore-dangle */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Host,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { MatRadioButton } from '@angular/material/radio';\nimport { RadioButtonEventType } from './radio-button.model';\nimport { ApplicationTheme } from \"@testgorilla/tgo-ui/components/core\";\nimport { ControlValueAccessor, NgControl } from \"@angular/forms\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Alignment } from '../../models/checkbox.model';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'ui-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n // Needs to be removed since it causes some a11y issues (https://github.com/angular/components/issues/21266).\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the mat-radio-button element.\n '(focus)': 'radioElement.focus()',\n },\n standalone: false\n})\nexport class RadioButtonComponent implements OnInit, OnChanges, ControlValueAccessor, AfterViewInit, OnDestroy {\n @HostListener('click', ['$event'])\n onHostClick(event: any): void {\n if (event.target?.classList?.value?.includes?.('mat-mdc-radio-button') || event.target?.classList?.value?.includes?.('mdc-form-field')) {\n this.radioElement._inputElement.nativeElement.click();\n }\n }\n /**\n * Determines whether the radio button is disabled.\n * Default: false.\n *\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n @Input() disabled = false;\n\n /**\n * Determines whether the radio button is checked.\n * Default: false.\n *\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n //@Input() selected = false;\n\n _selected = false;\n @Input()\n get selected() {\n return this._selected;\n }\n set selected(selected: boolean) {\n this._selected = selected;\n }\n\n /**\n * Determines whether the radio button can be unchecked.\n * Default: false.\n *\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n @Input() allowUnselect = false;\n\n /**\n * Determines the radio button color.\n * Default: Test Gorilla primary color.\n *\n * @type {string}\n * @memberof RadioButtonComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = null;\n\n /**\n * Used to group radios for unique selection.\n *\n * @type {string}\n * @memberof RadioButtonComponent\n */\n @Input() name = '';\n\n /**\n * Text content will be applied to the input element if present.\n *\n * @type {string}\n * @memberof RadioButtonComponent\n */\n @Input() label = '';\n\n /**\n * Determines whether the radio button is a multiple choice cell.\n * Default: false\n *\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n @Input() multiple = false;\n\n /**\n * Determines value of the radio button.\n * Default: false\n *\n * @type {any}\n * @memberof RadioButtonComponent\n */\n @Input() value: any;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof RadioButtonComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof RadioButtonComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * Defines if checkbox has error\n *\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n @Input() hasError = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof RadioButtonComponent\n */\n @Input() ariaLabelledby = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof RadioButtonComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Truncate text if it is too long\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n @Input() truncateText = false;\n\n /**\n * Text alignment\n * @type {'center' | 'top'}\n * @memberof RadioButtonComponent\n */\n @Input() alignment: Alignment = 'center';\n\n /**\n * Sets the tab index for the checkbox component.\n * This determines the order in which elements receive focus when the user navigates through them using the Tab key.\n * Default value is 0.\n *\n * @type {number}\n * @memberof RadioButtonComponent\n */\n @Input() tabIndex = 0;\n\n /**\n * Show tooltip when label is truncated\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n @Input() hideTooltipOnEllipsis = false;\n\n /**\n * Event emitted when the checked state of the radio button changes.\n *\n * @type {boolean}\n * @memberof RadioButtonComponent\n */\n @Output() changeRadio = new EventEmitter<RadioButtonEventType>();\n\n classMultiple: string;\n showTooltip = false;\n protected origin: string | null = null;\n\n @ViewChild('radio') radioElement: MatRadioButton;\n @ViewChild('tooltip') tooltipElement: MatTooltip;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @Host() public hostNgControl: NgControl,\n private destroyRef: DestroyRef,\n private focusMonitor: FocusMonitor,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.checkHost();\n this.classMultiple = this.setClass();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selected']) {\n this.classMultiple = this.setClass();\n }\n this.setCompanyColor();\n }\n\n ngAfterViewInit() {\n this.radioElement._inputElement.nativeElement.setAttribute('role', 'radio');\n this.radioElement._inputElement.nativeElement.onclick = () => {\n this.clickRadio();\n };\n\n this.focusMonitor.monitor(this.radioElement._inputElement.nativeElement).pipe(\n takeUntilDestroyed(this.destroyRef),\n ).subscribe(origin =>\n this.ngZone.run(() => {\n this.origin = origin;\n this.cdr.markForCheck();\n this.onFocus(origin === 'keyboard');\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.focusMonitor.stopMonitoring(this.radioElement._inputElement.nativeElement);\n }\n\n //Click method\n clickRadio() {\n if (this.allowUnselect) {\n this.radioElement.checked = !this.radioElement.checked;\n this._selected = this.radioElement.checked;\n this.classMultiple = this.setClass();\n this.selected = this.radioElement.checked;\n this.changeRadio?.emit({ optionName: this.radioElement.value, optionChecked: this.radioElement.checked });\n } else {\n this.selected = this.radioElement.checked;\n this.changeRadio.emit({ optionName: this.radioElement.value, optionChecked: true });\n }\n if (this.disabled) {\n this._selected = false;\n this.changeRadio.emit({ optionName: '', optionChecked: false });\n }\n this.onChange(this._selected)\n }\n\n writeValue(value: any): void {\n if (typeof value === 'boolean' || value === this.value) {\n this.selected = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onChange = (_: any) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n //Set class for multiple radio\n setClass(): string {\n if (this.multiple) {\n return this._selected ? 'multiple-checked' : 'multiple-unchecked';\n }\n return '';\n }\n\n onLabelEllipsisChange(isEllipsis: boolean): void {\n this.showTooltip = isEllipsis && !this.hideTooltipOnEllipsis;\n }\n\n private checkHost(): void {\n if (this.hostNgControl) {\n this.selected = this.value === this.hostNgControl.value;\n this.hostNgControl.valueChanges?.pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe((value) => {\n this.selected = value === this.value;\n this.classMultiple = this.setClass();\n });\n }\n }\n\n private setCompanyColor(): void {\n this.companyColor = this.companyColor ? this.companyColor : this.applicationTheme === 'classic' ? '#46A997' : '#D410AA';\n }\n\n onFocus(isFocus: boolean): void {\n setTimeout(() => {\n if (this.tooltipElement) {\n if (this.showTooltip && isFocus) {\n this.tooltipElement.show();\n } else {\n this.tooltipElement.hide();\n }\n }\n }, 0);\n }\n\n focus(): void {\n this.radioElement.focus();\n }\n}\n","<div\n #radioContainer\n [class]=\"multiple ? 'radio-container' : 'radio'\"\n [class.multiple-disabled]=\"disabled && multiple\"\n [ngClass]=\"classMultiple\"\n [attr.alignment]=\"alignment\"\n [attr.truncate-text]=\"truncateText\"\n [attr.theme]=\"applicationTheme\"\n [attr.hasError]=\"hasError\"\n (keydown.enter)=\"clickRadio(); radioContainer.focus()\"\n (keydown.space)=\"clickRadio(); radioContainer.focus()\"\n>\n <mat-radio-button\n #radio\n [checked]=\"selected\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [value]=\"value\"\n class=\"radio-button\"\n [required]=\"ariaRequired\"\n [aria-label]=\"ariaLabel\"\n [aria-labelledby]=\"ariaLabelledby ? ariaLabelledby : label\"\n [aria-describedby]=\"ariaDescribedby\"\n (keydown.enter)=\"$event.preventDefault()\"\n (keydown.space)=\"$event.preventDefault()\"\n [tabIndex]=\"tabIndex\"\n >\n @if (label) {\n <span\n #tooltip=\"matTooltip\"\n class=\"label\"\n uiEllipseText\n (onChangeTextState)=\"onLabelEllipsisChange($event)\"\n [matTooltip]=\"showTooltip ? label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >{{ label }}</span>\n }\n <ng-content select=\"[radio-label]\"></ng-content>\n </mat-radio-button>\n</div>\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { RadioButtonComponent } from './radio-button.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { EllipseTextDirective } from '@testgorilla/tgo-ui/components/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FocusVisibleDirective } from '../checkbox/focus-visible.directive';\n\n@NgModule({\n declarations: [RadioButtonComponent],\n imports: [CommonModule, MatRadioModule, FormsModule, ReactiveFormsModule, MatInputModule, EllipseTextDirective, MatTooltipModule, MatCheckboxModule, FocusVisibleDirective],\n exports: [RadioButtonComponent],\n})\nexport class RadioButtonComponentModule {}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { SnackbarLink, SnackbarType, SnackbarVariant } from '../../components/snackbar/snackbar.model';\nimport { alertBarsUtil } from '../../utils/alert-bars.utils';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { LinkTargetType } from '../alert-banner/alert-banner.model';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'ui-snackbar',\n templateUrl: './snackbar.component.html',\n styleUrls: ['./snackbar.component.scss'],\n animations: [\n trigger('openClose', [\n transition(':enter', [\n style({ bottom: '-55px', opacity: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, bottom: '10px' })),\n ]),\n transition(':leave', [\n style({ bottom: '10px', opacity: 1 }),\n animate('0.2s ease-in', style({ bottom: '-55px', opacity: 0 })),\n ]),\n ]),\n ],\n standalone: false\n})\nexport class SnackbarComponent implements OnInit {\n /**\n * Background color of the button while in active state\n *\n * @type {SnackbarType}\n * @memberof SnackbarComponent\n */\n @Input() snackbarType: SnackbarType = 'success';\n\n /**\n * Snackbar message\n *\n * @memberof SnackbarComponent\n */\n @Input() message = '';\n\n /**\n * Snackbar message from html\n *\n * @memberof SnackbarComponent\n */\n @Input() set html(value: string) {\n if (value) {\n this.safeHtml = this.domSanitizer.bypassSecurityTrustHtml(value);\n }\n }\n\n /**\n * Set the time that the snackbar will be visible\n *\n * @memberof SnackbarComponent\n */\n @Input() seconds = 5;\n\n /**\n * Include dismmiss button\n *\n * @memberof SnackbarComponent\n */\n @Input() includeDismissButton = true;\n\n /**\n * Static or fixed position\n *\n * @memberof SnackbarComponent\n */\n @Input() fixed = true;\n\n /**\n * Link text that will appended at the end of message\n *\n * @memberof AlertBannerComponent\n */\n @Input() linkText? = '';\n\n /**\n * Link url\n *\n * @memberof AlertBannerComponent\n */\n @Input() linkUrl?: string;\n\n /**\n * Link target\n *\n * @type {@type {LinkTargetType}}\n * @memberof AlertBannerComponent\n */\n @Input() linkTarget?: LinkTargetType = '_blank';\n\n /**\n * The variant to be used\n *\n * @type {SnackbarVariant}\n * @memberof SnackbarComponent\n */\n @Input() variant: SnackbarVariant = 'desktop';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SnackbarComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Close button tooltip\n *\n * @type {string}\n * @memberof SnackbarComponent\n */\n @Input() closeButtonTooltip = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof SnackbarComponent\n */\n @Input() ariaDescribedby = '';\n\n iconName: IconName;\n showSnackbar = true;\n milisenconds: number;\n visible = false;\n timer?: number;\n timerStartedAt = 0;\n timerPausedAt = 0;\n position: string;\n safeHtml: SafeHtml;\n\n translationContext = 'SNACKBAR.';\n protected readonly maxCharacters = 70;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(MAT_SNACK_BAR_DATA)\n private data: {\n snackbarType: SnackbarType;\n message: string;\n link?: SnackbarLink;\n applicationTheme?: ApplicationTheme;\n html?: string;\n seconds?: number;\n },\n private snackbarRef: MatSnackBarRef<SnackbarComponent>,\n private domSanitizer: DomSanitizer\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n this.snackbarType = data.snackbarType ?? 'success';\n this.message = data.message ?? '';\n this.safeHtml = data.html ? this.domSanitizer.bypassSecurityTrustHtml(data.html) : '';\n this.linkText = data.link?.text ?? '';\n this.linkUrl = data.link?.url ?? '';\n this.seconds = data.seconds ?? 5;\n }\n\n ngOnInit(): void {\n this.milisenconds = this.seconds * 1000;\n this.iconName = alertBarsUtil.setIcon(this.snackbarType);\n this.show();\n this.position = alertBarsUtil.setPosition(this.fixed);\n }\n\n //Show snackbar\n show() {\n this.timerStartedAt = Date.now();\n this.visible = true;\n this.timer = window.setTimeout(() => this.hide(), this.milisenconds);\n }\n\n //Hide snackbar\n hide() {\n this.visible = false;\n this.timerPausedAt = 0;\n this.timerStartedAt = 0;\n clearTimeout(this.timer);\n this.timer = undefined;\n this.dismissSnackbar();\n }\n\n //Pause timer when mouse enter\n onMouseEnter() {\n this.visible = true;\n this.timerPausedAt = Date.now();\n clearTimeout(this.timer);\n }\n\n //Continue timer when mouse leave\n onMouseLeave() {\n const diff = this.timerPausedAt - this.timerStartedAt;\n if (diff <= 0) {\n return this.hide();\n }\n this.timer = window.setTimeout(() => this.hide(), this.milisenconds - diff);\n }\n\n //Hide snackbar when dismiss button is clicked\n dismissClick() {\n this.visible = false;\n this.dismissSnackbar();\n }\n\n onLinkClick(event: Event): void {\n event?.preventDefault();\n\n if (this.data.link?.action) {\n this.data.link?.action();\n } else if (this.data.link?.url) {\n window.open(this.data.link?.url, '_blank');\n }\n }\n\n private dismissSnackbar(): void {\n if (Object.keys(this.snackbarRef).length > 0) {\n this.snackbarRef.dismiss();\n }\n }\n}\n","<ng-container>\n <div\n [ngClass]=\"snackbarType + ' ' + position\"\n [@openClose]\n *ngIf=\"visible\"\n class=\"snackbar-container\"\n [attr.theme]=\"applicationTheme\"\n [class.mobile]=\"variant === 'mobile'\"\n [class.desktop]=\"variant === 'desktop'\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n data-testid=\"snackbar-wrapper\"\n [attr.data-test-snackbar-type]=\"snackbarType\"\n [attr.aria-describedby]=\"'describedby'\"\n role=\"alert\"\n [attr.aria-labelledby]=\"'labelledby'\"\n >\n <span style=\"position: absolute; left: -9999px\" id=\"labelledby\">{{ ('ALERT_BANNER.' + (snackbarType | uppercase)) | uiTranslate | async }}</span>\n <span style=\"position: absolute; left: -9999px\">{{ message }}\n <a *ngIf=\"!!linkText\" [target]=\"linkTarget\" [href]=\"linkUrl\" (click)=\"onLinkClick($event)\">{{ linkText }}</a>\n </span>\n <span [style.display]=\"'none'\" id=\"describedby\">{{ ariaDescribedby }}</span>\n <div\n aria-hidden=\"true\"\n class=\"snackbar-text\"\n [matTooltip]=\"message.length > maxCharacters ? message : ''\"\n data-testid=\"snackbar-content\"\n >\n <ui-icon *ngIf=\"applicationTheme === 'classic'\" [name]=\"iconName\" size=\"24\"></ui-icon>\n {{ message.length > maxCharacters ? (message | slice: 0:maxCharacters) + '..' : message }}\n <div *ngIf=\"safeHtml\" [innerHTML]=\"safeHtml\"></div>\n <a *ngIf=\"!!linkText\" [target]=\"linkTarget\" [href]=\"linkUrl\" (click)=\"onLinkClick($event)\">{{ linkText }}</a>\n </div>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme === 'classic'\"\n variant=\"text\"\n [label]=\"(translationContext + 'DISMISS' | uiTranslate | async)!\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n (buttonClickEvent)=\"dismissClick()\"\n data-testid=\"snackbar-dismiss-button\"\n ></ui-button>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme !== 'classic'\"\n [variant]=\"'icon-button'\"\n [applicationTheme]=\"'light'\"\n [iconName]=\"'Close-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"(closeButtonTooltip || ('COMMON.CLOSE' | uiTranslate | async))!\"\n (click)=\"dismissClick()\"\n data-testid=\"snackbar-dismiss-button\"\n ></ui-button>\n </div>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { SnackbarComponent } from './snackbar.component';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { SnackbarLink, SnackbarType } from './snackbar.model';\n\n@Injectable()\nexport class SnackbarService {\n constructor(private snackBar: MatSnackBar) {}\n\n error(message: string, applicationTheme?: ApplicationTheme, html?: string, link?: SnackbarLink, seconds?: number) {\n return this.show('error', message, applicationTheme, html, link, seconds);\n }\n\n success(message: string, applicationTheme?: ApplicationTheme, html?: string, link?: SnackbarLink, seconds?: number) {\n return this.show('success', message, applicationTheme, html, link, seconds);\n }\n\n info(message: string, applicationTheme?: ApplicationTheme, html?: string, link?: SnackbarLink, seconds?: number) {\n return this.show('info', message, applicationTheme, html, link, seconds);\n }\n\n warning(message: string, applicationTheme?: ApplicationTheme, html?: string, link?: SnackbarLink, seconds?: number) {\n return this.show('warning', message, applicationTheme, html, link, seconds);\n }\n\n show(\n snackbarType: SnackbarType,\n message: string,\n applicationTheme?: ApplicationTheme,\n html?: string,\n link?: SnackbarLink,\n seconds?: number\n ) {\n const componentRef = this.snackBar.openFromComponent(SnackbarComponent, {\n data: {\n snackbarType,\n message,\n link,\n html,\n seconds,\n },\n });\n if (applicationTheme) {\n componentRef.instance.applicationTheme = applicationTheme;\n }\n return componentRef;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SnackbarComponent } from './snackbar.component';\nimport { SnackbarService } from './snackbar.service';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [SnackbarComponent],\n imports: [CommonModule, ButtonComponentModule, IconComponentModule, UiTranslatePipe, MatSnackBarModule, MatTooltipModule],\n exports: [SnackbarComponent],\n providers: [SnackbarService],\n})\nexport class SnackbarComponentModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n// TODO: Check type (backend could return a number)\ntype DataPropertyGetterType = string;\n\n@Pipe({\n name: 'dataPropertyGetter',\n standalone: true,\n})\nexport class DataPropertyGetterPipe implements PipeTransform {\n transform(obj: object, keyName: string = '') {\n return this.getDeepVal(obj, keyName);\n }\n\n private getDeepVal(obj: any, path: string) {\n if (typeof obj === 'undefined' || obj === null) {\n return '';\n }\n const splittedPath = path.split(/[\\.\\[\\]\\\"\\']{1,2}/);\n for (let i = 0, l = splittedPath.length; i < l; i++) {\n if (splittedPath[i] === '') {\n continue;\n }\n obj = obj[splittedPath[i]];\n if (typeof obj === 'undefined' || obj === null) {\n return '';\n }\n }\n return obj;\n }\n}\n","/**\n * Function for adjusting the lightness of a color based on different events (hover, pressed, disabled).\n * Accepts a hex color, transforms it to HSL, and based on color's L and event darkens or lightens it.\n * Used to manage different colors based on application configuration\n *\n * @param hexColor color in hex format\n * @param typeEvent interaction event\n * @param theme\n */\nexport const adjustLightness = (hexColor: string, typeEvent: 'hover' | 'pressed' | 'disabled', theme: 'new' | 'classic' = 'new'): string => {\n const hexRegex = /^#([0-9A-F]{3}){1,2}$/i;\n if (hexColor && !hexRegex.test(hexColor)) {\n throw new Error('Invalid HEX color format');\n }\n\n const hslColor = hexToHsl(hexColor);\n const lightness = hslColor.l * 100;\n\n if (theme === 'new') {\n if (lightness > 70 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness < 30 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 70 && lightness > 30 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n }\n } else {\n if (lightness > 70 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness < 30 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness > 70 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l - 20 / 100);\n } else if (lightness < 30 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l + 30 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l - 20 / 100);\n } else if (lightness > 70 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 30 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 50 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 20 / 100);\n }\n }\n\n return hslToHex(hslColor);\n};\n\n/**\n * Transforms hex color to HSL in object variation.\n * @param hexColor string value with hex color\n */\nexport const hexToHsl = (hexColor: string): { h: number; s: number; l: number } => {\n const rgbColor = parseInt(hexColor.slice(1), 16);\n const r = ((rgbColor >> 16) & 255) / 255;\n const g = ((rgbColor >> 8) & 255) / 255;\n const b = (rgbColor & 255) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h = 0;\n let s;\n const l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // grayscale\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h, s, l };\n};\n\n/**\n * Transforms HSL color, represented as an object and transforms it to hex string.\n * @param hslColor accepts the HSL color like an object.\n */\nexport const hslToHex = (hslColor: { h: number; s: number; l: number }): string => {\n const { h, s, l } = hslColor;\n\n const hueToRgb = (p: number, q: number, t: number): number => {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n const r = hueToRgb(p, q, h + 1 / 3);\n const g = hueToRgb(p, q, h);\n const b = hueToRgb(p, q, h - 1 / 3);\n\n const rgbColor = (Math.round(r * 255) << 16) | (Math.round(g * 255) << 8) | Math.round(b * 255);\n\n return `#${rgbColor.toString(16).padStart(6, '0')}`;\n};\n\n/**\n * Restricts the value to be within the range [0, 1].\n * @param value\n */\nconst clamp = (value: number): number => Math.min(Math.max(value, 0), 1);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n DoCheck,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Optional,\n Output,\n Renderer2,\n Self,\n signal,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FloatLabelType } from '@angular/material/form-field';\nimport { OptionType } from './dropdown.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { adjustLightness } from '../../utils/color-contrast';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { MatSelect } from '@angular/material/select';\nimport { IKeyboardEvent } from '../../models/keyboard-events.model';\n\n@Component({\n selector: 'ui-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class DropdownComponent implements OnInit, ControlValueAccessor, DoCheck, OnChanges {\n @HostBinding() class = 'ui-dropdown';\n\n findValueByValueField = (item: any) => item[this.valueField] === this.value;\n /**\n * Text content will be applied to the input element if present.\n *\n * @type {string}\n * @memberof DropdownComponent\n */\n @Input() label? = '';\n\n /**\n * Icon to display alongside the label\n *\n * @type {IconName}\n * @memberof DropdownComponent\n */\n @Input() labelIcon?: IconName;\n\n /**\n * Indicates if this field is filled by AI\n *\n * @type {boolean}\n * @memberof DropdownComponent\n */\n @Input() isAIVariant = false;\n\n /**\n * Input name attribute\n *\n * @type {string}\n * @memberof DropdownComponent\n */\n @Input() name: string;\n /**\n * Placeholder to be shown if no value has been selected.\n *\n * @type {string}\n * @memberof DropdownComponent\n */\n @Input() placeholder: string;\n\n /**\n * Unique id of the element.\n *\n * @type {string}\n * @memberof DropdownComponent\n */\n @Input() id? = '';\n\n /**\n * Input value\n *\n * @type {string}\n * @memberof DropdownComponent\n */\n @Input() value?: string;\n\n /**\n * Whether the component is in an error state.\n *\n * @type {string[]}\n * @memberof DropdownComponent\n */\n @Input() errors?: string[];\n\n /**\n * Whether the component is disabled.\n * Default: false.\n *\n * @type {boolean}\n * @memberof DropdownComponent\n */\n @Input() disabled = false;\n\n /**\n * List of options.\n *\n * @type {OptionType}\n * @memberof DropdownComponent\n */\n @Input() valueList: OptionType[] = [];\n\n /**\n * Whether the user should be allowed to clear the values.\n * Default: true.\n *\n * @type {boolean}\n * @memberof DropdownComponent\n */\n @Input() allowClear = true;\n\n /**\n * This will allow the user to select multiple values at once.\n * Default: true.\n *\n * @type {boolean}\n * @memberof DropdownComponent\n */\n @Input() allowMultipleSelection? = false;\n\n /**\n * Whether the component is required.\n * Default: false.\n *\n * @type {boolean}\n * @memberof DropdownComponent\n */\n @Input() required = false;\n\n /**\n * Show reserved content below form field\n * @property showBottomContent\n * @type {boolean}\n * @memberof DropdownComponent\n */\n @Input() showBottomContent = true;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DropdownComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Hide in build errors for Reactive Forms\n *\n * @type {number}\n * @memberof DropdownComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof DropdownComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * @property textField\n * @description The field to be used as the display text in the dropdown.\n * @memberof DropdownComponent\n */\n @Input() textField = '';\n\n /**\n * @property valueField\n * @description The field to be used as the value in the dropdown.\n * @memberof DropdownComponent\n */\n @Input() valueField = '';\n\n @Input() hasError = false;\n\n /**\n * Color of the option hover.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DropdownComponent\n */\n @Input() companyColor: string = '';\n\n /**\n * Class to be applied to the panel.\n * @type {string}\n * @memberof DropdownComponent\n */\n @Input() panelClass: string = '';\n\n @Output() closed = new EventEmitter<void>();\n @Output() opened = new EventEmitter<void>();\n\n @ViewChild('matSelect') matSelect: MatSelect;\n\n @ContentChild('customOptionTemplate', { read: TemplateRef }) customOptionTemplate: TemplateRef<any> | null;\n @ContentChild('customSelectedOptionTemplate', { read: TemplateRef })\n customSelectedOptionTemplate: TemplateRef<any> | null;\n\n @HostListener('keydown.tab', ['$event'])\n onTabPress(): void {\n this.matSelect?.close();\n }\n\n /**\n * @ignore\n */\n onChange = (_: any) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private readonly cdr: ChangeDetectorRef,\n @Optional() @Self() public ngControl: NgControl,\n private readonly renderer2: Renderer2,\n private readonly focusMonitor: FocusMonitor,\n private readonly destroyRef: DestroyRef,\n private readonly ngZone: NgZone\n ) {\n this.errors = [];\n this.valueList = [];\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n floatLabel: FloatLabelType;\n classError: string;\n errorsLength: boolean;\n showCheck: boolean;\n optionSelected: any;\n keyboardFocused = signal<boolean>(false);\n isOpen = signal(false);\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n ngOnInit(): void {\n this.errorsLength = this.setErrorsLength();\n this.setStyleVariable();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['companyColor']) {\n this.setStyleVariable();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.matSelect._elementRef) {\n this.focusMonitor.monitor(this.matSelect._elementRef).pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin => this.ngZone.run(() => {\n this.keyboardFocused.set(origin === 'keyboard')\n }));\n }\n\n this.matSelect._handleKeydown = this.onKeydown.bind(this);\n }\n\n clearValue(event: Event): void {\n event?.stopPropagation();\n this.value = '';\n this.optionSelected = null;\n this.matSelect.value = null;\n this.onChange(this.value);\n }\n\n //Save select value\n onChangeOption(event: any) {\n this.value = event.value;\n this.errorsLength = this.setErrorsLength();\n this.onTouch();\n this.onChange(this.value);\n }\n\n //Set errors length for validation\n setErrorsLength(): boolean {\n if (!!this.errors) {\n return this.errors.length > 0 ? true : false;\n }\n return false;\n }\n\n writeValue(value?: any): void {\n if (value) {\n this.value = value || '';\n } else {\n this.value = '';\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onClosed(): void {\n this.onTouch();\n this.closed.emit();\n this.isOpen.set(false);\n }\n\n onOpened(): void {\n this.opened.emit();\n this.isOpen.set(true);\n }\n\n setStyleVariable() {\n const active = this.companyColor ? adjustLightness(this.companyColor, 'pressed') : '#FFE6FA'\n const hover = this.companyColor ? adjustLightness(this.companyColor, 'hover') : '#FFF2FC';\n document.body.style.setProperty('--dropdown-color-option-active', active);\n document.body.style.setProperty('--dropdown-color-option-hover', hover);\n }\n\n onKeydown($event: KeyboardEvent) {\n if ($event.key === IKeyboardEvent.ARROW_DOWN || $event.key === IKeyboardEvent.ARROW_UP) {\n if (!this.matSelect.panelOpen) {\n this.matSelect.open();\n } else {\n const selectedItem = this.optionSelected || this.matSelect.options.first;\n const index = this.matSelect.options.toArray().indexOf(selectedItem);\n const nextIndex = $event.key === IKeyboardEvent.ARROW_DOWN ? (index + 1) > this.matSelect.options.length - 1 ? index : (index + 1) : index - 1;\n this.optionSelected = this.matSelect.options.toArray()[nextIndex];\n\n if (this.optionSelected) {\n this.matSelect._keyManager.setActiveItem(this.optionSelected);\n }\n }\n } else if (($event.key === IKeyboardEvent.SPACE || $event.key === IKeyboardEvent.ENTER)) {\n if (this.isOpen()) {\n if (this.optionSelected) {\n if (!this.allowMultipleSelection) {\n this.matSelect.value = this.optionSelected.value;\n this.matSelect.close();\n } else {\n if (this.matSelect.value) {\n this.matSelect.value = this.matSelect.value.includes(this.optionSelected.value) ? this.matSelect.value.filter((value: any) => value !== this.optionSelected.value) : [...this.matSelect.value, this.optionSelected.value];\n } else {\n this.matSelect.value = [this.optionSelected.value];\n }\n }\n } else {\n this.matSelect.value = this.matSelect.options.first.value;\n }\n this.onChange(this.matSelect.value);\n } else {\n this.matSelect.open();\n }\n } else if ($event.key === IKeyboardEvent.HOME) {\n this.matSelect._keyManager.setFirstItemActive();\n } else if ($event.key === IKeyboardEvent.END) {\n this.matSelect._keyManager.setLastItemActive();\n }\n }\n}\n","<ng-container>\n <mat-form-field\n appearance=\"outline\"\n [attr.theme]=\"applicationTheme\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError ? 'warn' : 'accent'\"\n [ngClass]=\"{\n 'hide-bottom-content': !showBottomContent,\n 'without-label': !label,\n 'keyboard-focused': keyboardFocused(),\n 'has-label': !!label,\n }\"\n >\n <mat-label class=\"label-with-icon\">\n @if (isAIVariant || labelIcon) {\n <ui-icon [name]=\"isAIVariant ? 'Sparkle-in-line' : labelIcon!\" [size]=\"'16'\" class=\"label-icon\"></ui-icon>\n }\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n </mat-label>\n <mat-select\n (closed)=\"onClosed()\"\n (opened)=\"onOpened()\"\n #matSelect\n [id]=\"id!\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [panelClass]=\"'ui-dropdown-list' + ' ' + applicationTheme + (panelClass ? ' ' + panelClass : '')\"\n [disabled]=\"disabled\"\n [multiple]=\"!!allowMultipleSelection\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (selectionChange)=\"onChangeOption($event)\"\n [attr.name]=\"name\"\n data-testid=\"ui-dropdown-select\"\n >\n @if (customSelectedOptionTemplate && valueField) {\n <mat-select-trigger>\n <ng-container\n [ngTemplateOutlet]=\"customSelectedOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: valueList.find(findValueByValueField) }\"\n ></ng-container>\n </mat-select-trigger>\n }\n\n @if (customOptionTemplate && valueField) {\n @for (item of valueList; track item[valueField]) {\n <mat-option [value]=\"item[valueField]\">\n <ng-container\n [ngTemplateOutlet]=\"customOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </mat-option>\n }\n } @else {\n <div class=\"mat-option-section\" *ngFor=\"let section of valueList\">\n <span *ngIf=\"section.sectionTitle\" class=\"section-title\">{{ section.sectionTitle }}</span>\n <mat-option\n *ngIf=\"section\"\n #matOption\n [value]=\"valueField ? section[valueField] : textField && !valueField ? section : section.value\"\n >\n <div class=\"option-content\">\n <span class=\"option-text\">{{\n textField ? section[textField] : (section.displayValue ?? section.value)\n }}</span>\n @if (section.isAISuggested) {\n <ui-icon [name]=\"'Sparkle-in-line'\" [size]=\"'16'\"> </ui-icon>\n }\n </div>\n </mat-option>\n </div>\n }\n </mat-select>\n <ui-button\n [ariaLabel]=\"('COMMON.CLEAR' | uiTranslate | async)!\"\n *ngIf=\"allowClear && !matSelect.empty\"\n variant=\"secondary\"\n [justIcon]=\"true\"\n class=\"clear\"\n [iconName]=\"applicationTheme === 'classic' ? 'Close' : 'Close-filled'\"\n [label]=\"('COMMON.CLEAR' | uiTranslate | async)!\"\n (click)=\"clearValue($event)\"\n ></ui-button>\n <ui-icon\n class=\"chevron-icon\"\n *ngIf=\"!matSelect.panelOpen\"\n size=\"24\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Arrow_down' : 'Arrow-chevron-down-filled'\"\n ></ui-icon>\n <ui-icon\n class=\"chevron-icon\"\n *ngIf=\"matSelect.panelOpen\"\n size=\"24\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Arrow_up' : 'Arrow-chevron-up-filled'\"\n ></ui-icon>\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of errors\">\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Error' : 'Error-in-line'\"\n ></ui-icon\n >{{ error }}\n </div>\n </ng-container>\n\n <ui-validation-error\n *ngIf=\"ngControl && !hideBuiltInErrors\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n ></ui-validation-error>\n </mat-hint>\n </mat-form-field>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { DropdownComponent } from './dropdown.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '../validation-error/validation-error.module';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\n\n@NgModule({\n declarations: [DropdownComponent],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n FormsModule,\n ReactiveFormsModule,\n ButtonComponentModule,\n MatSelectModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n ],\n exports: [DropdownComponent],\n})\nexport class DropdownComponentModule {}\n","import { Component, Inject, Input, OnChanges, OnInit, Optional } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IconName, IconSize } from '@testgorilla/tgo-ui/components/icon';\nimport { SpinnerSize } from './spinner.model';\n\n@Component({\n selector: 'ui-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n standalone: false\n})\nexport class SpinnerComponent implements OnInit, OnChanges {\n /**\n * The size variant of the spinner. Can be 'small' or 'large'.\n * Defaults to 'large'.\n * @default 'large'\n * @type {SpinnerSize}\n * @memberof SpinnerComponent\n */\n @Input() size: SpinnerSize = 'large';\n\n /**\n * Set position fixed on page\n * Defaults to 'true'.\n * @default 'true'\n * @type {SpinnerSize}\n * @memberof SpinnerComponent\n */\n @Input() isLoader = true;\n\n /**\n * The text to display below the spinner.\n * @type {string}\n * @memberof SpinnerComponent\n */\n @Input() text: string | null = null;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SpinnerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Custom Icon name\n *\n * @type {IconName}\n * @memberof SpinnerComponent\n */\n @Input() iconName: IconName;\n\n /**\n * Custom Icon size\n *\n * @type {IconSize}\n * @memberof SpinnerComponent\n */\n @Input() iconSize: IconSize = '24';\n\n classes: string;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnChanges(): void {\n this.setSpinnerClasses();\n }\n\n ngOnInit(): void {\n this.setSpinnerClasses();\n }\n\n setSpinnerClasses(): void {\n this.classes = `${this.size === 'large' ? 'large' : 'small'} ${this.isLoader ? 'loader' : ''} ${\n this.text ? 'with-text' : ''\n } ${this.applicationTheme}`;\n\n this.classes = this.classes.replace(/\\s+/g, ' ');\n }\n}\n","<div\n class=\"spinner-container\"\n [ngClass]=\"classes\"\n [attr.theme]=\"applicationTheme\"\n [attr.aria-label]=\"'COMMON.LOADING' | uiTranslate | async\"\n role=\"alert\"\n>\n @if (!iconName) {\n <svg class=\"spinner\" viewBox=\"0 0 50 50\">\n <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\"></circle>\n </svg>\n } @else {\n <ui-icon [name]=\"iconName\" [size]=\"iconSize\"></ui-icon>\n }\n\n @if (text) {\n <h3 class=\"spinner-text\">{{ text }}</h3>\n }\n</div>\n","import { AsyncPipe, NgClass, NgIf } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [SpinnerComponent],\n exports: [SpinnerComponent],\n imports: [NgClass, NgIf, UiTranslatePipe, AsyncPipe, IconComponentModule],\n})\nexport class SpinnerComponentModule {}\n","import { Component, Inject, Input, Optional } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ConfirmDialogData } from './confirm-dialog.model';\n\n@Component({\n selector: 'ui-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n standalone: false\n})\nexport class ConfirmDialogComponent {\n confirmMessage: string | undefined;\n confirmButtonText: string | undefined;\n cancelButtonText: string | undefined;\n title: string | undefined;\n lang = LanguageService.defaultLanguage;\n confirmMessageHtml: SafeHtml | undefined;\n showCloseButton = false;\n showSecondaryButton = true;\n color: string | null;\n primaryButtonType: ButtonColor;\n secondaryButtonType: ButtonColor;\n primaryButtonIconName: IconName | undefined;\n primaryButtonDataTestId = 'confirm-dialog.confirm-button';\n secondaryButtonDataTestId = 'confirm-dialog.cancel-button';\n primaryButtonIconPosition: ButtonIconPosition;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\n @Inject(MAT_DIALOG_DATA) private data: ConfirmDialogData,\n protected domSanitizer: DomSanitizer\n ) {\n this.confirmMessage = data.message;\n this.confirmButtonText = data.confirmButtonText;\n this.cancelButtonText = data.cancelButtonText;\n this.title = data.title;\n this.lang = data.language ?? LanguageService.defaultLanguage;\n this.confirmMessageHtml = data.messageHtml\n ? this.domSanitizer.bypassSecurityTrustHtml(data.messageHtml)\n : undefined;\n this.showCloseButton = data.showCloseButton ?? false;\n this.showSecondaryButton = data.showSecondaryButton ?? true;\n this.color = data.color ?? null;\n this.primaryButtonType = data.primaryButtonType ?? 'primary';\n this.secondaryButtonType = data.secondaryButtonType ?? 'ghost';\n this.primaryButtonIconName = data.primaryButtonIconName ?? undefined;\n this.primaryButtonDataTestId = data.primaryButtonDataTestId ?? 'confirm-dialog.confirm-button';\n this.secondaryButtonDataTestId = data.secondaryButtonDataTestId ?? 'confirm-dialog.cancel-button';\n this.primaryButtonIconPosition = data.primaryButtonIconPosition ?? 'left';\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n onConfirm(): void {\n if (this.data.onConfirm) {\n this.data.onConfirm();\n }\n this.dialogRef.close(true);\n }\n}\n","<ng-container>\n <ui-dialog\n [title]=\"title ?? ('COMMON.CONFIRM' | uiTranslate | async)!\"\n [primaryButtonLabel]=\"confirmButtonText ?? ('COMMON.YES' | uiTranslate | async)!\"\n [secondaryButtonLabel]=\"\n showSecondaryButton ? cancelButtonText ?? ('COMMON.CANCEL' | uiTranslate | async)! : undefined\n \"\n (primaryButtonClickEvent)=\"onConfirm()\"\n (secondaryButtonClickEvent)=\"dialogRef.close(false)\"\n (closeEvent)=\"dialogRef.close(null)\"\n [primaryButtonType]=\"primaryButtonType\"\n [primaryButtonIconName]=\"primaryButtonIconName\"\n [secondaryButtonType]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [showCloseButton]=\"showCloseButton\"\n [companyColor]=\"color\"\n [primaryButtonDataTestId]=\"primaryButtonDataTestId\"\n [secondaryButtonDataTestId]=\"secondaryButtonDataTestId\"\n [primaryButtonIconPosition]=\"primaryButtonIconPosition\"\n >\n <div class=\"message\">{{ confirmMessage }}</div>\n @if (confirmMessageHtml) {\n <div class=\"message\" [innerHTML]=\"confirmMessageHtml\"></div>\n }\n </ui-dialog>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DialogComponentModule } from '../dialog/dialog.component.module';\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [ConfirmDialogComponent],\n exports: [ConfirmDialogComponent],\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: {} },\n { provide: MatDialogRef, useValue: {} },\n ],\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, DialogComponentModule, UiTranslatePipe]\n})\nexport class ConfirmDialogComponentModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatepickerService {\n #useBrowserTimezone = false;\n\n set useBrowserTimezone(value: boolean) {\n this.#useBrowserTimezone = value;\n }\n\n get useBrowserTimezone(): boolean {\n return this.#useBrowserTimezone;\n }\n}\n","import { NativeDateAdapter } from '@angular/material/core';\nimport { inject, Injectable } from '@angular/core';\nimport { DatepickerService } from './datepicker.service';\nimport { formatDate } from '@angular/common';\n\nexport const UI_DATE_FORMATS = {\n parse: {\n dateInput: { day: 'numeric', month: 'numeric', year: 'numeric' },\n },\n display: {\n dateInput: 'input',\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n },\n};\n\n@Injectable()\nexport class UiDateAdapter extends NativeDateAdapter {\n #datepickerService = inject(DatepickerService);\n\n constructor() {\n super();\n }\n\n override format(date: Date): string {\n if (!this.#datepickerService.useBrowserTimezone) {\n return formatDate(date, 'MM/dd/yyyy', 'en-US');\n }\n\n const locale = navigator.language;\n const options: Partial<Intl.DateTimeFormatOptions> = {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n dateStyle: 'short',\n };\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n}\n","import { formatDate } from '@angular/common';\nimport { Directive, Injectable } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats, NativeDateAdapter } from '@angular/material/core';\n\n@Injectable()\nexport class CustomDateAdapter extends NativeDateAdapter {\n override format(date: Date): string {\n return formatDate(date, 'MM/yyyy', 'en-US');\n }\n}\n\nconst FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'MM/YYYY',\n },\n display: {\n dateInput: 'MM/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n\n@Directive({\n selector: '[appNoDateFormat]',\n providers: [\n {\n provide: DateAdapter,\n useClass: CustomDateAdapter,\n },\n {\n provide: MAT_DATE_FORMATS,\n useValue: FORMATS,\n },\n ],\n standalone: true,\n})\nexport class NoDateFormatDirective {}\n","/* eslint-disable no-underscore-dangle */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewEncapsulation,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl } from '@angular/forms';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { MatDatepicker } from '@angular/material/datepicker';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { adjustLightness } from '../../utils/color-contrast';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { UI_DATE_FORMATS, UiDateAdapter } from './date-adapter';\nimport { DatepickerService } from './datepicker.service';\n\n@Component({\n selector: 'ui-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: DateAdapter, useClass: UiDateAdapter },\n { provide: MAT_DATE_FORMATS, useValue: UI_DATE_FORMATS },\n ],\n standalone: false\n})\n// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\nexport class DatepickerComponent implements OnChanges, ControlValueAccessor, DoCheck, OnInit {\n @HostBinding() class = 'ui-datepicker';\n\n /**\n * Form field label\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() label? = '';\n\n /**\n * Input name attribute\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() fieldName?: string;\n\n /**\n * Input placeholder\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() placeholder? = '';\n\n /**\n * Input id\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() id? = '';\n\n /**\n * Input value\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() value?: Array<Date | null> | Date;\n\n _errors: SafeHtml[];\n /**\n * Input field errors\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() set errors(errors: string[]) {\n this._errors = errors?.filter(Boolean).map(error => this.sanitizer.bypassSecurityTrustHtml(error));\n this.errorsLength = this.setErrorsLength();\n }\n\n /**\n * Determines if input is date range\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() isRange: boolean;\n\n /**\n * Determines if on blur of calendar and no end date is selected, set the end date as the start date\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() setSingleDateRangeOnBlur: boolean;\n\n /**\n * Determines if inner errors should be shown\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() showInnerErrors: boolean;\n\n /**\n * Determines inner errors message\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() innerErrorsMessage: string;\n\n /**\n * Determines if input is disabled\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() disabled: boolean;\n\n /**\n * Input is required or not\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() required: boolean;\n\n /**\n * Hint text\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() hintMessage: string;\n\n /**\n * Input is update only on blur\n *\n * @type {Boolean}\n * @memberof DatepickerComponent\n */\n @Input() updateOnBlur = false;\n\n /**\n * Show reserved content below form field\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() showBottomContent = true;\n\n /**\n * Set full width DatepickerComponent\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() fullWidth = false;\n\n /**\n * Set min date for Datepicker\n *\n * @type {Date}\n * @memberof DatepickerComponent\n */\n @Input() minDate: Date | undefined;\n\n /**\n * Set max date for Datepicker\n *\n * @type {Date}\n * @memberof DatepickerComponent\n */\n @Input() maxDate: Date | undefined;\n\n /**\n * Show and pick date without day\n * @default false\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() monthPicker = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DatepickerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Hide in-build errors for Reactive Forms\n *\n * @type {number}\n * @memberof DatepickerComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof DatepickerComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * Prevent user input\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() preventUserInput = false;\n\n /**\n * Color of the option hover.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() companyColor = '';\n\n /**\n * Use browser timezone\n * @type boolean\n * @memberof DatepickerComponent\n */\n @Input() set browserTimezone(value: boolean) {\n this.datepickerService.useBrowserTimezone = value;\n }\n\n /**\n * @ignore\n */\n onChange = (_: any) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n /**\n * Event emitted when the value is change - when used outside of form\n *\n * @type {Date}\n * @memberof DatepickerComponent\n */\n @Output() changed = new EventEmitter<Date | Date[]>();\n\n range = new FormGroup({\n start: new FormControl<Date | null>(null),\n end: new FormControl<Date | null>(null),\n });\n\n errorsLength: boolean;\n protected translationContext = 'DATEPICKER.';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private cdr: ChangeDetectorRef,\n private sanitizer: DomSanitizer,\n @Optional() @Self() public ngControl: NgControl,\n private datepickerService: DatepickerService,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n get hint(): string {\n if (this.hintMessage === undefined) {\n return this.isRange ? 'MM/DD/YYYY - MM/DD/YYYY' : this.monthPicker ? 'MM/YYYY' : 'MM/DD/YYYY';\n }\n\n return this.hintMessage;\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnInit() {\n document.body.setAttribute('theme', this.applicationTheme);\n this.setStyleVariable();\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnChanges(changes: SimpleChanges): void {\n if (this.isRange) {\n this.setRange();\n }\n if (changes['companyColor']) {\n this.setStyleVariable();\n }\n }\n\n // Set errors length for validation\n // Consider only those errors which are not empty\n setErrorsLength(): boolean {\n if (!!this._errors) {\n return this._errors.filter(err => !!err).length > 0 ? true : false;\n }\n return false;\n }\n\n onValueChange(value: Date | Date[]) {\n this.writeValue(value);\n this.errorsLength = this.setErrorsLength();\n if (!this.updateOnBlur) {\n this.onTouch();\n }\n this.onChange(value);\n this.changed.emit(value);\n }\n\n writeValue(value?: Date | Date[]): void {\n this.value = value;\n if (this.isRange) {\n this.setRange();\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n handleCloseRangePicker(): void {\n if (this.setSingleDateRangeOnBlur) {\n this.fillSingleDateRange(true);\n }\n }\n\n fillSingleDateRange(isStart: boolean): void {\n const { start, end } = this.range.controls;\n const sourceControl = isStart ? start : end;\n const targetControl = isStart ? end : start;\n\n if (sourceControl.value && !targetControl.value) {\n targetControl.setValue(sourceControl.value);\n this.dateRangeChange();\n }\n }\n\n dateRangeChange() {\n const start = this.range.controls.start.value!;\n const end = this.range.controls.end.value!;\n this.onValueChange([start ? new Date(start) : start, end ? new Date(end) : end] as Date[]);\n }\n\n setMonthAndYear(normalizedMonthAndYear: any, datepicker: MatDatepicker<Date>) {\n const ctrlValue = (this.value as Date) || new Date();\n\n ctrlValue.setMonth(normalizedMonthAndYear.getMonth());\n ctrlValue.setFullYear(normalizedMonthAndYear.getFullYear());\n\n datepicker.close();\n\n this.onValueChange(new Date(ctrlValue));\n }\n\n private setRange() {\n if (Array.isArray(this.value)) {\n const [start, end] = this.value;\n\n if (start && String(this.range.controls.start.value) !== String(start)) {\n this.range.controls.start.setValue(new Date(start));\n }\n\n if (end && String(this.range.controls.end.value) !== String(end)) {\n this.range.controls.end.setValue(new Date(end));\n }\n }\n\n if (!this.value) {\n this.range.controls.start.setValue(null);\n this.range.controls.end.setValue(null);\n }\n }\n\n onInput(event: Event) {\n const target = event.target as EventTarget & { value: string };\n const [month, year] = target.value.split('/');\n const date = new Date().getDate();\n const fullDateString = `${month}/${date}/${year}`;\n const fullDate = new Date(fullDateString);\n this.onValueChange(fullDate);\n }\n\n private setStyleVariable() {\n const hover = this.companyColor ? adjustLightness(this.companyColor, 'hover') : '#FFF2FC';\n document.body.style.setProperty('--datepicker-hover-color', hover);\n document.body.style.setProperty('--datepicker-selected-color', `${this.companyColor || '#D410AA'}`);\n }\n}\n","@if (monthPicker) {\n <mat-form-field\n appNoDateFormat\n appearance=\"outline\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) ? 'warn' : 'accent'\"\n [ngClass]=\"{ 'hide-bottom-content': !showBottomContent, 'full-width': fullWidth }\"\n >\n <mat-label *ngIf=\"label\">\n <ng-container [ngTemplateOutlet]=\"labelTpl\"></ng-container>\n </mat-label>\n\n <input\n matInput\n [id]=\"id!\"\n (blur)=\"onTouch()\"\n [placeholder]=\"placeholder!\"\n [matDatepicker]=\"dp\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"fieldName!\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [readonly]=\"preventUserInput\"\n (change)=\"onInput($event)\"\n (dateChange)=\"onValueChange($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"dp\">\n <ui-icon\n matDatepickerToggleIcon\n [applicationTheme]=\"applicationTheme\"\n name=\"Calendar\"\n size=\"24\"\n color=\"inherit\"\n ></ui-icon>\n </mat-datepicker-toggle>\n <mat-datepicker\n panelClass=\"month-picker\"\n #dp\n startView=\"multi-year\"\n (monthSelected)=\"setMonthAndYear($event, dp)\"\n ></mat-datepicker>\n\n <mat-hint class=\"info\" *ngIf=\"hint && !_errors && !(ngControl?.touched && (ngControl?.errors | hasValidationError))\"\n >{{ hint }}\n </mat-hint>\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.touched && (ngControl?.errors | hasValidationError))\">\n <ng-container [ngTemplateOutlet]=\"hintsTpl\"></ng-container>\n </mat-hint>\n </mat-form-field>\n} @else {\n @if (isRange) {\n <mat-form-field\n appearance=\"outline\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) ? 'warn' : 'accent'\"\n [ngClass]=\"{ 'hide-bottom-content': !showBottomContent, 'full-width': fullWidth }\"\n class=\"range-datepicker\"\n >\n <mat-label *ngIf=\"label\">\n <ng-container [ngTemplateOutlet]=\"labelTpl\"></ng-container>\n </mat-label>\n\n <mat-date-range-input [formGroup]=\"range\" [rangePicker]=\"rangePicker\" [min]=\"minDate\" [max]=\"maxDate\">\n <input\n matStartDate\n formControlName=\"start\"\n [placeholder]=\"translationContext + 'START_DATE' | uiTranslate | async\"\n (dateChange)=\"dateRangeChange()\"\n (blur)=\"setSingleDateRangeOnBlur && fillSingleDateRange(true)\"\n />\n <input\n matEndDate\n formControlName=\"end\"\n [placeholder]=\"translationContext + 'END_DATE' | uiTranslate | async\"\n (dateChange)=\"dateRangeChange()\"\n (blur)=\"setSingleDateRangeOnBlur && fillSingleDateRange(false)\"\n />\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"rangePicker\">\n <ui-icon\n matDatepickerToggleIcon\n [applicationTheme]=\"applicationTheme\"\n name=\"Calendar\"\n size=\"24\"\n color=\"inherit\"\n ></ui-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #rangePicker (closed)=\"handleCloseRangePicker()\"></mat-date-range-picker>\n\n <mat-hint\n class=\"info\"\n *ngIf=\"\n hint &&\n !_errors &&\n !(ngControl?.touched && (ngControl?.errors | hasValidationError)) &&\n !(range?.invalid && showInnerErrors)\n \"\n >{{ hint }}\n </mat-hint>\n <mat-hint\n class=\"error\"\n *ngIf=\"\n errorsLength ||\n (ngControl?.touched && (ngControl?.errors | hasValidationError)) ||\n (range?.invalid && showInnerErrors)\n \"\n >\n <ng-container [ngTemplateOutlet]=\"hintsTpl\"></ng-container>\n </mat-hint>\n </mat-form-field>\n } @else {\n <mat-form-field\n appearance=\"outline\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) ? 'warn' : 'accent'\"\n [ngClass]=\"{ 'hide-bottom-content': !showBottomContent, 'full-width': fullWidth }\"\n >\n <mat-label *ngIf=\"label\">\n <ng-container [ngTemplateOutlet]=\"labelTpl\"></ng-container>\n </mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n (blur)=\"onTouch()\"\n (dateChange)=\"onValueChange($event.value)\"\n [id]=\"id!\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"fieldName!\"\n [readonly]=\"preventUserInput\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\">\n <ui-icon\n matDatepickerToggleIcon\n [applicationTheme]=\"applicationTheme\"\n name=\"Calendar\"\n size=\"24\"\n color=\"inherit\"\n ></ui-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n\n <mat-hint\n class=\"info\"\n *ngIf=\"hint && !_errors && !(ngControl?.touched && (ngControl?.errors | hasValidationError))\"\n >{{ hint }}\n </mat-hint>\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.touched && (ngControl?.errors | hasValidationError))\">\n <ng-container [ngTemplateOutlet]=\"hintsTpl\"></ng-container>\n </mat-hint>\n </mat-form-field>\n }\n}\n\n<ng-template #labelTpl>{{ label }}<span *ngIf=\"required\"> *</span></ng-template>\n<ng-template #hintsTpl>\n @if (errorsLength) {\n <div class=\"errors\" *ngFor=\"let error of _errors\">\n <ui-icon [applicationTheme]=\"applicationTheme\" name=\"Error\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n }\n @if (ngControl && !hideBuiltInErrors) {\n <ui-validation-error [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\"></ui-validation-error>\n }\n @if (showInnerErrors) {\n @if (isRange) {\n <div class=\"errors\">\n <ui-icon [applicationTheme]=\"applicationTheme\" name=\"Error\"></ui-icon>\n <span [innerHTML]=\"innerErrorsMessage\"></span>\n </div>\n }\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DatepickerComponent } from './datepicker.component';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { NoDateFormatDirective } from './no-date-format.directive';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\nimport { ValidationErrorModule } from '../validation-error/validation-error.module';\n\n@NgModule({\n declarations: [DatepickerComponent],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n FormsModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n MatNativeDateModule,\n UiTranslatePipe,\n NoDateFormatDirective,\n HasValidationErrorPipe,\n ValidationErrorModule,\n ],\n exports: [DatepickerComponent],\n})\nexport class DatepickerComponentModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'halfStar',\n standalone: false\n})\nexport class HalfStarPipe implements PipeTransform {\n /**\n * @description Used to indicate whether display half-star icon.\n * Returns true if the rounded value of the current element\n * is equal to it's index, and value is not integer (e.g. index = 4, value = 3.5),\n * @param index the index of the current element\n * @param value the value of the current element\n */\n transform(index: number, value: number): boolean {\n return Math.ceil(value) === index && !Number.isInteger(value);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\nexport type RatingComponentTheme = 'stars' | 'block';\n\n@Component({\n selector: 'ui-rating',\n templateUrl: './rating.component.html',\n styleUrls: ['./rating.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class RatingComponent {\n private readonly MIN_LENGTH = 0;\n private readonly DEFAULT_LENGTH = 5;\n protected items: number[] = [];\n protected hoverIndex: number;\n\n /**\n *\n * Defines the application theme where accordion is used\n *\n * @type {ApplicationTheme}\n * @memberof AccordionComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * The value representing the rating.\n * @type {number}\n * @memberof RatingComponent\n */\n @Input() value: number;\n\n /**\n * The theme of the rating component. Defaults \"block\".\n * @type {RatingComponentTheme}\n * @memberof RatingComponent\n */\n @Input() theme: RatingComponentTheme = 'block';\n\n /**\n * A flag indicating whether the rating component is disabled.\n * @type {boolean}\n * @memberof RatingComponent\n */\n @Input() disabled = false;\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof RatingComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof RatingComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * The width of the rating bar.\n * @type {number}\n * @memberof RatingComponent\n */\n @Input() barWidth = 35;\n\n /**\n * A flag indicating whether the rating can be unselected by clicking on the same value.\n * When false, clicking on the same value will not change the rating.\n * @type {boolean}\n * @memberof RatingComponent\n */\n @Input() canUnselect = true;\n\n @Input() set length(length: number) {\n this.items = Array(Math.max(length, this.MIN_LENGTH))\n .fill(0)\n .map((x, i) => i);\n }\n\n @Output() valueChange = new EventEmitter<number>();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n this.length = this.DEFAULT_LENGTH;\n\n }\n\n protected select(index: number): void {\n const newValue = index + 1;\n \n // If canUnselect is false and we're clicking on the same value, don't change anything\n if (!this.canUnselect && this.value === newValue) {\n return;\n }\n \n this.value = this.value === newValue ? 0 : newValue;\n this.valueChange.emit(this.value);\n }\n\n protected onHover(index: number): void {\n this.hoverIndex = index + 1;\n }\n}\n","<div class=\"rating\"\n (mouseleave)=\"onHover(-1)\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n>\n <ng-container *ngIf=\"theme === 'block';else stars\">\n <div class=\"rating-item\" [attr.theme]=\"applicationTheme\" *ngFor=\"let item of items\" (click)=\"select(item)\" (mouseenter)=\"onHover(item)\"\n [ngClass]=\"{ 'rating-item-selected': item < value, 'rating-item-hover': item < hoverIndex }\"\n [ngStyle]=\"{'width.px': barWidth}\">\n </div>\n </ng-container>\n\n <ng-template #stars>\n <div class=\"star-container\" [attr.theme]=\"applicationTheme\">\n <div\n #star\n class=\"star\"\n [tabIndex]=\"0\"\n (mouseenter)=\"onHover(item)\"\n (mouseleave)=\"onHover(-1)\"\n [ngClass]=\"{\n filled: value > i,\n hover: item < hoverIndex && (value ? item >= value : true),\n disabled,\n 'filled-half': i + 1 | halfStar : value\n }\"\n *ngFor=\"let item of items; index as i\"\n (click)=\"select(item); star.blur()\"\n ></div>\n </div>\n </ng-template>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RatingComponent } from './rating.component';\nimport { HalfStarPipe } from './half-star.pipe';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [RatingComponent, HalfStarPipe],\n imports: [CommonModule, MatInputModule],\n exports: [RatingComponent],\n})\nexport class RatingComponentModule {}\n","export const hexToRgbWithAlpha = (hex: string, alpha: number = 0.3): string => {\n hex = hex.replace(/^#/, '');\n\n let bigint = parseInt(hex, 16);\n let r = (bigint >> 16) & 255;\n let g = (bigint >> 8) & 255;\n let b = bigint & 255;\n\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { hexToRgbWithAlpha } from '../../utils/hex-to-rgb';\n\n@Component({\n selector: 'ui-scale',\n templateUrl: './scale.component.html',\n styleUrls: ['./scale.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ScaleComponent implements OnInit, OnChanges {\n private readonly MIN_LENGTH = 1;\n private readonly DEFAULT_LENGTH = 5;\n protected items: number[] = [];\n\n @ViewChildren('scaleItem') scaleItems!: QueryList<ElementRef>;\n\n /**\n * The value representing the selected item of the scale.\n * @type {number}\n * @memberof ScaleComponent\n */\n @Input() selectedIndex: number | null = null;\n\n /**\n * The max number of items in the scale.\n * @type {number}\n * @memberof ScaleComponent\n */\n @Input() set length(length: number) {\n this.items = Array(Math.max(length, this.MIN_LENGTH))\n .fill(0)\n .map((_, i) => i);\n }\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof ScaleComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Color of the option hover.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof ScaleComponent\n */\n @Input() companyColor: string = '';\n\n @Output() selectedIndexChange = new EventEmitter<number>();\n\n styles = signal({ '--hover-color': '#FFB3EE', '--selected-color': '#D410AA' });\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n this.length = this.DEFAULT_LENGTH;\n }\n\n ngOnInit() {\n if (this.companyColor) {\n this.setCompanyColor();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['companyColor']) {\n this.setCompanyColor();\n }\n }\n\n protected select(index: number): void {\n this.selectedIndex = index;\n this.selectedIndexChange.emit(this.selectedIndex);\n }\n\n onKeyDown(event: KeyboardEvent, index: number) {\n if (this.selectedIndex === null) {\n this.selectedIndex = 0;\n }\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n // Move to the next item (wrap around)\n this.select((index + 1) % this.items.length);\n this.focusItem(this.selectedIndex);\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n // Move to the previous item (wrap around)\n this.select((index - 1 + this.items.length) % this.items.length);\n this.focusItem(this.selectedIndex);\n } else if (event.key === ' ' || event.key === 'Enter') {\n // Select the current item\n this.select(index);\n this.focusItem(this.selectedIndex);\n }\n }\n\n focusItem(index: number) {\n const element = this.scaleItems?.toArray()[index]?.nativeElement;\n if (element) {\n element.focus();\n }\n }\n\n getAriaLabel(index: number): string {\n if (index === 0) {\n return '1 - Not at all important';\n } else if (index === 4) {\n return '5 - Very important';\n }\n return '';\n }\n\n private setCompanyColor(): void {\n const styles = this.styles();\n styles['--hover-color'] = hexToRgbWithAlpha(this.companyColor);\n styles['--selected-color'] = this.companyColor;\n this.styles.set(styles);\n }\n\n onFocus(item: number): void {\n // If no item is selected when the component receives focus, select the first item\n if (this.selectedIndex === null && item === 0) {\n this.select(0);\n }\n }\n}\n","<div\n [style.--scale-count]=\"items.length\"\n class=\"scale\"\n [ngStyle]=\"styles()\"\n [ngClass]=\"{ 'scale-classic': applicationTheme === 'classic' }\"\n>\n <div\n class=\"scale-item\"\n *ngFor=\"let item of items\"\n (click)=\"select(item)\"\n #scaleItem\n role=\"radio\"\n (keydown)=\"onKeyDown($event, item)\"\n (focus)=\"onFocus(item)\"\n [class.scale-item-focus-prev]=\"selectedIndex && selectedIndex > 0 ? item === selectedIndex - 1 : false\"\n [attr.tabindex]=\"selectedIndex === null ? (item === 0 ? '0' : '-1') : item === selectedIndex ? '0' : '-1'\"\n [attr.aria-checked]=\"\n selectedIndex === null ? (item === 0 ? 'true' : 'false') : item === selectedIndex ? 'true' : 'false'\n \"\n [attr.aria-label]=\"getAriaLabel(item)\"\n [ngClass]=\"{ 'scale-item-selected': item === selectedIndex }\"\n >\n {{ item + 1 }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScaleComponent } from './scale.component';\n\n\n@NgModule({\n declarations: [ScaleComponent],\n imports: [CommonModule],\n exports: [ScaleComponent]\n})\nexport class ScaleComponentModule {\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ScaleComponentModule } from '../scale/scale.component.module';\nimport { ScaleItem } from './scale-table.model';\n\n@Component({\n selector: 'ui-scale-table',\n templateUrl: './scale-table.component.html',\n styleUrls: ['./scale-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [UiTranslatePipe, ScaleComponentModule, AsyncPipe, IconComponentModule, ButtonComponentModule],\n host: {\n '[style.--scale-count]': 'scaleCount()',\n }\n})\nexport class ScaleTableComponent {\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof ScaleTableComponent\n */\n public applicationTheme = input<ApplicationTheme>('light');\n\n /**\n *\n * Defines items with their text and it's values\n *\n * @type {ScaleTable}\n * @memberof ScaleTableComponent\n */\n public scaleItems = model.required<ScaleItem[]>();\n\n /**\n *\n * Defines description of scales\n *\n * @type {string[]}\n * @memberof ScaleTableComponent\n */\n public labels = input.required<string[]>();\n public hideBetterExperience = model(false);\n public scaleItemChange = output<{\n item: ScaleItem;\n label: string;\n }>();\n scaleCount = computed(() => this.labels().length);\n\n protected readonly translationContext = 'SCALE_TABLE.';\n\n public select(scaleItemIndex: number, scaleIndex: number): void {\n this.scaleItems.update(items => {\n items[scaleItemIndex].value = scaleIndex;\n this.scaleItemChange.emit({\n item: items[scaleItemIndex],\n label: this.labels()[scaleIndex],\n });\n return [...items];\n });\n }\n}\n","<div class=\"scale-table\">\n <div class=\"better-experience\" [class.hide]=\"hideBetterExperience()\">\n <ui-icon [size]=\"'24'\" [name]=\"'Device-rotate-in-line'\" class=\"mobile-landscape-icon\" />\n <p>{{ 'SCALE_TABLE.ROTATE_DEVICE' | uiTranslate | async }}</p>\n <ui-button\n iconName=\"Close\"\n variant=\"icon-button\"\n size=\"small\"\n [justIcon]=\"true\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"hideBetterExperience.set(true)\"\n />\n </div>\n <!-- Header -->\n <div tabindex=\"0\" [attr.aria-label]=\"'scale header'\" class=\"scale-table-header\">\n @for (label of labels(); track $index) {\n <div tabindex=\"0\" role=\"heading\" [attr.aria-label]=\"label + ' as ' + ($index + 1)\" class=\"scale-size\">\n {{ label }}\n </div>\n }\n </div>\n <!-- Scale Items -->\n @for (scale of scaleItems(); track scale.text) {\n <div class=\"scale-table-row\" tabindex=\"0\" role=\"radiogroup\" [attr.aria-label]=\"scale.text\">\n <div class=\"scale-text\">{{ scale.text }}</div>\n <ui-scale\n [selectedIndex]=\"scale.value ?? null\"\n [length]=\"scale.length ?? labels().length\"\n [applicationTheme]=\"applicationTheme()\"\n (selectedIndexChange)=\"select($index, $event)\"\n />\n </div>\n }\n</div>\n","import {\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RegisterFn } from './toggle.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IKeyboardEvent } from '../../models/keyboard-events.model';\n\n@Component({\n selector: 'ui-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleComponent),\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ToggleComponent implements ControlValueAccessor, OnChanges, OnInit {\n /**\n * The `selected` property determines the current state of the toggle switch.\n *\n * @type {boolean}\n * @default false\n * @memberof ToggleComponent\n */\n @Input() selected = false;\n\n /**\n * The `disabled` property determines whether the toggle switch is disabled.\n *\n * @type {boolean}\n * @default false\n * @memberof ToggleComponent\n */\n @Input() disabled = false;\n\n /**\n * Toggle label\n *\n * @type {string}\n * @default ''\n * @memberof ToggleComponent\n */\n @Input() label = '';\n\n /**\n * Message\n *\n * @type {string}\n * @default ''\n * @memberof ToggleComponent\n */\n @Input() message = '';\n\n /**\n * Max width of the toggle container\n *\n * @type {number}\n * @memberof ToggleComponent\n */\n @HostBinding('style.--max-width')\n @Input()\n maxWidth: number | undefined;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof ToggleComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * The `toggle` event is triggered when the state of the toggle switch changes. It returns the new state.\n *\n * @type {event}\n * @memberof ToggleComponent\n */\n @Output() toggle = new EventEmitter<boolean>();\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof ToggleComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof ToggleComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * disable/enable click on toggle\n * @type {boolean}\n * @memberof ToggleComponent\n */\n @Input() preventClick = false;\n\n /**\n * The loading state\n *\n * @type {boolean}\n * @memberof ToggleComponent\n */\n @Input() loading = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ToggleComponent\n */\n @Input() ariaDescribedby = '';\n\n protected showLabelTooltip = false\n protected classes: string;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnChanges(): void {\n this.setClasses();\n }\n\n ngOnInit(): void {\n this.setClasses();\n }\n\n onToggle(): void {\n if (this.preventClick) {\n this.toggle.emit(this.selected);\n }\n if (!this.disabled && !this.preventClick) {\n this.selected = !this.selected;\n this.toggle.emit(this.selected);\n this.onChange(this.selected);\n }\n }\n\n writeValue(state: boolean): void {\n if (state) {\n this.selected = state;\n }\n }\n\n registerOnChange(fn: RegisterFn): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: RegisterFn): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n changeTextState(state: boolean): void {\n this.showLabelTooltip = state;\n }\n\n onKeydown($event: KeyboardEvent) {\n if ($event.key === IKeyboardEvent.ENTER || $event.key === IKeyboardEvent.SPACE) {\n $event.stopPropagation();\n $event.preventDefault();\n this.onToggle();\n }\n }\n\n private onChange: RegisterFn = () => {\n };\n private onTouched: RegisterFn = () => {\n };\n\n private setClasses(): void {\n this.classes = `${this.disabled ? 'disabled' : ''} ${this.applicationTheme} ${this.loading ? 'loading' : ''} ${!this.label ? 'small-toggle' : ''}`;\n }\n}\n","<div class=\"toggle\" [ngClass]=\"classes\">\n <div\n [style.--max-width]=\"maxWidth + 'px'\"\n [tabIndex]=\"0\"\n class=\"toggle-container\"\n [ngClass]=\"{ 'active': selected }\"\n (click)=\"onToggle()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n (keydown)=\"onKeydown($event)\"\n role=\"switch\"\n [attr.aria-labelledby]=\"'label'\"\n [attr.aria-describedby]=\"'ariaDescribedby'\"\n [attr.aria-checked]=\"selected\"\n >\n <span [style.display]=\"'none'\" id=\"ariaDescribedby\">{{ ariaDescribedby }}</span>\n <div\n class=\"label\"\n uiEllipseText\n [matTooltipShowDelay]=\"800\"\n [matTooltip]=\"showLabelTooltip ? label : ''\"\n (onChangeTextState)=\"changeTextState($event)\"\n id=\"label\"\n >\n {{ label }}\n </div>\n <div class=\"knob\" *ngIf=\"!loading; else loadingTemplate\" [ngClass]=\"{ selected }\">\n <ui-icon [color]=\"disabled ? 'grey' : 'white'\" *ngIf=\"selected && !label\" [size]=\"'16'\" [name]=\"'Check-round-filled'\"></ui-icon>\n </div>\n\n <ng-template #loadingTemplate>\n <ui-spinner [isLoader]=\"false\" [size]=\"'small'\" [applicationTheme]=\"'dark'\"></ui-spinner>\n </ng-template>\n </div>\n <div *ngIf=\"message && selected\" class=\"message\">{{ message }}</div>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToggleComponent } from './toggle.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { EllipseTextDirective } from '@testgorilla/tgo-ui/components/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SpinnerComponentModule } from \"../spinner/spinner.module\";\n\n@NgModule({\n declarations: [ToggleComponent],\n imports: [CommonModule, MatTooltipModule, EllipseTextDirective, MatInputModule, UiTranslatePipe, IconComponentModule, SpinnerComponentModule],\n exports: [ToggleComponent],\n})\nexport class ToggleComponentModule {}\n","import { inject, InjectionToken } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { map } from 'rxjs';\nimport { ScreenBreakpoints } from '../models/screen-breakpoints.model';\n\nexport const IS_MOBILE_TOKEN = new InjectionToken('Is mobile', {\n factory: () => {\n const breakpointObserver = inject(BreakpointObserver);\n return breakpointObserver.observe(`(max-width: ${ScreenBreakpoints.MOBILE}px)`).pipe(map(v => v.matches));\n },\n});\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { map } from 'rxjs';\r\nimport { ScreenBreakpoints } from '../models/screen-breakpoints.model';\r\n\r\nexport const IS_LARGE_TABLET_TOKEN = new InjectionToken('Is large tablet', {\r\n factory: () => {\r\n const breakpointObserver = inject(BreakpointObserver);\r\n return breakpointObserver.observe(`(max-width: ${ScreenBreakpoints.LARGE_TABLET}px)`).pipe(map(v => v.matches));\r\n },\r\n});\r\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output, signal,\n TemplateRef, ViewChild,\n} from '@angular/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { HtmlDescription, StepperPosition, StepperVariation } from '../stepper/stepper.model';\nimport { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { IKeyboardEvent } from \"../../models/keyboard-events.model\";\nimport { TooltipPositionType } from '@testgorilla/tgo-ui/components/tooltip';\n\n@Component({\n selector: 'ui-step',\n templateUrl: './step.component.html',\n styleUrls: ['./step.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class StepComponent implements AfterViewInit {\n /**\n * Input property for the label of the step.\n *\n * @memberof StepComponent\n */\n @Input() label: string;\n\n /**\n * Input property indicating whether the step has been visited.\n *\n * @memberof StepComponent\n */\n @Input() isVisited: boolean;\n\n /**\n * Input property indicating whether the form has been submitted.\n *\n * @memberof StepComponent\n */\n @Input() submitted: boolean;\n\n /**\n * Input property for the icon associated with the step.\n *\n * @memberof StepComponent\n */\n @Input() icon: IconName | undefined = '';\n\n /**\n * Input property for the index of the step.\n *\n * @memberof StepComponent\n */\n @Input() index: number;\n\n /**\n * Input property indicating whether the step is currently selected.\n *\n * @memberof StepComponent\n */\n @Input() selected: boolean;\n\n /**\n * Input property indicating whether the step is the last step in the stepper.\n *\n * @memberof StepComponent\n */\n @Input() isLast: boolean;\n\n /**\n * Input property indicating the selected index in the stepper.\n *\n * @memberof StepComponent\n */\n @Input() selectedIndex: number;\n\n /**\n * Input property indicating whether the step is disabled.\n *\n * @memberof StepComponent\n */\n @Input() disabled = false;\n\n /**\n * Input property indicating whether the previous step has been visited.\n *\n * @memberof StepComponent\n */\n @Input() prevStepIsVisited: boolean | undefined = false;\n\n /**\n * Input property indicating whether the component is in mobile mode.\n *\n * @memberof StepComponent\n */\n @Input() mobileMode = false;\n\n /**\n * Input property indicating whether the component is in large tablet mode.\n *\n * @memberof StepComponent\n */\n @Input() largeTabletMode: boolean | null = false;\n\n /**\n * Input property indicating whether the final icon should be displayed.\n *\n * @memberof StepComponent\n */\n @Input() finalIcon = false;\n\n /**\n * Input property indicating to display icon when step is selected.\n *\n * @memberof StepComponent\n */\n @Input() showIconWhenSelected = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof StepComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Defines the stepper position\n *\n * @type {StepperPosition}\n * @memberof StepComponent\n */\n @Input() position: StepperPosition;\n\n /**\n *\n * Step description\n *\n * @type {HtmlDescription[]}\n * @memberof StepComponent\n */\n @Input() htmlDescription: HtmlDescription[] = [];\n\n /**\n *\n * Sets bold font weight for label\n *\n * @type {boolean}\n * @memberof StepComponent\n */\n @Input() boldLabel = false;\n\n /**\n *\n * Template for the step description\n *\n * @type {TemplateRef}\n * @memberof StepComponent\n */\n @Input() descriptionTpl?: TemplateRef<any>;\n\n /**\n *\n * Tooltip for the step label\n *\n * @type {string}\n * @memberof StepComponent\n */\n @Input() labelTooltip?: string;\n\n /**\n *\n * Always show step icon instead of number\n *\n * @type {boolean}\n * @memberof StepComponent\n */\n @Input() alwaysShowIcon = false;\n\n /**\n *\n * Context for the step template\n *\n * @type {any}\n * @memberof StepComponent\n */\n @Input() context: any;\n\n /**\n * A string representing the step variant.\n * This attribute is used to indicate the variant that should be used.\n * @type {string}\n * @memberof StepComponent\n */\n @Input() stepVariant: StepperVariation = 'primary';\n\n /**\n * Event emitted when the step was clicked.\n * @type {number}\n * @memberof StepComponent\n */\n @Output() stepSelected = new EventEmitter<number>();\n\n @ViewChild('step') stepElement: ElementRef<HTMLElement>;\n\n protected readonly TooltipPositionType = TooltipPositionType;\n\n protected keyboardFocused = signal(false);\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private focusMonitor: FocusMonitor,\n private destroyRef: DestroyRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngAfterViewInit() {\n this.subscriberFocus();\n }\n\n protected get hasLastStepDefaultIcon(): boolean {\n return !this.showIconWhenSelected || (this.showIconWhenSelected && !this.selected);\n }\n\n protected onStepSelected(index: number): void {\n if (!this.disabled) {\n this.stepSelected.emit(index);\n }\n }\n\n protected subscriberFocus(): void {\n this.focusMonitor.monitor(this.stepElement.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin => this.keyboardFocused.set(origin === 'keyboard'));\n }\n\n onKeydown($event: KeyboardEvent): void {\n if ($event.key === IKeyboardEvent.ENTER || $event.key === IKeyboardEvent.SPACE) {\n this.onStepSelected(this.index);\n } else if ($event.key === IKeyboardEvent.ARROW_UP) {\n const prevIndex = this.index - 1;\n const prevElement = document.getElementById(`step-${prevIndex}`);\n\n if (!prevElement) {\n return;\n }\n this.focusMonitor.focusVia(prevElement, 'keyboard');\n } else if ($event.key === IKeyboardEvent.ARROW_DOWN) {\n const nextIndex = this.index + 1;\n const nextElement = document.getElementById(`step-${nextIndex}`);\n\n if (!nextElement) {\n return;\n }\n this.focusMonitor.focusVia(nextElement, 'keyboard');\n }\n }\n}\n","@if (!mobileMode) {\n <ui-tooltip [message]=\"(stepVariant === 'secondary') && largeTabletMode ? label : ''\" [position]=\"TooltipPositionType.BOTTOM\">\n <div\n class=\"step-container\"\n #step\n [tabIndex]=\"disabled? -1 : 0\"\n [ngClass]=\"{\n 'secondary-step-variant': stepVariant === 'secondary',\n 'visited-next': isVisited && index > selectedIndex,\n 'visited-prev': isVisited && index < selectedIndex,\n 'active': selected,\n 'last-step': finalIcon && hasLastStepDefaultIcon && !alwaysShowIcon,\n 'disabled': disabled,\n 'vertical': position === 'vertical',\n 'keyboard-focused': keyboardFocused()\n }\"\n [attr.theme]=\"applicationTheme\"\n (keydown.enter)=\"onStepSelected(index)\"\n (keydown.space)=\"$event.preventDefault();onStepSelected(index)\"\n (click)=\"onStepSelected(index)\"\n >\n <div class=\"step-icon\">\n @if (index && stepVariant === 'primary') {\n <div class=\"line\" [ngClass]=\"{ visited: prevStepIsVisited }\"></div>\n }\n\n <div class=\"icon-wrapper\" *ngIf=\"!finalIcon; else lastStep\">\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isVisited && !selected && !alwaysShowIcon\">\n <ui-icon\n size=\"24\"\n [name]=\"stepVariant ==='secondary' ? 'Check-small-filled' : 'Check'\"\n [color]=\"(isVisited && index < selectedIndex) || stepVariant ==='secondary' ? 'white' : applicationTheme === 'classic' ? 'petrol' : 'rebrand-black'\"\n ></ui-icon>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"(selected && !!icon) || alwaysShowIcon\">\n <ui-icon [size]=\"'24'\" [name]=\"icon!\" [color]=\"isLast && !selected ? 'rebrand-black' : 'white'\"></ui-icon>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n {{ index + 1 }}\n </ng-container>\n </ng-container>\n </div>\n\n <ng-template #lastStep>\n <img\n *ngIf=\"hasLastStepDefaultIcon && !alwaysShowIcon; else stepIcon\"\n [alt]=\"'step-finish-image'\"\n [attr.src]=\"applicationTheme === 'classic' ? '/images/step-finish.svg' : isVisited ? '/images/rebrand-last-step-icon-light.svg' : '/images/rebrand-last-step-icon-black.svg'\"\n >\n\n <ng-template #stepIcon>\n <div class=\"icon-wrapper\">\n <ui-icon *ngIf=\"icon || (icon && alwaysShowIcon); else stepIndex\" [size]=\"'24'\" [name]=\"icon\"\n [color]=\"'white'\"></ui-icon>\n <ng-template #stepIndex>\n {{ index + 1 }}\n </ng-template>\n </div>\n </ng-template>\n </ng-template>\n </div>\n\n <div class=\"steps-label\">\n @if (label) {\n <div\n class=\"step-label\"\n [ngClass]=\"{'step-bold-label': boldLabel}\"\n [matTooltip]=\"labelTooltip ?? ''\">\n {{ label }}\n </div>\n }\n\n <div class=\"step-description-container\">\n <div *ngFor=\"let description of htmlDescription\" class=\"step-description\">\n <div>{{ description.text }}</div>\n\n <ui-icon\n *ngIf=\"description.iconName\"\n [name]=\"description.iconName\"\n [size]=\"'24'\"\n [matTooltip]=\"description.iconTooltip ?? ''\"\n ></ui-icon>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"descriptionTpl\"\n [ngTemplateOutlet]=\"descriptionTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: context, label, isVisited, submitted, index, selected, isLast, selectedIndex, disabled, prevStepIsVisited, mobileMode, finalIcon, showIconWhenSelected, position }\"\n ></ng-container>\n </div>\n </div>\n </ui-tooltip>\n\n} @else {\n <div\n class=\"mobile-step-container\"\n #step\n [tabIndex]=\"disabled ? -1 : 0\"\n [ngClass]=\"{\n 'secondary-step-variant': stepVariant === 'secondary',\n 'active': selected,\n 'disabled': disabled,\n 'visited': isVisited,\n 'keyboard-focused': keyboardFocused()\n }\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onStepSelected(index)\"\n [attr.theme]=\"applicationTheme\"\n role=\"tab\"\n [attr.aria-selected]=\"selected\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n [attr.aria-controls]=\"index\"\n [id]=\"'step-'+ index\"\n >\n <div class=\"step\">\n <ng-container *ngIf=\"!finalIcon; else lastStep\">\n <div [ngSwitch]=\"true\" class=\"icon\">\n <ng-container *ngSwitchCase=\"isVisited && !selected\">\n <ui-icon [size]=\"'16'\" [name]=\"'Check'\" [color]=\"'white'\"></ui-icon>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"selected && !!icon\">\n <ui-icon [size]=\"'16'\" [name]=\"icon!\" [color]=\"'white'\"></ui-icon>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n {{ index + 1 }}\n </ng-container>\n </div>\n </ng-container>\n\n <ng-template #lastStep>\n <img *ngIf=\"hasLastStepDefaultIcon; else stepIcon\"\n [alt]=\"'step-finish-image'\"\n [width]=\"24\"\n [height]=\"24\"\n [attr.src]=\"applicationTheme === 'classic' ? '/images/step-finish.svg' : isVisited ? '/images/rebrand-last-step-icon-light.svg' : '/images/rebrand-last-step-icon-black.svg'\"\n >\n\n <ng-template #stepIcon>\n <div class=\"icon\">\n <ui-icon *ngIf=\"icon; else stepIndex\" [size]=\"'24'\" [name]=\"icon\" [color]=\"'white'\"></ui-icon>\n <ng-template #stepIndex>\n {{ index + 1 }}\n </ng-template>\n </div>\n </ng-template>\n </ng-template>\n <span class=\"label\">{{ label }}</span>\n </div>\n </div>\n}\n\n","export type RadialProgressSize = 'large' | 'small';\n\nexport enum RadialProgressSizeValue {\n LARGE = 64,\n SMALL = 40,\n}\n\nexport enum RadialProgressSizeEnum {\n LARGE = 'large',\n SMALL = 'small',\n}\n\nexport type RadialProgressVariant = 'number' | 'icon-button' | 'thin' | 'empty' | 'empty-thin';\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Optional,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {\n RadialProgressSize,\n RadialProgressSizeEnum,\n RadialProgressSizeValue,\n RadialProgressVariant,\n} from './radial-progress.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\n@Component({\n selector: 'ui-radial-progress',\n templateUrl: './radial-progress.component.html',\n styleUrls: ['./radial-progress.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class RadialProgressComponent {\n /**\n * The size of the component. Defaults to 'small'.\n * @type {RadialProgressSize}\n * @memberof RadialProgressComponent\n */\n @Input() size: RadialProgressSize = RadialProgressSizeEnum.SMALL;\n /**\n * The current value of the progress. Defaults to 0.\n * @type {number}\n * @memberof RadialProgressComponent\n */\n @Input() value = 0;\n /**\n * The value of the total progress. Used to set the cap and used for percentage calculations. Defaults to 0.\n * @type {number}\n * @memberof RadialProgressComponent\n */\n @Input() total = 0;\n\n /**\n * @type {number}\n * @memberof RadialProgressComponent\n */\n @Input() variant: RadialProgressVariant = 'number';\n\n /**\n * @type {boolean}\n * @memberof RadialProgressComponent\n */\n @Input() showPercentageSign = true;\n\n /**\n * Icon for icon button\n * @type {number}\n * @memberof RadialProgressComponent\n */\n @Input() icon: IconName = '';\n\n /**\n * The tooltip that is displayed on hover. Required for icon-button\n * @type {number}\n * @memberof RadialProgressComponent\n */\n @Input() buttonTooltip = '';\n\n /**\n * Color of the progress bar.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof RadialProgressComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof ButtonComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n @Output() buttonClicked = new EventEmitter<Event>();\n\n protected radialProgressSize = RadialProgressSizeEnum;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes['companyColor']) {\n this.companyColor = this.applicationTheme === 'classic' ? '#46A997' : '#D410AA';\n }\n }\n\n protected get progressSize(): number {\n return this.size === RadialProgressSizeEnum.SMALL ? RadialProgressSizeValue.SMALL : RadialProgressSizeValue.LARGE;\n }\n\n protected get percentage(): number {\n return Math.round(this.total ? (this.value * 100) / this.total : 0);\n }\n\n protected get strokeWidth(): number {\n return this.variant === 'thin' || this.variant === 'empty-thin' ? 4 : 8;\n }\n\n protected get displayValue(): string {\n return this.showPercentageSign ? `${this.percentage}%` : `${this.percentage}`;\n }\n\n protected onButtonClick(ev: Event): void {\n this.buttonClicked.emit(ev);\n }\n}\n","<div\n class=\"radial-progress-container\"\n [attr.theme]=\"applicationTheme\"\n [style.width]=\"progressSize + 'px'\"\n [style.height]=\"progressSize + 'px'\"\n>\n <div class=\"background\" [style.border-width]=\"strokeWidth + 'px'\"></div>\n\n <mat-progress-spinner\n [strokeWidth]=\"strokeWidth\"\n [diameter]=\"progressSize\"\n [value]=\"percentage\"\n ></mat-progress-spinner>\n\n <div\n class=\"inner-container\"\n [class.small-font]=\"(variant === 'thin' || variant === 'empty-thin') && percentage !== 100\"\n [class.tiny-font]=\"percentage === 100 && showPercentageSign && variant === 'thin'\"\n >\n @if (variant === 'empty' || variant === 'empty-thin') {\n <div>{{ '-' }}</div>\n } @else if (variant === 'icon-button' && size !== 'small') {\n <ui-button\n [tooltip]=\"buttonTooltip\"\n [iconName]=\"icon\"\n [variant]=\"'icon-button'\"\n (click)=\"onButtonClick($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-button>\n } @else if (size === radialProgressSize.LARGE || variant === 'thin') {\n <div>\n {{ displayValue }}\n </div>\n }\n </div>\n</div>\n","import { Directive, ElementRef, HostListener, Input, OnChanges } from '@angular/core';\nimport { StepperPosition } from \"../components/stepper/stepper.model\";\n\nconst MARGINS = 36;\nconst PADDING = 16;\n\n/**\n * Directive is used to draw lines between steps\n */\n@Directive({\n selector: '[stepLineElement]',\n standalone: false\n})\nexport class StepLineElementDirective implements OnChanges {\n @Input() stepLineElement: HTMLElement;\n @Input() position: StepperPosition = 'horizontal';\n\n @HostListener('window:resize.out-zone', ['$event'])\n resize(): void {\n this.setSize();\n }\n\n constructor(private el: ElementRef) {}\n\n setSize(): void {\n if (this.position === 'horizontal') {\n this.el.nativeElement.style.width = `calc(100% + ${this.stepLineElement.getBoundingClientRect().width / 2 - PADDING}px)`;\n this.el.nativeElement.style.height = `0`;\n this.el.nativeElement.style.top = '45px';\n this.el.nativeElement.style.left = `-${this.stepLineElement.getBoundingClientRect().width / 2 - MARGINS}px`;\n } else {\n this.el.nativeElement.style.height = `calc(100% + ${this.stepLineElement.getBoundingClientRect().height / 2 - PADDING}px)`;\n this.el.nativeElement.style.width = '0';\n this.el.nativeElement.style.top = `-${this.stepLineElement.getBoundingClientRect().height / 2 - 30}px`;\n this.el.nativeElement.style.left = '34px';\n }\n }\n\n ngOnChanges(): void {\n queueMicrotask(() => {\n this.setSize();\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, DestroyRef, ElementRef,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output, signal, ViewChild,\n} from '@angular/core';\nimport { Step, StepperPosition, StepperVariation } from './stepper.model';\nimport { Observable } from 'rxjs';\nimport { IS_MOBILE_TOKEN } from '../../providers/is-mobile';\nimport { ApplicationTheme } from \"@testgorilla/tgo-ui/components/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { IS_LARGE_TABLET_TOKEN } from '../../providers/is-large-tablet';\n\n@Component({\n selector: 'ui-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class StepperComponent implements AfterViewInit {\n /**\n *\n * Auto selects first step as visited\n * Defaults to true\n *\n * @memberof StepperComponent\n */\n @Input('firstStepAutoSelect') set setFirstStepAutoSelect(value: boolean) {\n this.firstStepAutoSelect = value;\n if (!this.firstStepAutoSelect) {\n this.itemSteps = this.itemSteps.map((step, i) => ({\n ...step,\n isVisited: i === 0 && this.selectedIndex === -1 ? false : step.isVisited\n }));\n }\n };\n\n /**\n * Input property to set the steps for the stepper.\n * The first step will be marked as visited automatically.\n *\n * @memberof StepperComponent\n */\n @Input() set steps(itemSteps: Step[]) {\n this.itemSteps = itemSteps;\n if (itemSteps.length && this.firstStepAutoSelect) {\n const [first, ...other] = itemSteps;\n first.isVisited = true;\n this.itemSteps = [first, ...other];\n }\n\n }\n\n /**\n * Input property to set the selected index of the stepper.\n * Default value is 0.\n *\n * @memberof StepperComponent\n */\n @Input('selectedIndex') set setSelectedIndex(value: number) {\n this.selectedIndex = value;\n if (!this.firstStepAutoSelect) {\n this.itemSteps = this.itemSteps.map((step, i) => ({\n ...step,\n isVisited: i === 0 && this.selectedIndex === -1 ? false : step.isVisited\n }));\n }\n }\n\n /**\n * Input property indicating whether the final icon should be displayed.\n * Default value is false.\n *\n * @memberof StepperComponent\n */\n @Input() lastStepFinalIcon = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof StepperComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof StepperComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * Defines the stepper position\n *\n * @type {StepperPosition}\n * @memberof StepperComponent\n */\n @Input() position: StepperPosition = 'horizontal';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof StepperComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * A string representing the stepper variant.\n * This attribute is used to indicate the variant that should be used.\n * @type {string}\n * @memberof StepperComponent\n */\n @Input() stepperVariant: StepperVariation = 'primary';\n\n @Output() selectionChange = new EventEmitter<{ selectedIndex: number; previousIndex: number; step: Step }>();\n\n private isOpened = false;\n private firstStepAutoSelect = true;\n protected itemSteps: Step[] = [];\n protected progressValue = 0;\n protected translationContext = 'STEPPER.';\n protected selectedIndex = 0;\n\n get isOpen(): boolean {\n return this.isOpened;\n }\n\n set isOpen(value: boolean) {\n this.isOpened = value;\n }\n\n protected keyboardFocused = signal(false);\n\n @ViewChild('stepper') stepperElement: ElementRef<HTMLElement>;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(IS_MOBILE_TOKEN) protected readonly isMobile$: Observable<boolean>,\n @Inject(IS_LARGE_TABLET_TOKEN) protected readonly isLargeTablet$: Observable<boolean>,\n protected focusMonitor: FocusMonitor,\n protected destroyRef: DestroyRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngAfterViewInit(): void {\n this.subscriberFocus();\n }\n\n protected onSelect(changedIndex: number, step: Step): void {\n if (!step.isVisited && this.selectedIndex !== changedIndex) {\n step.isVisited = true;\n }\n this.selectionChange.emit({ selectedIndex: changedIndex, previousIndex: this.selectedIndex, step });\n\n this.selectedIndex = changedIndex;\n this.onCloseStepList();\n }\n\n protected showStepsToggle(): void {\n this.isOpen = !this.isOpen;\n\n setTimeout(() => {\n this.selectedStepFocus();\n })\n }\n\n protected onCloseStepList(): void {\n this.isOpen = false;\n }\n\n protected subscriberFocus(): void {\n if (!this.stepperElement) {\n return;\n }\n\n this.focusMonitor.monitor(this.stepperElement.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin => this.keyboardFocused.set(origin === 'keyboard'));\n }\n\n private selectedStepFocus(): void {\n const selectedElement = document.getElementById('step-' + this.selectedIndex);\n\n if (this.keyboardFocused() && this.isOpen && selectedElement) {\n this.focusMonitor.focusVia(selectedElement, 'keyboard');\n }\n }\n}\n","<ng-container>\n <div style=\"position: absolute; left: -99999px\" [attr.aria-live]=\"'polite'\">\n <span>\n {{ itemSteps[selectedIndex]?.label ?? '' }}\n {{\n translationContext + 'SELECTED_OF'\n | uiTranslate: { selected: (selectedIndex ?? 0) + 1, total: itemSteps?.length ?? 0 }\n | async\n }}\n {{\n itemSteps[selectedIndex]?.isVisited &&\n itemSteps.length <= (selectedIndex ?? 0) + 1 && itemSteps[selectedIndex + 1]?.isVisited\n ? (translationContext + 'COMPLETED' | uiTranslate | async)\n : (translationContext + 'INCOMPLETE' | uiTranslate | async)\n }}\n </span>\n </div>\n\n <div\n *ngIf=\"(position === 'horizontal' && !(isMobile$ | async)) || position === 'vertical'; else mobile\"\n class=\"stepper-wrapper\"\n role=\"tablist\"\n [ngClass]=\"[position, stepperVariant === 'secondary' ? 'secondary-variant' : '']\"\n [attr.theme]=\"applicationTheme\"\n >\n <ng-container *ngFor=\"let step of itemSteps; index as i; last as isLast\">\n <div class=\"step\" #stepElement>\n <ui-step\n [label]=\"step.label\"\n [isVisited]=\"step.isVisited!\"\n [icon]=\"step.iconName\"\n [index]=\"i\"\n [selected]=\"i === selectedIndex\"\n [selectedIndex]=\"selectedIndex\"\n [isLast]=\"isLast\"\n [disabled]=\"step.disabled ?? (i > selectedIndex + 1 && !step.isVisited)\"\n [prevStepIsVisited]=\"itemSteps[i - 1]?.isVisited && step.isVisited\"\n [finalIcon]=\"isLast ? lastStepFinalIcon : false\"\n [showIconWhenSelected]=\"!!step.showIconWhenSelected\"\n (stepSelected)=\"onSelect($event, step)\"\n [applicationTheme]=\"applicationTheme\"\n role=\"tab\"\n [attr.aria-controls]=\"'step-panel-' + i\"\n [attr.aria-selected]=\"i === selectedIndex\"\n [attr.aria-label]=\"step.label\"\n [attr.tabindex]=\"(step.disabled ?? (i > selectedIndex + 1 && !step.isVisited)) ? -1 : 0\"\n [htmlDescription]=\"step.htmlDescription ?? []\"\n [boldLabel]=\"!!step.boldLabel\"\n [position]=\"position\"\n [descriptionTpl]=\"step.descriptionTpl\"\n [labelTooltip]=\"step.labelTooltip\"\n [alwaysShowIcon]=\"!!step.alwaysShowIcon\"\n [context]=\"step.context\"\n [stepVariant]=\"stepperVariant\"\n [largeTabletMode]=\"isLargeTablet$ | async\"\n ></ui-step>\n </div>\n\n @if (!isLast && stepperVariant === 'primary') {\n <div class=\"separator-line\" [ngClass]=\"{ visited: step.isVisited && !!itemSteps[i + 1]?.isVisited }\">\n <div [stepLineElement]=\"stepElement\" [position]=\"position\" class=\"line\"></div>\n </div>\n }\n\n @if (!isLast && stepperVariant === 'secondary') {\n <div class=\"separator-arrow\">\n <ui-icon class=\"separator-icon\" name=\"Arrow-chevron-right-in-line\" size=\"24\" color=\"gray\"></ui-icon>\n </div>\n }\n </ng-container>\n </div>\n\n <ng-template #mobile>\n <div class=\"mobile-stepper-wrapper\">\n <div\n class=\"stepper\"\n [tabIndex]=\"0\"\n #stepper\n [ngClass]=\"{ 'keyboard-focused': keyboardFocused() }\"\n (keydown.enter)=\"showStepsToggle()\"\n (keydown.space)=\"showStepsToggle()\"\n [attr.aria-expanded]=\"isOpen\"\n >\n <div class=\"progress-step\" [tabindex]=\"-1\" [attr.aria-hidden]=\"true\">\n <ui-radial-progress\n [applicationTheme]=\"applicationTheme\"\n [value]=\"selectedIndex + 1\"\n [total]=\"itemSteps.length\"\n ></ui-radial-progress>\n </div>\n\n <div class=\"step-info\">\n <div class=\"current-step\">\n <span>{{ selectedIndex + 1 }}/{{ itemSteps.length }} </span>\n <span>{{ itemSteps[selectedIndex].label }}</span>\n </div>\n\n <div class=\"next-step\">\n <span *ngIf=\"itemSteps.length !== selectedIndex + 1; else finalStep\"\n >{{ ('COMMON.NEXT' | uiTranslate | async) + ':' }} {{ itemSteps[selectedIndex + 1].label }}</span\n >\n <ng-template #finalStep>\n <span>{{ translationContext + 'FINAL_STEP' | uiTranslate | async }}</span>\n </ng-template>\n </div>\n </div>\n\n <div class=\"open-steps\" (click)=\"showStepsToggle()\" [ngClass]=\"{ opened: isOpen }\">\n <ui-icon\n data-testid=\"ui-stepper-icon\"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [name]=\"applicationTheme === 'classic' ? 'Arrow_down' : 'Arrow-chevron-down-in-line'\"\n ></ui-icon>\n </div>\n </div>\n\n <div *ngIf=\"isOpen\">\n <div class=\"step-list\">\n <div class=\"step\" *ngFor=\"let step of itemSteps; index as i; last as isLast\">\n <ui-step\n [label]=\"step.label\"\n [isVisited]=\"step.isVisited!\"\n [icon]=\"step.iconName\"\n [index]=\"i\"\n [selected]=\"i === selectedIndex\"\n [selectedIndex]=\"selectedIndex\"\n [isLast]=\"isLast\"\n [disabled]=\"step.disabled ?? (i > selectedIndex + 1 && !step.isVisited)\"\n [mobileMode]=\"true\"\n [finalIcon]=\"isLast ? lastStepFinalIcon : false\"\n [showIconWhenSelected]=\"!!step.showIconWhenSelected\"\n (stepSelected)=\"onSelect($event, step)\"\n [applicationTheme]=\"applicationTheme\"\n [attr.aria-label]=\"ariaLabel + '--' + step.label\"\n [stepVariant]=\"stepperVariant\"\n ></ui-step>\n </div>\n </div>\n <div class=\"overlay\" (click)=\"onCloseStepList()\"></div>\n </div>\n </div>\n </ng-template>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { StepComponent } from './step.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\n\n@NgModule({\n declarations: [StepComponent],\n imports: [CommonModule, IconComponentModule, MatTooltipModule, TooltipComponentModule],\n exports: [StepComponent],\n})\nexport class StepComponentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RadialProgressComponent } from './radial-progress.component';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\n\n@NgModule({\n declarations: [RadialProgressComponent],\n exports: [RadialProgressComponent],\n imports: [CommonModule, MatProgressSpinnerModule, ButtonComponentModule],\n})\nexport class RadialProgressComponentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { StepperComponent } from './stepper.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { StepComponentModule } from '../step/step.component.module';\nimport { StepLineElementDirective } from '../../directives/step-line-element.directive';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { RadialProgressComponentModule } from '../radial-progress/radial-progress.component.module';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [StepperComponent, StepLineElementDirective],\n imports: [\n CommonModule,\n IconComponentModule,\n StepComponentModule,\n MatProgressSpinnerModule,\n RadialProgressComponentModule,\n UiTranslatePipe,\n MatInputModule,\n ],\n exports: [StepperComponent],\n})\nexport class StepperComponentModule {}\n","export class AutocompleteUtils {\n static transformDisplayValue(value: any, textField: string): any {\n return AutocompleteUtils.isPrimitive(value) ? value : value?.[textField];\n }\n\n static filterItems(items: any, inputValue: string, textField?: string, isGroup = false): any {\n if (!AutocompleteUtils.isPrimitive(items) && textField) {\n if (isGroup) {\n return items.filter((group: any) => {\n group.filteredItems = group.items.filter((item: any) => item[textField].toLowerCase().includes(inputValue.toLowerCase()));\n return group.filteredItems.length;\n });\n }\n return items.filter((item: any) => item[textField].toLowerCase().includes(inputValue.toLowerCase()));\n } else {\n if (isGroup) {\n return items.filter((group: any) => group.items.filter((item: any) => item.toLowerCase().includes(inputValue.toLowerCase())).length);\n }\n return items.filter((item: any) => item.toLowerCase().includes(inputValue.toLowerCase()));\n }\n }\n\n static isPrimitive(value: any): boolean {\n if (Array.isArray(value)) {\n return value.some(item => typeof item !== 'object');\n } else {\n return typeof value !== 'object';\n }\n }\n\n static isArray(value: any): boolean {\n return Array.isArray(value);\n }\n\n /// NEW\n static throwInvalidSetupError(): void {\n throw new Error(\n `AutocompleteComponent textField/valueField properties are not provided!\\n\n Items list that has non primitive values requires textField & valueField to be passed.`\n );\n }\n\n static excludeSuggestions(items: any[], excludeItems: any[], valueField?: string): any[] {\n if (AutocompleteUtils.isPrimitive(items)) {\n return items?.filter(item => !excludeItems.find(excludeItem => excludeItem === item));\n } else {\n return valueField\n ? items?.filter(item => !excludeItems.find(excludeItem => excludeItem[valueField] === item[valueField]))\n : [];\n }\n }\n\n static shouldBeObject(value: any, textField: string, valueField: string): boolean {\n return !!valueField && !!textField && typeof value !== 'object';\n }\n\n static createValueItem(value: any, textField: string, valueField: string): any {\n return AutocompleteUtils.shouldBeObject(value, textField, valueField)\n ? { [textField]: value, [valueField]: value }\n : value;\n }\n\n static findDuplicate(value: any, selectedValue: any, lookupKey?: string): any {\n if (AutocompleteUtils.isArray(value)) {\n return value.find((v: any) => {\n if (!AutocompleteUtils.isPrimitive(v) && lookupKey) {\n return v[lookupKey] === selectedValue[lookupKey];\n }\n return v === selectedValue;\n });\n } else {\n return value === selectedValue;\n }\n }\n\n static countMatchingWords(words: any[], query: string, textField?: string, isGroup = false): number {\n const lowerCaseQuery = query.toLowerCase();\n if (isGroup) {\n return words.filter(group => group.items.filter((item: any) => (typeof item === 'object' && textField) ? item[textField].toLowerCase().includes(lowerCaseQuery) : item.toLowerCase().includes(lowerCaseQuery)).length).length;\n }\n const matchingWords = words.filter(word => (typeof word === 'object' && textField) ? word[textField].toLowerCase().includes(lowerCaseQuery) : word.toLowerCase().includes(lowerCaseQuery));\n return matchingWords.length;\n }\n}\n","export type AutocompleteType = 'single' | 'multi' | 'large';\n\nexport enum Autocomplete {\n SINGLE = 'single',\n MULTI = 'multi',\n LARGE = 'large',\n}\n\nexport enum Padding {\n AUTOCOMPLETE_CONTAINER = 40,\n DROPDOWN_CONTAINER = 60,\n AUTOCOMPLETE_SPACE_CONTAINER = 65,\n DROPDOWN_SPACE_CONTAINER = 85,\n}\n\nexport const AMOUNT_TAG_WIDTH = 33;\n\nexport enum Timeout {\n VIEW_INITIALIZED_AFTER_ACTION = 150,\n VIEW_INITIALIZED_COMPONENT_LOAD = 600,\n}\n\nexport enum DropdownVariation {\n AUTOCOMPLETE = 'autocomplete',\n DROPDOWN = 'dropdown',\n}\n\nexport type DropdownVariationType = `${DropdownVariation}`;\n\nexport type AutocompleteSize = 'small' | 'medium';\n","import { Directive, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[uiPreventInput]',\n standalone: true\n})\nexport class PreventInputDirective {\n @Input() uiPreventInput: boolean;\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Backspace', 'Tab', 'Delete', 'Control', 'Shift', 'Alt'\n ];\n if (!allowedKeys.includes(event.key) && !event.ctrlKey && !event.metaKey && this.uiPreventInput) {\n event.preventDefault();\n }\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\n/**\n * the SelectTextDirective provides a dynamic way to highlight or style specific text within an element.\n */\n@Directive({\n selector: '[selectText]',\n standalone: false\n})\nexport class SelectTextDirective implements OnChanges {\n @Input() selectText: string | null;\n\n constructor(private el: ElementRef) {}\n\n /**\n * this method utilizes setTimeout to defer the execution until the next tick of the event loop.\n * The text content of the element is modified by wrapping occurrences of the specified selectText with a <span> element,\n * applying a bold font-weight style.\n */\n private setTextColor(): void {\n const textElement = this.el.nativeElement as HTMLElement;\n setTimeout(() => {\n const { textContent } = textElement;\n if (this.selectText && textContent) {\n textElement.innerHTML = textContent.replace(\n new RegExp(this.selectText, 'gmi'),\n match => `<span style=\"font-weight: bold\" >${match}</span>`\n );\n }\n }, 0);\n }\n\n ngOnChanges(): void {\n if (this.selectText) {\n this.setTextColor();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AutocompleteUtils } from '../../utils/autocomplete-utils';\n\n/**\n * the TransformItemPipe is designed to selectively extract and return values from objects based on a specified field,\n * providing a way to transform and display data a template.\n */\n@Pipe({\n name: 'transformItem',\n standalone: false\n})\nexport class TransformItemPipe implements PipeTransform {\n transform(value: any, field: string, getValueList: boolean = false): any {\n if (getValueList) {\n return AutocompleteUtils.isArray(value) ? value.map((item: any) => field ? item[field] : item) : field ? value?.[field] : value;\n }\n\n if (AutocompleteUtils.isPrimitive(value)) {\n return value;\n } else if (!AutocompleteUtils.isPrimitive(value) && field && (value?.[field] || value[0][field])) {\n return value?.[field] || value[0][field];\n } else {\n AutocompleteUtils.throwInvalidSetupError();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * The purpose of this pipe is to determine if the value is present in the values array.\n * If values is an array, the method uses the includes method to check for inclusion.\n * If values is not an array, it checks for strict equality between value and values.\n */\n@Pipe({\n name: 'includes',\n standalone: false\n})\nexport class IncludesPipe implements PipeTransform {\n transform(value: any, values: any, valueField?: string): boolean {\n return Array.isArray(values)\n ? !!values?.find(v => (valueField ? v?.[valueField] === value?.[valueField] : value === v))\n : valueField\n ? value?.[valueField] === values?.[valueField]\n : value === values;\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n PLATFORM_ID,\n Self,\n signal,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { BehaviorSubject, filter, map, ReplaySubject, startWith, Subscription, take, throttleTime } from 'rxjs';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IKeyboardEvent } from '../../models/keyboard-events.model';\nimport { AutocompleteUtils } from '../../utils/autocomplete-utils';\nimport {\n Autocomplete,\n AutocompleteSize,\n AutocompleteType,\n DropdownVariation,\n DropdownVariationType,\n Padding,\n Timeout,\n} from './autocomplete.model';\n\n@Component({\n selector: 'ui-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\n// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\nexport class AutocompleteComponent implements ControlValueAccessor, OnChanges, AfterViewInit, DoCheck, OnDestroy {\n /**\n * @property itemsList\n * @description The list of items to display in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() itemsList: any[] | { groupName: string; items: any[]; isGroup: boolean }[] = [];\n\n /**\n * @property suggestionsList\n * @description The list of suggestions to display in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() suggestionsList: any[] = [];\n\n /**\n * @property disabled\n * @description If `true`, the autocomplete is disabled.\n * @memberof AutocompleteComponent\n */\n @Input() disabled = false;\n\n /**\n * @property allowAdd\n * @description If `true`, allows adding new values to the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() allowAdd = true;\n\n /**\n * @property textField\n * @description The field to be used as the display text in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() textField = '';\n\n /**\n * @property valueField\n * @description The field to be used as the value in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() valueField = '';\n\n /**\n * @property label\n * @description The label for the autocomplete input.\n * @memberof AutocompleteComponent\n */\n @Input() label = '';\n\n /**\n * @property placeholder\n * @description The placeholder for the autocomplete input.\n * @memberof AutocompleteComponent\n */\n @Input() placeholder = '';\n\n /**\n * @property value\n * @description The selected value(s) in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() set itemValue(v: any) {\n this.value = AutocompleteUtils.isArray(v) ? v : v ? [v] : [];\n }\n\n /**\n * @property type\n * @description The type of the autocomplete ('single', 'multi', etc.).\n * @memberof AutocompleteComponent\n */\n @Input() type: AutocompleteType = 'multi';\n\n /**\n * @property minCharactersSearch\n * @description The minimum characters to trigger search.\n * @memberof AutocompleteComponent\n */\n @Input() minCharactersSearch = 3;\n\n /**\n * @property variant\n * @description The variant of Autocomplete\n * @memberof AutocompleteComponent\n */\n @Input({ required: true }) variant: DropdownVariationType = DropdownVariation.AUTOCOMPLETE;\n\n /**\n * Show reserved content below form field\n * @property showBottomContent\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() showBottomContent = true;\n\n /**\n * Return full object if true\n * @property valuePrimitive\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() valuePrimitive = false;\n\n /**\n * Indicator of the autocomplete width\n * @property fullWidth\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @HostBinding('class.full-width')\n @Input()\n fullWidth = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof AutocompleteComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Autocomplete is required or not\n *\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() required: boolean;\n\n /**\n * Input field errors\n *\n * @type {string[]}\n * @memberof AutocompleteComponent\n */\n @Input() set errors(errors: string[]) {\n this.safeErrors = errors?.filter(Boolean).map(error => this.domSanitizer.bypassSecurityTrustHtml(error));\n }\n\n /**\n * Color of the option hover.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof AutocompleteComponent\n */\n @Input() companyColor: string | null = '#FFF2FC';\n\n /**\n * Hide in-build errors for Reactive Forms\n *\n * @type {number}\n * @memberof AutocompleteComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof AutocompleteComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * Sets dropdown list to virtual scroll mode\n *\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input({ transform: booleanAttribute }) virtualScroll = false;\n\n /**\n * @property compareWith\n * @description Custom comparison logic for the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() compareWith: (a: any, b: any) => boolean;\n\n /**\n * @property dropdownPanelClass\n * @description Sets class on autocomplete dropdown\n * @memberof AutocompleteComponent\n */\n @Input() dropdownPanelClass = '';\n\n /**\n * @property closeOnScroll\n * @description Defines if dropdown should be closed on page scroll\n * @memberof AutocompleteComponent\n */\n @Input() closeOnScroll = false;\n\n /**\n * @property AutocompleteSize\n * @description Defines the size of the autocomplete. Small changes the tags to counter; medium is default.\n * @memberof AutocompleteComponent\n */\n @Input() size: AutocompleteSize = 'medium';\n\n /**\n * @property allowUserInput\n * @description If `true`, allows the user to input custom values in the autocomplete.\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() allowUserInput = true;\n\n /**\n * @property clearable\n * @description If `true`, allows the user to clear the input values\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() clearable = true;\n\n /**\n * @property exactMatchSelect\n * @description If `true`, allows to select the exact match from the suggestions list\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() exactMatchSelect = true;\n\n /**\n * @property maxItemSelected\n * @description Sets the maximum number of items that can be selected in the autocomplete\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() maxItemSelected = Infinity;\n\n /**\n * @property maxItemSelected\n * @description Sets the maximum length of the autocomplete input\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() maxLength?: number;\n\n @Input() isDynamicFilteringEnabled = false;\n @Input() dynamicFilterLoading = false;\n @Input() dynamicFilteredList: any[] | null = null;\n\n @Input() infiniteScroll = false;\n @Input() hasMoreOptionsForInfiniteScroll = true;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() searchTextChange = new EventEmitter<string>();\n @Output() blur = new EventEmitter<void>();\n @Output() focus = new EventEmitter<void>();\n\n /**\n * @property scrollViewportBottomReached\n * @description Emits when the bottom of the unfiltered list is reached during infinite scroll\n * @memberof AutocompleteComponent\n */\n @Output() scrollViewportBottomReached = new EventEmitter<void>();\n\n /**\n * @property scrollViewportBottomReachedFiltered\n * @description Emits when the bottom of the filtered list is reached during infinite scroll\n * @memberof AutocompleteComponent\n */\n @Output() scrollViewportBottomReachedFiltered = new EventEmitter<void>();\n\n @ViewChild('formField') formFieldElement: ElementRef<HTMLElement>;\n @ViewChild('tagContainer') tagContainer: ElementRef<HTMLElement>;\n @ViewChild('trigger') autocomplete: MatAutocompleteTrigger;\n @ViewChild(CdkVirtualScrollViewport, { static: false }) set cdkVirtualScrollViewport(\n viewport: CdkVirtualScrollViewport\n ) {\n if (this.savedVirtualScrollSubscription) {\n this.savedVirtualScrollSubscription.unsubscribe();\n }\n\n if (viewport) {\n this.savedVirtualScrollViewport = viewport;\n\n if (this.infiniteScroll) {\n setTimeout(() => {\n this.inputValueSearch$.pipe(take(1)).subscribe(searchValue => {\n this.isFilteredViewport = !!searchValue;\n });\n }, 0);\n\n this.savedVirtualScrollSubscription = this.savedVirtualScrollViewport\n .elementScrolled()\n .pipe(\n map(() => this.savedVirtualScrollViewport.measureScrollOffset('bottom')),\n filter(offset => offset < this.savedVirtualScrollViewport.getViewportSize() * 0.2),\n throttleTime(200),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n if (this.isFilteredViewport) {\n this.scrollViewportBottomReachedFiltered.emit();\n } else {\n this.scrollViewportBottomReached.emit();\n }\n });\n }\n }\n }\n @ViewChild('autocomplete') matAutocomplete: MatAutocomplete;\n @ViewChild('matInput') matInput: ElementRef<HTMLInputElement>;\n\n protected safeErrors: SafeHtml[] = [];\n protected value: any;\n protected inputValue: any = '';\n protected isInputFocus = false;\n protected autocompleteType = Autocomplete;\n protected isOverLapping = false;\n protected isOverlapChecking = true;\n protected overlapIndex = 0;\n protected inputOpacity = 1;\n protected firstTagMaxWidth: number = 0;\n protected inputValueSearch$ = new ReplaySubject<string>(1);\n protected userInput$ = new ReplaySubject<string>(1);\n protected dynamicFilteredList$ = new BehaviorSubject<any[] | null>(null);\n protected filteredItemsList$ = this.inputValueSearch$.pipe(\n startWith(''),\n map(inputValue =>\n inputValue.length\n ? AutocompleteUtils.filterItems(this.itemsList, inputValue, this.textField, this.isGrouped)\n : null\n )\n );\n protected filteredSuggestionList$ = this.inputValueSearch$.pipe(\n map(inputValue =>\n inputValue.length ? AutocompleteUtils.filterItems(this.suggestionsList, inputValue, this.textField) : null\n )\n );\n protected savedVirtualScrollViewport: CdkVirtualScrollViewport;\n protected savedVirtualScrollSubscription: Subscription;\n protected isFilteredViewport = false;\n\n scrollEvent = (event: any): void => {\n const isNotAutocompleteScroll =\n !event.target?.id?.includes('mat-autocomplete-') &&\n !event.target?.parentElement?.id?.includes('mat-autocomplete-') &&\n !event.target?.classList?.contains('mat-mdc-autocomplete-trigger');\n\n if (this.autocomplete.panelOpen && isNotAutocompleteScroll) {\n this.autocomplete.closePanel();\n }\n };\n\n protected searchResult$ = this.inputValueSearch$.pipe(map(inputValue => !!inputValue.trim()));\n protected translationContext = 'AUTOCOMPLETE.';\n protected readonly AutocompleteUtils = AutocompleteUtils;\n private readonly isPlatform = isPlatformBrowser(this.platformId);\n private observer: MutationObserver;\n protected keyboardFocused = signal<boolean>(false);\n isAlreadyAdded = false;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private readonly cdr: ChangeDetectorRef,\n private readonly domSanitizer: DomSanitizer,\n @Optional() @Self() public ngControl: NgControl,\n @Inject(PLATFORM_ID) private readonly platformId: any,\n private readonly el: ElementRef,\n private readonly focusMonitor: FocusMonitor,\n private readonly destroyRef: DestroyRef,\n private readonly ngZone: NgZone\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n this.subscriberDisplayChange();\n }\n\n ngOnInit(): void {\n if (this.isDynamicFilteringEnabled) {\n this.filteredItemsList$ = this.dynamicFilteredList$;\n }\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnChanges(changes: SimpleChanges): void {\n if (this.isDynamicFilteringEnabled) {\n const dynamicFilteredList = changes['dynamicFilteredList']?.currentValue;\n\n if (dynamicFilteredList) {\n this.dynamicFilteredList$.next(dynamicFilteredList);\n }\n\n return;\n }\n\n if (changes['itemsList'] || changes['suggestionsList'] || changes['valueField']) {\n this.itemsList = this.isGrouped\n ? this.itemsList\n : AutocompleteUtils.excludeSuggestions(this.itemsList, this.suggestionsList, this.valueField);\n this.initValue();\n }\n\n if (this.isPlatform && changes['companyColor']) {\n this.setCompanyColorVariable();\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngAfterViewInit(): void {\n if (this.type !== Autocomplete.LARGE) {\n this.checkOverlap(Timeout.VIEW_INITIALIZED_COMPONENT_LOAD, true);\n }\n this.isPlatform && this.setCompanyColorVariable();\n if (this.closeOnScroll) {\n window.addEventListener('scroll', this.scrollEvent, true);\n }\n\n this.focusMonitor\n .monitor(this.matInput)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin =>\n this.ngZone.run(() => {\n this.keyboardFocused.set(origin === 'keyboard');\n })\n );\n\n this.matInput.nativeElement.onkeydown = this.onKeydown.bind(this);\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnDestroy(): void {\n window.removeEventListener('scroll', this.scrollEvent, true);\n\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n onChange = (_: any) => {};\n onTouch = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n writeValue(value: any): void {\n if (this.valuePrimitive && this.textField && this.valueField) {\n if (this.type === Autocomplete.SINGLE) {\n this.value = this.itemsList.find(item => item[this.valueField] === value);\n } else {\n this.value = AutocompleteUtils.isArray(value)\n ? this.itemsList.filter(item => value.find((v: any) => v === item[this.valueField]))\n : [this.itemsList.find(item => item[this.valueField] === value)];\n this.value = this.value.filter(Boolean).length ? this.value : null;\n }\n } else {\n this.value = value;\n }\n\n this.initValue();\n\n this.cdr.markForCheck();\n }\n\n protected get isGrouped(): boolean {\n return this.itemsList?.some((item: any) => item.isGroup);\n }\n\n protected onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n const inputValue = event.option.value;\n const itemValue = AutocompleteUtils.createValueItem(inputValue, this.textField, this.valueField);\n this.addNewValue(itemValue);\n\n if (this.type === this.autocompleteType.MULTI) {\n this.checkOverlap();\n }\n\n queueMicrotask(() => {\n if (this.type !== this.autocompleteType.SINGLE) {\n this.inputValue = '';\n } else {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);\n }\n this.cdr.markForCheck();\n });\n\n this.onUpdate();\n }\n\n protected onOptionRemoved(option: any): void {\n setTimeout(() => this.autocomplete.closePanel(), 0);\n const foundValue = this.value.find((v: any) => (this.compareWith ? this.compareWith(v, option) : v === option));\n\n if (foundValue) {\n this.value = this.value.filter((v: any) => (this.compareWith ? !this.compareWith(v, option) : v !== option));\n this.matAutocomplete.options.forEach(option => {\n if (option.value?.value === foundValue.value) {\n option.deselect();\n }\n });\n }\n\n if (this.type === this.autocompleteType.MULTI) {\n this.checkOverlap();\n }\n\n if (!this.value.length) {\n this.inputValue = '';\n }\n\n this.onUpdate();\n }\n\n protected onInputChange(event: Event): void {\n const inputValue = (event.target as HTMLInputElement).value;\n this.userInput$.next(inputValue);\n if (inputValue.length >= this.minCharactersSearch) {\n this.inputValueSearch$.next(inputValue);\n this.searchTextChange.emit(inputValue);\n const itemList = this.isGrouped ? this.itemsList.flatMap(groups => groups.items) : this.itemsList.flat();\n\n const findValue = [...this.suggestionsList, ...itemList].find(\n v => inputValue === (this.textField ? v[this.textField] : v)\n );\n const count = AutocompleteUtils.countMatchingWords(\n [...this.suggestionsList, ...itemList],\n this.inputValue,\n this.textField\n );\n if (findValue && count === 1 && this.exactMatchSelect) {\n this.onOptionSelected({ option: { value: findValue } } as MatAutocompleteSelectedEvent);\n }\n } else {\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n }\n this.isAlreadyAdded = !!(this.compareWith\n ? this.value.find((v: any) => this.compareWith(v, inputValue))\n : AutocompleteUtils.findDuplicate(this.value, inputValue, this.textField));\n }\n\n protected onClear(): void {\n this.inputValue = '';\n this.value = AutocompleteUtils.isArray(this.value) ? [] : '';\n this.isOverLapping = false;\n this.overlapIndex = 0;\n this.onUpdate();\n this.matAutocomplete?.options.forEach(option => option.deselect());\n this.onTouch();\n }\n\n protected refillInput(): void {\n setTimeout(() => {\n if (this.value && this.type === this.autocompleteType.SINGLE && !this.inputValue) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);\n } else if (!this.inputValue && this.value?.length) {\n this.inputValue = ' ';\n } else if (this.inputValue && this.type === Autocomplete.SINGLE && this.value && Object.keys(this.value).length) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(\n AutocompleteUtils.isArray(this.value) ? this.value[0] : this.value,\n this.textField\n );\n } else if (this.inputValue) {\n this.inputValue = ' ';\n }\n\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n this.isInputFocus = false;\n this.onTouch();\n this.blur.emit();\n }, 0);\n }\n\n protected gotoUp() {\n if (this.savedVirtualScrollViewport) {\n this.savedVirtualScrollViewport.scrollToIndex(0);\n this.savedVirtualScrollViewport.checkViewportSize();\n }\n }\n\n protected onFocus(): void {\n this.isInputFocus = true;\n\n const inputValue = AutocompleteUtils.isArray(this.inputValue) ? this.inputValue[0] : this.inputValue;\n\n if (AutocompleteUtils.isPrimitive(inputValue)) {\n if (typeof inputValue !== 'number' && inputValue?.match(/^\\s+/gm)) {\n this.inputValue = inputValue.trimStart();\n }\n } else {\n if (inputValue[this.textField]?.match(/^\\s+/gm)) {\n this.inputValue = inputValue[this.textField].trimStart();\n }\n }\n this.focus.emit();\n }\n\n private checkOverlap(delay = Timeout.VIEW_INITIALIZED_AFTER_ACTION, init = false): void {\n this.isOverLapping = false;\n this.isOverlapChecking = true;\n this.inputOpacity = 0;\n\n setTimeout(() => {\n const inputWidth = this.inputWidth;\n const tags = this.tagContainer?.nativeElement.querySelectorAll('.value-tag');\n if (tags) {\n let width = 0;\n let firstTagWidth = 0;\n\n tags.forEach((tag: any, index: number) => {\n width += tag.getBoundingClientRect().width;\n\n if (!index) {\n firstTagWidth = width;\n }\n\n const inpWidth = this.formFieldElement?.nativeElement.getBoundingClientRect().width - 20;\n this.firstTagMaxWidth =\n tags.length > 1\n ? inpWidth -\n (this.variant === DropdownVariation.DROPDOWN\n ? Padding.DROPDOWN_SPACE_CONTAINER\n : Padding.AUTOCOMPLETE_SPACE_CONTAINER)\n : inpWidth;\n\n if (!this.isOverLapping && width > inputWidth && index > 0) {\n this.isOverLapping = true;\n this.overlapIndex = index;\n }\n });\n this.isOverlapChecking = false;\n if (init) {\n if (this.type === this.autocompleteType.SINGLE) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);\n } else if (this.value?.length) {\n this.inputValue = ' ';\n }\n }\n const tagContainerWidth = this.tagContainer.nativeElement.getBoundingClientRect().width;\n this.tagContainer.nativeElement.style.maxWidth = tagContainerWidth / 100 ? '100%' : tagContainerWidth + 'px';\n this.cdr.markForCheck();\n }\n this.inputOpacity = 1;\n }, delay);\n }\n\n private onUpdate(): void {\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n if (!this.valuePrimitive) {\n this.onChange(this.value);\n } else {\n if (this.type === Autocomplete.SINGLE) {\n this.onChange(this.value[this.valueField]);\n } else {\n this.onChange(this.value.map((v: any) => v[this.valueField]));\n }\n }\n this.updateControlMaxLengthValidity();\n this.selectionChange.emit(this.value);\n }\n\n private updateControlMaxLengthValidity(): void {\n const control = this.ngControl?.control;\n if (!control) {\n return;\n }\n\n if (this.type !== Autocomplete.SINGLE) {\n const existingErrors = control.errors || {};\n\n if (this.value.length > this.maxItemSelected) {\n control.setErrors({\n ...existingErrors,\n maxItemSelected: {\n expected: this.maxItemSelected,\n actual: this.value.length,\n },\n });\n control.markAsTouched();\n } else {\n if (existingErrors['maxItemSelected']) {\n delete existingErrors['maxItemSelected'];\n control.setErrors(Object.keys(existingErrors).length ? existingErrors : null);\n }\n }\n }\n }\n\n private initValue(): void {\n if (this.type === this.autocompleteType.SINGLE && this.variant !== DropdownVariation.DROPDOWN) {\n if (AutocompleteUtils.isArray(this.value)) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);\n } else {\n this.inputValue = this.value ? AutocompleteUtils.transformDisplayValue(this.value, this.textField) : '';\n }\n } else if (this.variant === DropdownVariation.DROPDOWN) {\n this.inputValue =\n (AutocompleteUtils.isArray(this.value) && !this.value?.length) || !this.value\n ? ''\n : this.type === Autocomplete.SINGLE\n ? AutocompleteUtils.transformDisplayValue(\n AutocompleteUtils.isArray(this.value) ? this.value[0] : this.value,\n this.textField\n )\n : ' ';\n } else {\n this.inputValue = this.value && this.value.length ? ' ' : '';\n }\n if (this.type === this.autocompleteType.MULTI) {\n this.checkOverlap();\n }\n }\n\n private addNewValue(newValue: any): void {\n if (this.type !== this.autocompleteType.SINGLE && !this.value) {\n this.value = [];\n }\n\n const foundDuplicate = this.compareWith\n ? this.value.find((v: any) => this.compareWith(v, newValue))\n : AutocompleteUtils.findDuplicate(this.value, newValue, this.textField);\n\n if (this.type !== this.autocompleteType.SINGLE) {\n this.value = foundDuplicate\n ? this.value.filter((v: any) =>\n this.compareWith ? !this.compareWith(v, foundDuplicate) : v !== foundDuplicate\n )\n : [...this.value, newValue];\n } else {\n this.value = newValue;\n }\n }\n\n protected get isDropdown(): boolean {\n return this.variant === DropdownVariation.DROPDOWN;\n }\n\n protected onChevronClick(autocomplete: MatAutocomplete): void {\n if (autocomplete.isOpen) {\n setTimeout(() => {\n this.autocomplete.closePanel();\n }, 0);\n }\n }\n\n protected get inputWidth(): number {\n return (\n this.formFieldElement?.nativeElement.getBoundingClientRect().width -\n (this.isDropdown ? Padding.DROPDOWN_CONTAINER : Padding.AUTOCOMPLETE_CONTAINER)\n );\n }\n\n protected trackByFn = (index: number, value: any) => value.changingThisBreaksApplicationSecurity;\n\n /**\n * Adding company color variable to the body to style overlay container that's out of the component scope.\n */\n private setCompanyColorVariable(): void {\n document.body.style.setProperty('--ui-autocomplete-option-color', `${this.companyColor}`);\n }\n\n private subscriberDisplayChange(): void {\n const autocompleteHostElement = this.el.nativeElement;\n\n this.observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.attributeName === 'style') {\n const displayStyle = getComputedStyle(autocompleteHostElement).display;\n if (displayStyle !== 'none') {\n this.checkOverlap();\n }\n }\n });\n });\n\n this.observer.observe(autocompleteHostElement, {\n attributes: true,\n attributeFilter: ['style'],\n });\n }\n\n protected get hasObjectValue(): boolean {\n return this.value ? !!Object.keys(this.value).length : false;\n }\n\n onKeydown($event: KeyboardEvent) {\n const optionHeight = 48;\n\n if ($event.key === IKeyboardEvent.HOME) {\n this.matAutocomplete._keyManager.setFirstItemActive();\n } else if ($event.key === IKeyboardEvent.END) {\n this.matAutocomplete._keyManager.setLastItemActive();\n } else if ($event.key === IKeyboardEvent.PAGE_DOWN) {\n this.matAutocomplete._keyManager.setNextItemActive();\n this.matAutocomplete._keyManager.setNextItemActive();\n this.matAutocomplete._keyManager.setNextItemActive();\n } else if ($event.key === IKeyboardEvent.PAGE_UP) {\n this.matAutocomplete._keyManager.setPreviousItemActive();\n this.matAutocomplete._keyManager.setPreviousItemActive();\n this.matAutocomplete._keyManager.setPreviousItemActive();\n }\n\n this.matAutocomplete._setScrollTop(this.matAutocomplete._keyManager.activeItemIndex! * optionHeight);\n }\n\n protected getVirtualScrollHeight(itemCount: number): number {\n const itemHeight = 48;\n const maxHeight = 200;\n const minHeight = 48;\n\n const calculatedHeight = itemCount * itemHeight;\n\n return Math.min(Math.max(calculatedHeight, minHeight), maxHeight);\n }\n}\n","<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"\n safeErrors.length ||\n (ngControl?.errors && ngControl?.touched) ||\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n ? 'warn'\n : 'accent'\n \"\n [appearance]=\"'outline'\"\n [ngClass]=\"{\n 'large-size': type === autocompleteType.LARGE,\n 'hide-bottom-content': !showBottomContent,\n 'keyboard-focused': keyboardFocused(),\n 'has-label': !!label,\n }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <span\n style=\"position: absolute; left: -9999px\"\n *ngIf=\"textField ? value?.[textField] : value === inputValue\"\n aria-live=\"polite\"\n >{{ ('SELECTED' | uiTranslate | async) + ' ' + inputValue }}</span\n >\n\n <input\n #trigger=\"matAutocompleteTrigger\"\n #matInput\n [attr.maxlength]=\"maxLength !== null && maxLength !== undefined ? maxLength : null\"\n [uiPreventInput]=\"!allowUserInput\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': value && type === autocompleteType.LARGE, 'no-caret': !allowUserInput }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n [attr.aria-label]=\"\n (translationContext + 'SELECTED' | uiTranslate | async) + ' ' + (value | transformItem: textField : true)\n \"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n matInput\n [placeholder]=\"value && value.length ? '' : placeholder\"\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && value) ||\n (!(inputValue && isInputFocus) && value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n [style.display]=\"\n (isOverLapping && i > 0 && i >= overlapIndex) || (size === 'small' && value.length > 1) ? 'none' : 'block'\n \"\n [ngStyle]=\"{ '--tag-max-width': type === autocompleteType.LARGE ? 'fit-content' : firstTagMaxWidth + 'px' }\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI,\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n @if (size === 'small') {\n <div class=\"selected-count\" *ngIf=\"value.length > 1\">\n {{\n translationContext + 'SELECTED_AMOUNT'\n | uiTranslate: { numberSelected: (value | slice: overlapIndex).length }\n | async\n }}\n </div>\n } @else {\n <div *ngIf=\"value.length > 1 && isOverLapping\" class=\"overlap-count\">\n <ui-tag [applicationTheme]=\"applicationTheme\" [label]=\"'+' + (value.length - overlapIndex)\"></ui-tag>\n </div>\n }\n </div>\n </div>\n\n <ui-icon\n *ngIf=\"\n (clearable && type === autocompleteType.SINGLE && (value?.length || hasObjectValue)) ||\n (type !== autocompleteType.SINGLE &&\n value &&\n value.length > 1 &&\n ((AutocompleteUtils.isPrimitive(value) && value.length) ||\n (!AutocompleteUtils.isPrimitive(value) &&\n ((AutocompleteUtils.isArray(value) && value.length) ||\n (!AutocompleteUtils.isArray(value) && !value.length)))))\n \"\n class=\"remove-selected\"\n [tabIndex]=\"disabled ? -1 : 0\"\n (keydown.enter)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n (keydown.space)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [attr.aria-label]=\"'COMMON.CLEAR' | uiTranslate | async\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme + ' ' + dropdownPanelClass\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n @if (type !== autocompleteType.MULTI || value?.length < maxItemSelected) {\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"suggestionsList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': suggested | includes: value : valueField }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup\n [label]=\"(translationContext + 'SELECTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type !== autocompleteType.SINGLE\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n @if (isGrouped) {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SELECTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type === autocompleteType.SINGLE\"\n >\n <mat-option (mousedown)=\"$event.preventDefault()\" [class]=\"'selected-option'\" [value]=\"value\">\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <cdk-virtual-scroll-viewport\n *ngIf=\"virtualScroll || infiniteScroll; else defaultViewPort\"\n [itemSize]=\"48\"\n [style.height.px]=\"getVirtualScrollHeight(itemsList.length)\"\n class=\"virtual-scroll\"\n >\n @if (!isGrouped) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n\n @if (infiniteScroll && hasMoreOptionsForInfiniteScroll) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n }\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n </cdk-virtual-scroll-viewport>\n\n <ng-template #defaultViewPort>\n @if (!isGrouped) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <ng-container *ngIf=\"virtualScroll || infiniteScroll; else filteredWithoutVirtualScroll\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"48\"\n [style.height.px]=\"getVirtualScrollHeight(filteredItemsList.length)\"\n class=\"virtual-scroll\"\n >\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredSuggestionList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length && !isGrouped; else showItemListWithGroupVirtual\">\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </ng-container>\n\n <ng-template #showItemListWithGroupVirtual>\n <mat-optgroup\n [label]=\"(translationContext + 'ALL_ITEMS' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredItemsList.length && !isGrouped\"\n >\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </mat-optgroup>\n </ng-template>\n\n @if (isDynamicFilteringEnabled && dynamicFilterLoading) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n } @else if (inputValue) {\n @if (allowAdd && !isAlreadyAdded) {\n <mat-option (mousedown)=\"$event.preventDefault()\" [value]=\"inputValue\">\n <span>{{ 'COMMON.ADD' | uiTranslate | async }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n } @else if (!filteredItemsList.length && !filteredSuggestionList.length) {\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </mat-option>\n }\n }\n </cdk-virtual-scroll-viewport>\n </ng-container>\n\n <ng-template #filteredWithoutVirtualScroll>\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredSuggestionList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length && !isGrouped; else showItemListWithGroup\">\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup\n [label]=\"(translationContext + 'ALL_ITEMS' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredItemsList.length && !isGrouped\"\n >\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </mat-optgroup>\n </ng-template>\n\n @if (isDynamicFilteringEnabled && dynamicFilterLoading) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n } @else if (inputValue) {\n @if (allowAdd && !isAlreadyAdded) {\n <mat-option (mousedown)=\"$event.preventDefault()\" [value]=\"inputValue\">\n <span>{{ 'COMMON.ADD' | uiTranslate | async }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n } @else if (!filteredItemsList.length && !filteredSuggestionList.length) {\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </mat-option>\n }\n }\n </ng-template>\n </ng-container>\n </ng-container>\n }\n </mat-autocomplete>\n <mat-hint\n class=\"error\"\n *ngIf=\"\n safeErrors.length ||\n (ngControl?.errors | hasValidationError) ||\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n \"\n >\n <div\n class=\"errors\"\n *ngIf=\"\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n \"\n >\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContext + 'MAX_SELECTED_ERROR' | uiTranslate: { max: maxItemSelected } | async }}</span>\n </div>\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error\n *ngIf=\"ngControl && !hideBuiltInErrors\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n ></ui-validation-error>\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { TagComponentModule } from '../tag/tag.component.module';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { TransformItemPipe } from './transform-Item.pipe';\nimport { IncludesPipe } from './includes.pipe';\nimport { SelectTextDirective } from '../../directives/select-text.directive';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '../validation-error/validation-error.module';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\nimport { PreventInputDirective } from \"./prevent-input.directive\";\nimport { SpinnerComponentModule } from '../spinner/spinner.module';\n\n@NgModule({\n declarations: [AutocompleteComponent, TransformItemPipe, IncludesPipe, SelectTextDirective],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n MatInputModule,\n FormsModule,\n TagComponentModule,\n MatChipsModule,\n IconComponentModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n PreventInputDirective,\n SpinnerComponentModule\n ],\n exports: [AutocompleteComponent],\n providers: [TransformItemPipe, IncludesPipe, SelectTextDirective],\n})\nexport class AutocompleteComponentModule {}\n","import { Component, EventEmitter, inject, Inject, Input, Optional, Output } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonColor, ButtonIconPosition, ButtonSize } from '@testgorilla/tgo-ui/components/button';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ButtonVariant, EmptyStateVariant, IllustrationVariant } from './empty-state.model';\n\n@Component({\n selector: 'ui-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n standalone: false\n})\nexport class EmptyStateComponent {\n private domSanitizer = inject(DomSanitizer);\n\n safeBodyText: SafeHtml = '';\n /**\n * @description If the default image should be displayed.\n * @type {boolean}\n * @memberof EmptyStateComponent\n */\n @Input() showIllustration = false;\n /**\n * @description If the default image should be displayed.\n * @type {IllustrationVariant}\n * @memberof EmptyStateComponent\n */\n @Input() illustrationVariant: IllustrationVariant = 'Empty-search';\n /**\n * @description The icon to be displayed in the empty state.\n * @type {IconName}\n * @memberof EmptyStateComponent\n */\n @Input() icon: IconName = '';\n\n /**\n * @description The empty state variant.\n * @type {EmptyStateVariant}\n * @memberof EmptyStateComponent\n */\n @Input() emptyStateVariant: EmptyStateVariant = 'desktop';\n\n /**\n * @description The title of the empty state.\n * @type {string}\n * @memberof EmptyStateComponent\n */\n @Input() title = '';\n\n /**\n * @description The body text or description of the empty state.\n * @type {string}\n * @memberof EmptyStateComponent\n */\n @Input() set bodyText(value: string) {\n if (value) {\n this.safeBodyText = this.domSanitizer.bypassSecurityTrustHtml(value);\n }\n }\n\n /**\n * @description Displays primary button if passed.\n * @type {string}\n * @memberof EmptyStateComponent\n */\n @Input() primaryButtonText = '';\n\n /**\n * Primary button variant - only for new theme.\n * @type {ButtonVariant}\n * @memberof EmptyStateComponent\n */\n @Input() primaryButtonVariant: ButtonVariant = 'pink';\n\n /**\n * General button variation - only for new theme.\n * @type {ButtonColor}\n * @memberof EmptyStateComponent\n */\n @Input() generalButtonVariation: ButtonColor = 'primary';\n\n /**\n * @description Name of ui-icon for primary button\n * @type {IconName}\n * @memberof EmptyStateComponent\n */\n @Input() primaryButtonIconName: IconName = '';\n\n /**\n * @description Position of ui-icon for primary button\n * @type {ButtonIconPosition}\n * @memberof EmptyStateComponent\n */\n @Input() primaryButtonIconPosition: ButtonIconPosition = 'left';\n\n /**\n * @description Displays secondary button if passed.\n * @type {string}\n * @memberof EmptyStateComponent\n */\n @Input() secondaryButtonText = '';\n\n /**\n * Secondary button variant - only for new theme.\n * @type {ButtonVariant}\n * @memberof EmptyStateComponent\n */\n @Input() secondaryButtonVariant: ButtonVariant = 'black';\n\n /**\n * @description Name of ui-icon for secondary button\n * @type {IconName}\n * @memberof EmptyStateComponent\n */\n @Input() secondaryButtonIconName: IconName = '';\n\n /**\n * @description Position of ui-icon for secondary button\n * @type {ButtonIconPosition}\n * @memberof EmptyStateComponent\n */\n @Input() secondaryButtonIconPosition: ButtonIconPosition = 'left';\n\n /**\n * @description Displays tertiary button if passed.\n * @type {string}\n * @memberof EmptyStateComponent\n */\n @Input() tertiaryButtonText = '';\n\n /**\n * Tertiary button variant - only for new theme.\n * @type {ButtonVariant}\n * @memberof EmptyStateComponent\n */\n @Input() tertiaryButtonVariant: ButtonVariant = 'ghost';\n\n /**\n * @description Name of ui-icon for tertiary button\n * @type {IconName}\n * @memberof EmptyStateComponent\n */\n @Input() tertiaryButtonIconName: IconName = '';\n\n /**\n * @description Position of ui-icon for tertiary button\n * @type {ButtonIconPosition}\n * @memberof EmptyStateComponent\n */\n @Input() tertiaryButtonIconPosition: ButtonIconPosition = 'left';\n\n /**\n * @description Displays general variation button if passed.\n * @type {string}\n * @memberof EmptyStateComponent\n */\n @Input() generalVariationButtonText = '';\n\n /**\n * @description Displays general variation button if passed.\n * @type {string}\n * @memberof EmptyStateComponent\n */\n @Input() generalVariationButtonSize: ButtonSize = 'big';\n\n /**\n * @description Name of ui-icon for general variation button\n * @type {IconName}\n * @memberof EmptyStateComponent\n */\n @Input() generalVariationButtonIconName: IconName = '';\n\n /**\n * @description Position of ui-icon for general variation button\n * @type {ButtonIconPosition}\n * @memberof EmptyStateComponent\n */\n @Input() generalVariationButtonIconPosition: ButtonIconPosition = 'left';\n\n /**\n * @description Disabled state for general variation button\n * @type {boolean}\n * @memberof EmptyStateComponent\n */\n @Input() generalVariationButtonDisabled = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof EmptyStateComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Event triggered when the primary button is clicked.\n * @type {Event}\n * @event\n * @memberof TagComponent\n */\n @Output() primaryButtonClick = new EventEmitter<Event>();\n\n /**\n * Event triggered when the secondary button is clicked.\n * @type {Event}\n * @event\n * @memberof TagComponent\n */\n @Output() secondaryButtonClick = new EventEmitter<Event>();\n\n /**\n * Event triggered when the tertiary button is clicked.\n * @type {Event}\n * @event\n * @memberof TagComponent\n */\n @Output() tertiaryButtonClick = new EventEmitter<Event>();\n\n /**\n * Event triggered when the general variation button is clicked.\n * @type {Event}\n * @event\n * @memberof TagComponent\n */\n @Output() generalVariationButtonClick = new EventEmitter<Event>();\n\n buttonApplicationTheme: ApplicationTheme;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n if (this.applicationTheme !== 'classic') {\n this.buttonApplicationTheme = this.applicationTheme;\n }\n }\n\n onPrimaryButtonClick(event: Event): void {\n this.primaryButtonClick.emit(event);\n }\n\n onSecondaryButtonClick(event: Event): void {\n this.secondaryButtonClick.emit(event);\n }\n\n onTertiaryButtonClick(event: Event): void {\n this.tertiaryButtonClick.emit(event);\n }\n\n onGeneralVariationButtonClick(event: Event): void {\n this.generalVariationButtonClick.emit(event);\n }\n\n getVariant(variant: ButtonVariant) {\n if (variant === 'pink') {\n return 'primary';\n } else if (variant === 'black') {\n this.buttonApplicationTheme = 'light';\n return 'secondary';\n } else {\n this.buttonApplicationTheme = 'light';\n return 'ghost';\n }\n }\n}\n","<ng-container>\n <div class=\"empty-state-container\" [attr.theme]=\"applicationTheme\" [class.mobile]=\"emptyStateVariant === 'mobile'\">\n\n <div class=\"illustration\" *ngIf=\"showIllustration\" [attr.aria-hidden]=\"true\">\n <img *ngIf=\"applicationTheme === 'classic'\" [attr.src]=\"'/images/empty-state-default.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n <img *ngIf=\"applicationTheme !== 'classic'\" [attr.src]=\"'/icons/rebrand/'+illustrationVariant+'-in-line.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n </div>\n\n <div class=\"icon\" *ngIf=\"icon\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"icon\" size=\"40\"></ui-icon>\n </div>\n\n <div class=\"text-content\">\n <div class=\"title\">{{ title ? title : ('COMMON.NO_RESULTS') | uiTranslate | async }}</div>\n @if (safeBodyText) {\n <div class=\"body-text\" [innerHTML]=\"safeBodyText\"></div>\n }\n </div>\n\n <div class=\"actions\">\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"primaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(primaryButtonVariant) : 'primary'\" [label]=\"primaryButtonText\" [iconName]=\"primaryButtonIconName\" [iconPosition]=\"primaryButtonIconPosition\" (buttonClickEvent)=\"onPrimaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"secondaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(secondaryButtonVariant) : 'secondary'\" [label]=\"secondaryButtonText\" [iconName]=\"secondaryButtonIconName\" [iconPosition]=\"secondaryButtonIconPosition\" (buttonClickEvent)=\"onSecondaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"tertiaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(tertiaryButtonVariant) : 'tertiary'\" [label]=\"tertiaryButtonText\" [iconName]=\"tertiaryButtonIconName\" [iconPosition]=\"tertiaryButtonIconPosition\" (buttonClickEvent)=\"onTertiaryButtonClick($event)\"></ui-button>\n @if (generalVariationButtonText) {\n <ui-button class=\"action-button\"\n [fullWidth]=\"emptyStateVariant === 'mobile'\"\n [applicationTheme]=\"buttonApplicationTheme\"\n [variant]=\"generalButtonVariation\"\n [label]=\"generalVariationButtonText\"\n [iconName]=\"generalVariationButtonIconName\"\n [iconPosition]=\"generalVariationButtonIconPosition\"\n [disabled]=\"generalVariationButtonDisabled\"\n [size]=\"generalVariationButtonSize\"\n (buttonClickEvent)=\"onGeneralVariationButtonClick($event)\"></ui-button>\n }\n </div>\n </div>\n</ng-container>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { EmptyStateComponent } from './empty-state.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [EmptyStateComponent],\n imports: [CommonModule, IconComponentModule, NgOptimizedImage, ButtonComponentModule, UiTranslatePipe],\n exports: [EmptyStateComponent],\n})\nexport class EmptyStateComponentModule {}\n","import { TemplateRef, Type } from '@angular/core';\n\nexport interface TableConfig<T = any> {\n columns: TableColumn<T>[];\n pagination?: Pagination;\n title?: string;\n width?: number;\n sort?: Sort;\n hidePagination?: boolean;\n noDataRowTpl?: TemplateRef<any>;\n sortable?: boolean;\n}\n\nexport interface TableConfigWithPagination<T> extends TableConfig<T> {\n pagination?: Pagination;\n}\n\nexport interface TableColumn<T = any> {\n title?: string;\n key: string;\n allowMultiline?: boolean;\n bold?: boolean;\n showTooltip?: boolean;\n tooltip?: string;\n allowSort?: boolean;\n isSticky?: boolean;\n headerCellTemplate?: TemplateRef<any>;\n rowCellTemplate?: TemplateRef<any>;\n rowCellTemplateClick?: () => any;\n sortHeader?: string;\n hidden?: boolean;\n order?: number;\n fontSize?: '12px' | '14px';\n field?: string;\n type?: ColumnType;\n function?: (v: T) => string;\n renderer?: (v: T) => ComponentRenderer | string;\n styles?: ColumnStyles;\n sortStart?: SortDirection;\n uniqueId?: string;\n}\n\nexport interface Pagination {\n itemsPerPageOptions: number[];\n itemsPerPage: number;\n currentPage: number;\n totalItems: number;\n}\n\nexport type TableData = Record<string, any>[];\n\nexport interface ColumnEllipse {\n index: number;\n showTooltip: boolean;\n}\n\nexport interface Sort {\n active: string;\n direction: SortDirection;\n defaultSortStart?: SortDirection;\n}\n\nexport type SortDirection = 'asc' | 'desc' | '';\n\nexport interface TableDetailColumn<T, TDetail> {\n columnDefs: TableColumn<TDetail>[];\n setDetailRowData: (params: DetailRowDataParams<T, TDetail>) => void;\n}\n\nexport interface DetailRowDataParams<T, TDetail> {\n data: T;\n\n setDetailDataSource(rowData: TDetail[]): void;\n}\n\nexport enum ColumnType {\n FIELD = 'field',\n FUNCTION = 'function',\n RENDERER = 'renderer',\n}\n\nexport interface ComponentRenderer {\n component: Type<any>;\n inputs?: any;\n outputs?: { [key: string]: any };\n}\n\nexport interface ColumnStyles {\n alignment?: ColumnAlignment;\n width?: string;\n 'min-width'?: string;\n padding?: string;\n}\n\nexport enum ColumnAlignment {\n LEFT = 'left',\n RIGHT = 'right',\n CENTER = 'center',\n}\n\nexport enum ColumnTypeEnum {\n FIELD = 'field',\n FUNCTION = 'function',\n RENDERER = 'renderer',\n}\n\nexport enum ColumnAlignmentEnum {\n LEFT = 'left',\n RIGHT = 'right',\n CENTER = 'center',\n}\n\nexport type DataSource = {\n [key: string]: any;\n};\n\nexport type ScrollSettings = { scrollEnd: boolean; horizontalScroll: boolean; scrollStart: boolean };\n","import { TableColumn } from '../components/table/table.model';\n\n/**\n * Sorting table columns by order value if set.\n * The rest columns keep the same ordering and displayed after the sorted ones.\n */\nexport const sortByOrder = <T>(columns: TableColumn<T>[]): TableColumn<T>[] => {\n const withOrderColumns = columns.filter(v => v.order);\n const withoutOrderColumns = columns.filter(v => !v.order);\n\n if (!withOrderColumns.length) {\n return columns;\n }\n\n if (withoutOrderColumns.length) {\n const sortedColumns = Array(columns.length);\n withOrderColumns.forEach(column => (sortedColumns[column.order! - 1] = column));\n withoutOrderColumns.forEach(column => {\n const emptyIndex = sortedColumns.findIndex(v => !v);\n sortedColumns[emptyIndex] = column;\n });\n return sortedColumns;\n } else {\n const sortedOrderedColumns = withOrderColumns.sort((a, b) => (a.order || 0) - (b.order || 0));\n\n return [...sortedOrderedColumns, ...withoutOrderColumns];\n }\n};\n","import { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { MatPaginatorSelectConfig, PageEvent } from '@angular/material/paginator';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\n@Component({\n selector: 'ui-paginator',\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.scss'],\n standalone: false\n})\nexport class PaginatorComponent {\n /**\n * Paginator size options\n *\n * @type {number[]}\n * @memberof PaginatorComponent\n */\n @Input() pageSizeOptions = [10, 25, 50];\n\n /**\n * Data length\n *\n * @type {number}\n * @memberof PaginatorComponent\n */\n @Input() length = 0;\n\n /**\n * Page size\n *\n * @type {number}\n * @memberof PaginatorComponent\n */\n @Input() pageSize = 25;\n\n /**\n * Disabled\n *\n * @type {boolean}\n * @memberOf PaginatorComponent\n */\n @Input() disabled = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof PaginatorComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Defines the current page\n * @default 0\n *\n * @type {number}\n * @memberof PaginatorComponent\n */\n @Input() currentPage = 0;\n\n @Output() paginatorChange: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n selectConfig: MatPaginatorSelectConfig = { panelClass: 'ui-dropdown-list' };\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n onPaginatorChange(paginator: PageEvent) {\n this.paginatorChange.emit(paginator);\n }\n}\n","<mat-paginator\n [disabled]=\"disabled\"\n [length]=\"length\"\n [pageIndex]=\"currentPage ? currentPage : 0\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [attr.theme]=\"applicationTheme\"\n [selectConfig]=\"selectConfig\"\n [color]=\"'accent'\"\n (page)=\"onPaginatorChange($event)\"\n></mat-paginator>\n","import { ComponentRef, Directive, EventEmitter, Input, OnDestroy, Type, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\ninterface IComponentRenderer {\n component: Type<any>;\n inputs?: any;\n outputs?: { [key: string]: any };\n}\n\n@Directive({\n selector: '[dynamicComponent]',\n standalone: true,\n})\nexport class DynamicComponentDirective implements OnDestroy {\n private subscription = new Subscription();\n private compRef: ComponentRef<any>;\n\n @Input() set dynamicComponent(componentRenderer: IComponentRenderer) {\n if (componentRenderer.component) {\n this.compRef = this.vcr.createComponent(componentRenderer.component);\n\n if (componentRenderer.inputs) {\n Object.keys(componentRenderer.inputs).map(\n inputName => (this.compRef.instance[inputName] = componentRenderer.inputs[inputName])\n );\n }\n\n if (componentRenderer.outputs) {\n Object.keys(componentRenderer.outputs).map(output => {\n this.subscription.add(\n (this.compRef.instance[output] as EventEmitter<any>).subscribe(componentRenderer.outputs?.[output])\n );\n });\n }\n }\n }\n\n constructor(private vcr: ViewContainerRef) {}\n\n ngOnDestroy() {\n if (this.compRef) {\n this.compRef.destroy();\n }\n this.subscription.unsubscribe();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sentencecase',\n standalone: false\n})\nexport class SentenceCasePipe implements PipeTransform {\n transform(value: string | undefined): string {\n if (!value) {\n return '';\n }\n return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {\n ColumnEllipse,\n ColumnType,\n ComponentRenderer,\n DataSource,\n Pagination,\n ScrollSettings,\n TableColumn,\n TableConfig,\n TableConfigWithPagination,\n TableData,\n TableDetailColumn,\n} from './table.model';\nimport { PageEvent } from '@angular/material/paginator';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { sortByOrder } from '../../utils/table.utils';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Sort } from '@angular/material/sort';\nimport { BehaviorSubject, fromEvent, Observable } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IS_MOBILE_TOKEN } from '../../providers/is-mobile';\n\n@Component({\n selector: 'ui-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('expandDetail', [\n state('collapsed, void', style({ height: '0px' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n standalone: false\n})\nexport class TableComponent<T extends DataSource, TDetail extends DataSource> implements OnChanges, AfterViewInit {\n /**\n * Table configuration\n *\n * @type {TableConfig}\n * @memberof TableComponent\n */\n @Input({ required: true }) config: TableConfigWithPagination<T>;\n\n /**\n * Input property for providing the table data.\n *\n * @type {TableData}\n * @memberof TableComponent\n */\n @Input() data: TableData;\n\n /**\n * Input property indicating whether the table is in a loading state.\n *\n * @type {boolean}\n * @memberof TableComponent\n * @default false\n */\n @Input() loading = false;\n\n /**\n *\n * Defines the application theme\n * @type {ApplicationTheme}\n * @memberof TableComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Data structure to select which columns should be rendered and their capabilities\n *\n * @type {TableDetailColumn}\n * @memberof TableComponent\n */\n @Input() tableDetailColumns: TableDetailColumn<T, TDetail>;\n @Input() tableDetails = false;\n\n /**\n * Disable border radius for table\n *\n * @type {boolean}\n * @memberof TableComponent\n */\n @Input() disableBorderRadius = false;\n\n /**\n * Condensed table\n *\n * @type {boolean}\n * @memberof TableComponent\n */\n @Input() isCondensed = false;\n\n /**\n * Sticky header\n *\n * @type {boolean}\n * @memberof TableComponent\n */\n @Input() stickyHeader = false;\n\n /**\n * Max height\n *\n * @type {string}\n * @memberof TableComponent\n */\n @Input() maxHeight = '576px';\n\n @Output() onRowClickEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() onDetailRowClickEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() paginatorChange = new EventEmitter<PageEvent>();\n @Output() sortChange = new EventEmitter<Sort>();\n\n @ViewChild('table') table: ElementRef;\n\n protected tableData: TableData;\n protected sourceData: TableData;\n protected columnsTooltipState: ColumnEllipse[] = [];\n protected tableConfig: TableConfigWithPagination<T>;\n protected displayedColumns: string[] = [];\n protected columnsDetailToDisplay: string[] = [];\n protected skeletonStyleConfig = {\n background: '#F6F6F6',\n 'border-radius': '4px',\n height: '24px',\n };\n protected dataSourceDetail = new MatTableDataSource<any>([]);\n protected elementDetail: any;\n protected readonly DataType = ColumnType;\n protected scrollSettings$ = new BehaviorSubject<ScrollSettings>({\n scrollEnd: false,\n horizontalScroll: false,\n scrollStart: false,\n });\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private destroyRef: DestroyRef,\n @Inject(IS_MOBILE_TOKEN) protected readonly isMobile$: Observable<boolean>\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n this.setTableConfig(this.config);\n this.setTableData(this.data);\n\n if (this.applicationTheme !== 'classic') {\n this.skeletonStyleConfig.background = '#F4F4F4';\n }\n document.body.setAttribute('theme', this.applicationTheme);\n\n if (this.tableDetailColumns) {\n const filteredColumns = this.tableDetailColumns.columnDefs.filter(column => !column.hidden);\n this.columnsDetailToDisplay = filteredColumns.length\n ? filteredColumns.map((tableColumn: TableColumn<TDetail>) => tableColumn.title!)\n : [];\n }\n\n if (this.tableConfig?.sortable && this.tableConfig?.sort) {\n this.onSortChange(this.tableConfig.sort as Sort, false);\n }\n }\n\n ngAfterViewInit() {\n this.hasTableScroll();\n fromEvent(this.table.nativeElement, 'scroll')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.hasTableScroll());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config'] && changes['config'].currentValue) {\n const config = changes['config'].currentValue as TableConfig<T>;\n this.setTableConfig(config);\n }\n if (changes['data']?.currentValue) {\n this.setTableData(changes['data'].currentValue as TableData);\n }\n }\n\n hasTableScroll(): void {\n const table = this.table.nativeElement;\n const horizontalScroll = table.scrollWidth > table.clientWidth;\n const scrollEnd = table.scrollLeft + table.clientWidth >= table.scrollWidth;\n this.scrollSettings$.next({\n scrollStart: !table.scrollLeft,\n scrollEnd,\n horizontalScroll,\n });\n }\n\n callRenderer([rendererFn, element]: [(v: T) => ComponentRenderer | string, T]): any {\n if (rendererFn) {\n return rendererFn(element);\n }\n }\n\n protected onPaginatorChange(event: PageEvent): void {\n this.paginatorChange.emit(event);\n }\n\n protected onChangeColumnSize(columnIndex: number, showTooltip: boolean): void {\n this.columnsTooltipState = this.columnsTooltipState.map(column => {\n if (column.index === columnIndex) {\n column.showTooltip = showTooltip;\n }\n return column;\n });\n }\n\n protected onSortChange(sortState: Sort, emitEvent = true): void {\n if (emitEvent) {\n this.sortChange.emit(sortState);\n }\n\n if (this.tableConfig?.sortable) {\n this.tableData = [\n ...this.tableData.sort((a, b) => {\n const isAsc = sortState.direction === 'asc';\n const aVal = a[sortState.active];\n const bVal = b[sortState.active];\n return (aVal < bVal ? -1 : 1) * (isAsc ? 1 : -1);\n }),\n ];\n\n if (!sortState.direction) {\n this.tableData = [...this.sourceData];\n }\n }\n }\n\n protected onRowClick(rowParams: any, rowIndex: number): void {\n this.onRowClickEvent.emit({ ...rowParams, index: rowIndex });\n }\n\n protected onDetailRowClick(rowParams: any): void {\n this.onDetailRowClickEvent.emit(rowParams);\n }\n\n protected toggleRow(element: T): void {\n if (this.tableDetails) {\n this.elementDetail = this.elementDetail === element ? null : element;\n if (this.elementDetail) {\n this.tableDetailColumns.setDetailRowData({\n data: element,\n setDetailDataSource: this.setTableDetailDataSource.bind(this),\n });\n }\n }\n }\n\n private setTableDetailDataSource(rowData: TDetail[]): void {\n this.dataSourceDetail = new MatTableDataSource<any>(rowData);\n }\n\n private setTableConfig(config: TableConfig<T>): void {\n config.pagination = config?.pagination ?? this.defaultPaginationConfig;\n\n this.tableConfig = config as TableConfigWithPagination<T>;\n\n this.columnsTooltipState = config.columns.map((column, index) => ({\n index,\n showTooltip: column.showTooltip ?? false,\n }));\n this.displayedColumns = sortByOrder<T>(config.columns.filter(column => !column.hidden)).map(\n column => column.uniqueId ?? column.key\n );\n }\n\n private setTableData(data: TableData): void {\n this.sourceData = data;\n this.tableData = data;\n }\n\n private defaultPaginationConfig: Pagination = {\n currentPage: 0,\n itemsPerPage: 10,\n itemsPerPageOptions: [10, 25, 50],\n totalItems: 20,\n };\n\n trackColumnUniqueId = (index: number, column: TableColumn<T>): string => column.uniqueId ?? column.key;\n}\n","<div #tableContainer class=\"table-container\"\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\n [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\n {{ tableConfig.title | sentencecase }}\n <ng-content select=\"[title-actions]\"></ng-content>\n </div>\n <div\n #table\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\n class=\"table-wrapper\"\n [class.sticky-header]=\"stickyHeader\"\n [style.--table-max-height]=\"maxHeight\">\n <table\n [tabIndex]=\"0\"\n class=\"main-table\"\n [class.condensed]=\"isCondensed\"\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n multiTemplateDataRows\n >\n\n <ng-container\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element, rowIndex); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element, rowIndex); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element, rowIndex); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element, rowIndex); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\n <table\n mat-table\n [dataSource]=\"dataSourceDetail\"\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\n >\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\n [matColumnDef]=\"tableColumn.title ?? ''\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n {{ tableColumn.title | uppercase }}\n </th>\n\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\n </table>\n </div>\n </td>\n </ng-container>\n\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\n <div class=\"align-wrapper\">\n <ng-container [ngSwitch]=\"tableColumn.type\">\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\n {{ tableColumn.function?.(element) }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\n <ng-template\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: stickyHeader\" [class.is-title-present]=\"tableConfig.title\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\n (click)=\"toggleRow(row)\">\n </tr>\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\n </ng-container>\n\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\n <tr *matNoDataRow>\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n\n <ui-paginator\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n *ngIf=\"!i && tableDetails\"\n variant=\"icon-button\"\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\n ></ui-button>\n</ng-template>\n\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\n <div class=\"header-section\">\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}\n </span>\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\n ></ui-icon>\n </div>\n</ng-template>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaginatorComponent } from './paginator.component';\nimport { MatPaginatorModule } from '@angular/material/paginator';\n\n@NgModule({\n declarations: [PaginatorComponent],\n imports: [CommonModule, MatPaginatorModule],\n exports: [PaginatorComponent],\n})\nexport class PaginatorComponentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableComponent } from './table.component';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SkeletonComponent } from '@testgorilla/tgo-ui/components/skeleton';\nimport { PaginatorComponentModule } from '../paginator/paginator.component.module';\nimport { EllipseTextDirective } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { MatSortModule } from '@angular/material/sort';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SentenceCasePipe } from './sentence-case.pipe';\nimport { DataPropertyGetterPipe } from '../../pipes/data-property-getter';\nimport { DynamicComponentDirective } from '../../directives/dynamic-component.directive';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\n\n@NgModule({\n declarations: [TableComponent, SentenceCasePipe],\n imports: [\n CommonModule,\n MatTableModule,\n MatTooltipModule,\n SkeletonComponent,\n PaginatorComponentModule,\n ButtonComponentModule,\n MatSortModule,\n IconComponentModule,\n EllipseTextDirective,\n DynamicComponentDirective,\n DataPropertyGetterPipe,\n MemoizeFuncPipe,\n ],\n exports: [TableComponent],\n})\nexport class TableComponentModule {}\n","import { CommonModule, DecimalPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Inject,\n input,\n Input,\n Optional,\n Output,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\nimport { DigitsOnlyDirective } from '../../directives/digits-only.directive';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SliderValue, SliderVariant } from './slider.model';\n\n@Component({\n selector: 'ui-slider',\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n provideNgxMask(),\n DecimalPipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n MatSliderModule,\n FormsModule,\n MatInputModule,\n MatTooltipModule,\n IconComponentModule,\n UiTranslatePipe,\n DigitsOnlyDirective,\n NgxMaskDirective,\n ]\n})\nexport class SliderComponent implements Validator {\n /**\n * The maximum value of the slider.\n *\n * @type {number}\n * @default 100\n */\n @Input() max = 100;\n\n /**\n * The minimum value of the slider.\n *\n * @type {number}\n * @default 0\n */\n @Input() min = 0;\n\n /**\n * A flag indicating whether the slider displays values as percentages.\n *\n * @type {boolean}\n * @default true\n */\n @Input() percentage = false;\n\n /**\n * A flag indicating whether the slider is disabled.\n *\n * @type {boolean}\n * @default true\n */\n @Input() disabled = false;\n\n /**\n * The starting value of the slider.\n *\n * @type {number}\n * @default 0\n */\n @Input() sliderStart = 0;\n\n /**\n * The ending value of the slider.\n *\n * @type {number}\n * @default 100\n */\n @Input() sliderEnd = 100;\n\n /**\n * The label for the slider.\n *\n * @type {string}\n * @default ''\n */\n @Input() label = '';\n\n /**\n * Show slider inputs.\n *\n * @type {boolean}\n * @default true\n */\n @Input() showInputs = true;\n\n /**\n * Step number.\n *\n * @type {number}\n * @default 1\n */\n @Input() step = 1;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SliderComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Defines the variant slider\n *\n * @type {SliderVariant}\n * @memberof SliderComponent\n */\n @Input() variant: SliderVariant = 'range';\n\n useDecimal = input<boolean>(false);\n\n minLabel = input<string>();\n\n maxLabel = input<string>();\n\n inputWidth = input(80);\n\n @Output() sliderValueChange = new EventEmitter<SliderValue>();\n\n cdr = inject(ChangeDetectorRef);\n decimalPipe = inject(DecimalPipe);\n private control?: AbstractControl;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n this.cdr.markForCheck();\n }\n this.formatLabel = this.formatLabel.bind(this);\n }\n\n private value: SliderValue = { start: 0, end: 100 };\n protected translationContext = 'SLIDER.';\n protected touchedControlName = '';\n\n onChange: (value: SliderValue) => void = () => {};\n onTouch: () => void = () => {};\n\n registerOnChange(fn: (value: SliderValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n writeValue(value: SliderValue): void {\n this.value = value;\n this.sliderEnd = value.end;\n this.cdr.markForCheck();\n // Update sliderStart in a separate detection cycle to ensure proper rendering o mat-slider\n setTimeout(() => {\n this.sliderStart = value.start;\n this.cdr.markForCheck();\n if (this.control) {\n this.control.updateValueAndValidity();\n }\n });\n }\n\n protected onValueChange(ev?: number): void {\n const value: SliderValue = { start: +this.sliderStart, end: +this.sliderEnd };\n\n if (ev) {\n value.start = ev;\n value.end = 0;\n }\n\n this.value = value;\n this.onChange(value);\n this.sliderValueChange.emit(value);\n this.cdr.markForCheck();\n this.onTouch();\n }\n\n protected onInputBlur(inputName: string): void {\n this.touchedControlName = inputName;\n const value: SliderValue = { start: +this.sliderStart, end: +this.sliderEnd };\n\n if (this.isValueChanged(value)) {\n this.onValueChange();\n }\n }\n\n protected onInputFocus(): void {\n this.touchedControlName = '';\n this.cdr.markForCheck();\n }\n\n private isValueChanged(value: SliderValue): boolean {\n return this.value.start !== value.start || this.value.end !== value.end;\n }\n\n get hasError(): boolean {\n return (\n this.max < +this.sliderEnd ||\n this.min > +this.sliderStart ||\n this.min > +this.sliderEnd ||\n this.max < +this.sliderStart ||\n +this.sliderEnd < +this.sliderStart\n );\n }\n\n get isBasicSlider(): boolean {\n return this.variant === 'basic';\n }\n\n formatLabel(value: number): string {\n return this.useDecimal() ? this.decimalPipe.transform(value, '1.0-0') || value.toString() : value.toString();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n this.control = control;\n return this.hasError && this.touchedControlName ? { invalidSlider: true } : null;\n }\n}\n","<ng-container>\n <div\n class=\"slider-container\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{ disabled: disabled, error: hasError && touchedControlName }\"\n >\n @if (label) {\n <div class=\"slider-label\">{{ label }}</div>\n }\n\n <div class=\"slider\">\n @if (!isBasicSlider) {\n <div class=\"min-value\">\n <span>\n @if (useDecimal()) {\n {{ min | number }}\n } @else {\n {{ min }}\n }\n @if (percentage) {\n %\n }\n </span>\n </div>\n }\n <mat-slider\n [disableRipple]=\"applicationTheme !== 'classic'\"\n #sliderElement\n discrete\n [disabled]=\"disabled\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n (mouseenter)=\"sliderElement.discrete = true\"\n (mouseleave)=\"sliderElement.discrete = false\"\n [displayWith]=\"formatLabel\"\n >\n @if (isBasicSlider) {\n <input [disabled]=\"disabled\" (valueChange)=\"onValueChange($event)\" [(ngModel)]=\"sliderStart\" matSliderThumb />\n } @else {\n <input [disabled]=\"disabled\" (valueChange)=\"onValueChange()\" [(ngModel)]=\"sliderStart\" matSliderStartThumb />\n <input [disabled]=\"disabled\" (valueChange)=\"onValueChange()\" [(ngModel)]=\"sliderEnd\" matSliderEndThumb />\n }\n </mat-slider>\n @if (!isBasicSlider) {\n <div class=\"max-value\">\n <span>\n @if (useDecimal()) {\n {{ max | number }}\n } @else {\n {{ max }}\n }\n @if (percentage) {\n %\n }\n </span>\n </div>\n }\n </div>\n\n @if (showInputs && !isBasicSlider) {\n <div class=\"slider-input\">\n <mat-form-field [appearance]=\"'outline'\" [ngStyle]=\"{ width: inputWidth() + 'px' }\">\n @if (minLabel()) {\n <mat-label>\n {{ minLabel() }}\n @if (percentage) {\n <span>%</span>\n }\n </mat-label>\n } @else {\n <mat-label>\n {{ 'COMMON.MIN' | uiTranslate | async }}\n @if (percentage) {\n <span>%</span>\n }\n </mat-label>\n }\n @if (useDecimal()) {\n <input\n matInput\n [type]=\"'text'\"\n [(ngModel)]=\"sliderStart\"\n [disabled]=\"disabled\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur('start')\"\n (keydown.enter)=\"onInputBlur('start')\"\n mask=\"separator.2\"\n thousandSeparator=\",\"\n />\n } @else {\n <input\n matInput\n [type]=\"'number'\"\n [(ngModel)]=\"sliderStart\"\n [disabled]=\"disabled\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur('start')\"\n (keydown.enter)=\"onInputBlur('start')\"\n [allowOnlyDigits]=\"true\"\n digitsOnly\n />\n }\n </mat-form-field>\n <mat-form-field [appearance]=\"'outline'\" [ngStyle]=\"{ width: inputWidth() + 'px' }\">\n @if (maxLabel()) {\n <mat-label>\n {{ maxLabel() }}\n @if (percentage) {\n <span>%</span>\n }\n </mat-label>\n } @else {\n <mat-label>\n {{ 'COMMON.MAX' | uiTranslate | async }}\n @if (percentage) {\n <span>%</span>\n }\n </mat-label>\n }\n @if (useDecimal()) {\n <input\n matInput\n [disabled]=\"disabled\"\n [type]=\"'text'\"\n [(ngModel)]=\"sliderEnd\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur('end')\"\n (keydown.enter)=\"onInputBlur('end')\"\n data-testid=\"slider.input-end\"\n mask=\"separator.2\"\n thousandSeparator=\",\"\n />\n } @else {\n <input\n matInput\n [disabled]=\"disabled\"\n [type]=\"'number'\"\n [(ngModel)]=\"sliderEnd\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur('end')\"\n (keydown.enter)=\"onInputBlur('end')\"\n [allowOnlyDigits]=\"true\"\n digitsOnly\n data-testid=\"slider.input-end\"\n />\n }\n </mat-form-field>\n </div>\n }\n\n @if (hasError && touchedControlName) {\n <mat-error class=\"slider-errors\">\n @if (touchedControlName === 'start' && sliderStart > sliderEnd) {\n <div class=\"validation-error\">\n <ui-icon [name]=\"'Info'\"></ui-icon>\n <span>{{\n translationContext + 'MIN_MORE_THAN_MAX' | uiTranslate: { min: sliderStart, max: sliderEnd } | async\n }}</span>\n </div>\n }\n @if (touchedControlName === 'end' && sliderStart > sliderEnd) {\n <div class=\"validation-error\">\n <ui-icon [name]=\"'Info'\"></ui-icon>\n <span>{{\n translationContext + 'MAX_LESS_THAN_MIN' | uiTranslate: { min: sliderStart, max: sliderEnd } | async\n }}</span>\n </div>\n }\n @if (sliderStart < min) {\n <div class=\"validation-error\">\n <ui-icon [name]=\"'Info'\"></ui-icon>\n <span>{{ 'COMMON.MIN' | uiTranslate | async }} {{ min }}</span>\n </div>\n }\n @if (sliderEnd > max) {\n <div class=\"validation-error\">\n <ui-icon [name]=\"'Info'\"></ui-icon>\n <span>{{ 'COMMON.MAX' | uiTranslate | async }} {{ max }}</span>\n </div>\n }\n </mat-error>\n }\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { SliderComponent } from './slider.component';\n\n@NgModule({\n imports: [SliderComponent],\n exports: [SliderComponent],\n})\nexport class SliderComponentModule {}\n","import { Component, Inject, Input, Optional } from '@angular/core';\nimport { SegmentedBar, SegmentedBarVariant, SegmentedBarWithPercentage } from './segmented-bar.model';\nimport { ApplicationTheme } from \"@testgorilla/tgo-ui/components/core\";\n\n@Component({\n selector: 'ui-segmented-bar',\n templateUrl: './segmented-bar.component.html',\n styleUrls: ['./segmented-bar.component.scss'],\n standalone: false\n})\nexport class SegmentedBarComponent {\n /**\n * The width of the segmented bar. Defaults to '100%'.\n * You can use '100%' or '100px' for this field. 100 is just an example\n * @default '100%'\n * @type {string}\n * @memberof SegmentedBarComponent\n */\n @Input() width = '100%';\n\n /**\n * The size variant of the segmented bar. Can be 'small' or 'large'.\n * Defaults to 'large'.\n * @default 'large'\n * @type {SegmentedBarVariant}\n * @memberof SegmentedBarComponent\n */\n @Input() size: SegmentedBarVariant = 'large';\n\n /**\n * The segments to be displayed in the segmented bar.\n * @required true\n * @type {SegmentedBar}\n * @memberof SegmentedBarComponent\n */\n @Input({ required: true }) set segments(segments: SegmentedBar[]) {\n this.segmentList = this.calculatePercentages(segments);\n }\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SegmentedBarComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof SegmentedBarComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof SegmentedBarComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * Groups the tooltips into one template\n *\n * @type {boolean}\n * @memberof SegmentedBarComponent\n */\n @Input() tooltipStats = false;\n\n segmentList: SegmentedBarWithPercentage[] = [];\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n calculatePercentages(segments: SegmentedBar[]): SegmentedBarWithPercentage[] {\n const total = segments.reduce((sum, segment) => sum + segment.value, 0);\n return segments.map(segment => {\n let percentage = (segment.value / total) * 100;\n let percentageLabel = '';\n\n if (percentage === 0) {\n percentageLabel = '0%';\n } else if (percentage > 0 && percentage < 1) {\n percentageLabel = '>1%';\n } else {\n percentageLabel = `${Math.ceil(percentage)}%`;\n }\n\n return { ...segment, percentage: percentageLabel };\n });\n }\n\n get accessibleValueText(): string {\n return this.segmentList\n .map((segment, index) => `${segment.tooltip || `Value ${index}`}: ${segment.value}`)\n .join(', ');\n }\n}\n","<div\n class=\"segmented-bar-container\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"'segment-size-' + size\"\n [style.width]=\"width\"\n [uiTooltipTemplate]=\"segmentedStats\"\n [showTooltip]=\"tooltipStats\"\n [attr.aria-label]=\"accessibleValueText\"\n role=\"graphics-object\"\n [tabIndex]=\"0\"\n>\n <ng-container *ngFor=\"let segment of segmentList\">\n <div\n class=\"segmented-bar\"\n *ngIf=\"segment.value\"\n [ngClass]=\"segment.color\"\n [ngStyle]=\"{ flex: segment.value }\"\n [matTooltip]=\"!tooltipStats ? segment.tooltip ?? '' : ''\"\n [matTooltipClass]=\"applicationTheme\"\n [attr.aria-hidden]=\"true\"\n [attr.aria-required]=\"ariaRequired\"\n >\n <ui-icon *ngIf=\"segment.icon\" [applicationTheme]=\"applicationTheme\" [name]=\"segment.icon\"></ui-icon>\n <span>{{ segment.value }}</span>\n </div>\n </ng-container>\n</div>\n<ng-template #segmentedStats>\n <div class=\"stats-container\">\n <div class=\"name-column\">\n @for (segment of segmentList; track segment.value) {\n <div class=\"segment\">\n <div [class]=\"'point ' + segment.color\"></div>\n <span [class]=\"'label ' + segment.color\">{{ segment.tooltip }}</span>\n </div>\n }\n </div>\n\n <div class=\"value-column\">\n @for (segment of segmentList; track segment.value) {\n <div class=\"segment\">\n <span>{{ segment.value }}</span>\n </div>\n }\n </div>\n\n <div class=\"percentage-column\">\n @for (segment of segmentList; track segment.value) {\n <div class=\"segment\">\n <span>{{ segment.percentage }}</span>\n </div>\n }\n </div>\n\n </div>\n</ng-template>\n\n<ng-template #segmentedStats>\n <div class=\"stats-container\">\n <div class=\"name-column\">\n @for (segment of segmentList; track segment.value) {\n <div class=\"segment\">\n <div [class]=\"'point ' + segment.color\"></div>\n <span [class]=\"'label ' + segment.color\">{{ segment.tooltip }}</span>\n </div>\n }\n </div>\n\n <div class=\"value-column\">\n @for (segment of segmentList; track segment.value) {\n <div class=\"segment\">\n <span>{{ segment.value }}</span>\n </div>\n }\n </div>\n\n <div class=\"percentage-column\">\n @for (segment of segmentList; track segment.value) {\n <div class=\"segment\">\n <span>{{ segment.percentage }}</span>\n </div>\n }\n </div>\n\n </div>\n</ng-template>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SegmentedBarComponent } from './segmented-bar.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatInputModule } from '@angular/material/input';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\n\n@NgModule({\n declarations: [SegmentedBarComponent],\n imports: [CommonModule, MatTooltipModule, MatInputModule, IconComponentModule, TooltipComponentModule],\n exports: [SegmentedBarComponent]\n})\nexport class SegmentedBarComponentModule {\n}\n","import { booleanAttribute, Component, EventEmitter, HostBinding, Inject, Input, Optional, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IS_MOBILE_TOKEN } from '../../providers/is-mobile';\n\n@Component({\n selector: 'ui-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss'],\n standalone: false\n})\nexport class PageHeaderComponent {\n /**\n * Flag to determine whether the \"Back\" button should be displayed.\n * @default true\n * @memberof PageHeaderComponent\n */\n @Input({ transform: booleanAttribute }) showBackButton = true;\n\n /**\n * Back button tooltip for mobile variation\n * @property tooltip\n * @memberof PageHeaderComponent\n */\n @Input() tooltip = 'COMMON.BACK';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof PageHeaderComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Event triggered when the \"Back\" button is clicked.\n * @memberof PageHeaderComponent\n */\n @Output() back = new EventEmitter<void>();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(IS_MOBILE_TOKEN) protected readonly isMobile$: Observable<boolean>\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n protected onBack(): void {\n this.back.emit();\n }\n}\n","<ng-container>\n <div class=\"page-header-container\">\n <div class=\"page-header-content\">\n @if (!(isMobile$ | async)) {\n @if (showBackButton) {\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onBack()\"\n [ariaLabel]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n [variant]=\"'ghost'\"\n [justIcon]=\"true\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-in-line'\"\n ></ui-button>\n }\n }\n @else {\n <ui-button\n [applicationTheme]=\"applicationTheme\" class=\"mobile-back-btn\" [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n [variant]=\"'icon-button'\"\n [ariaLabel]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onBack()\"\n [justIcon]=\"true\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-in-line'\"\n ></ui-button>\n }\n\n <div class=\"main-content\" [ngClass]=\"{ 'remove-margin': !showBackButton }\">\n <ng-content select=\"[content]\"></ng-content>\n </div>\n\n <div class=\"right-side\">\n <ng-content select=\"[right-side]\"></ng-content>\n </div>\n </div>\n </div>\n\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageHeaderComponent } from './page-header.component';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [PageHeaderComponent],\n imports: [CommonModule, ButtonComponentModule, UiTranslatePipe],\n exports: [PageHeaderComponent],\n})\nexport class PageHeaderModule {}\n","import {\n booleanAttribute,\n Component,\n EventEmitter,\n HostBinding,\n Inject, input,\n Input,\n Optional,\n Output,\n signal,\n ViewChild\n} from '@angular/core';\nimport { Tab, TabsType } from './tabs.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IS_MOBILE_TOKEN } from '../../providers/is-mobile';\nimport { Observable } from 'rxjs';\nimport { MatTab, MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';\nimport { ENTER, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\n\n@Component({\n selector: 'ui-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n standalone: false\n})\nexport class TabsComponent {\n /**\n * Color of the Tabs.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof TabsComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = '#46A997';\n /**\n * Type the Tabs.\n * Defaults underlined.\n *\n * @type {TabsType}\n * @memberof TabsComponent\n */\n @Input() type: TabsType = 'underlined';\n\n /**\n * Animation duration when switching tabs\n *\n * @type {number}\n * @memberof TabsComponent\n */\n @Input() animationDuration = 300;\n\n /**\n * Sets the padding for content and header\n *\n * @type {number}\n * @memberof TabsComponent\n */\n @HostBinding('style.--header-content-padding')\n @Input({ transform: (value: number): string => value + 'px' })\n headerContentPadding = '32px';\n\n /**\n * Sets the dynamic height of the tab\n * @type {boolean}\n * @memberof TabsComponent\n */\n @Input({ transform: booleanAttribute }) dynamicHeight = true;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof TabsComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n isLoading = input(false);\n\n @Output() selectedTabIndex = new EventEmitter<number>();\n @Output() selectedTab = new EventEmitter<Tab>();\n\n @ViewChild('tabGroup', { static: true }) tabGroup: MatTabGroup;\n\n protected tabs: Tab[] = [];\n readonly tabIndex = signal(0);\n protected tabIndexMap: Record<string, number> = {};\n\n // Counter for default ordering when order is not specified\n private insertionCounter: number = 0;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(IS_MOBILE_TOKEN) protected readonly isMobile$: Observable<boolean>\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n const tabHeader = (this.tabGroup as any)._tabHeader;\n tabHeader._handleKeydown = async (event: KeyboardEvent) => {\n if (hasModifierKey(event)) {\n return;\n }\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n const tabLabel = (event.target as HTMLElement).innerText;\n const currentTab = this.tabs[this.tabIndex()];\n const nextTab = this.tabs.find(tab => tab.tabLabel === tabLabel);\n\n if (!nextTab) {\n return;\n }\n\n const canLeave = (await currentTab.canLeave?.({ currentTab, nextTab })) ?? true;\n if (currentTab.tabName !== nextTab.tabName && canLeave) {\n const nextTabIndex = this.tabIndexMap[nextTab.tabName];\n tabHeader.focusIndex = nextTabIndex;\n this.tabGroup.selectedIndex = nextTabIndex;\n }\n break;\n default:\n tabHeader._keyManager.onKeydown(event);\n }\n };\n\n (this.tabGroup as any)._handleClick = async (tab: MatTab, tabHeader: any, index: number) => {\n const currentIndex = this.tabGroup.selectedIndex;\n if (tab.disabled || currentIndex === undefined || index === currentIndex) {\n return;\n }\n const currentTab = this.tabs[this.tabIndex()];\n const nextTab = this.tabs[index];\n const canLeave = (await currentTab.canLeave?.({ currentTab, nextTab })) ?? true;\n if (this.tabGroup.selectedIndex != index && canLeave) {\n tabHeader.focusIndex = index;\n this.tabGroup.selectedIndex = index;\n }\n };\n });\n }\n\n addTab(tab: Tab): void {\n // If no explicit order is provided, use the insertion counter\n if (tab.order === undefined) {\n tab.order = this.insertionCounter++;\n }\n\n // Add the tab and sort the tabs array\n this.tabs.push(tab);\n this.sortTabs();\n\n // Update the index map\n this.updateTabIndexMap();\n }\n\n private sortTabs(): void {\n // Sort by the order property (lowest first)\n this.tabs.sort((a, b) => {\n const orderA = a.order ?? Infinity;\n const orderB = b.order ?? Infinity;\n return orderA - orderB;\n });\n }\n\n private updateTabIndexMap(): void {\n // Update the index map after sorting\n this.tabs.forEach((tab, index) => {\n this.tabIndexMap[tab.tabName] = index;\n });\n }\n\n onTabChange(ev: MatTabChangeEvent): void {\n const selectedTab = this.tabs[ev.index];\n this.tabIndex.set(this.tabIndexMap[selectedTab.tabName]);\n this.selectedTabIndex.emit(ev.index);\n this.selectedTab.emit(selectedTab);\n }\n\n selectTab(tabName: string): void {\n const index = this.tabIndexMap[tabName];\n if (index !== undefined) {\n this.tabIndex.set(index);\n this.selectedTabIndex.emit(index);\n this.selectedTab.emit(this.tabs[index]);\n }\n }\n\n indexOf(tabName: string): number {\n return this.tabIndexMap[tabName] ?? -1;\n }\n\n trackByTabName(index: number, tab: Tab): string {\n return tab.tabName;\n }\n\n removeTab(tabName: string): void {\n const index = this.tabIndexMap[tabName];\n if (index !== undefined) {\n this.tabs.splice(index, 1);\n delete this.tabIndexMap[tabName];\n this.updateTabIndexMap();\n }\n }\n\n updateTab(tabName: string, tab: Partial<Omit<Tab, 'tabName'>>): void {\n const index = this.tabIndexMap[tabName];\n if (index !== undefined) {\n this.tabs[index] = { ...this.tabs[index], ...tab };\n\n // Re-sort if the order changed\n if (tab.order !== undefined) {\n this.sortTabs();\n this.updateTabIndexMap();\n }\n }\n }\n}\n","<mat-tab-group\n #tabGroup\n headerPosition=\"above\"\n class=\"tabs-container\"\n [ngClass]=\"'tabs-type-' + ((isMobile$ | async) ? 'underlined' : type)\"\n [class.tabs-container-loading]=\"isLoading()\"\n [attr.theme]=\"applicationTheme\"\n [dynamicHeight]=\"dynamicHeight\"\n [selectedIndex]=\"tabIndex()\"\n [animationDuration]=\"animationDuration\"\n (selectedTabChange)=\"onTabChange($event)\"\n role=\"tablist\"\n>\n <mat-tab\n *ngFor=\"let tab of tabs; trackBy: trackByTabName; let i = index\"\n [disabled]=\"tab.disabled ?? false\"\n [attr.aria-label]=\"tab?.ariaLabel\"\n >\n <ng-template mat-tab-label>\n <a\n data-test-role=\"tab-link\"\n [attr.data-testid]=\"tab.tabName\"\n class=\"tab-name\"\n [href]=\"tab?.linkUrl ? tab.linkUrl : '#'\"\n (click)=\"$event.preventDefault()\"\n [attr.aria-selected]=\"i === tabIndex()\"\n [attr.aria-label]=\"tab.tabLabel + (i === tabIndex() ? ', ' + ('TABS.SELECTED' | uiTranslate | async) : '')\"\n role=\"tab\"\n >\n @if (isLoading()) {\n <ui-skeleton [count]=\"1\"\n [theme]=\"tab.skeletonTheme ?? {}\"\n [isAiTheme]=\"!!tab.isSkeletonAiTheme\"\n ></ui-skeleton>\n } @else {\n <ui-icon\n color=\"rebrand-black\"\n [size]=\"'24'\"\n [tabindex]=\"1\"\n class=\"left-icon\"\n [name]=\"tab.iconLeft!\"\n *ngIf=\"tab?.iconLeft\"\n ></ui-icon>\n <span class=\"label\">{{ tab.tabLabel }}</span>\n <ui-icon\n color=\"rebrand-black\"\n [size]=\"'24'\"\n class=\"right-icon\"\n [name]=\"tab.iconRight!\"\n *ngIf=\"tab?.iconRight\"\n ></ui-icon>\n }\n </a>\n </ng-template>\n <div role=\"tabpanel\" [attr.id]=\"'tabpanel-' + i\" [attr.aria-labelledby]=\"'tab-' + i\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\n </div>\n </mat-tab>\n</mat-tab-group>\n","import { booleanAttribute, DestroyRef, Directive, effect, inject, input, OnInit, TemplateRef } from '@angular/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { TabsComponent } from './tabs.component';\nimport { Tab } from './tabs.model';\nimport { NgxSkeletonLoaderConfigTheme } from 'ngx-skeleton-loader';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[uiTab]',\n})\nexport class TabDirective implements OnInit {\n tabLabel = input.required<string>();\n tabName = input.required<string>();\n iconLeft = input<IconName>();\n iconRight = input<IconName>();\n disabled = input<boolean, string>(false, { transform: booleanAttribute });\n canLeave = input<(ctx?: { currentTab: Tab; nextTab: Tab }) => boolean | Promise<boolean>>();\n linkUrl = input<string>();\n order = input<number>();\n skeletonTheme = input<NgxSkeletonLoaderConfigTheme>();\n isSkeletonAiTheme = input<boolean>();\n\n private tabsComponent = inject(TabsComponent);\n private template = inject(TemplateRef);\n\n private syncProps = effect(() => {\n this.tabsComponent.updateTab(this.tabName(), {\n tabLabel: this.tabLabel(),\n iconLeft: this.iconLeft(),\n iconRight: this.iconRight(),\n disabled: this.disabled(),\n canLeave: this.canLeave(),\n linkUrl: this.linkUrl(),\n order: this.order(),\n skeletonTheme: this.skeletonTheme(),\n isSkeletonAiTheme: this.isSkeletonAiTheme(),\n });\n });\n\n private cleanup = inject(DestroyRef).onDestroy(() => {\n this.tabsComponent.removeTab(this.tabName());\n });\n\n ngOnInit(): void {\n this.addTab();\n }\n\n private addTab(): void {\n this.tabsComponent.addTab({\n tabLabel: this.tabLabel(),\n tabName: this.tabName(),\n iconLeft: this.iconLeft(),\n iconRight: this.iconRight(),\n disabled: this.disabled(),\n contentTemplateRef: this.template,\n canLeave: this.canLeave(),\n linkUrl: this.linkUrl(),\n order: this.order(),\n skeletonTheme: this.skeletonTheme(),\n isSkeletonAiTheme: this.isSkeletonAiTheme(),\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TabsComponent } from './tabs.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { TabDirective } from './tab.directive';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { SkeletonComponent } from '@testgorilla/tgo-ui/components/skeleton';\n\n@NgModule({\n declarations: [TabsComponent],\n imports: [TabDirective, CommonModule, MatTabsModule, IconComponentModule, UiTranslatePipe, SkeletonComponent],\n exports: [TabsComponent, TabDirective],\n})\nexport class TabsComponentModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n Optional,\n Output\n} from '@angular/core';\nimport { SegmentedButton } from './segmented-button.model';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\n@Component({\n selector: 'ui-segmented-button',\n templateUrl: './segmented-button.component.html',\n styleUrls: ['./segmented-button.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentedButtonComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SegmentedButtonComponent implements ControlValueAccessor {\n /**\n * Input property to set the buttons for the segmented button.\n * @type SegmentedButton\n * @memberof SegmentedButtonComponent\n */\n @Input({ required: true }) buttonConfig: SegmentedButton[];\n\n /**\n * Whether the component is disabled.\n * Default: false.\n *\n * @type {boolean}\n * @memberof SegmentedButtonComponent\n */\n @Input() disabled = false;\n\n /**\n * Indicator of the Segmented Button width\n *\n * @memberof SegmentedButtonComponent\n */\n @Input() fullWidth = false;\n\n /**\n * Selected button\n *\n * @memberof SegmentedButtonComponent\n */\n @Input() set value(v: any) {\n this._value = v;\n this.onChange(v);\n }\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SegmentedButtonComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n @Output() buttonSelected = new EventEmitter<any>();\n\n protected _value: any;\n\n get value(): any {\n return this._value;\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n onChange = (v: any) => {};\n onTouch = () => {};\n\n writeValue(obj: any): void {\n this.value = obj;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n manualChangeValue({ value }: any) {\n this.value = value;\n this.buttonSelected.emit(value);\n }\n}\n","<mat-button-toggle-group\n class=\"segmented-button-container\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{ disabled, 'full-width': fullWidth }\"\n [value]=\"value\"\n [hideSingleSelectionIndicator]=\"true\"\n (change)=\"manualChangeValue($event)\"\n>\n <mat-button-toggle\n [disableRipple]=\"true\"\n *ngFor=\"let button of buttonConfig\"\n [value]=\"button.value\"\n [ngClass]=\"{ disabled: button.disabled }\"\n [matTooltip]=\"button.tooltip ?? ''\"\n >\n <ng-container *ngIf=\"button.template; else label\" [ngTemplateOutlet]=\"button.template\"></ng-container>\n <ng-template #label>{{ button.label }}</ng-template>\n </mat-button-toggle>\n</mat-button-toggle-group>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SegmentedButtonComponent } from './segmented-button.component';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [SegmentedButtonComponent],\n exports: [SegmentedButtonComponent],\n imports: [CommonModule, MatButtonToggleModule, FormsModule, MatTooltipModule],\n})\nexport class SegmentedButtonComponentModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ui-password-criteria',\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PasswordComponent implements ControlValueAccessor {\n\n /**\n * Show criteria for password. Defaults true\n *\n * @type {boolean}\n * @memberof PasswordComponent\n */\n @Input() showCriteria = true;\n\n /**\n * Password is required or not\n *\n * @type {boolean}\n * @memberof PasswordComponent\n */\n @Input() required = false;\n\n @Output() passwordChange = new EventEmitter<string>();\n\n @Output() allCriteriaPassed = new EventEmitter<boolean>();\n\n @ViewChild('requiredCriteria') requiredCriteria: ElementRef<HTMLElement>;\n\n protected formControl = new FormControl('', Validators.required);\n protected criteriaPassed: { [key: string]: boolean } = {};\n protected showError: boolean;\n protected progressValue: number;\n protected criteria: { translateKey: string; key: string }[] = [\n { translateKey: 'PASSWORD.LOWERCASE', key: 'hasLowercase' },\n { translateKey: 'PASSWORD.UPPERCASE', key: 'hasUppercase' },\n { translateKey: 'PASSWORD.NUMBER', key: 'hasNumber' },\n { translateKey: 'PASSWORD.SPECIAL_CHARACTER', key: 'hasSpecialChar' },\n { translateKey: 'PASSWORD.CHARACTERS', key: 'hasMinLength' },\n ];\n\n constructor(\n private readonly destroyRef: DestroyRef,\n ) {\n this.formControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.checkCriteria();\n });\n }\n\n checkCriteria(): void {\n const password = this.formControl.value ?? '';\n this.criteriaPassed = {\n hasLowercase: /^(?=.*?[a-z])/.test(password),\n hasUppercase: /^(?=.*?[A-Z])/.test(password),\n hasNumber: /^(?=.*?[0-9])/.test(password),\n hasSpecialChar: /^(?=.*?[\" !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~])/.test(password),\n hasMinLength: password.length >= 12,\n };\n\n const passedCount = this.countPassed();\n this.progressValue = Math.min(Math.max(passedCount * (100 / Object.keys(this.criteriaPassed).length), 1), 100);\n this.passwordChange.emit(password);\n this.allCriteriaPassed.emit(passedCount === Object.keys(this.criteriaPassed).length);\n this.onChange(password);\n }\n\n countPassed(): number {\n let count = 0;\n for (const key in this.criteriaPassed) {\n if (this.criteriaPassed.hasOwnProperty(key) && this.criteriaPassed[key]) {\n count++;\n }\n }\n return count;\n }\n onChange = (v: any) => {};\n onTouch = () => {};\n\n writeValue(obj: any): void {\n this.formControl.setValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n get allRequirementsMet(): boolean {\n return this.countPassed() === Object.keys(this.criteriaPassed).length && !!this.countPassed();\n }\n}\n","<div class=\"password-criteria-container\">\n\n <ui-field [applicationTheme]=\"'dark'\"\n [formControl]=\"formControl\"\n [ariaLabel]=\"requiredCriteria?.nativeElement?.innerText ?? ''\"\n [type]=\"'password'\"\n [placeholder]=\"('PASSWORD.PASSWORD_PLACEHOLDER' | uiTranslate | async) + (required ? ' *' : '')\"\n (keydown.enter)=\"showError = true\"\n (focusout)=\"showError = true\"\n ></ui-field>\n\n <div class=\"criteria-container\" *ngIf=\"showCriteria\" #requiredCriteria>\n\n <div class=\"progress\">\n <ui-progress-bar [progress]=\"progressValue === 1 ? 0 : progressValue\" [applicationTheme]=\"'dark'\"></ui-progress-bar>\n </div>\n\n <span *ngIf=\"allRequirementsMet\" style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">{{ 'FIELD.ALL_PASSWORD_REQ_PASSED' | uiTranslate | async }}</span>\n\n <div\n *ngFor=\"let criterion of criteria\"\n class=\"criterion\"\n [attr.aria-live]=\"!allRequirementsMet ? 'polite' : ''\"\n [ngClass]=\"{ 'passed': criteriaPassed[criterion.key], error: !criteriaPassed[criterion.key] && showError }\"\n >\n <ui-icon [size]=\"'24'\"\n [color]=\"'rebrand-black'\"\n [name]=\"!criteriaPassed[criterion.key] && showError ? 'Info-in-line' : 'Check-round-in-line'\"\n applicationTheme=\"dark\"\n ></ui-icon>\n <span>{{ criterion.translateKey | uiTranslate | async }}</span>\n <span style=\"position: absolute; left: -9999px\">{{ (criteriaPassed[criterion.key] ? ('COMMON.PASSED') : ('COMMON.FAILED')) | uiTranslate | async }}</span>\n </div>\n </div>\n\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PasswordComponent } from './password.component';\nimport { FieldComponentModule } from '../field/field.component.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '../progress-bar/progress-bar.component.module';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [PasswordComponent],\n exports: [PasswordComponent],\n imports: [\n CommonModule,\n FieldComponentModule,\n ReactiveFormsModule,\n IconComponentModule,\n ProgressBarComponentModule,\n UiTranslatePipe,\n ],\n})\nexport class PasswordComponentModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'joinStrings',\n standalone: false\n})\nexport class JoinStringsPipe implements PipeTransform {\n transform(value: string[], separator?: string): string {\n return value.filter(Boolean).join(separator ? separator : ' - ');\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NgControl,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatInput } from '@angular/material/input';\nimport { MatSelect } from '@angular/material/select';\nimport { parsePhoneNumber } from 'libphonenumber-js';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n delay,\n filter,\n first,\n map,\n Observable,\n startWith,\n Subject,\n take,\n tap,\n} from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { UICountry } from './phone-input.model';\n\n@Component({\n selector: 'ui-phone-input',\n templateUrl: './phone-input.component.html',\n styleUrls: ['./phone-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\n useValue: { overlayPanelClass: 'phone-number-autocomplete' },\n },\n ],\n standalone: false\n})\nexport class PhoneInputComponent implements OnInit, OnDestroy, ControlValueAccessor, DoCheck {\n /**\n * Phone number\n *\n * @type {string}\n * @memberof PhoneInputComponent\n */\n @Input()\n set value(value: string) {\n this.initialValue = this.initialValue || value;\n try {\n const parsed = parsePhoneNumber(value);\n const formatted = parsed.formatInternational();\n this.selectedCountry = this.getCountryByAlpha2Code(parsed.country!) || this.selectedCountry;\n this.form.patchValue({ phone_number: formatted.replace(this.selectedCountry.callingCode, '') });\n } catch (err) {\n if (value?.length <= 4) {\n this.selectedCountry = this.getCountryByCallingCode(value) || this.selectedCountry;\n }\n this.form.patchValue({ phone_number: value?.replace(this.selectedCountry?.callingCode, '') });\n }\n this.stateChanges.next();\n }\n\n /**\n * Country list for select\n *\n * @type {UICountry[]}\n * @memberof PhoneInputComponent\n */\n @Input() set countryList(countryList: UICountry[]) {\n this.loadCountries$.next(countryList);\n this.selectedCountry = this.selectedCountry ?? countryList[0];\n }\n\n /**\n * Placeholder input\n *\n * @type {text}\n * @memberof PhoneInputComponent\n */\n @Input()\n set placeholder(value: string) {\n this.internalPlaceholder = value;\n this.stateChanges.next();\n }\n\n /**\n * Determines if input is disabled\n *\n * @type {boolean}\n * @memberof PhoneInputComponent\n */\n @HostBinding('attr.disabled')\n @Input()\n disabled: boolean;\n\n /**\n * Input is required or not\n *\n * @type {boolean}\n * @memberof PhoneInputComponent\n */\n @Input() required: boolean;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof PhoneInputComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Indicator of the phone input width\n * @property fullWidth\n * @type {boolean}\n * @memberof PhoneInputComponent\n */\n @Input() fullWidth = false;\n\n _errors: SafeHtml[];\n /**\n * Input field errors\n *\n * @type {string}\n * @memberof PhoneInputComponent\n */\n @Input() set errors(errors: string[]) {\n if (errors) {\n this._errors = errors?.filter(Boolean).map(error => this.sanitizer.bypassSecurityTrustHtml(error));\n this.errorsLength = this.setErrorsLength();\n }\n }\n\n /**\n * Hide in build errors for Reactive Forms\n *\n * @type {number}\n * @memberof PhoneInputComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof PhoneInputComponent\n */\n @Input() hideLabelInErrors = false;\n\n static nextId = 0;\n\n private countries = new BehaviorSubject<UICountry[]>([]);\n protected countries$ = this.countries.asObservable();\n form: UntypedFormGroup = this.fb.group({\n phone_number: new UntypedFormControl(),\n });\n protected controlType = 'phone-number';\n protected userAriaDescribedBy?: string;\n protected loadCountries$ = new BehaviorSubject<UICountry[]>([]);\n protected countryCode = new BehaviorSubject<string>('US');\n protected stateChanges = new Subject<void>();\n protected focused: boolean;\n protected selectFilterCtrl = new UntypedFormControl('');\n protected errorsLength: boolean;\n protected readonly countryFlagSrc = 'assets/svg-country-flags/';\n\n @ViewChild(MatInput, { read: ElementRef, static: true })\n public input: ElementRef<HTMLElement>;\n @ViewChild(MatSelect, { read: ElementRef, static: true })\n public select: ElementRef<HTMLElement>;\n\n @HostBinding()\n id = `phone-number${PhoneInputComponent.nextId++}`;\n\n @HostBinding('class.floated')\n get shouldLabelFloat(): boolean {\n return true;\n }\n\n @HostBinding('attr.aria-describedby') describedBy = '';\n\n get empty(): boolean {\n return !!this.form.value;\n }\n\n get errorState(): boolean {\n return this.errorMatcher.isErrorState(this.ngControl.control as UntypedFormControl, null);\n }\n\n get value(): string {\n return this.getNumberWithCountryCode();\n }\n\n get placeholder() {\n return this.internalPlaceholder;\n }\n\n private initialValue: string;\n private readonly DEFAULT_COUNTRY_CODE = 'US';\n private internalPlaceholder: string;\n protected selectedCountry: UICountry;\n private unsubscribeAll$ = new Subject<void>();\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private errorMatcher: ErrorStateMatcher,\n private fb: UntypedFormBuilder,\n private focusMonitor: FocusMonitor,\n private ref: ChangeDetectorRef,\n private sanitizer: DomSanitizer,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.ref.markForCheck();\n }\n }\n\n ngOnInit(): void {\n this.loadCountries();\n this.preSelectCountry();\n this.subscribeToFocusEvents();\n }\n\n setErrorsLength(): boolean {\n if (!!this._errors) {\n return this._errors.filter(err => !!err).length > 0;\n }\n return false;\n }\n\n setDescribedByIds(ids: string[]): void {\n this.userAriaDescribedBy = ids.join(' ');\n }\n\n onChange: (value: string) => void;\n onTouch: () => void;\n\n writeValue(phoneNumber: string): void {\n if (phoneNumber) {\n this.value = phoneNumber;\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n this.disabled = isDisabled;\n this.stateChanges.next();\n this.ref.markForCheck();\n }\n\n ngOnDestroy(): void {\n this.focusMonitor.stopMonitoring(this.input);\n this.focusMonitor.stopMonitoring(this.select);\n this.stateChanges.complete();\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n onOptionsSelected(value: UICountry) {\n this.setCountry(value);\n }\n\n onInput(value: string) {\n this.value = (this.selectedCountry?.callingCode ?? '') + value;\n this.onChange(this.value);\n }\n\n filteredCountryTrackByMethod(index: number, el: UICountry): string {\n return el.alpha2Code;\n }\n\n private setCountry(country: UICountry | null): void {\n if (country) {\n this.selectedCountry = country;\n }\n this.value = this.getNumberWithCountryCode();\n this.onChange(this.value);\n }\n\n private getNumberWithCountryCode() {\n const nationalNumber = this.form.value?.phone_number as string;\n return nationalNumber ? (this.selectedCountry?.callingCode ?? '') + nationalNumber : '';\n }\n\n private subscribeToFocusEvents() {\n const selectAndInputFocus$ = combineLatest([\n this.focusMonitor.monitor(this.select),\n this.focusMonitor.monitor(this.input),\n ]).pipe(takeUntil(this.unsubscribeAll$), debounceTime(10));\n\n selectAndInputFocus$.subscribe(([selectFocus, inputFocus]) => {\n this.focused = !!(selectFocus || inputFocus);\n this.stateChanges.next();\n });\n\n selectAndInputFocus$.pipe(take(1)).subscribe(() => {\n this.onTouch();\n });\n }\n\n private preSelectCountry() {\n this.setDisabledState(true);\n combineLatest([\n this.countries$.pipe(\n filter(countries => countries.length > 0),\n first()\n ),\n this.countryCode,\n ])\n .pipe(\n map(([countries, selectedCountry]) => {\n if (!this.initialValue) {\n const country =\n this.getCountryByAlpha2Code(selectedCountry) || this.getCountryByAlpha2Code(this.DEFAULT_COUNTRY_CODE);\n this.setCountry(country as UICountry);\n } else {\n this.value = this.initialValue;\n }\n\n this.setDisabledState(false);\n this.ref.markForCheck();\n })\n )\n .subscribe();\n }\n\n private getCountryByAlpha2Code(alpha2Code: string) {\n return this.countries.value.find(country => country.alpha2Code === alpha2Code);\n }\n\n private getCountryByCallingCode(callingCode: string) {\n return this.countries.value.find(country => country.callingCode === callingCode);\n }\n\n private loadCountries(): void {\n const searchText$: Observable<string> = this.selectFilterCtrl.valueChanges.pipe(debounceTime(100), startWith(''));\n\n combineLatest([this.loadCountries$, searchText$])\n .pipe(\n takeUntil(this.unsubscribeAll$),\n tap(([countries, searchText]) => {\n const searchTextLowerCase = searchText.toLowerCase();\n const filteredCountries = countries\n .filter(\n option =>\n option.name.toLowerCase().includes(searchTextLowerCase) ||\n option.alpha2Code.toLowerCase().includes(searchTextLowerCase) ||\n option.callingCode.toLowerCase().includes(searchTextLowerCase)\n )\n .sort((optionA, optionB) => (optionB.name.startsWith(searchText) ? 1 : -1));\n this.countries.next(filteredCountries);\n }),\n delay(1),\n tap(() => {\n const countryFound = this.getCountryByAlpha2Code(this.selectedCountry?.alpha2Code);\n this.selectedCountry = countryFound || this.selectedCountry;\n this.ref.markForCheck();\n })\n )\n .subscribe();\n }\n\n disableClick(ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n trackByFn = (index: number, value: any) => value.changingThisBreaksApplicationSecurity;\n}\n","<mat-form-field\n [formGroup]=\"form\"\n appearance=\"outline\"\n [color]=\"(errorsLength || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [ngClass]=\"{ disabled: form.disabled || disabled, 'full-width': fullWidth }\"\n>\n <mat-label>{{ 'COMMON.PHONE_NUMBER' | uiTranslate | async }} <span *ngIf=\"required\">*</span></mat-label>\n\n <div matPrefix class=\"country\">\n <button class=\"selected-flag\" matPrefix *ngIf=\"selectedCountry\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + selectedCountry?.alpha2Code?.toLowerCase() + '.svg'\"\n [alt]=\"'Country flag ' + selectedCountry?.alpha2Code?.toLowerCase()\">\n </button>\n <mat-select\n #select\n (selectionChange)=\"onOptionsSelected($event.value)\"\n [value]=\"selectedCountry\"\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'phone-number-select' + ' ' + applicationTheme\"\n [ngClass]=\"{ opened: select.panelOpen }\"\n >\n <mat-select-trigger>{{ selectedCountry?.callingCode }}</mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search\n [formControl]=\"selectFilterCtrl\"\n ngDefaultControl\n placeholderLabel=\"\"\n noEntriesFoundLabel=\"\"\n >\n <ui-icon ngxMatSelectSearchClear size=\"24\" [name]=\"'Close-in-line'\"></ui-icon>\n </ngx-mat-select-search>\n </mat-option>\n <mat-option *ngFor=\"let country of countries$ | async; trackBy: filteredCountryTrackByMethod\" [value]=\"country\">\n <div class=\"country-option\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + country?.alpha2Code?.toLowerCase()! + '.svg'\"\n [alt]=\"'Country flag ' + country?.alpha2Code?.toLowerCase()!\">\n <small>{{ $any([country?.name, '(' + country?.callingCode + ')']) | joinStrings : ' ' }}</small>\n </div>\n </mat-option>\n </mat-select>\n </div>\n\n <input\n (input)=\"onInput(form.get('phone_number')!.value)\"\n formControlName=\"phone_number\"\n (click)=\"disableClick($event)\"\n [ngStyle]=\"{ opacity: disabled ? 0.5 : 1 }\"\n [required]=\"required\"\n matInput\n type=\"text\"\n />\n\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : ('COMMON.PHONE_NUMBER' | uiTranslate | async)\"></ui-validation-error>\n\n </mat-hint>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PhoneInputComponent } from './phone-input.component';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { JoinStringsPipe } from './join-strings.pipe';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SpinnerComponentModule } from '../spinner/spinner.module';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '../validation-error/validation-error.module';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\n\n@NgModule({\n declarations: [PhoneInputComponent, JoinStringsPipe],\n exports: [PhoneInputComponent],\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n ReactiveFormsModule,\n MatSelectModule,\n MatIconModule,\n MatInputModule,\n NgxMatSelectSearchModule,\n IconComponentModule,\n SpinnerComponentModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n ],\n})\nexport class PhoneInputComponentModule {}\n","import { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\n@Component({\n selector: 'ui-password-strength',\n templateUrl: './password-strength.component.html',\n styleUrls: ['./password-strength.component.scss'],\n standalone: false\n})\nexport class PasswordStrengthComponent {\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof PasswordStrengthComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * The password that needs to be checked\n * @property password\n * @type {string}\n * @memberof PasswordStrengthComponent\n */\n @Input() set password(value: string) {\n this._password = value;\n this.checkCriteria(this._password);\n }\n\n /**\n * Event that outputs validation check result\n * @property validationCheck\n * @type {boolean}\n * @memberof PasswordStrengthComponent\n */\n @Output() validationCheck = new EventEmitter<boolean>();\n\n protected progressValue: number;\n protected criteriaPassed: { [key: string]: boolean } = {};\n private _password = '';\n protected criteria: { translateKey: string; key: string }[] = [\n { translateKey: 'PASSWORD.LOWERCASE', key: 'hasLowercase' },\n { translateKey: 'PASSWORD.UPPERCASE', key: 'hasUppercase' },\n { translateKey: 'PASSWORD.NUMBER', key: 'hasNumber' },\n { translateKey: 'PASSWORD.SPECIAL_CHARACTER', key: 'hasSpecialChar' },\n { translateKey: 'PASSWORD.CHARACTERS', key: 'hasMinLength' },\n ];\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n ) {\n if (this.defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n checkCriteria(password: string): void {\n this.criteriaPassed = {\n hasLowercase: /^(?=.*?[a-z])/.test(password),\n hasUppercase: /^(?=.*?[A-Z])/.test(password),\n hasNumber: /^(?=.*?[0-9])/.test(password),\n hasSpecialChar: /^(?=.*?[\" !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~])/.test(password),\n hasMinLength: password.length >= 12,\n };\n\n const passedCount = this.countPassed();\n this.progressValue = Math.min(Math.max(passedCount * (100 / Object.keys(this.criteriaPassed).length), 1), 100);\n this.validationCheck.emit(passedCount === Object.keys(this.criteriaPassed).length);\n }\n\n private countPassed(): number {\n let count = 0;\n for (const key in this.criteriaPassed) {\n if (this.criteriaPassed.hasOwnProperty(key) && this.criteriaPassed[key]) {\n count++;\n }\n }\n return count;\n }\n\n get infoIcon(): IconName {\n return this.applicationTheme === 'classic' ? 'Info' : 'Info-in-line';\n }\n\n get checkIcon(): IconName {\n return this.applicationTheme === 'classic' ? 'Round-check' : 'Check-round-in-line';\n }\n}\n","<div class=\"criteria-container\">\n\n <div class=\"progress\">\n <ui-progress-bar [progress]=\"progressValue === 1 ? 0 : progressValue\" [applicationTheme]=\"applicationTheme\"></ui-progress-bar>\n </div>\n\n <div\n *ngFor=\"let criterion of criteria\"\n class=\"criterion\"\n [ngClass]=\"{ 'passed': criteriaPassed[criterion.key], error: !criteriaPassed[criterion.key] }\"\n >\n <ui-icon [size]=\"'24'\"\n [color]=\"'rebrand-black'\"\n [name]=\"!criteriaPassed[criterion.key] ? infoIcon : checkIcon\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-icon>\n <span>{{ criterion.translateKey | uiTranslate | async }}</span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PasswordStrengthComponent } from './password-strength.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '../progress-bar/progress-bar.component.module';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [PasswordStrengthComponent],\n imports: [CommonModule, IconComponentModule, ProgressBarComponentModule, UiTranslatePipe],\n exports: [PasswordStrengthComponent],\n})\nexport class PasswordStrengthComponentModule {}\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { MultiInputValue } from './multi-input.model';\n\nexport const requiredMultiInput = (control: AbstractControl<MultiInputValue>): ValidationErrors | null => {\n const controlValue = control.value;\n\n const hasRequired = control.hasValidator(Validators.required);\n\n if (hasRequired && controlValue) {\n const anyFalsy = Object.values(controlValue).some(v => !v);\n if (anyFalsy) {\n return { required: true };\n }\n }\n return null;\n};\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable @typescript-eslint/unbound-method */\nimport {\n booleanAttribute,\n Component,\n effect,\n EventEmitter,\n HostBinding,\n input,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n NgControl,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { MultiInputValue } from './multi-input.model';\nimport { requiredMultiInput } from './required-multi-input.validator';\n\n@Component({\n selector: 'ui-multi-input',\n templateUrl: './multi-input.component.html',\n styleUrl: './multi-input.component.scss',\n standalone: false\n})\nexport class MultiInputComponent implements ControlValueAccessor, OnInit {\n /**\n *\n * @description List of items to be displayed in the dropdown list\n * @type {Record<string, string | null | number>[]}\n * @memberof MultiInputComponent\n */\n itemsList = input.required<Record<string, string | null | number>[]>();\n\n /**\n *\n * @description The field to be displayed in the dropdown\n * @type {string}\n * @memberof MultiInputComponent\n */\n itemTextField = input.required<string>();\n\n /**\n *\n * @description The value to be displayed in the droddown\n * @type {string}\n * @memberof MultiInputComponent\n */\n itemValueField = input.required<string>();\n\n /**\n *\n * @description The Value of the multi input\n * @type {MultiInputValue}\n * @memberof MultiInputComponent\n */\n value = input<MultiInputValue>();\n\n /**\n *\n * @description Disables the multi input\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n *\n * @description Defines if the multi input is required\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n required = input(false, { transform: booleanAttribute });\n\n /**\n *\n * @description Defines the label of the multi input\n * @type {string}\n * @memberof MultiInputComponent\n */\n label = input('');\n\n /**\n *\n * @description Defines the placeholder of the multi input\n * @type {string}\n * @memberof MultiInputComponent\n */\n placeholder = input('');\n\n /**\n *\n * @description Allow decimal values in the multi input\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n allowDecimal = input(true, { transform: booleanAttribute });\n\n /**\n *\n * @description Allow negative values in the multi input\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n allowNegative = input(true, { transform: booleanAttribute });\n\n /**\n *\n * @description The errors of the multi input\n * @type {string[]}\n * @memberof MultiInputComponent\n */\n errors = input<string[]>([]);\n\n /**\n *\n * @description Hide built in errors for Reactive Forms\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n hideBuiltInErrors = input(false, { transform: booleanAttribute });\n\n /**\n *\n * @description Hide label in errors\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n hideLabelInErrors = input(false, { transform: booleanAttribute });\n\n /**\n *\n * @description The maximum characters allowed in the multi input\n * @type {number}\n * @memberof MultiInputComponent\n */\n maxCharacters = input(0);\n\n /**\n *\n * @description The validators to apply to input field\n * @type {Validators[]}\n * @memberof MultiInputComponent\n */\n validators = input<ValidatorFn[]>([]);\n\n /**\n *\n * @description The width of the multi input\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n @HostBinding('class.full-width')\n @Input()\n fullWidth: boolean = false;\n\n @Output() valueChange = new EventEmitter<MultiInputValue>();\n\n @HostBinding() class = 'ui-multi-input';\n\n /**\n * @description Indicates that custom errors are provided via content projection.\n * When true, the built-in error hints will be hidden.\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n hasCustomErrors = input(false, { transform: booleanAttribute });\n\n /**\n * @ignore\n */\n onChange = (_: any): void => {};\n\n /**\n * @ignore\n */\n onTouch = (): void => {};\n\n protected readonly multiInputForm = this.fb.group<MultiInputValue>({\n value: null,\n });\n\n constructor(\n @Optional() @Self() protected ngControl: NgControl,\n private readonly fb: FormBuilder\n ) {\n effect(() => {\n this.updateDisableState(this.disabled());\n });\n\n effect(() => {\n const maxCharacters = this.maxCharacters();\n if (maxCharacters) {\n this.inputControl?.addValidators(Validators.maxLength(maxCharacters));\n this.inputControl?.updateValueAndValidity({ emitEvent: false });\n }\n });\n\n effect(() => {\n const inputValidators = this.validators();\n if (inputValidators?.length) {\n this.inputControl?.addValidators(inputValidators);\n this.inputControl?.updateValueAndValidity({ emitEvent: false });\n }\n });\n\n effect(() => {\n const value = this.value();\n // skip in the context of angular Forms\n if (!this.ngControl) {\n this.addDropdownControl();\n this.patchForm(value);\n }\n });\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.multiInputForm.valueChanges.pipe(takeUntilDestroyed()).subscribe(formValue => {\n this.valueChanged(formValue as MultiInputValue);\n });\n }\n\n ngOnInit(): void {\n this.addDropdownControl();\n if (this.ngControl) {\n this.ngControl.control?.addValidators(requiredMultiInput);\n }\n }\n\n writeValue(value: MultiInputValue): void {\n this.addDropdownControl();\n this.patchForm(value);\n }\n\n patchForm(value: MultiInputValue | undefined) {\n if (value) {\n this.multiInputForm.patchValue(value, { emitEvent: false });\n } else {\n this.multiInputForm.reset(undefined, { emitEvent: false });\n }\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.updateDisableState(isDisabled);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n protected valueChanged(value: MultiInputValue): void {\n this.valueChange.emit(value);\n this.onChange(value);\n }\n\n protected get dropdownControl(): AbstractControl<unknown> {\n return this.multiInputForm.controls[this.itemValueField()];\n }\n\n protected get inputControl(): AbstractControl<unknown> {\n return this.multiInputForm.controls.value;\n }\n\n protected markAsTouched(): void {\n this.onTouch();\n }\n\n protected addDropdownControl(): void {\n if (!this.multiInputForm.value[this.itemValueField()]) {\n this.multiInputForm.addControl(this.itemValueField(), new FormControl(null), { emitEvent: false });\n this.updateDisableState(this.disabled());\n }\n }\n\n protected get controlHasError(): boolean {\n if (this.ngControl) {\n return !!(this.ngControl.errors && this.ngControl.touched);\n } else {\n return this.errors()?.length > 0;\n }\n }\n\n protected getValueLength(): number {\n return this.inputControl?.value?.toString().length || 0;\n }\n\n private updateDisableState(state: boolean): void {\n if (state) {\n this.multiInputForm.disable({ emitEvent: false });\n } else {\n this.multiInputForm.enable({ emitEvent: false });\n }\n }\n}\n","<div [formGroup]=\"multiInputForm\">\n <div class=\"controls-wrapper\">\n <ui-dropdown\n [hasError]=\"controlHasError\"\n [formControlName]=\"itemValueField()\"\n [valueList]=\"itemsList()\"\n [textField]=\"itemTextField()\"\n [valueField]=\"itemValueField()\"\n [showBottomContent]=\"false\"\n [allowClear]=\"false\"\n (closed)=\"markAsTouched()\"\n ></ui-dropdown>\n\n <ui-field\n [hasError]=\"controlHasError\"\n formControlName=\"value\"\n [label]=\"label()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [hideBuiltInErrors]=\"true\"\n [showBottomContent]=\"false\"\n [allowOnlyDigits]=\"true\"\n [fullWidth]=\"fullWidth\"\n [allowNegative]=\"allowNegative()\"\n (focusout)=\"markAsTouched()\"\n ></ui-field>\n </div>\n\n @if (!hasCustomErrors()) {\n <mat-hint class=\"info\" *ngIf=\"!controlHasError && maxCharacters() && !errors()?.length\"\n >{{ getValueLength() }} / {{ maxCharacters() }}</mat-hint\n >\n\n @if (errors()?.length || (ngControl?.errors | hasValidationError)) {\n <mat-hint class=\"error\">\n @for (error of errors(); track error) {\n <ui-icon name=\"Error-in-line\"></ui-icon>{{ error }}\n }\n @if ((ngControl?.errors | hasValidationError) && !hideBuiltInErrors()) {\n <ui-validation-error\n [touchedOn]=\"!controlHasError\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors() ? null : label()\"\n ></ui-validation-error>\n }\n </mat-hint>\n }\n }\n <ng-content select=\"[custom-errors]\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MultiInputComponent } from './multi-input.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { DividerComponentModule } from '@testgorilla/tgo-ui/components/divider';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { DropdownComponentModule } from '../dropdown/dropdown.component.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DigitsOnlyDirective } from '../../directives/digits-only.directive';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\nimport { ValidationErrorModule } from '../validation-error/validation-error.module';\nimport { FieldComponentModule } from '../field/field.component.module';\n\n\n\n@NgModule({\n declarations: [MultiInputComponent],\n imports: [\n CommonModule,\n MatInputModule,\n MatSelectModule,\n DividerComponentModule,\n IconComponentModule,\n DropdownComponentModule,\n ReactiveFormsModule,\n DigitsOnlyDirective,\n HasValidationErrorPipe,\n ValidationErrorModule,\n FieldComponentModule,\n ],\n exports: [MultiInputComponent],\n})\nexport class MultiInputComponentModule { }\n","import { InjectionToken } from '@angular/core';\n\nexport const SIDE_PANEL_DATA = new InjectionToken<unknown>('SIDE_PANEL_DATA');\n","/* eslint-disable no-underscore-dangle */\nimport { InjectionToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type SidePanelPosition = 'left' | 'right';\n\nexport enum SidePanelAnimationState {\n Open = 'open',\n Closed = 'closed',\n ClosedRight = 'closedRight',\n ClosedLeft = 'closedLeft',\n}\n\nexport type SidePanelSize = 'small' | 'large';\n\nexport class SidePanelConfig {\n title: string;\n position: SidePanelPosition;\n showBackButton: boolean;\n data?: unknown;\n showCloseButton?: boolean;\n showHeader?: boolean;\n panelClass?: string;\n size?: SidePanelSize;\n}\n\nexport const defaultSidePanelConfig: SidePanelConfig = {\n position: 'right',\n showBackButton: false,\n title: '',\n data: undefined,\n showHeader: true,\n showCloseButton: true,\n size: 'small',\n};\n\nexport const SIDE_PANEL_CONFIG = new InjectionToken<SidePanelConfig>('SIDE_PANEL_CONFIG', {\n providedIn: 'root',\n factory: () => defaultSidePanelConfig,\n});\n\n/**\n * Reference to a side panel opened via the SidePanelService.\n * Similar to MatDialogRef from Angular Material.\n */\nexport class SidePanelRef<T = any, R = any> {\n private readonly _afterClosed = new Subject<T | undefined>();\n\n /**\n * Instance of the component loaded into the side panel.\n * Will be undefined if a TemplateRef was used instead of a component.\n */\n componentInstance?: R;\n\n /**\n * Observable that emits when the side panel is closed.\n * Emits the result passed to the close method, or undefined if no result was provided.\n */\n afterClosed(): Observable<T | undefined> {\n return this._afterClosed.asObservable();\n }\n\n /**\n * Closes the side panel with an optional result.\n * @param result Optional data to be emitted via afterClosed()\n */\n close(result?: T): void {\n // This will be overridden by the service\n }\n\n /** @internal */\n _emitClose(result?: T): void {\n this._afterClosed.next(result);\n this._afterClosed.complete();\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SidePanelAnimationState } from './side-panel.model';\n\nexport const sidePanelAnimationDuration = 150;\n\nexport const sidePanelAnimation = [\n trigger('slideInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ transform: 'translateX(0)' })),\n state(`${SidePanelAnimationState.ClosedRight}`, style({ transform: 'translateX(100%)' })),\n state(`${SidePanelAnimationState.ClosedLeft}`, style({ transform: 'translateX(-100%)' })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedRight}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedLeft}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n\nexport const backdropAnimation = [\n trigger('fadeInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ opacity: 0.25 })),\n state(`${SidePanelAnimationState.Closed}`, style({ opacity: 0 })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.Closed}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { SIDE_PANEL_DATA } from './side-panel-data-injection-token';\nimport { SidePanelComponent } from './side-panel.component';\nimport { SIDE_PANEL_CONFIG, SidePanelConfig, SidePanelPosition, SidePanelRef } from './side-panel.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SidePanelService {\n private SidePanelComponentRef?: ComponentRef<SidePanelComponent>;\n private contentComponentRef?: ComponentRef<any>;\n private embeddedViewRef?: EmbeddedViewRef<any>;\n private currentSidePanelRef?: SidePanelRef<any>;\n private defaultSidePanelConfig: SidePanelConfig = inject(SIDE_PANEL_CONFIG);\n private injector = inject(EnvironmentInjector);\n private appRef = inject(ApplicationRef);\n\n constructor() {}\n\n open<T = any, R = any>(\n content: Type<R> | TemplateRef<any>,\n config: Partial<SidePanelConfig>,\n parentInjector?: Injector\n ): SidePanelRef<T, R> {\n const panelConfig: SidePanelConfig = { ...this.defaultSidePanelConfig, ...config };\n\n const sidePanelRef = new SidePanelRef<T, R>();\n this.currentSidePanelRef = sidePanelRef;\n\n sidePanelRef.close = (result?: T) => {\n this.close(result);\n };\n\n if (!this.SidePanelComponentRef) {\n const injector = this.createSidePanelInjector(panelConfig, parentInjector);\n const SidePanelComponentRef = this.createSidePanelComponent(panelConfig.position, injector);\n this.SidePanelComponentRef = SidePanelComponentRef;\n }\n\n if (content instanceof TemplateRef) {\n this.loadTemplate(content);\n } else {\n this.loadComponent(content, sidePanelRef);\n }\n\n this.SidePanelComponentRef.instance.open();\n\n return sidePanelRef;\n }\n\n close<T = any>(result?: T): void {\n if (this.SidePanelComponentRef) {\n this.SidePanelComponentRef.instance.close(result);\n }\n }\n\n destroyComponent<T = any>(result?: T): void {\n if (this.currentSidePanelRef) {\n this.currentSidePanelRef._emitClose(result);\n this.currentSidePanelRef = undefined;\n }\n\n if (this.SidePanelComponentRef) {\n this.appRef.detachView(this.SidePanelComponentRef.hostView);\n this.SidePanelComponentRef.destroy();\n this.SidePanelComponentRef = undefined;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.destroy();\n this.contentComponentRef = undefined;\n }\n }\n\n private createSidePanelInjector(config: SidePanelConfig, parentInjector?: Injector): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: SidePanelConfig, useValue: config },\n { provide: SIDE_PANEL_DATA, useValue: config.data },\n ],\n });\n }\n\n private createSidePanelComponent(position: SidePanelPosition, injector: Injector): ComponentRef<SidePanelComponent> {\n const sidePanelComponentRef = createComponent(SidePanelComponent, {\n environmentInjector: this.injector,\n elementInjector: injector,\n });\n\n this.appRef.attachView(sidePanelComponentRef.hostView);\n\n const sidePanelEl = (sidePanelComponentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n sidePanelEl.querySelector('.side-panel')?.classList.add(position);\n\n document.body.appendChild(sidePanelEl);\n\n return sidePanelComponentRef;\n }\n\n private loadComponent<R = any>(component: Type<R>, sidePanelRef: SidePanelRef<any, R>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.contentComponentRef = viewContainerRef().createComponent(component);\n // Set the component instance on the SidePanelRef\n sidePanelRef.componentInstance = this.contentComponentRef.instance as R;\n }\n }\n\n private loadTemplate(template: TemplateRef<any>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.embeddedViewRef = viewContainerRef().createEmbeddedView(template);\n }\n }\n}\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\nimport { backdropAnimation, sidePanelAnimation, sidePanelAnimationDuration } from './side-panel.animations';\nimport { SidePanelAnimationState, SidePanelConfig, SidePanelPosition, SidePanelSize } from './side-panel.model';\nimport { SidePanelService } from './side-panel.service';\n\n@Component({\n selector: 'ui-side-panel',\n templateUrl: './side-panel.component.html',\n styleUrls: ['./side-panel.component.scss'],\n animations: [sidePanelAnimation, backdropAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TooltipComponentModule, ButtonComponentModule, UiTranslatePipe, AsyncPipe, NgClass]\n})\nexport class SidePanelComponent {\n sidePanelPosition = signal<SidePanelPosition>('right');\n\n sidePanelContainer = viewChild.required('sidePanelContainer', { read: ViewContainerRef });\n sidePanel = viewChild.required<ElementRef<HTMLDivElement>>('sidePanel');\n backdrop = viewChild.required<ElementRef<HTMLDivElement>>('sidePanelBackdrop');\n language = LanguageService.defaultLanguage;\n isOpen = signal<boolean>(false);\n size = signal<SidePanelSize | undefined>(undefined);\n isSmall = computed(() => this.size() === 'small');\n isLarge = computed(() => this.size() === 'large');\n\n animation = computed(() => {\n if (this.isOpen()) {\n return SidePanelAnimationState.Open;\n }\n\n return this.sidePanelPosition() === 'left'\n ? SidePanelAnimationState.ClosedLeft\n : SidePanelAnimationState.ClosedRight;\n });\n\n private sidePanelService = inject(SidePanelService);\n public sidePanelConfig = inject(SidePanelConfig);\n\n constructor() {\n const { position, size } = this.sidePanelConfig;\n this.sidePanelPosition.set(position);\n this.size.set(size);\n }\n\n open(): void {\n setTimeout(() => {\n this.isOpen.set(true);\n });\n }\n\n close(result?: any): void {\n this.isOpen.set(false);\n setTimeout(() => {\n this.sidePanelService.destroyComponent(result);\n }, sidePanelAnimationDuration);\n }\n}\n","<div class=\"side-panel-backdrop\" #sidePanelBackdrop (click)=\"close()\" [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (sidePanelConfig.showBackButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title\">{{ sidePanelConfig.title }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n","export type SpiderChartSize = 'large' | 'small';\n// These are the sizes of the canvas, not the chart itself. It includes 40px of padding on all sides.\nexport const SmallSpiderChartSize: number = 200;\nexport const LargeSpiderChartSize: number = 280;\nexport type SpiderChartData = {\n labels: string[];\n labelDescription: string[];\n plotData: [PlotData, PlotData] | [PlotData]; // Current implementation supports max 2 datasets.\n};\nexport type PlotData = {\n databaseLabel: string;\n data: number[];\n};\n","import { Component, ElementRef, Input, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { LargeSpiderChartSize, SmallSpiderChartSize, SpiderChartData, SpiderChartSize } from './spider-chart.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { Chart, ChartData, ChartOptions } from 'chart.js';\nimport { Color } from '../../models/colors.model';\nimport { BaseChartDirective } from 'ng2-charts';\n\n@Component({\n selector: 'ui-spider-chart',\n templateUrl: './spider-chart.component.html',\n styleUrls: ['./spider-chart.component.scss'],\n standalone: false\n})\nexport class SpiderChartComponent implements OnInit {\n /**\n * The size of the spider chart.\n * @type {SpiderChartSize}\n * @memberof SpiderChartComponent\n */\n @Input() size: SpiderChartSize = 'large';\n\n /**\n * The data to be used for the spider chart.\n * @type {SpiderChartData}\n * @memberof SpiderChartComponent\n */\n @Input() spiderChartData: SpiderChartData;\n\n /**\n * The step size for the spider chart.\n * @type {number}\n * @memberof SpiderChartComponent\n */\n @Input() stepSize: number = 20;\n\n /**\n * The aria label for the spider chart.\n * @type {string}\n * @memberof SpiderChartComponent\n */\n @Input() ariaLabel: string = 'Radar chart. Press tab to navigate through the chart.';\n\n /**\n * Whether the spider chart is loading.\n * @type {boolean}\n * @memberof SpiderChartComponent\n */\n @Input() loading: boolean = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SpinnerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n @ViewChild(BaseChartDirective) chart: BaseChartDirective;\n @ViewChildren('labelContainer') labelContainers: QueryList<ElementRef>;\n @ViewChildren('fakeDataPoints') fakeDataPoints: QueryList<ElementRef>;\n @ViewChildren('fakeDataPointsSecondary') fakeDataPointsSecondary: QueryList<ElementRef>;\n @ViewChildren('legendItem') legendItems: QueryList<ElementRef>;\n\n radarChartData: ChartData<'radar'> = {\n labels: [],\n datasets: [],\n };\n radarChartOptions: ChartOptions<'radar'>;\n labelPositions: { [key: string]: { x: number; y: number } } = {};\n labelPositionsVisible: boolean = false;\n focusedLabelIndex: number = 0;\n focusedFakeDataPointIndex: number = 0;\n loadingChartData: ChartData<'radar'> = {\n labels: [1, 2, 3, 4, 5, 6],\n datasets: [],\n };\n loadingChartOptions: ChartOptions<'radar'> = {\n responsive: true,\n layout: {\n padding: {\n left: 40,\n right: 40,\n top: 40,\n bottom: 40,\n },\n },\n scales: {\n r: {\n angleLines: {\n display: true,\n color: Color.GRAYSCALE_30,\n },\n grid: {\n color: () => Color.GRAYSCALE_30,\n },\n pointLabels: {\n display: false,\n },\n suggestedMin: 0,\n suggestedMax: 100,\n ticks: {\n stepSize: this.stepSize,\n display: false,\n },\n },\n },\n };\n protected readonly translationContext = 'CHARTS.SPIDER.';\n\n ngOnInit(): void {\n if (!this.loading) {\n this.handleInputErrors();\n this.setChartData();\n this.setChartOptions();\n }\n }\n\n private handleInputErrors() {\n if (!this.spiderChartData.labels || this.spiderChartData.labels.length === 0) {\n throw new Error('The \"labels\" input is required and cannot be empty.');\n }\n if (!this.spiderChartData.labelDescription || this.spiderChartData.labelDescription.length === 0) {\n throw new Error('The \"labelDescription\" input is required and cannot be empty.');\n }\n if (\n this.spiderChartData.labelDescription &&\n this.spiderChartData.labelDescription.length !== this.spiderChartData.labels.length\n ) {\n throw new Error('The \"labelDescription\" input must have the same length as \"labels\".');\n }\n if (!this.spiderChartData.plotData[0].databaseLabel) {\n throw new Error('The \"plotData.databaseLabel\" input is required.');\n }\n if (!this.spiderChartData.plotData[0].data || this.spiderChartData.plotData[0].data.length === 0) {\n throw new Error('The \"plotData.data\" input is required and cannot be empty.');\n }\n if (this.spiderChartData.plotData[0].data.length !== this.spiderChartData.labels.length) {\n throw new Error('The \"plotData.data\" input must have the same length as \"labels\".');\n }\n if (\n this.spiderChartData.plotData.length === 2 &&\n this.spiderChartData.labels.length > 0 &&\n this.spiderChartData.plotData[1].data &&\n this.spiderChartData.plotData[1].data.length !== this.spiderChartData.labels.length\n ) {\n throw new Error('The \"plotData.data\" input must have the same length as \"labels\".');\n }\n }\n\n private setChartData() {\n const datasets = [];\n datasets.push({\n label: this.spiderChartData.plotData[0].databaseLabel,\n data: this.spiderChartData.plotData[0].data,\n fill: true,\n backgroundColor: 'rgba(212, 16, 170, 0.2)',\n borderColor: Color.BRAND_50,\n pointBackgroundColor: Color.BRAND_50,\n pointBorderColor: Color.TGO_WHITE,\n pointHoverBackgroundColor: Color.TGO_WHITE,\n pointHoverBorderColor: Color.BRAND_50,\n });\n if (this.spiderChartData.plotData.length === 2) {\n datasets.push({\n label: this.spiderChartData.plotData[1].databaseLabel,\n data: this.spiderChartData.plotData[1].data,\n fill: false,\n borderColor: Color.BLACK,\n borderDash: [5, 5],\n borderWidth: 1,\n pointBackgroundColor: Color.BLACK,\n pointBorderColor: Color.TGO_WHITE,\n pointHoverBackgroundColor: Color.TGO_WHITE,\n pointHoverBorderColor: Color.BLACK,\n });\n }\n this.radarChartData = {\n labels: this.spiderChartData.labels,\n datasets: datasets,\n };\n }\n\n private setChartOptions() {\n this.radarChartOptions = {\n responsive: true,\n elements: {\n line: {\n borderWidth: 3,\n },\n },\n layout: {\n padding: {\n left: 40,\n right: 40,\n top: 40,\n bottom: 40,\n },\n },\n scales: {\n r: {\n angleLines: {\n display: true,\n color: Color.BLACK,\n },\n grid: {\n color: context => {\n if (context.tick.value === 100) {\n return Color.BLACK;\n }\n return Color.GRAYSCALE_30;\n },\n },\n pointLabels: {\n color: 'black',\n font: {\n family: 'Arial',\n size: 14,\n },\n display: false,\n },\n suggestedMin: 0,\n suggestedMax: 100,\n ticks: {\n stepSize: this.stepSize,\n display: false,\n },\n },\n },\n plugins: {\n legend: {\n display: false,\n },\n },\n };\n }\n\n ngAfterViewInit(): void {\n if (this.chart?.chart && !this.loading) {\n this.logCornerCoordinates(this.chart.chart);\n }\n }\n\n private logCornerCoordinates(chart: Chart) {\n const scale = chart.scales['r'] as any;\n const canvasWidth = this.size === 'large' ? LargeSpiderChartSize : SmallSpiderChartSize;\n const canvasHeight = this.size === 'large' ? LargeSpiderChartSize : SmallSpiderChartSize;\n\n // Loop through the labels and calculate the percentage coordinates\n this.spiderChartData.labels.forEach((label, index) => {\n const position = scale.getPointPositionForValue(index, scale.max);\n\n // Calculate percentage values relative to the canvas size\n const xPercent = (position.x / canvasWidth) * 100;\n const yPercent = ((canvasHeight - position.y) / canvasHeight) * 100; // Inverting the Y-axis\n\n this.labelPositions[label] = { x: Number(xPercent.toFixed(2)), y: Number(yPercent.toFixed(2)) };\n });\n this.labelPositionsVisible = true;\n }\n\n getCenteredLabelBottomPosition(label: string, height: number) {\n const position = this.labelPositions[label];\n const padding = 7;\n if (position.x > 50 || position.x < 50) {\n return `calc(${position.y}% - ${height / 2}px)`;\n } else if (position.y < 50) {\n return `calc(${position.y}% - ${height}px - ${padding}px)`;\n } else {\n return `calc(${position.y}% + ${padding}px)`;\n }\n }\n\n getCenteredLabelLeftPosition(label: string, width: number) {\n const position = this.labelPositions[label];\n const padding = 15;\n if (position.x === 50) {\n return `calc(${position.x}% - ${width / 2}px)`;\n } else if (position.x < 50) {\n return `calc(${position.x}% - ${width}px - ${padding}px)`;\n } else {\n return `calc(${position.x}% + ${padding}px)`;\n }\n }\n\n onLabelKeyDown(event: KeyboardEvent, index: number) {\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n this.focusNextLabel(index);\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n this.focusPreviousLabel(index);\n }\n }\n\n private focusNextLabel(index: number) {\n const nextIndex = index + 1;\n if (nextIndex < this.labelContainers.length) {\n this.labelContainers.get(nextIndex)?.nativeElement.focus();\n } else {\n this.labelContainers.first?.nativeElement.focus();\n }\n this.focusedLabelIndex = nextIndex;\n }\n\n private focusPreviousLabel(index: number) {\n const previousIndex = index - 1;\n if (previousIndex >= 0) {\n this.labelContainers.get(previousIndex)?.nativeElement.focus();\n } else {\n this.labelContainers.last?.nativeElement.focus();\n }\n this.focusedLabelIndex = previousIndex;\n }\n\n onLegendItemKeyDown(event: KeyboardEvent, index: number) {\n if (event.key === 'Enter') {\n this.toggleDatasetVisibility(index);\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n this.focusNextLegendItem(index);\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n this.focusPreviousLegendItem(index);\n }\n }\n\n private focusNextLegendItem(index: number) {\n const nextIndex = index + 1;\n if (nextIndex < this.legendItems.length) {\n this.legendItems.get(nextIndex)?.nativeElement.focus();\n } else {\n this.legendItems.first?.nativeElement.focus();\n }\n }\n\n private focusPreviousLegendItem(index: number) {\n const previousIndex = index - 1;\n if (previousIndex >= 0) {\n this.legendItems.get(previousIndex)?.nativeElement.focus();\n } else {\n this.legendItems.last?.nativeElement.focus();\n }\n }\n\n onFakeDataPointsKeyDown(event: KeyboardEvent, index: number, isSecondary: boolean = false) {\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n this.focusNextFakeDataPoint(index, isSecondary);\n this.showTooltipForDataPoint(index + 1 > this.spiderChartData.labels.length ? 0 : index + 1, isSecondary);\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n this.focusPreviousFakeDataPoint(index, isSecondary);\n this.showTooltipForDataPoint(index - 1 < 0 ? this.spiderChartData.labels.length - 1 : index - 1, isSecondary);\n } else if (event.key === 'Tab') {\n this.resetActiveElement();\n }\n }\n\n private focusNextFakeDataPoint(index: number, isSecondary: boolean = false) {\n const nextIndex = index + 1;\n if (nextIndex < this.fakeDataPoints.length) {\n const fakeDataPoints = isSecondary ? this.fakeDataPointsSecondary : this.fakeDataPoints;\n fakeDataPoints.get(nextIndex)?.nativeElement.focus();\n } else {\n const fakeDataPoints = isSecondary ? this.fakeDataPointsSecondary : this.fakeDataPoints;\n fakeDataPoints.first?.nativeElement.focus();\n }\n if (!isSecondary) {\n this.focusedFakeDataPointIndex = nextIndex;\n }\n }\n\n private focusPreviousFakeDataPoint(index: number, isSecondary: boolean = false) {\n const previousIndex = index - 1;\n if (previousIndex >= 0) {\n const fakeDataPoints = isSecondary ? this.fakeDataPointsSecondary : this.fakeDataPoints;\n fakeDataPoints.get(previousIndex)?.nativeElement.focus();\n } else {\n const fakeDataPoints = isSecondary ? this.fakeDataPointsSecondary : this.fakeDataPoints;\n fakeDataPoints.last?.nativeElement.focus();\n }\n if (!isSecondary) {\n this.focusedFakeDataPointIndex = previousIndex;\n }\n }\n\n showTooltipForDataPoint(index: number, isSecondary: boolean = false) {\n const chartInstance = this.chart?.chart;\n if (!chartInstance) return;\n const activeElement = [{ datasetIndex: isSecondary ? 1 : 0, index }];\n const meta = chartInstance.getDatasetMeta(isSecondary ? 1 : 0);\n const dataPoint = meta.data[index];\n const eventPosition = {\n x: dataPoint.x,\n y: dataPoint.y,\n };\n if (!isSecondary) {\n this.focusedFakeDataPointIndex = index;\n }\n\n chartInstance.tooltip?.setActiveElements(activeElement, eventPosition);\n\n chartInstance.update();\n }\n\n private resetActiveElement() {\n const chartInstance = this.chart?.chart;\n if (!chartInstance) return;\n\n // Clear the active elements to hide the tooltip\n chartInstance.tooltip?.setActiveElements([], { x: 0, y: 0 });\n\n chartInstance.update();\n }\n\n toggleDatasetVisibility(datasetIndex: number) {\n const chartInstance = this.chart?.chart;\n if (!chartInstance) return;\n\n const dataset = chartInstance.data.datasets[datasetIndex];\n dataset.hidden = !dataset.hidden;\n chartInstance.update();\n }\n\n isDatasetVisible(datasetIndex: number) {\n const chartInstance = this.chart?.chart;\n if (!chartInstance) return;\n return !chartInstance.data.datasets[datasetIndex].hidden;\n }\n\n getFirstLine(label: string): string {\n const words = label.split(' ');\n let firstLine = '';\n for (const word of words) {\n if ((firstLine + word).length <= 20) {\n firstLine += (firstLine ? ' ' : '') + word;\n } else {\n break;\n }\n }\n return firstLine;\n }\n\n getSecondLine(label: string): string {\n const firstLine = this.getFirstLine(label);\n return label.substring(firstLine.length).trim();\n }\n}\n","<div class=\"spider-chart-container\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabel\">\n <div class=\"spacing-container\"\n [ngClass]=\"{'small-spacing': radarChartData.labels && radarChartData.labels.length % 2 === 1 && !loading}\">\n <div class=\"chart-container\"\n [style.width]=\"size === 'large' ? '280px' : '200px'\"\n [style.height]=\"size === 'large' ? '280px' : '200px'\">\n @if (!loading) {\n <canvas\n baseChart\n [data]=\"radarChartData\"\n [options]=\"radarChartOptions\"\n type=\"radar\"\n class=\"chart\"\n >\n </canvas>\n } @else {\n <canvas\n baseChart\n [data]=\"loadingChartData\"\n [options]=\"loadingChartOptions\"\n type=\"radar\"\n class=\"chart\"\n >\n </canvas>\n <ui-spinner></ui-spinner>\n }\n\n @if (labelPositionsVisible) {\n <div class=\"overlay-container\">\n @for (label of spiderChartData.labels; track label) {\n <div class=\"label-container\" #labelContainer\n [matTooltip]=\"spiderChartData.labelDescription[$index]\"\n [tabindex]=\"$index === 0 ? '0' : '-1'\"\n (keydown)=\"onLabelKeyDown($event, $index)\"\n [attr.aria-label]=\"spiderChartData.labelDescription[$index]\"\n [style.left]=\"getCenteredLabelLeftPosition(label, labelContainer.offsetWidth)\"\n [style.bottom]=\"getCenteredLabelBottomPosition(label, labelContainer.offsetHeight)\">\n @if (!(label.length > 20 && size === 'large' && spiderChartData.labels.length < 9)) {\n <div class=\"label\" [style.max-width]=\"size === 'large' ? '135px' : '100px'\">\n {{ label }}\n </div>\n } @else {\n <div>\n <div class=\"label\" [style.max-width]=\"size === 'large' ? '135px' : '100px'\">{{ label | memoizeFunc : getFirstLine }}</div>\n <div class=\"label\" [style.max-width]=\"size === 'large' ? '135px' : '100px'\">{{ label | memoizeFunc : getSecondLine : this }}</div>\n </div>\n }\n <span class=\"value\">{{ spiderChartData.plotData[0].data[$index] }}</span>\n </div>\n <span class=\"fake-data-points\" #fakeDataPoints\n [tabindex]=\"focusedLabelIndex === $index ? '0' : '-1'\"\n (focus)=\"$index === focusedLabelIndex ? showTooltipForDataPoint($index) : null\"\n (keydown)=\"onFakeDataPointsKeyDown($event, $index)\">\n </span>\n @if (radarChartData.datasets.length > 1) {\n <span class=\"fake-data-points-secondary\" #fakeDataPointsSecondary\n [tabindex]=\"focusedFakeDataPointIndex === $index ? '0' : '-1'\"\n (focus)=\"$index === focusedFakeDataPointIndex ? showTooltipForDataPoint($index, true) : null\"\n (keydown)=\"onFakeDataPointsKeyDown($event, $index, true)\">\n </span>\n }\n }\n </div>\n }\n </div>\n </div>\n @if (radarChartData.datasets.length > 0) {\n <div class=\"legend-container\">\n @for (dataset of radarChartData.datasets; track dataset.label) {\n <div class=\"legend-item\"\n (click)=\"toggleDatasetVisibility($index)\"\n [tabindex]=\"$index === 0 ? '0' : '-1'\"\n role=\"button\"\n [attr.aria-pressed]=\"isDatasetVisible($index) ? false : true\"\n [attr.aria-label]=\"isDatasetVisible($index) ?\n ((translationContext + 'DATASET_VISIBLE') | uiTranslate : { dataset: dataset.label } | async) :\n ((translationContext + 'DATASET_HIDDEN') | uiTranslate : { dataset: dataset.label } | async)\"\n (keydown)=\"onLegendItemKeyDown($event, $index)\"\n #legendItem>\n <span class=\"legend-line\" [ngClass]=\"{'solid-line': $index === 0, 'dashed-line': $index === 1}\"></span>\n <span class=\"legend-label\" [style.text-decoration]=\"isDatasetVisible($index) ? 'none' : 'line-through'\">\n {{ dataset.label }}\n </span>\n </div>\n }\n </div>\n }\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { SpiderChartComponent } from './spider-chart.component';\nimport { NgChartsModule } from 'ng2-charts';\nimport { Chart, registerables } from 'chart.js';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { SpinnerComponentModule } from '../spinner/spinner.module';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\n\nChart.register(...registerables);\n\n@NgModule({\n declarations: [SpiderChartComponent],\n exports: [SpiderChartComponent],\n imports: [\n NgClass,\n UiTranslatePipe,\n NgChartsModule,\n MatTooltipModule,\n UiTranslatePipe,\n MemoizeFuncPipe,\n SpinnerComponentModule,\n CommonModule,\n ],\n})\nexport class SpiderChartComponentModule {}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n ModelSignal,\n Optional,\n computed,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IKeyboardEvent } from '../../models/keyboard-events.model';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { Language } from '@testgorilla/tgo-ui/components/core';\nimport { LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DividerComponentModule } from '@testgorilla/tgo-ui/components/divider';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '../progress-bar/progress-bar.component.module';\nimport { RadioButtonComponentModule } from '../radio-button/radio-button.component.module';\nimport type { ChecklistItem } from './checklist.model';\n\n@Component({\n selector: 'ui-checklist',\n imports: [\n ProgressBarComponentModule,\n RadioButtonComponentModule,\n IconComponentModule,\n ButtonComponentModule,\n DividerComponentModule,\n UiTranslatePipe,\n AsyncPipe,\n ],\n templateUrl: './checklist.component.html',\n styleUrl: './checklist.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChecklistComponent {\n private readonly domSanitizer = inject(DomSanitizer);\n /**\n * Label for the checklist\n * @type {string}\n * @memberof ChecklistComponent\n */\n label = input('');\n\n /**\n * Sub title/Description for the checklist\n * @type {string}\n * @memberof ChecklistComponent\n */\n description = input(null, {\n transform: (value: string) => this.domSanitizer.bypassSecurityTrustHtml(value),\n });\n\n /**\n * Items for the checklist\n * @type {ModelSignal<ChecklistItem[]>}\n * @memberof ChecklistComponent\n */\n items = model<ChecklistItem[]>([]);\n\n /**\n * Application theme\n * @type {ApplicationTheme}\n * @memberof ChecklistComponent\n */\n applicationTheme = input<ApplicationTheme | undefined>(undefined);\n readonly theme = computed(() => this.applicationTheme() ?? this.defaultAppTheme);\n\n /**\n * Confirm button label\n * @type {string}\n * @memberof ChecklistComponent\n */\n footerButtonLabel = input<string | undefined>(undefined);\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ChecklistComponent\n */\n ariaLabel = input<string | undefined>(undefined);\n\n /**\n * The language to be used\n * @property language\n * @type {Language}\n * @memberof ChecklistComponent\n */\n language = input(LanguageService.defaultLanguage);\n\n /**\n * A boolean property that determines whether the checklist items should be automatically checked.\n *\n * @type {boolean}\n */\n autocheck = input(true);\n\n /**\n * Event emitter that triggers when the footer button is clicked.\n * Emits a void event.\n */\n footerButtonClicked = output<void>();\n\n /**\n * An output event emitter that signifies the completion of a task or process.\n * This event does not carry any payload.\n */\n readonly completed = output<void>();\n\n /**\n * Represents the currently selected item in the checklist.\n * This is an instance of the `ChecklistItem` supports two-way binding.\n */\n selectedItem = model<ChecklistItem>();\n\n readonly currentIndex = computed(() => {\n const items = this.items();\n const selectedItem = this.selectedItem();\n return selectedItem ? items.indexOf(selectedItem) : -1;\n });\n\n protected progress = computed(() => {\n const items = this.items();\n const total = items.length;\n const checked = items.filter(item => item.checked).length;\n const progressValue = Number(((checked / total) * 100).toFixed(0));\n if (progressValue === 100) {\n this.completed.emit();\n }\n return progressValue;\n });\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {}\n\n selectItem(item: ChecklistItem) {\n if ((item.checked || item.disabled || this.selectedItem() === item) && !item.reselect) {\n return;\n }\n if (this.autocheck()) {\n item.checked = item?.reselect ? !item.checked : true;\n this.items.set([...this.items()]);\n }\n this.selectedItem.set(item);\n }\n\n keydownHandler($event: KeyboardEvent, item: ChecklistItem) {\n if (IKeyboardEvent.SPACE === $event.key || IKeyboardEvent.ENTER === $event.key) {\n $event.preventDefault();\n this.selectItem(item);\n }\n }\n\n next() {\n const currentIndex = this.currentIndex();\n if (currentIndex < this.items().length - 1) {\n this.selectItem(this.items()[currentIndex + 1]);\n }\n }\n\n prev() {\n const currentIndex = this.currentIndex();\n if (currentIndex > 0) {\n this.selectItem(this.items()[currentIndex - 1]);\n }\n }\n\n footerButtonClick(event: Event) {\n event.preventDefault();\n this.footerButtonClicked.emit();\n }\n}\n","@if (label()) {\n <h4 [attr.aria-label]=\"ariaLabel() ?? label()\">{{ label() }}</h4>\n}\n@if (description()) {\n <div aria-label=\"description\" class=\"description\" [innerHTML]=\"description()\"></div>\n}\n\n<ui-progress-bar [showPercentage]=\"true\" [progress]=\"progress()\"></ui-progress-bar>\n\n<div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ 'COMMON.PROGRESS' | uiTranslate: { progress: progress() } | async }}\n</div>\n\n<ui-divider size=\"small\" companyColor=\"#d3d3d3\"> </ui-divider>\n\n<div class=\"checklist-container\" data-testid=\"checklist-container\">\n @for (item of items(); track item.value + item.checked; let i = $index) {\n <div\n data-testid=\"checklist-item\"\n class=\"checklist-item\"\n [class.disabled]=\"item.disabled\"\n [class.checked]=\"item.checked\"\n [class.active]=\"item === selectedItem() && !autocheck()\"\n [attr.aria-labelledby]=\"'item-' + item.value\"\n [tabindex]=\"item?.disabled ? -1 : 0\"\n (click)=\"selectItem(item)\"\n (keydown)=\"keydownHandler($event, item)\"\n >\n <div class=\"content\">\n <ui-icon\n [name]=\"item.checked ? 'Check-in-line' : 'Circle-in-line'\"\n [filled]=\"item.checked\"\n class=\"checked\"\n [applicationTheme]=\"theme()\"\n [size]=\"'16'\"\n [color]=\"item.checked ? 'white' : item.disabled ? '#919191' : 'dark'\"\n ></ui-icon>\n <div class=\"label-and-description\">\n <span [id]=\"'item-' + item.value\" class=\"label\">{{ item.label }}</span>\n @if (item.description) {\n <span class=\"item-description\">{{ item.description }}</span>\n }\n </div>\n </div>\n\n @if (item.hasLink && !item.disabled) {\n <div class=\"navigation\">\n <ui-icon\n [tabindex]=\"-1\"\n class=\"link\"\n [name]=\"'Arrow-chevron-right-filled'\"\n [applicationTheme]=\"theme()\"\n [size]=\"'24'\"\n color=\"rebrand-black\"\n ></ui-icon>\n </div>\n }\n </div>\n }\n</div>\n@if (footerButtonLabel()) {\n <div class=\"action-btn\">\n <ui-button\n data-testid=\"checklist-footer-button\"\n [label]=\"footerButtonLabel()!\"\n [variant]=\"'link'\"\n [companyColor]=\"'#000'\"\n (buttonClickEvent)=\"footerButtonClick($event)\"\n ></ui-button>\n </div>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DividerComponentModule } from '@testgorilla/tgo-ui/components/divider';\nimport { EllipseTextDirective } from \"@testgorilla/tgo-ui/components/core\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\n\n@Component({\n selector: 'ui-media-card',\n imports: [\n DividerComponentModule,\n ButtonComponentModule,\n EllipseTextDirective,\n MatTooltipModule\n ],\n templateUrl: './media-card.component.html',\n styleUrl: './media-card.component.scss'\n})\nexport class MediaCardComponent {\n /**\n * The title of the card\n * @type {string}\n * @memberof MediaCardComponent\n */\n @Input({ required: true }) title: string;\n /**\n * The description of the card\n * @type {string}\n * @memberof MediaCardComponent\n */\n @Input({ required: true }) description: string;\n /**\n * The image of the card\n * @type {string}\n * @memberof MediaCardComponent\n */\n @Input({ required: true }) image: string;\n /**\n * The label of the button\n * @type {string}\n * @memberof MediaCardComponent\n */\n @Input({ required: true }) buttonLabel = '';\n @Output() buttonClick = new EventEmitter<void>();\n protected showTitleTooltip = false;\n}\n","<img [attr.src]=\"image\" alt=\"card image\">\n\n<div class=\"media-card-content\">\n <div class=\"media-card-title\" [isMultiline]=\"true\" [matTooltip]=\"showTitleTooltip ? title : ''\" uiEllipseText (onChangeTextState)=\"showTitleTooltip = $event\">\n {{ title }}\n </div>\n\n <div class=\"media-card-description\">\n {{ description }}\n </div>\n</div>\n\n<ui-divider [size]=\"'small'\"></ui-divider>\n\n<div class=\"media-card-action\">\n <ui-button [variant]=\"'ghost'\" [label]=\"buttonLabel\" (buttonClickEvent)=\"buttonClick.emit()\"></ui-button>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { Chart, ChartData, ChartOptions, TooltipOptions } from 'chart.js';\nimport { Color } from '../../models/colors.model';\nimport { _DeepPartialObject } from 'chart.js/dist/types/utils';\nimport gaussian from 'gaussian';\n\nenum PercentileThreshold {\n LOWEST = 20,\n LOWER = 40,\n AVERAGE = 60,\n HIGHER = 80,\n HIGHEST = 100,\n}\n\nexport type LegendPosition = 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n\n@Component({\n selector: 'ui-gaussian-chart',\n templateUrl: './gaussian-chart.component.html',\n styleUrls: ['./gaussian-chart.component.scss'],\n standalone: false\n})\nexport class GaussianChartComponent implements OnInit {\n /**\n * The candidate score to be displayed on the chart.\n * @type {number}\n * @memberof GaussianChartComponent\n */\n @Input() score!: number;\n\n /**\n * The best candidate score to be displayed on the chart.\n * @type {number}\n * @memberof GaussianChartComponent\n */\n @Input() bestCandidateScore!: number;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SpinnerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Controls the position of the legend relative to the chart.\n * @type {LegendPosition}\n * @memberof GaussianChartComponent\n */\n @Input() legendPosition: LegendPosition = 'bottom-start';\n\n readonly minXValue = -3;\n readonly maxXValue = 3;\n readonly minYValue = 0;\n readonly stepSize = 0.1;\n readonly pointsToSkip = 2;\n readonly actualMinXvalue = this.minXValue + this.pointsToSkip * this.stepSize;\n readonly actualMaxXvalue = this.maxXValue - this.pointsToSkip * this.stepSize;\n readonly normalContainerPadding = 50; //in px\n readonly bestScoreThreshold = 92;\n readonly bestScoreSpacingRight = '4px';\n readonly bestScoreSpacingLeft = '-39px';\n\n PercentileThreshold = PercentileThreshold;\n chart: Chart;\n gaussianDistribution: gaussian.Gaussian;\n activeBucket: PercentileThreshold;\n overlayXValue: number;\n overlayYValue: number;\n overlayXBestScoreValue: number;\n overlayYBestScoreValue: number;\n maxYValue: number;\n\n gaussianChartData: ChartData<'line'> = {\n labels: [],\n datasets: [],\n };\n gaussianChartOptions: ChartOptions<'line'>;\n protected readonly translationContext = 'CHARTS.GAUSSIAN_CHART.';\n\n ngOnInit(): void {\n if (this.score === undefined || this.score === null) {\n throw new Error('Input \"score\" is required for GaussianChartComponent.');\n }\n if (this.bestCandidateScore === undefined || this.bestCandidateScore === null) {\n throw new Error('Input \"bestCandidateScore\" is required for GaussianChartComponent.');\n }\n this.setActiveBucket();\n this.gaussianDistribution = gaussian(0, 1);\n this.maxYValue = this.gaussianDistribution.pdf(0);\n this.setOverlayValues();\n this.setOverlayValuesForBestScore();\n this.setChartData();\n this.setChartOptions();\n }\n\n private setChartData() {\n const xValues: number[] = [];\n const yValues: number[] = [];\n const labels = this.generateLabels(this.minXValue, this.maxXValue, this.stepSize);\n\n for (let x = this.minXValue; x < this.maxXValue + this.stepSize; x = Number((x + this.stepSize).toFixed(2))) {\n xValues.push(x);\n yValues.push(this.gaussianDistribution.pdf(x));\n }\n\n this.gaussianChartData = {\n labels,\n datasets: this.generateDataset(yValues),\n };\n }\n\n private setChartOptions() {\n this.gaussianChartOptions = {\n responsive: true,\n maintainAspectRatio: false,\n scales: this.getScale(),\n plugins: {\n // To be used only for dev purpose\n // tooltip: this.getTooltip(),\n // Comment the below line if you enable the call for tooltip\n tooltip: {\n enabled: false,\n },\n legend: {\n display: false,\n },\n },\n };\n }\n\n private getTooltip(): _DeepPartialObject<TooltipOptions<'line'>> {\n return {\n intersect: false,\n mode: 'nearest',\n displayColors: false,\n callbacks: {\n label: tooltipItem => {\n const value = (this.gaussianDistribution.cdf(parseFloat(tooltipItem.label)) * 100).toFixed(2);\n return `${value}%`;\n },\n title: () => '', // Disable the default title\n },\n };\n }\n\n private getScale(): {\n x: { display: boolean; grid: { display: boolean } };\n y: { display: boolean; grid: { display: boolean } };\n } {\n return {\n x: {\n display: false,\n grid: {\n display: false, // Disable grid lines for x-axis\n },\n },\n y: {\n display: false,\n grid: {\n display: false, // Disable grid lines for y-axis\n },\n },\n };\n }\n\n private generateDataset(\n yValues: number[]\n ): { data: any[]; label: string; borderColor: Color; borderWidth: number; pointRadius: number; fill: boolean }[] {\n return [\n {\n data: [...yValues.slice(0, this.pointsToSkip), ...Array(yValues.length - this.pointsToSkip).fill(null)],\n label: '',\n borderColor: this.activeBucket === PercentileThreshold.LOWEST ? Color.ACCENT_20 : Color.TGO_WHITE,\n borderWidth: 2,\n pointRadius: 0,\n fill: false,\n },\n {\n data: [\n ...Array(this.pointsToSkip).fill(null),\n ...yValues.slice(this.pointsToSkip, yValues.length - this.pointsToSkip),\n ...Array(this.pointsToSkip).fill(null),\n ],\n label: '',\n borderColor: Color.BLACK,\n borderWidth: 2,\n pointRadius: 0,\n fill: false,\n },\n {\n data: [\n ...Array(yValues.length - this.pointsToSkip).fill(null),\n ...yValues.slice(yValues.length - this.pointsToSkip, yValues.length),\n ],\n label: '',\n borderColor: this.activeBucket === PercentileThreshold.HIGHEST ? Color.ACCENT_20 : Color.TGO_WHITE,\n borderWidth: 2,\n pointRadius: 0,\n fill: false,\n },\n ];\n }\n\n private generateLabels(min: number, max: number, step: number): string[] {\n const labels = [];\n for (let x = min; x < max + step; x = Number((x + step).toFixed(2))) {\n labels.push(x.toFixed(1));\n }\n return labels;\n }\n\n private setActiveBucket(): void {\n if (this.score < PercentileThreshold.LOWEST) {\n this.activeBucket = PercentileThreshold.LOWEST;\n } else if (this.score >= PercentileThreshold.LOWEST && this.score < PercentileThreshold.LOWER) {\n this.activeBucket = PercentileThreshold.LOWER;\n } else if (this.score >= PercentileThreshold.LOWER && this.score < PercentileThreshold.AVERAGE) {\n this.activeBucket = PercentileThreshold.AVERAGE;\n } else if (this.score >= PercentileThreshold.AVERAGE && this.score < PercentileThreshold.HIGHER) {\n this.activeBucket = PercentileThreshold.HIGHER;\n } else if (this.score >= PercentileThreshold.HIGHER) {\n this.activeBucket = PercentileThreshold.HIGHEST;\n }\n }\n\n // For more context: https://testgorilla.atlassian.net/wiki/spaces/SR/pages/1813905736/Percentiles+curve+FE+implementation\n private setOverlayValues(): void {\n const { overlayXValue, overlayYValue } = this.calculateOverlayValues(this.score);\n this.overlayXValue = overlayXValue;\n this.overlayYValue = overlayYValue;\n }\n\n private setOverlayValuesForBestScore(): void {\n const { overlayXValue, overlayYValue } = this.calculateOverlayValues(this.bestCandidateScore);\n this.overlayXBestScoreValue = overlayXValue;\n this.overlayYBestScoreValue = overlayYValue;\n }\n\n private calculateOverlayValues(score: number): { overlayXValue: number; overlayYValue: number } {\n const xValue = this.mapRange(score, 0, 100, this.minXValue, this.maxXValue);\n const yValue = this.gaussianDistribution.pdf(xValue);\n let overlayXValue = score;\n let overlayYValue = this.mapRange(yValue, this.minYValue, this.maxYValue, 0, 100);\n\n if (xValue <= this.actualMinXvalue || xValue >= this.actualMaxXvalue) {\n const xValueExtreme = xValue <= this.actualMinXvalue ? this.actualMinXvalue : this.actualMaxXvalue;\n const yValueExtreme = this.gaussianDistribution.pdf(xValueExtreme);\n overlayXValue = this.mapRange(xValueExtreme, this.minXValue, this.maxXValue, 0, 100);\n overlayYValue = this.mapRange(yValueExtreme, this.minYValue, this.maxYValue, 0, 100);\n }\n\n return { overlayXValue, overlayYValue };\n }\n\n private mapRange(value: number, inMin: number, inMax: number, outMin: number, outMax: number): number {\n return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n }\n\n getCalcPosition([percentage, pixels, operation = 'add']: [number, number, 'add' | 'subtract']): string {\n const operator = operation === 'add' ? '+' : '-';\n return `calc(${percentage}% ${operator} ${pixels}px)`;\n }\n\n getBestScoreContentPosition(bestScore: number): string {\n return bestScore < this.bestScoreThreshold ? this.bestScoreSpacingRight : this.bestScoreSpacingLeft;\n }\n\n getScoreTranslationKey(score: number): string {\n if (score < PercentileThreshold.LOWEST) {\n return 'PERCENTILE_LABEL_TYPES.WELL_BELOW_AVERAGE';\n } else if (score >= PercentileThreshold.LOWEST && score < PercentileThreshold.LOWER) {\n return 'PERCENTILE_LABEL_TYPES.BELOW_AVERAGE';\n } else if (score >= PercentileThreshold.LOWER && score < PercentileThreshold.AVERAGE) {\n return 'PERCENTILE_LABEL_TYPES.AVERAGE';\n } else if (score >= PercentileThreshold.AVERAGE && score < PercentileThreshold.HIGHER) {\n return 'PERCENTILE_LABEL_TYPES.ABOVE_AVERAGE';\n } else {\n return 'PERCENTILE_LABEL_TYPES.WELL_ABOVE_AVERAGE';\n }\n }\n}\n","<div\n class=\"chart-section\"\n *ngIf=\"score\"\n [attr.aria-label]=\"\n translationContext + 'ARIA_LABEL'\n | uiTranslate\n : {\n score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async,\n }\n | async\n \"\n tabindex=\"0\"\n>\n <!-- Legend positioned at top -->\n @if (legendPosition === 'top-start' || legendPosition === 'top-end') {\n <ng-container [ngTemplateOutlet]=\"legendTemplate\"></ng-container>\n }\n\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart [data]=\"gaussianChartData\" [options]=\"gaussianChartOptions\" type=\"line\" class=\"chart\">\n </canvas>\n <div\n class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc: getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc: getCalcPosition\"\n >\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{ score }}</span>\n </div>\n </div>\n <div\n class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc: getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\"\n >\n <div\n class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc: getBestScoreContentPosition : this\"\n >\n <ui-icon name=\"Trophy\"></ui-icon>\n {{ bestCandidateScore }}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST' | uiTranslate | async }}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <!-- Legend positioned at bottom -->\n @if (legendPosition === 'bottom-start' || legendPosition === 'bottom-end') {\n <ng-container [ngTemplateOutlet]=\"legendTemplate\"></ng-container>\n }\n</div>\n\n<!-- Reusable legend template -->\n<ng-template #legendTemplate>\n <div class=\"legend-container\" [ngClass]=\"'legend-' + legendPosition\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\" color=\"gray\"></ui-icon>\n {{ translationContext + 'CANDIDATE_SCORE' | uiTranslate | async }}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\" color=\"gray\"></ui-icon>\n {{ translationContext + 'HIGHEST_SCORE' | uiTranslate | async }}\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { GaussianChartComponent } from './gaussian-chart.component';\nimport { NgChartsModule } from 'ng2-charts';\nimport { Chart, registerables } from 'chart.js';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\n\nChart.register(...registerables);\n\n@NgModule({\n declarations: [GaussianChartComponent],\n exports: [GaussianChartComponent],\n imports: [\n NgClass,\n UiTranslatePipe,\n NgChartsModule,\n MatTooltipModule,\n CommonModule,\n IconComponentModule,\n MemoizeFuncPipe,\n ],\n})\nexport class GaussianChartComponentModule {}\n","import { ChangeDetectionStrategy, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport {\n SkillAreaData,\n SkillAreaGroup,\n SkillAreaGroupTypes,\n SkillAreaSpiderChartData,\n} from '../../models/universal-skills-report.model';\nimport { UniversalSkillsService } from '../../services/universal-skills.service';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { forkJoin, take } from 'rxjs';\n\n@Component({\n selector: 'ui-universal-skills-spider-charts',\n templateUrl: './universal-skills-spider-charts.component.html',\n styleUrls: ['./universal-skills-spider-charts.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class UniversalSkillsSpiderChartsComponent implements OnInit {\n /**\n * Defines the application theme\n * @property applicationTheme\n * @type {ApplicationTheme}\n * @memberof UniversalSkillsSpiderChartsComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * The list of items to be used\n * @property items\n * @type {SkillAreaData[]}\n * @memberof UniversalSkillsReportComponent\n */\n @Input() skillAreaDataList: SkillAreaData[];\n\n /**\n * Defines if the component is loading\n * @property loading\n * @type {boolean}\n * @memberof UniversalSkillsSpiderChartsComponent\n */\n @Input() loading: boolean = false;\n\n /**\n * Defines the size of the spider chart\n * @property size\n * @type {'small' | 'large'}\n * @memberof UniversalSkillsSpiderChartsComponent\n */\n @Input() size: 'small' | 'large' = 'large';\n\n readonly translationContext = 'UNIVERSAL_SKILLS_REPORT.';\n\n skillAreaGroupMap: Record<SkillAreaGroupTypes, SkillAreaGroup>;\n skillAreaSpiderChartData: SkillAreaSpiderChartData[] = [];\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private universalSkillsService: UniversalSkillsService,\n private uiTranslatePipe: UiTranslatePipe\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n this.universalSkillsService.initializeSkillAreaGroupMap();\n this.universalSkillsService.prepareSkillAreaGroupMap(this.skillAreaDataList);\n this.skillAreaGroupMap = this.universalSkillsService.getSkillAreaGroupMap();\n this.prepareSpiderChartData();\n }\n\n prepareSpiderChartData(): void {\n this.skillAreaSpiderChartData = [];\n Object.values(this.skillAreaGroupMap).forEach(skillAreaGroup => {\n const labelObservables = skillAreaGroup.skillAreaList.map(skillArea =>\n this.uiTranslatePipe.transform(`${this.translationContext}SKILL_AREA_TYPES.${skillArea.skillAreaName}.TITLE`)\n );\n\n const labelDescriptionObservables = skillAreaGroup.skillAreaList.map(skillArea =>\n this.uiTranslatePipe.transform(\n `${this.translationContext}SKILL_AREA_TYPES.${skillArea.skillAreaName}.DESCRIPTION`\n )\n );\n\n const allObservables = [...labelObservables, ...labelDescriptionObservables];\n const translations: string[] = [];\n allObservables.forEach(observable => {\n observable.pipe(take(1)).subscribe(translation => {\n translations.push(translation);\n });\n });\n const labels = translations.slice(0, labelObservables.length);\n const labelDescriptions = translations.slice(labelObservables.length);\n\n this.skillAreaSpiderChartData.push({\n title: skillAreaGroup.title,\n description: skillAreaGroup.description,\n spiderChartData: {\n labels: labels,\n labelDescription: labelDescriptions,\n plotData:\n skillAreaGroup.skillAreaList?.[0]?.poolPercentileScoring !== undefined\n ? [\n {\n data: skillAreaGroup.skillAreaList.map(skillArea => skillArea.percentileScoring),\n databaseLabel: \"This candidate's score\",\n },\n {\n data: skillAreaGroup.skillAreaList.map(skillArea => skillArea.poolPercentileScoring ?? 0),\n databaseLabel: 'Average score of all candidates',\n },\n ]\n : [\n {\n data: skillAreaGroup.skillAreaList.map(skillArea => skillArea.percentileScoring),\n databaseLabel: \"This candidate's score\",\n },\n ],\n },\n });\n });\n }\n}\n","@for (spiderChartData of skillAreaSpiderChartData; track spiderChartData) {\n <ui-accordion class=\"universal-skills-spider-charts\" [label]=\"(spiderChartData.title | uiTranslate | async) || ''\" variant=\"filter\">\n <ui-spider-chart [spiderChartData]=\"spiderChartData.spiderChartData\" [loading]=\"loading\" [size]=\"size\"></ui-spider-chart>\n </ui-accordion>\n @if ($index < skillAreaSpiderChartData.length - 1) {\n <ui-divider class=\"universal-skills-spider-charts-divider\" size=\"small\"></ui-divider>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, KeyValuePipe } from '@angular/common';\nimport { UniversalSkillsSpiderChartsComponent } from './universal-skills-spider-charts.component';\nimport { AccordionComponentModule } from '../accordion/accordion.component.module';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { ProgressBarComponentModule } from '../progress-bar/progress-bar.component.module';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { OrdinalSuffixPipe } from '../../pipes/ui-ordinal-suffix.pipe';\nimport { SpiderChartComponentModule } from '../spider-chart/spider-chart.module';\nimport { DividerComponentModule } from '@testgorilla/tgo-ui/components/divider';\n\n@NgModule({\n declarations: [UniversalSkillsSpiderChartsComponent],\n imports: [\n CommonModule,\n AccordionComponentModule,\n BadgeComponentModule,\n ProgressBarComponentModule,\n SpiderChartComponentModule,\n DividerComponentModule,\n MemoizeFuncPipe,\n UiTranslatePipe,\n OrdinalSuffixPipe,\n KeyValuePipe,\n ],\n providers: [UiTranslatePipe],\n exports: [UniversalSkillsSpiderChartsComponent],\n})\nexport class UniversalSkillsSpiderChartsComponentModule {}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n Inject,\n input,\n Input,\n OnChanges,\n Optional,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IKeyboardEvent } from '../../models/keyboard-events.model';\nimport { ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { FilterButtonOption, FilterValue, OptionChangeEvent } from './filter-button.model';\n\n@Component({\n selector: 'ui-filter-button',\n templateUrl: './filter-button.component.html',\n styleUrls: ['./filter-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class FilterButtonComponent implements OnChanges {\n @HostBinding() class = 'ui-filter-button';\n\n /**\n * The button label when no value is selected.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() label = '';\n\n /**\n * Optional message to display on the overflow bottom.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() message? = '';\n\n /**\n * List of selected values.\n *\n * @type {string[]}\n * @memberof FilterButtonComponent\n */\n @Input() value: FilterValue[] = [];\n\n /**\n * Whether the component is disabled.\n * Default: false.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() disabled = false;\n\n /**\n * List of options.\n *\n * @type {OptionType}\n * @memberof FilterButtonComponent\n */\n options = input<FilterButtonOption[]>([]);\n\n /**\n * Whether the user should be allowed to clear the values.\n * Default: true.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() allowClear = true;\n\n /**\n * Whether the user should be allowed to select single or multiple values.\n * Default: false.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() singleSelection? = false;\n\n /**\n * The icon name to display.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n *\n **/\n\n @Input() iconName?: IconName;\n\n /**\n * The position of the icon.\n * Default: 'right'.\n *\n * @type {ButtonIconPosition}\n * @memberof FilterButtonComponent\n */\n @Input() iconPosition?: ButtonIconPosition = 'right';\n\n /**\n * Optional message to display if there are no options to select available\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() noOptionsMessage? = '';\n\n /**\n * Emits the list of selected values when the selection changes.\n *\n * @type {EventEmitter<string[]>}\n * @memberof FilterButtonComponent\n */\n @Output() changed = new EventEmitter<FilterValue[]>();\n\n /**\n * Emits the option change event\n *\n * @type {EventEmitter<OptionChangeEvent>}\n * @memberof FilterButtonComponent\n */\n @Output() optionChange = new EventEmitter<OptionChangeEvent>();\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FilterButtonComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n @ViewChild('overlayContainer') overlayContainer: any;\n @ViewChildren('filterOption') filterOptions: QueryList<any>;\n\n isOpen = signal<boolean>(false);\n displayedLabel = signal<string>('');\n tooltip = signal<string>('');\n search = signal<string>('');\n showTooltip: { [key: string]: boolean } = {};\n displayedOptions = computed(() => {\n let lastSectionTitle: string;\n return this.options()\n .map(option => {\n lastSectionTitle = option.sectionTitle || lastSectionTitle;\n return { ...option, sectionTitle: lastSectionTitle };\n })\n .filter(option => option.label.toLowerCase().includes(this.search().toLowerCase()));\n });\n readonly MIN_OPTIONS_LENGTH_FOR_SEARCH = 8;\n protected keyManager: FocusKeyManager<HTMLElement>;\n protected translationContext = 'FILTER_BUTTON.';\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private readonly cdr: ChangeDetectorRef\n ) {\n if (this.defaultAppTheme) {\n this.applicationTheme = this.defaultAppTheme;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // eslint-disable-next-line dot-notation\n if (changes['value']) {\n this.updateLabel();\n }\n }\n\n clearValue(): void {\n this.value = [];\n this.updateLabel();\n this.changed.emit(this.value);\n }\n\n outsideClick() {\n window.setTimeout(() => {\n this.isOpen.set(false);\n });\n }\n\n toggle(): void {\n this.isOpen.set(!this.isOpen());\n if (this.isOpen()) {\n this.keyManager = new FocusKeyManager(this.filterOptions).withWrap();\n this.keyManager.setActiveItem(0);\n }\n this.cdr.markForCheck();\n }\n\n isSelected(value?: FilterValue) {\n return this.value?.includes(value || '');\n }\n\n optionChanged(selected: boolean, option: FilterButtonOption) {\n this.value = this.value || [];\n if (this.singleSelection) {\n this.value = selected ? [option.value] : [];\n } else {\n if (selected) {\n this.value.push(option.value);\n } else {\n this.value.splice(this.value.indexOf(option.value), 1);\n }\n }\n this.changed.emit(this.value);\n this.optionChange.emit({ selected, option });\n this.updateLabel();\n }\n\n keyDownHandler(ev: any) {\n if (ev.key === IKeyboardEvent.ARROW_DOWN) {\n ev.preventDefault();\n this.keyManager.setNextItemActive();\n } else if (ev.key === IKeyboardEvent.ARROW_UP) {\n ev.preventDefault();\n this.keyManager.setPreviousItemActive();\n } else if (ev.key === IKeyboardEvent.ESCAPE) {\n this.isOpen.set(false);\n }\n }\n\n onLabelEllipsisChange(isEllipsis: boolean, value: FilterValue): void {\n this.showTooltip[value] = isEllipsis;\n }\n\n private updateLabel() {\n this.value = this.value || [];\n let displayedLabel = '';\n let tooltip = '';\n const sortedLabels = this.options()\n .filter(option => this.value.includes(option.value))\n .map(item => item?.label || '');\n\n if (sortedLabels.length > 0) {\n displayedLabel = this.options().find(option => option.value === this.value[0])?.label || '';\n tooltip = `${this.label}${sortedLabels.map(value => `\\n • ${value}`).join('')}`;\n }\n\n if (this.value.length > 1) {\n displayedLabel += ` (+${this.value.length - 1})`;\n }\n this.displayedLabel.set(displayedLabel);\n this.tooltip.set(tooltip);\n this.cdr.markForCheck();\n }\n}\n","<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (displayedOptions().length) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ displayedOptions()[keyManager.activeItemIndex ?? 0].label }}\n {{\n translationContext + 'ACTIVE_ITEM'\n | uiTranslate: { active: (keyManager.activeItemIndex ?? 0) + 1, total: filterOptions.length }\n | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ displayedOptions()[keyManager.activeItemIndex ?? 0].label }}\n {{\n (value.includes(displayedOptions()[keyManager.activeItemIndex ?? 0].value)\n ? translationContext + 'SELECTED'\n : translationContext + 'DESELECTED'\n )\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer>\n <div class=\"ui-filter-button-header\" *ngIf=\"options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"search.set($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n <div class=\"ui-filter-button-list\" #list (keydown)=\"keyDownHandler($event)\">\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <div *ngFor=\"let section of displayedOptions(); index as i\">\n <div\n *ngIf=\"section.sectionTitle && section.sectionTitle !== displayedOptions()[i - 1]?.sectionTitle\"\n class=\"section-title\"\n >\n {{ section.sectionTitle }}\n </div>\n <div\n class=\"item\"\n [class.item-selected]=\"isSelected(section.value)\"\n (click)=\"optionChanged(!isSelected(section.value), section)\"\n >\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"singleSelection\"\n [tabIndex]=\"i === 0 ? 0 : -1\"\n [selected]=\"isSelected(section.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, section)\"\n [applicationTheme]=\"applicationTheme\"\n #filterOption\n >\n </ui-radio-button>\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"section.labelNumber !== undefined\"\n *ngIf=\"!singleSelection\"\n [tabIndex]=\"i === 0 ? 0 : -1\"\n [checked]=\"isSelected(section.value)\"\n (changed)=\"optionChanged($event, section)\"\n [applicationTheme]=\"applicationTheme\"\n #filterOption\n ></ui-checkbox>\n <ui-icon *ngIf=\"section.icon\" [applicationTheme]=\"applicationTheme\" [name]=\"section.icon\"></ui-icon>\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n (onChangeTextState)=\"onLabelEllipsisChange($event, section.value)\"\n [matTooltip]=\"showTooltip[section.value] ? section.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ section.label }}\n </span>\n <span class=\"item-number\" *ngIf=\"section.labelNumber !== undefined\">({{ section.labelNumber }})</span>\n </div>\n </div>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n <div class=\"ui-filter-button-footer\" *ngIf=\"allowClear || message\">\n <ui-button\n *ngIf=\"allowClear\"\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n </div>\n </ng-template>\n</ng-container>\n","import { EllipseTextDirective } from '@testgorilla/tgo-ui/components/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FilterButtonComponent } from './filter-button.component';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { CheckboxComponentModule } from '../checkbox/checkbox.component.module';\nimport { RadioButtonComponentModule } from '../radio-button/radio-button.component.module';\nimport { FieldComponentModule } from '../field/field.component.module';\nimport { FormsModule } from '@angular/forms';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\n\n@NgModule({\n declarations: [FilterButtonComponent],\n imports: [\n CommonModule,\n FormsModule,\n MatTooltipModule,\n OverlayModule,\n UiTranslatePipe,\n ButtonComponentModule,\n IconComponentModule,\n CheckboxComponentModule,\n FieldComponentModule,\n EllipseTextDirective,\n RadioButtonComponentModule,\n ],\n exports: [FilterButtonComponent],\n})\nexport class FilterButtonComponentModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: false\n})\nexport class TruncatePipe implements PipeTransform {\n transform(input: any, length?: number, suffix?: string, preserve?: boolean): any {\n if (typeof input !== 'string') {\n return input;\n }\n\n length = length === undefined ? input.length : length;\n\n if (input.length <= length) {\n return input;\n }\n\n preserve = preserve || false;\n suffix = suffix || '';\n let index = length;\n\n if (preserve) {\n if (input.indexOf(' ', length) === -1) {\n index = input.length;\n } else {\n index = input.indexOf(' ', length);\n }\n }\n\n return input.substring(0, index) + suffix;\n }\n}\n","import {\n AfterViewInit,\n Component,\n input,\n signal,\n ViewChild,\n OnDestroy,\n computed,\n EventEmitter,\n Output,\n effect,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { BreadcrumbItem, BreadcrumbSize } from './breadcrumb.model';\nimport { ElementRef } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { OverflowMenuButtonsType } from '../overflow-menu/overflow-menu.model';\n\n@Component({\n selector: 'ui-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BreadcrumbComponent implements AfterViewInit, OnDestroy {\n size = input<BreadcrumbSize>('large');\n items = input<BreadcrumbItem[]>([]);\n applicationTheme = input<ApplicationTheme>('light');\n includeBackButton = input<boolean>(false);\n isLoading = input<boolean>(false);\n numberOfLoadingItems = input<number>(3);\n maxItemLength = input<number>(18);\n @Output() selectItem: EventEmitter<string> = new EventEmitter<string>();\n @Output() backButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n loadingItems = computed(() => Array(this.numberOfLoadingItems()));\n isOverflowing = signal<boolean>(false);\n visibleItems = signal<BreadcrumbItem[]>([]);\n overflowItems = signal<BreadcrumbItem[]>([]);\n overflowButtonItems = computed<OverflowMenuButtonsType[]>(() =>\n this.overflowItems().map(item => ({\n label: item.label,\n value: item.value,\n }))\n );\n shouldTruncateLastItem = signal<boolean>(false);\n\n @ViewChild('breadcrumbContainer') breadcrumbContainer!: ElementRef<HTMLElement>;\n\n private resizeObserver?: ResizeObserver;\n private itemsInOverflow = 0;\n private previousLoadingState?: boolean;\n\n constructor() {\n // React to items changes and recalculate overflow\n effect(() => {\n this.items();\n this.itemsInOverflow = 0;\n if (this.breadcrumbContainer?.nativeElement) {\n // Wait for DOM to render new items before calculating overflow\n setTimeout(() => this.calculateItemDistribution(), 0);\n }\n });\n\n // React to loading state changes and setup ResizeObserver when loading changes from true to false\n effect(() => {\n const currentLoadingState = this.isLoading();\n\n if (this.previousLoadingState === true && currentLoadingState === false) {\n this.setupResizeObserver();\n }\n\n this.previousLoadingState = currentLoadingState;\n });\n }\n\n ngAfterViewInit() {\n this.calculateItemDistribution();\n this.setupResizeObserver();\n }\n\n ngOnDestroy() {\n this.resizeObserver?.disconnect();\n }\n\n private calculateItemDistribution() {\n if (!this.breadcrumbContainer?.nativeElement || this.items().length === 0) {\n this.resetToAllVisible();\n return;\n }\n\n const element = this.breadcrumbContainer.nativeElement;\n const hasHorizontalOverflow = element.scrollWidth > element.clientWidth;\n\n if (hasHorizontalOverflow) {\n this.handleOverflow();\n } else if (this.itemsInOverflow > 0) {\n // Check if we can bring items back from overflow\n this.tryReduceOverflow();\n } else {\n this.resetToAllVisible();\n }\n }\n\n private handleOverflow() {\n this.itemsInOverflow = Math.min(this.itemsInOverflow + 1, this.items().length - 1);\n\n this.updateItemArrays();\n this.isOverflowing.set(true);\n\n // Wait for DOM to render the updated template after hiding items\n // We need to measure dimensions AFTER the DOM has been updated with the new visible items\n setTimeout(() => {\n if (this.breadcrumbContainer?.nativeElement) {\n const element = this.breadcrumbContainer.nativeElement;\n const stillOverflowing = element.scrollWidth > element.clientWidth;\n\n if (stillOverflowing && this.itemsInOverflow < this.items().length - 1) {\n this.handleOverflow();\n } else if (stillOverflowing && this.itemsInOverflow === this.items().length - 1) {\n this.shouldTruncateLastItem.set(true);\n }\n }\n }, 0);\n }\n\n private tryReduceOverflow() {\n const testItemsInOverflow = this.itemsInOverflow - 1;\n\n if (testItemsInOverflow >= 0) {\n const testVisibleItems = this.items().slice(testItemsInOverflow);\n const testOverflowItems = testItemsInOverflow > 0 ? this.items().slice(0, testItemsInOverflow) : [];\n\n this.visibleItems.set(testVisibleItems);\n this.overflowItems.set(testOverflowItems);\n\n // Always reset truncation when trying to reduce overflow\n this.shouldTruncateLastItem.set(false);\n\n // Wait for DOM to render with test configuration before measuring\n setTimeout(() => {\n if (this.breadcrumbContainer?.nativeElement) {\n const element = this.breadcrumbContainer.nativeElement;\n const hasOverflow = element.scrollWidth > element.clientWidth;\n\n if (!hasOverflow) {\n // It fits! Update the counter\n this.itemsInOverflow = testItemsInOverflow;\n this.isOverflowing.set(this.itemsInOverflow > 0);\n\n // Try to reduce more if there are still items in overflow\n if (this.itemsInOverflow > 0) {\n // Schedule next reduction attempt after current render cycle\n setTimeout(() => this.tryReduceOverflow(), 0);\n }\n } else {\n // Doesn't fit, revert to previous state\n this.updateItemArrays();\n\n // Wait for DOM to render reverted state before checking truncation\n setTimeout(() => {\n if (this.breadcrumbContainer?.nativeElement) {\n const containerElement = this.breadcrumbContainer.nativeElement;\n const stillOverflowing = containerElement.scrollWidth > containerElement.clientWidth;\n\n if (stillOverflowing && this.itemsInOverflow === this.items().length - 1) {\n this.shouldTruncateLastItem.set(true);\n }\n }\n }, 0);\n }\n }\n }, 0);\n } else {\n // testItemsInOverflow < 0, means we're trying to show all items\n this.resetToAllVisible();\n\n // Wait for DOM to render all items before measuring overflow\n setTimeout(() => {\n if (this.breadcrumbContainer?.nativeElement) {\n const element = this.breadcrumbContainer.nativeElement;\n const hasOverflow = element.scrollWidth > element.clientWidth;\n\n if (hasOverflow) {\n // Still overflows with all items, need to go back to overflow state\n this.itemsInOverflow = 1; // Start with minimal overflow\n this.handleOverflow();\n }\n }\n }, 0);\n }\n }\n\n private updateItemArrays() {\n if (this.itemsInOverflow > 0) {\n this.overflowItems.set(this.items().slice(0, this.itemsInOverflow));\n this.visibleItems.set(this.items().slice(this.itemsInOverflow));\n } else {\n this.resetToAllVisible();\n }\n }\n\n private resetToAllVisible() {\n this.visibleItems.set(this.items());\n this.overflowItems.set([]);\n this.isOverflowing.set(false);\n this.shouldTruncateLastItem.set(false);\n this.itemsInOverflow = 0;\n }\n\n private setupResizeObserver() {\n if (!this.breadcrumbContainer?.nativeElement) {\n return;\n }\n\n this.resizeObserver = new ResizeObserver(() => {\n this.calculateItemDistribution();\n });\n\n this.resizeObserver.observe(this.breadcrumbContainer.nativeElement);\n }\n}\n","@if (!isLoading()) {\n <div class=\"breadcrumb\" [attr.theme]=\"applicationTheme()\" #breadcrumbContainer [class]=\"'breadcrumb-' + size()\">\n @if (includeBackButton()) {\n <ui-button\n [variant]=\"'icon-button'\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (buttonClickEvent)=\"backButtonClickEvent.emit($event)\"\n ></ui-button>\n }\n @if (isOverflowing()) {\n <ui-overflow-menu\n [applicationTheme]=\"applicationTheme()\"\n [contentTemplateRef]=\"overflowMenu\"\n [buttons]=\"overflowButtonItems()\"\n [matTooltip]=\"('COMMON.OPTIONS' | uiTranslate | async)!\"\n [matTooltipClass]=\"applicationTheme()\"\n [isDynamicMenu]=\"true\"\n (selectItem)=\"selectItem.emit($event)\"\n class=\"breadcrumb-overflow-menu\"\n ></ui-overflow-menu>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n @for (item of visibleItems(); track item.value) {\n @if (!$last) {\n <span\n class=\"breadcrumb-item\"\n tabindex=\"0\"\n [matTooltip]=\"item.label.length > maxItemLength() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [attr.aria-label]=\"item.label\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label | truncate: maxItemLength() : '...' }}\n </span>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n } @else {\n <strong\n class=\"breadcrumb-item-active\"\n tabindex=\"0\"\n [matTooltip]=\"shouldTruncateLastItem() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [class.breadcrumb-item-active-truncated]=\"shouldTruncateLastItem()\"\n [attr.aria-label]=\"item.label\"\n [attr.aria-current]=\"'page'\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label }}\n </strong>\n }\n }\n </div>\n} @else {\n <div class=\"breadcrumb\">\n @for (i of loadingItems(); track $index) {\n <ui-skeleton count=\"1\" [theme]=\"{ width: '160px', margin: '10px 0 0' }\"></ui-skeleton>\n @if ($index !== numberOfLoadingItems() - 1) {\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n }\n </div>\n}\n<ng-template #overflowMenu>\n <div class=\"breadcrumb-item breadcrumb-overflow\" [class]=\"'breadcrumb-' + size()\">...</div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { OverflowMenuComponentModule } from '../overflow-menu/overflow-menu.component.module';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { SkeletonComponent } from '@testgorilla/tgo-ui/components/skeleton';\nimport { TruncatePipe } from '../../pipes/truncate.pipe';\n\n@NgModule({\n declarations: [BreadcrumbComponent, TruncatePipe],\n imports: [\n CommonModule,\n IconComponentModule,\n MatTooltipModule,\n OverflowMenuComponentModule,\n ButtonComponentModule,\n SkeletonComponent,\n UiTranslatePipe,\n ],\n providers: [TruncatePipe],\n exports: [BreadcrumbComponent],\n})\nexport class BreadcrumbComponentModule {}\n","/* eslint-disable */\n\n/* Components */\n// Universal skills report\nexport * from './components/universal-skills-report/universal-skills-report.component';\nexport * from './components/universal-skills-report/universal-skills-report.component.module';\nexport * from './models/universal-skills-report.model';\n// Alert Banner\nexport * from './components/alert-banner/alert-banner.component';\nexport * from './components/alert-banner/alert-banner.component.module';\n//AI Feedback\nexport * from './components/ai-feedback/ai-feedback.component';\nexport * from './components/ai-feedback/ai-feedback.model';\nexport * from './components/ai-feedback/ai-feedback.module';\n// Button - moved to @testgorilla/tgo-ui/components/button\n// Card\nexport * from './components/card/card.component';\nexport * from './components/card/card.component.module';\nexport * from './components/card/card.model';\n// Selectable Card\nexport * from './components/selectable-card/selectable-card.component';\nexport * from './components/selectable-card/selectable-card.component.module';\n// Checkbox\nexport * from './components/checkbox/checkbox.component';\nexport * from './components/checkbox/checkbox.component.module';\n// Dialog\nexport * from './components/dialog/dialog.component';\nexport * from './components/dialog/dialog.component.module';\nexport * from './components/dialog/dialog.model';\nexport * from './components/dialog/dialog.service';\n// Media Dialog\nexport * from './components/media-dialog/media-dialog.component';\nexport * from './components/media-dialog/media-dialog.model';\n// Donut Chart\nexport * from './components/donut-chart/donut-chart.component';\nexport * from './components/donut-chart/donut-chart.component.module';\n// Elevation shadow - moved to @testgorilla/tgo-ui/components/elevation-shadow\n// Field\nexport * from './components/field/field.component';\nexport * from './components/field/field.component.module';\nexport * from './components/field/field.model';\n// Inline Field\nexport * from './components/inline-field/inline-field.component';\nexport * from './components/inline-field/inline-field.component.module';\nexport * from './components/inline-field/inline-field.model';\n// File upload\nexport * from './components/file-upload/file-upload.component';\nexport * from './components/file-upload/file-upload.component.module';\n// Icon - moved to @testgorilla/tgo-ui/components/icon\n// Icon + label\nexport * from './components/icon-label/icon-label.component';\nexport * from './components/icon-label/icon-label.component.module';\n// Logo\nexport * from './components/logo/logo.component';\nexport * from './components/logo/logo.component.module';\nexport * from './components/logo/logo.model';\n// Navbar\nexport * from './components/navbar/navbar.component';\nexport * from './components/navbar/navbar.component.module';\nexport * from './components/navbar/navbar.model';\n// Deprecated Paginator\nexport * from './components/deprecated-paginator/deprecated-paginator.component';\nexport * from './components/deprecated-paginator/deprecated-paginator.component.module';\n// Progress bar\nexport * from './components/progress-bar/progress-bar.component';\nexport * from './components/progress-bar/progress-bar.component.module';\n//Prompt\nexport * from './components/prompt/prompt.component';\nexport * from './components/prompt/prompt.module';\nexport * from './components/prompt/prompt.model';\n// Radio button\nexport * from './components/radio-button/radio-button.component';\nexport * from './components/radio-button/radio-button.component.module';\n// Snackbar\nexport * from './components/snackbar/snackbar.component';\nexport * from './components/snackbar/snackbar.component.module';\nexport * from './components/snackbar/snackbar.model';\nexport * from './components/snackbar/snackbar.service';\n// Data Property Getter Pipe\nexport * from './pipes/data-property-getter';\n// Tag\nexport * from './components/tag/tag.component';\nexport * from './components/tag/tag.component.module';\nexport * from './components/tag/tag.model';\n// Tooltip - moved to @testgorilla/tgo-ui/components/tooltip\n// Dropdown\nexport * from './components/dropdown/dropdown.component';\nexport * from './components/dropdown/dropdown.component.module';\nexport * from './components/dropdown/dropdown.model';\n// Spinner\nexport * from './components/spinner/spinner.component';\nexport * from './components/spinner/spinner.model';\nexport * from './components/spinner/spinner.module';\n// Confirm Dialog\nexport * from './components/confirm-dialog/confirm-dialog.component';\nexport * from './components/confirm-dialog/confirm-dialog.component.module';\nexport * from './components/confirm-dialog/confirm-dialog.model';\n// Datepicker\nexport * from './components/datepicker/datepicker.component';\nexport * from './components/datepicker/datepicker.component.module';\n// Rating\nexport * from './components/rating/rating.component';\nexport * from './components/rating/rating.component.module';\n// Scale\nexport * from './components/scale/scale.component';\nexport * from './components/scale/scale.component.module';\n// Scale Table\nexport * from './components/scale-table/scale-table.component';\nexport * from './components/scale-table/scale-table.model';\n// Tag\nexport * from './components/tag/tag.component';\nexport * from './components/tag/tag.component.module';\n// Toggle\nexport * from './components/toggle/toggle.component';\nexport * from './components/toggle/toggle.component.module';\n// Avatar\nexport * from './components/avatar/avatar.component';\nexport * from './components/avatar/avatar.component.module';\nexport * from './components/avatar/avatar.model';\n// Stepper\nexport * from './components/stepper/stepper.component';\nexport * from './components/stepper/stepper.component.module';\n// Step\nexport * from './components/step/step.component';\nexport * from './components/step/step.component.module';\n// Input Autocomplete\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/autocomplete/autocomplete.component.module';\nexport * from './components/autocomplete/autocomplete.model';\n// Badge - moved to @testgorilla/tgo-ui/components/badge\n// Radial Progress\nexport * from './components/radial-progress/radial-progress.component';\nexport * from './components/radial-progress/radial-progress.component.module';\nexport * from './components/radial-progress/radial-progress.model';\n// Empty State\nexport * from './components/empty-state/empty-state.component';\nexport * from './components/empty-state/empty-state.component.module';\nexport * from './components/empty-state/empty-state.model';\n// Table\nexport * from './components/table/table.component';\nexport * from './components/table/table.component.module';\nexport * from './components/table/table.model';\n// Paginator\nexport * from './components/paginator/paginator.component';\nexport * from './components/paginator/paginator.component.module';\n// Side Sheet\nexport * from './components/side-sheet/side-sheet.component';\nexport * from './components/side-sheet/side-sheet.component.module';\nexport * from './components/side-sheet/side-sheet.model';\nexport * from './components/side-sheet/side-sheet.service';\n// Slider\nexport * from './components/slider/slider.component';\nexport * from './components/slider/slider.component.module';\nexport * from './components/slider/slider.model';\n// Segmented Bar\nexport * from './components/segmented-bar/segmented-bar.component';\nexport * from './components/segmented-bar/segmented-bar.component.module';\nexport * from './components/segmented-bar/segmented-bar.model';\n// Page Header\nexport * from './components/page-header/page-header.component';\nexport * from './components/page-header/page-header.component.module';\n// Accordion\nexport * from './components/accordion/accordion.component';\nexport * from './components/accordion/accordion.component.module';\nexport * from './components/accordion/accordion.model';\n// Tabs\nexport * from './components/tabs/tab.directive';\nexport * from './components/tabs/tabs.component';\nexport * from './components/tabs/tabs.component.module';\nexport * from './components/tabs/tabs.model';\n// Language - moved to @testgorilla/tgo-ui/components/core\n//Overflow Menu\nexport * from './components/overflow-menu/overflow-menu.component';\nexport * from './components/overflow-menu/overflow-menu.model';\nexport * from './components/overflow-menu/overflow-menu.component.module';\n//Application Theme - moved to @testgorilla/tgo-ui/components/core\n// Segmented Button\nexport * from './components/segmented-button/segmented-button.component';\nexport * from './components/segmented-button/segmented-button.component.module';\nexport * from './components/segmented-button/segmented-button.model';\n// Password Criteria\nexport * from './components/password-criteria/password.component';\nexport * from './components/password-criteria/password.component.module';\n// Phone Input\nexport * from './components/phone-input/phone-input.component';\nexport * from './components/phone-input/phone-input.component.module';\nexport * from './components/phone-input/phone-input.model';\n// Colors\nexport * from './models/colors.model';\n// Password Strength\nexport * from './components/password-strength/password-strength.component';\nexport * from './components/password-strength/password-strength.component.module';\n// Icons service - moved to @testgorilla/tgo-ui/components/icon\n// Is Mobile Token\nexport * from './providers/is-mobile';\n// Multi input\nexport * from './components/multi-input/multi-input.component';\nexport * from './components/multi-input/multi-input.component.module';\nexport * from './components/multi-input/multi-input.model';\n// Validation Error\nexport * from './components/validation-error/validation-error.component';\nexport * from './components/validation-error/validation-error.module';\n// Side panel\nexport * from './components/side-panel/side-panel-data-injection-token';\nexport * from './components/side-panel/side-panel.component';\nexport * from './components/side-panel/side-panel.model';\nexport * from './components/side-panel/side-panel.service';\n// Spider Chart\nexport * from './components/spider-chart/spider-chart.component';\nexport * from './components/spider-chart/spider-chart.model';\nexport * from './components/spider-chart/spider-chart.module';\n// Checklist\nexport * from './components/checklist/checklist.component';\nexport * from './components/checklist/checklist.model';\n// Media card\nexport * from './components/media-card/media-card.component';\n// Gaussian Chart\nexport * from './components/gaussian-chart/gaussian-chart.component';\nexport * from './components/gaussian-chart/gaussian-chart.module';\n// Universal Skills Spider Charts\nexport * from './components/universal-skills-spider-charts/universal-skills-spider-charts.component';\nexport * from './components/universal-skills-spider-charts/universal-skills-spider-charts.component.module';\nexport * from './services/universal-skills.service';\n// Memoize\nexport * from './pipes/memoize-func.pipe';\n// Filter Button\nexport * from './components/filter-button/filter-button.component';\nexport * from './components/filter-button/filter-button.component.module';\nexport * from './components/filter-button/filter-button.model';\n// Breadcrumb\nexport * from './components/breadcrumb/breadcrumb.component';\nexport * from './components/breadcrumb/breadcrumb.component.module';\nexport * from './components/breadcrumb/breadcrumb.model';\n// Shared Directives - moved to @testgorilla/tgo-ui/components/core\n// Shared Pipes - moved to @testgorilla/tgo-ui/components/core\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1.UniversalSkillsService","i3.AccordionComponent","i4","i5.ProgressBarComponent","i6.MemoizeFuncPipe","i7","i8.OrdinalSuffixPipe","i1","i5","i6.ValidationErrorComponent","i8","i9.HasValidationErrorPipe","i1.CardComponent","i2.CheckboxComponent","i5.DialogComponent","i6.ProgressBarComponent","i6","i9","i10.ValidationErrorComponent","i11.DigitsOnlyDirective","i12","i13","i14.HasValidationErrorPipe","i4.FieldComponent","i3.ProgressBarComponent","i4.DragDropDirective","i5.NameInitialsPipe","i1.AvatarComponent","i1.SideSheetService","i6.LogoComponent","i2.SideSheetService","i8.LogoComponent","i10.AvatarComponent","i11.SideSheetComponent","i13.MobileNavbarSideSheetComponent","i14","i15","i2.FieldComponent","i4.OverflowMenuComponent","i5.TagComponent","i8.ValidationErrorComponent","i10.HasValidationErrorPipe","i3.DialogComponent","i3.DatepickerService","i8.NoDateFormatDirective","i9.ValidationErrorComponent","i10","i11.HasValidationErrorPipe","i2.HalfStarPipe","i1.ScaleComponent","i5.SpinnerComponent","i4.StepComponent","i5.RadialProgressComponent","i6.StepLineElementDirective","i8.TagComponent","i12.PreventInputDirective","i13.SpinnerComponent","i14.SelectTextDirective","i16.HasValidationErrorPipe","i17.TransformItemPipe","i18.IncludesPipe","i5.PaginatorComponent","i10.DynamicComponentDirective","i11.DataPropertyGetterPipe","i12.MemoizeFuncPipe","i13.SentenceCasePipe","i11","i12.HasValidationErrorPipe","i13.JoinStringsPipe","i5.DropdownComponent","i7.FieldComponent","i8.HasValidationErrorPipe","i4.SpinnerComponent","i4.SpiderChartComponent","i7.CheckboxComponent","i8.FieldComponent","i10.RadioButtonComponent","i3.OverflowMenuComponent","i8.TruncatePipe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA;IACY;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,mBAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAwB;AACxB,IAAA,mBAAA,CAAA,mBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAqB;AACrB,IAAA,mBAAA,CAAA,mBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAoB;AACtB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,GAI9B,EAAA,CAAA,CAAA;AAED;IACY;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,cAAA,CAAA,sBAAA,CAAA,GAAA,uBAA8C;AAC9C,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,cAAA,CAAA,sBAAA,CAAA,GAAA,uBAA8C;AAC9C,IAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,uBAA6C;AAC7C,IAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,sBAA4C;AAC5C,IAAA,cAAA,CAAA,yBAAA,CAAA,GAAA,2BAAqD;AACrD,IAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,sBAA4C;AAC5C,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AAElC,IAAA,cAAA,CAAA,wBAAA,CAAA,GAAA,yBAAkD;AAClD,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,cAAA,CAAA,0BAAA,CAAA,GAAA,2BAAsD;AACtD,IAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,mBAAsC;AACtC,IAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,mBAAsC;AACtC,IAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,mBAAsC;AAEtC,IAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,oBAAwC;AACxC,IAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,sBAA4C;AAC5C,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACpC,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAChC,CAAC,EAxBW,cAAc,KAAd,cAAc,GAwBzB,EAAA,CAAA,CAAA;;MCzCY,sBAAsB,CAAA;AAHnC,IAAA,WAAA,GAAA;QAIW,IAAkB,CAAA,kBAAA,GAAG,0BAA0B;AAGhD,QAAA,IAAA,CAAA,uBAAuB,GAAuB;AACpD,YAAA;AACE,gBAAA,cAAc,CAAC,aAAa;AAC5B,gBAAA,cAAc,CAAC,oBAAoB;AACnC,gBAAA,cAAc,CAAC,aAAa;AAC5B,gBAAA,cAAc,CAAC,oBAAoB;AACnC,gBAAA,cAAc,CAAC,mBAAmB;AAClC,gBAAA,cAAc,CAAC,mBAAmB;AAClC,gBAAA,cAAc,CAAC,uBAAuB;AACtC,gBAAA,cAAc,CAAC,mBAAmB;AAClC,gBAAA,cAAc,CAAC,cAAc;AAC9B,aAAA;AACD,YAAA;AACE,gBAAA,cAAc,CAAC,sBAAsB;AACrC,gBAAA,cAAc,CAAC,aAAa;AAC5B,gBAAA,cAAc,CAAC,wBAAwB;AACvC,gBAAA,cAAc,CAAC,gBAAgB;AAC/B,gBAAA,cAAc,CAAC,gBAAgB;AAC/B,gBAAA,cAAc,CAAC,gBAAgB;AAChC,aAAA;AACD,YAAA;AACE,gBAAA,cAAc,CAAC,iBAAiB;AAChC,gBAAA,cAAc,CAAC,mBAAmB;AAClC,gBAAA,cAAc,CAAC,aAAa;AAC5B,gBAAA,cAAc,CAAC,eAAe;AAC9B,gBAAA,cAAc,CAAC,YAAY;AAC3B,gBAAA,cAAc,CAAC,SAAS;AACzB,aAAA;SACF;AA+CF;IA7CC,2BAA2B,GAAA;QACzB,IAAI,CAAC,iBAAiB,GAAG;AACvB,YAAA,CAAC,mBAAmB,CAAC,oBAAoB,GAAG;AAC1C,gBAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAqD,mDAAA,CAAA;AACtF,gBAAA,WAAW,EAAE,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAA2D,yDAAA,CAAA;AAClG,gBAAA,aAAa,EAAE,EAAE;AAClB,aAAA;AACD,YAAA,CAAC,mBAAmB,CAAC,iBAAiB,GAAG;AACvC,gBAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAkD,gDAAA,CAAA;AACnF,gBAAA,WAAW,EAAE,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAwD,sDAAA,CAAA;AAC/F,gBAAA,aAAa,EAAE,EAAE;AAClB,aAAA;AACD,YAAA,CAAC,mBAAmB,CAAC,gBAAgB,GAAG;AACtC,gBAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAiD,+CAAA,CAAA;AAClF,gBAAA,WAAW,EAAE,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAuD,qDAAA,CAAA;AAC9F,gBAAA,aAAa,EAAE,EAAE;AAClB,aAAA;SACF;;AAGH,IAAA,wBAAwB,CAAC,iBAAkC,EAAA;AACzD,QAAA,iBAAiB,EAAE,OAAO,CAAC,WAAW,IAAG;AACvC,YAAA,MAAM,sBAAsB,GAAG,WAAW,CAAC,aAAa;AAExD,YAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;AACpE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;;AAGpG,YAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;AACpE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;;AAGjG,YAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;AACpE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;;AAElG,SAAC,CAAC;;IAGJ,oBAAoB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;;IAG/B,0BAA0B,GAAA;QACxB,OAAO,IAAI,CAAC,uBAAuB;;+GA7E1B,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,kBAAkB,CAAA;AAkG7B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AA1F5F;;;;;AAKG;QACqC,IAAI,CAAA,IAAA,GAAG,KAAK;AAEpD;;;;;AAKG;QACqC,IAAQ,CAAA,QAAA,GAAG,KAAK;AAExD;;;;;AAKG;QACqC,IAAe,CAAA,eAAA,GAAG,KAAK;AAE/D;;;;;AAKG;QACM,IAAkB,CAAA,kBAAA,GAAG,EAAE;AAEhC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAWrD;;;;;;AAMG;QACM,IAAO,CAAA,OAAA,GAAqB,UAAU;AAE/C;;;;;;AAMG;QACM,IAAiB,CAAA,iBAAA,GAAY,KAAK;AAE3C;;;;;;AAMG;QACM,IAAiB,CAAA,iBAAA,GAAY,KAAK;AAE3C;;;;;;AAMG;QACM,IAAkB,CAAA,kBAAA,GAAuB,OAAO;AAE/C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;QAKzC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAIjC,IAAA,MAAM,CAAC,IAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAEhB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;aACb;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;;AAhHX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAmGP,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnG/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,kGAeT,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAQhB,gBAAgB,CAQhB,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,gBAAgB,oUC1CtC,y8DA4CA,EAAA,MAAA,EAAA,CAAA,6kUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,KAAK,EAAA,QAAA,EAAA,y8DAAA,EAAA,MAAA,EAAA,CAAA,6kUAAA,CAAA,EAAA;;0BAqGhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCA5F/B,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAQe,IAAI,EAAA,CAAA;sBAA3C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAQE,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAQE,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAQ7B,kBAAkB,EAAA,CAAA;sBAA1B;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBASQ,SAAS,EAAA,CAAA;sBAAjB;gBASQ,OAAO,EAAA,CAAA;sBAAf;gBASQ,iBAAiB,EAAA,CAAA;sBAAzB;gBASQ,iBAAiB,EAAA,CAAA;sBAAzB;gBASQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAES,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;;;MEhGU,oBAAoB,CAAA;AAyE/B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AA9D5F;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,CAAC;AAErB;;;;;;;AAOG;QACM,IAAI,CAAA,IAAA,GAAoB,aAAa;AAE9C;;;;;;AAMG;QACM,IAAM,CAAA,MAAA,GAAG,CAAC;AAEnB;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAG,EAAE;AAEvB;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;AAE7B;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK;QAK7B,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;;;AAnFxE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBA0ET,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1E/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,gXCXjC,8nBAsBA,EAAA,MAAA,EAAA,CAAA,+vXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDXa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGV,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,8nBAAA,EAAA,MAAA,EAAA,CAAA,+vXAAA,CAAA,EAAA;;0BA4EhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAhE1D,YAAY,EAAA,CAAA;sBAFX,WAAW;uBAAC,eAAe;;sBAC3B;gBAUQ,QAAQ,EAAA,CAAA;sBAAhB;gBAUQ,IAAI,EAAA,CAAA;sBAAZ;gBASQ,MAAM,EAAA,CAAA;sBAAd;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;;;AEhFH;;;;;;;;;;;;;;;;;;AAkBK;MAKQ,eAAe,CAAA;AAC1B,IAAA,SAAS,CAAO,KAAQ,EAAE,OAAwB,EAAE,OAAa,EAAA;QAC/D,IAAI,OAAO,EAAE;YACX,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;;AAGrC,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC;;+GANZ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MClBY,iBAAiB,CAAA;AAE5B,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE;AAC5B,QAAA,MAAM,aAAa,GAAG,KAAK,GAAG,GAAG;QAEjC,IAAI,aAAa,IAAI,EAAE,IAAI,aAAa,IAAI,EAAE,EAAE;AAC9C,YAAA,OAAO,wBAAwB;;QAGjC,QAAQ,SAAS;AACf,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,wBAAwB;AACjC,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,wBAAwB;AACjC,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,wBAAwB;AACjC,YAAA;AACE,gBAAA,OAAO,wBAAwB;;;+GAlB1B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCQY,8BAA8B,CAAA;IAqBzC,WAC6E,CAAA,eAAiC,EACpG,sBAA8C,EAAA;QADqB,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;AAtBhC;;;;;AAKG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;QAU5C,IAAkB,CAAA,kBAAA,GAAG,0BAA0B;QAQtD,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE;QACzD,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC5E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE;;AAG7E,IAAA,kBAAkB,CAAC,iBAAyB,EAAA;AAC1C,QAAA,OAAO,CAA0B,uBAAA,EAAA,IAAI,CAAC,wBAAwB,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAA,CAAE;;AAG7F,IAAA,kBAAkB,CAAC,iBAAyB,EAAA;QAC1C,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAsB;;AAGvF,IAAA,wBAAwB,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAoB,EAAA;QAC7E,IAAI,eAAe,GAAG,EAAE;AACxB,QAAA,IAAI,eAAe,GAAsB,qBAAqB,CAAC,OAAO;QAEtE,IAAI,iBAAiB,IAAI,CAAC,IAAI,iBAAiB,IAAI,EAAE,EAAE;YACrD,eAAe,GAAG,oBAAoB;AACtC,YAAA,eAAe,GAAG,qBAAqB,CAAC,OAAO;;QAGjD,IAAI,iBAAiB,IAAI,EAAE,IAAI,iBAAiB,IAAI,EAAE,EAAE;YACtD,eAAe,GAAG,eAAe;AACjC,YAAA,eAAe,GAAG,qBAAqB,CAAC,OAAO;;QAGjD,IAAI,iBAAiB,IAAI,EAAE,IAAI,iBAAiB,IAAI,EAAE,EAAE;YACtD,eAAe,GAAG,SAAS;AAC3B,YAAA,eAAe,GAAG,qBAAqB,CAAC,OAAO;;QAGjD,IAAI,iBAAiB,IAAI,EAAE,IAAI,iBAAiB,IAAI,EAAE,EAAE;YACtD,eAAe,GAAG,eAAe;AACjC,YAAA,eAAe,GAAG,qBAAqB,CAAC,OAAO;;QAGjD,IAAI,iBAAiB,IAAI,EAAE,IAAI,iBAAiB,IAAI,GAAG,EAAE;YACvD,eAAe,GAAG,oBAAoB;AACtC,YAAA,eAAe,GAAG,qBAAqB,CAAC,OAAO;;QAGjD,OAAO,cAAc,GAAG,eAAe,GAAG,eAAe;;AAzEhD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,kBAsBnB,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtB/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,iLCb3C,upGAgFA,EAAA,MAAA,EAAA,CAAA,s9KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDnEa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAGrB,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,upGAAA,EAAA,MAAA,EAAA,CAAA,s9KAAA,CAAA,EAAA;;0BAwBhB;;0BAAY,MAAM;2BAAC,oCAAoC;2EAfjD,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;;;MEHU,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAxB,wBAAwB,EAAA,YAAA,EAAA,CAb7B,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAMlB,YAAY;YACZ,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;AAChB,YAAA,kBAAkB,aAPlB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAUb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAP7B,YAAY;YACZ,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAGb,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB;AACH;AACJ,iBAAA;;;MCZY,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA1B,0BAA0B,EAAA,YAAA,EAAA,CALtB,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,oBAAoB,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CACnD,oBAAoB,CAAA,EAAA,CAAA,CAAA;gHAGnB,0BAA0B,EAAA,OAAA,EAAA,CAJ3B,YAAY,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;;4FAIjC,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,eAAe,CAAC;oBAC9D,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAC/B,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;MCaY,oCAAoC,CAAA;+GAApC,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAApC,oCAAoC,EAAA,YAAA,EAAA,CAbhC,8BAA8B,CAAA,EAAA,OAAA,EAAA,CAE3C,YAAY;YACZ,wBAAwB;YACxB,oBAAoB;YACpB,0BAA0B;YAC1B,eAAe;YACf,eAAe;YACf,iBAAiB;AACjB,YAAA,YAAY,aAEJ,8BAA8B,CAAA,EAAA,CAAA,CAAA;AAE7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,YAX7C,YAAY;YACZ,wBAAwB;YACxB,oBAAoB;YACpB,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAQjB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAdhD,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,8BAA8B,CAAC;AAC9C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,wBAAwB;wBACxB,oBAAoB;wBACpB,0BAA0B;wBAC1B,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB,YAAY;AACb,qBAAA;oBACD,OAAO,EAAE,CAAC,8BAA8B;AACzC,iBAAA;;;ACpBM,MAAM,aAAa,GAAG;;AAE3B,IAAA,OAAO,EAAE,CAAC,SAAiB,KAAc;AACvC,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,OAAO,aAAa;;AAEtB,QAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACxB,YAAA,OAAO,MAAM;;AAEf,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,OAAO,SAAS;;AAElB,QAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,YAAA,OAAO,OAAO;;AAEhB,QAAA,OAAO,EAAE;KACV;;AAGD,IAAA,WAAW,EAAE,CAAC,KAAc,KAAY;AACtC,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,OAAO,OAAO;;aACT;AACL,YAAA,OAAO,QAAQ;;KAElB;;IAGD,WAAW,EAAE,CAAC,SAAkB,EAAE,IAAY,EAAE,QAAgB,EAAE,OAAA,GAAwB,QAAQ,KAAY;AAC5G,QAAA,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,GAAG,YAAY,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,OAAO,KAAK,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,GAAG,IAAI;QAChF,OAAO,CAAA,EAAG,KAAK,CAAI,CAAA,EAAA,QAAQ,IAAI,WAAW,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;KACxD;CACF;;MCJY,oBAAoB,CAAA;IAC/B,WAC6E,CAAA,eAAiC,EACpG,YAA0B,EAAA;QADyC,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAY,CAAA,YAAA,GAAZ,YAAY;AAOtB;;;;;;AAMG;QACM,IAAS,CAAA,SAAA,GAAiB,SAAS;AAE5C;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAiB,QAAQ;AAW9C;;;;;AAKG;QACM,IAAoB,CAAA,oBAAA,GAAG,IAAI;AAEpC;;;;;AAKG;QACM,IAAM,CAAA,MAAA,GAAG,KAAK;AAEvB;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAI,EAAE;AASvB;;;;;;AAMG;QACM,IAAU,CAAA,UAAA,GAAoB,QAAQ;AAE/C;;;;;;;AAOG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;;AAMG;QACM,IAAkB,CAAA,kBAAA,GAAG,EAAE;AAEhC;;;;;;AAMG;QACM,IAAO,CAAA,OAAA,GAAG,IAAI;AAEvB;;;;;;AAMG;QACM,IAAK,CAAA,KAAA,GAAG,KAAK;AAEtB;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;QAW7B,IAAO,CAAA,OAAA,GAAG,IAAI;QAId,IAAQ,CAAA,QAAA,GAAa,EAAE;QACvB,IAAgB,CAAA,gBAAA,GAAe,EAAE;QACjC,IAAkB,CAAA,kBAAA,GAAG,KAAK;QA5IxB,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAsB3C;;;;AAIG;IACH,IAAa,OAAO,CAAC,GAAW,EAAA;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC;;IAgGhE,IAAa,eAAe,CAAC,MAAgB,EAAA;QAC3C,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;;AAG/F,IAAA,IAAuC,WAAW,GAAA;QAChD,OAAO,IAAI,CAAC,kBAAkB;;IAYhC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE;;AAGrB,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;YACzB,IAAI,CAAC,YAAY,EAAE;;;IAId,YAAY,GAAA;QAClB,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ;QACnE,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;;;IAI7G,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;SAC/B,EAAE,GAAG,CAAC;;AA1KE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAET,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAF/C,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCjC,qgEAkDA,ED3BgB,MAAA,EAAA,CAAA,2xMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,WAAW,EAAE;AACjB,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACzE,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIQ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGf,UAAA,EAAA;wBACR,OAAO,CAAC,WAAW,EAAE;AACjB,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBACzE,CAAC;AACL,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,qgEAAA,EAAA,MAAA,EAAA,CAAA,2xMAAA,CAAA,EAAA;;0BAIhB;;0BAAY,MAAM;2BAAC,oCAAoC;sEAejD,SAAS,EAAA,CAAA;sBAAjB;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBAOY,OAAO,EAAA,CAAA;sBAAnB;gBAUQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAQQ,MAAM,EAAA,CAAA;sBAAd;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,OAAO,EAAA,CAAA;sBAAf;gBASQ,UAAU,EAAA,CAAA;sBAAlB;gBAUQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBASQ,kBAAkB,EAAA,CAAA;sBAA1B;gBASQ,OAAO,EAAA,CAAA;sBAAf;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAEY,eAAe,EAAA,CAAA;sBAA3B;gBAIsC,WAAW,EAAA,CAAA;sBAAjD,WAAW;uBAAC,oBAAoB;;;ME1JtB,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA1B,0BAA0B,EAAA,YAAA,EAAA,CAJtB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACzB,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CACzE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAEnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAH3B,OAAA,EAAA,CAAA,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAGvD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,CAAC;oBACpF,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA;;;MCAY,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;QAYW,IAAe,CAAA,eAAA,GAAoB,OAAO;AAEzC,QAAA,IAAA,CAAA,aAAa,GAAsC,IAAI,YAAY,EAAuB;AAEpG,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAsB,IAAI,CAAC;QACnC,IAAS,CAAA,SAAA,GAAwB,KAAK;QACtC,IAAQ,CAAA,QAAA,GAAwB,IAAI;AAQ9C;IAlBC,IAAa,SAAS,CAAC,SAA8B,EAAA;QACnD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;;AAWtC,IAAA,iBAAiB,CAAC,SAA8B,EAAA;AAC9C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAS,GAAG,IAAI,GAAG,SAAS;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAE3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;;+GAjB/B,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,gMCXhC,wrCAiCA,EAAA,MAAA,EAAA,CAAA,q2EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDtBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGT,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,wrCAAA,EAAA,MAAA,EAAA,CAAA,q2EAAA,CAAA,EAAA;8BAGN,SAAS,EAAA,CAAA;sBAArB;gBAIQ,eAAe,EAAA,CAAA;sBAAvB;gBAES,aAAa,EAAA,CAAA;sBAAtB;;;MEPU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAhB,gBAAgB,EAAA,YAAA,EAAA,CAJZ,mBAAmB,CACxB,EAAA,OAAA,EAAA,CAAA,qBAAqB,EAAE,eAAe,EAAE,SAAS,CAAA,EAAA,OAAA,EAAA,CACjD,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAGpB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,eAAe,EAAE,SAAS,CAAC;oBAC5D,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;MCaY,aAAa,CAAA;AA0BxB;;;;;AAKG;IACH,IAAa,MAAM,CAAC,MAAgB,EAAA;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;;IA4C1G,WAC6E,CAAA,eAAiC,EACpG,YAA0B,EAAA;QADyC,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAY,CAAA,YAAA,GAAZ,YAAY;AA9EtB;;;;;AAKG;QACM,IAAI,CAAA,IAAA,GAAa,QAAQ;AAElC;;;;;AAKG;QACM,IAAO,CAAA,OAAA,GAAgB,SAAS;AAEzC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAYrD;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAI,SAAS;AAEhC;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK;AAE5B;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAG,IAAI;AAE1B;;AAEG;AACO,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;QAIpD,IAAO,CAAA,OAAA,GAAG,EAAE;QAMV,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,CAAa,UAAA,EAAA,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE;;IAGtF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,CAAa,UAAA,EAAA,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE;;AAGtF,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,OAAO;;AAGzD,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI;;AAGlD,IAAA,IAAI,UAAU,GAAA;;QAEZ,QACE,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,OAAO,KAAK,WAAW;YAC5B,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,IAAI,CAAC,OAAO,KAAK,IAAI;YACrB,IAAI,CAAC,OAAO,KAAK,cAAc;AAC/B,YAAA,IAAI,CAAC,OAAO,KAAK,SAAS;;IAI9B,UAAU,GAAA;QACR,IACE,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,OAAO,KAAK,WAAW;YAC5B,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,IAAI,CAAC,OAAO,KAAK,IAAI;YACrB,IAAI,CAAC,OAAO,KAAK,cAAc;YAC/B,IAAI,CAAC,OAAO,KAAK,SAAS;AAC1B,YAAA,IAAI,CAAC,OAAO,KAAK,SAAS,EAC1B;AACA,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AA7H9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBA8EF,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9E/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,gVCvB1B,qrBAsBA,EAAA,MAAA,EAAA,CAAA,mrKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDCa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAGF,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,qrBAAA,EAAA,MAAA,EAAA,CAAA,mrKAAA,CAAA,EAAA;;0BAgFhB;;0BAAY,MAAM;2BAAC,oCAAoC;sEAvEjD,IAAI,EAAA,CAAA;sBAAZ;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQY,MAAM,EAAA,CAAA;sBAAlB;gBAUQ,UAAU,EAAA,CAAA;sBAAlB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAKS,YAAY,EAAA,CAAA;sBAArB;;;MEpFU,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAJf,aAAa,CAAA,EAAA,OAAA,EAAA,CAClB,YAAY,EAAE,mBAAmB,aACjC,aAAa,CAAA,EAAA,CAAA,CAAA;gHAEZ,mBAAmB,EAAA,OAAA,EAAA,CAHpB,YAAY,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAGhC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,aAAa,CAAC;AAC7B,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;oBAC5C,OAAO,EAAE,CAAC,aAAa,CAAC;AACzB,iBAAA;;;MCEY,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;QAQW,IAAS,CAAA,SAAA,GAAG,IAAI;QAChB,IAAY,CAAA,YAAA,GAAG,EAAE;AAI1B;;;;;;AAMG;QAGH,IAAgB,CAAA,gBAAA,GAAqB,OAAO;QAkB5C,IAAwB,CAAA,wBAAA,GAAG,SAAS;AACrC;AAjBC,IAAA,aAAa,CAAC,IAAe,EAAA;AAC3B,QAAA,MAAM,eAAe,GAAQ,IAAI,CAAC,SAAS,CAAC,MAAM;QAClD,QAAQ,IAAI;AACV,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,eAAe,CAAC,SAAS,CAAC,cAAc;AACjD,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,eAAe,CAAC,SAAS,CAAC,cAAc;AACjD,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG;AAChC,YAAA;AACE,gBAAA,OAAO,CAAC;;;+GA9BH,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,iSCXrC,uzDAkCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDvBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cAGnB,KAAK,EAAA,QAAA,EAAA,uzDAAA,EAAA;8BAGV,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBAWD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;;;MEpBU,sBAAsB,CAAA;AAJnC,IAAA,WAAA,GAAA;AAKE;;AAEG;AACc,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC;AAS5F;AAPC;;;AAGG;AACH,IAAA,SAAS,CAAC,KAA6C,EAAA;AACrD,QAAA,OAAO,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK;;+GAXtF,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;AC0CD;MACa,iBAAiB,CAAA;IAqL5B,WAC6E,CAAA,eAAiC,EACpG,GAAsB,EACH,SAAoB,EACvC,YAA0B,EAC1B,MAAc,EACd,UAAsB,EAAA;QAL6C,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAG,CAAA,GAAA,GAAH,GAAG;QACgB,IAAS,CAAA,SAAA,GAAT,SAAS;QAC5B,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAU,CAAA,UAAA,GAAV,UAAU;AAxLpB;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;AAMG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK;AAExB;;;;;;;AAOG;QACM,IAAa,CAAA,aAAA,GAAG,KAAK;AAa9B;;;;;AAKG;QACM,IAAI,CAAA,IAAA,GAAG,EAAE;AAElB;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAEnB;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAG,EAAE;AAE5B;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;AAE7B;;;;AAIG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAc,QAAQ;AAExC;;;;;;;AAOG;QACM,IAAQ,CAAA,QAAA,GAAG,CAAC;AAErB;;;;;AAKG;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAW;AAE/C;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AAEzB;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;QAElB,IAAW,CAAA,WAAA,GAAG,KAAK;QAKT,IAAM,CAAA,MAAA,GAAkB,IAAI;QAUpC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;AAGzC,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;;;IAKvC,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE;;AAGxB;;;AAGG;;IAEH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;IAI3B,eAAe,GAAA;QACb,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa;AAC5E,QAAA,mBAAmB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AACpD,QAAA,mBAAmB,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC7E,QAAA,mBAAmB,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC/E,mBAAmB,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC;AAC1D,QAAA,mBAAmB,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC/E,QAAA,IAAI,CAAC;aACF,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa;AACxD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;;AAG9E,IAAA,WAAW,CAAC,MAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;;IAGrC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC;;AAGpF,IAAA,UAAU,CAAC,KAAwB,EAAA;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;;IAIlC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;QACpC,IAAI,CAAC,eAAe,EAAE;;IAGxB,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;;QAEtC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC1G,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;;IAG9G,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,GAAG,kBAAkB,GAAG,oBAAoB;;AAEvF,QAAA,OAAO,EAAE;;AAGX,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAGtB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,qBAAqB,CAAC,UAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;;AAG/B,IAAA,OAAO,CAAC,OAAgB,EAAA;QACtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;AAC/B,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;qBACrB;AACL,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;;SAG/B,EAAE,CAAC,CAAC;;IAGC,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;cACrB,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,gBAAgB,KAAK;AAC1B,kBAAE;kBACA,SAAS;;IAGjB,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;;AArTnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAsLN,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtL/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,ykCChD9B,ywDAgDA,EAAA,MAAA,EAAA,CAAA,6rXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDAa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAGjB,IAAA,EAAA;;AAEF,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,sBAAsB,EAAE,MAAM;;;;AAI9B,wBAAA,SAAS,EAAE,yBAAyB;AACvC,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,ywDAAA,EAAA,MAAA,EAAA,CAAA,6rXAAA,CAAA,EAAA;;0BAyLhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAEvD;;0BAAY;oHA9KN,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,OAAO,EAAA,CAAA;sBAAf;gBAUQ,aAAa,EAAA,CAAA;sBAArB;gBAWD,YAAY,EAAA,CAAA;sBAFX,WAAW;uBAAC,eAAe;;sBAC3B;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAOQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAUQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQS,OAAO,EAAA,CAAA;sBAAhB;gBAeqB,cAAc,EAAA,CAAA;sBAAnC,SAAS;uBAAC,SAAS;gBACG,eAAe,EAAA,CAAA;sBAArC,SAAS;uBAAC,UAAU;;;MExNV,uBAAuB,CAAA;AAPpC,IAAA,WAAA,GAAA;AAQE;;AAEG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,QAAQ,CAAC;AAEhC;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAEhC;;AAEG;AACH,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,CAAC;AAE1C;;AAEG;QACH,IAAY,CAAA,YAAA,GAAG,MAAM,EAAW;AAEhC;;AAEG;AACK,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAiB,IAAI,CAAC;AAE/D;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAChD,YAAA,OAAO,QAAQ,KAAK,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AACvD,SAAC,CAAC;AAcH;AAZC;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B;;AAGF,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;AACnC,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;;+GA5CvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2hBCVpC,ykBAgBA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDNa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAGb,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,ykBAAA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA;;;MEGR,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CAJjB,wBAAwB,CAE7B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CADlD,wBAAwB,CAAA,EAAA,CAAA,CAAA;gHAGvB,qBAAqB,EAAA,OAAA,EAAA,CAFtB,YAAY,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAEhC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;oBACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,eAAe,CAAC;AAC9D,iBAAA;;;MCJY,qBAAqB,CAAA;AAIhC,IAAA,WAAA,GAAA;AAHU,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;QAC9C,IAAgB,CAAA,gBAAA,GAAG,KAAK;;IAKhC,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;IAI9B,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAKlC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;+GApBtB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;wDAEW,cAAc,EAAA,CAAA;sBAAvB;gBAMD,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;gBAM5C,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAQjC,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM;;;MCLT,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAvB,uBAAuB,EAAA,YAAA,EAAA,CAJnB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrO,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAHxB,OAAA,EAAA,CAAA,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAmB,qBAAqB,EAAgD,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAG7M,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,qBAAqB,CAAC;oBAChP,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA;;;MCPY,6BAA6B,CAAA;+GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA7B,6BAA6B,EAAA,YAAA,EAAA,CAJzB,uBAAuB,CAC5B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAC1D,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAEtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,EAH9B,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;;4FAGzD,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,CAAC;oBACrE,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA;;;MCuBY,eAAe,CAAA;AA8J1B,IAAA,KAAK,CAAC,CAAgB,EAAA;QACpB,IAAI,CAAC,OAAO,EAAE;;AAGhB,IAAA,WAAA,CAC6E,eAAiC,EACrG,SAAwC,EACd,IAA4C,EAAA;QAFF,IAAe,CAAA,eAAA,GAAf,eAAe;QACnF,IAAS,CAAA,SAAA,GAAT,SAAS;QACiB,IAAI,CAAA,IAAA,GAAJ,IAAI;AApKvC;;;;AAIG;QACM,IAAK,CAAA,KAAA,GAAI,EAAE;AAEpB;;;;AAIG;QACM,IAAe,CAAA,eAAA,GAAG,IAAI;AAE/B;;;;AAIG;AACM,QAAA,IAAA,CAAA,UAAU,GAAkB,MAAM,IAAI;AAE/C;;;;AAIG;QACM,IAAoB,CAAA,oBAAA,GAAI,EAAE;AAEnC;;;;AAIG;QACM,IAAa,CAAA,aAAA,GAAI,EAAE;AAE5B;;;;AAIG;QACM,IAAkB,CAAA,kBAAA,GAAI,EAAE;AAEjC;;;;AAIG;QACM,IAAqB,CAAA,qBAAA,GAAmB,EAAE;AAEnD;;;;AAIG;QACM,IAAmB,CAAA,mBAAA,GAAgB,OAAO;AAEnD;;;;AAIG;QACM,IAAiB,CAAA,iBAAA,GAAgB,SAAS;AAEnD;;;;AAIG;QACM,IAAuB,CAAA,uBAAA,GAAkB,IAAI;AAEtD;;;;AAIG;QACM,IAAyB,CAAA,yBAAA,GAAkB,IAAI;AAExD;;;;;;AAMG;QAGH,IAAY,CAAA,YAAA,GAAkB,EAAE;AAEhC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AACrD;;;;;;AAMG;QACM,IAAoB,CAAA,oBAAA,GAAG,KAAK;AACrC;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;;AAMG;QACM,IAAoB,CAAA,oBAAA,GAAG,IAAI;AAEpC;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAG,EAAE;AAE5B;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;AAE7B;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B,QAAA,IAAA,CAAA,yBAAyB,GAAG,KAAK,CAAqB,MAAM,CAAC;AAEnD,QAAA,IAAA,CAAA,UAAU,GAAwB,IAAI,YAAY,EAAS;AAC3D,QAAA,IAAA,CAAA,yBAAyB,GAAwB,IAAI,YAAY,EAAS;AAC1E,QAAA,IAAA,CAAA,uBAAuB,GAAwB,IAAI,YAAY,EAAS;QAIlF,IAAW,CAAA,WAAA,GAAG,KAAK;QAiBnB,IAAc,CAAA,cAAA,GAAG,KAAK;QACH,IAAkB,CAAA,kBAAA,GAAG,SAAS;QAN/C,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAU3C,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY;;IAG5B,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB;;AAEpD,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS;;aAC7C;YACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS;;;AAItD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;YAChD,IAAI,CAAC,kBAAkB,EAAE;;;IAI7B,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC;aACjD,EAAE,GAAG,CAAC;;;;IAKX,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,oBAAoB;;;IAIvE,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;;AAI3B,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAGzB,IAAA,sBAAsB,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG5C,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;;+GAzO/B,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAmKJ,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAEhD,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArKd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,0mHCjC5B,2oFAuEA,EAAA,MAAA,EAAA,CAAA,ovJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDtCa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;+BACI,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,2oFAAA,EAAA,MAAA,EAAA,CAAA,ovJAAA,CAAA,EAAA;;0BAqKhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAEvD,MAAM;2BAAC,eAAe;yCA/JhB,KAAK,EAAA,CAAA;sBAAb;gBAOQ,eAAe,EAAA,CAAA;sBAAvB;gBAOQ,UAAU,EAAA,CAAA;sBAAlB;gBAOQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAOQ,aAAa,EAAA,CAAA;sBAArB;gBAOQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAOQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAOQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAOQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAOQ,uBAAuB,EAAA,CAAA;sBAA/B;gBAOQ,yBAAyB,EAAA,CAAA;sBAAjC;gBAWD,YAAY,EAAA,CAAA;sBAFX,WAAW;uBAAC,eAAe;;sBAC3B;gBAUQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBASQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAIS,UAAU,EAAA,CAAA;sBAAnB;gBACS,yBAAyB,EAAA,CAAA;sBAAlC;gBACS,uBAAuB,EAAA,CAAA;sBAAhC;gBAEyB,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa;gBAKxB,KAAK,EAAA,CAAA;sBADJ,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;gBAmBvC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,cAAc;;;MExMjB,aAAa,CAAA;IACxB,WACU,CAAA,SAAoB,EAC+C,eAAiC,EAAA;QADpG,IAAS,CAAA,SAAA,GAAT,SAAS;QAC0D,IAAe,CAAA,eAAA,GAAf,eAAe;;IAG5F,IAAI,CACF,eAAiC,EACjC,YAA8B,EAAA;AAE9B,QAAA,MAAM,EACJ,gBAAgB,GAAG,OAAO,EAC1B,IAAI,GAAG,OAAO,EACd,UAAU,GAAG,EAAE,EACf,SAAS,GAAG,EAAE,EACd,aAAa,GAAG,EAAE,EAClB,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,EAAE,GACZ,GAAG,YAAY,IAAI,EAAE;;AAEtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE;AAC1C,YAAA,GAAG,MAAM;AACT,YAAA,IAAI,EAAE;AACJ,gBAAA,gBAAgB,EAAE,IAAI,CAAC,eAAe,IAAI,gBAAgB;AAC1D,gBAAA,GAAG,SAAS;gBACZ,YAAY;AACb,aAAA;YACD,aAAa,EAAE,aAAa,IAAI,EAAE;YAClC,UAAU,EACR,gBAAgB,KAAK;AACnB,kBAAE,CAAC,mBAAmB,EAAE,UAAU,EAAE,IAAI;kBACtC,CAAC,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC;AAChE,SAAA,CAAC;;AAhCO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,6CAGF,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAH/C,aAAa,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;0BAII;;0BAAY,MAAM;2BAAC,oCAAoC;;;MCG/C,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CALjB,eAAe,CAAA,EAAA,OAAA,EAAA,CACpB,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CACrE,eAAe,CAAA,EAAA,CAAA,CAAA;AAGd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAFrB,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,EAFrG,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAInD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;oBAC/B,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,CAAC;oBAChF,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC;AAChH,iBAAA;;;MCEY,oBAAoB,CAAA;AAgB/B,IAAA,WAAA,CACS,SAA6C,EACnB,IAAqB,EAC5C,YAA0B,EAAA;QAF7B,IAAS,CAAA,SAAA,GAAT,SAAS;QACiB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAC3B,IAAY,CAAA,YAAA,GAAZ,YAAY;QAdxB,IAAuB,CAAA,uBAAA,GAAG,6BAA6B;QACvD,IAAyB,CAAA,yBAAA,GAAG,4BAA4B;QACxD,IAAoB,CAAA,oBAAA,GAAG,0BAA0B;QAMjD,IAAgB,CAAA,gBAAA,GAAG,CAAC;QACpB,IAAK,CAAA,KAAA,GAAsB,EAAE;QAO3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC;;AAEhF,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;AAGT,IAAA,OAAO,CAAC,KAAa,EAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;AACtE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACzC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,EAAE,kBAAkB;AAClD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,EAAE,oBAAoB;AACtD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,EAAE,eAAe;QAC5C,IAAI,CAAC,uBAAuB,GAAG,IAAI,EAAE,uBAAuB,IAAI,6BAA6B;QAC7F,IAAI,CAAC,yBAAyB,GAAG,IAAI,EAAE,yBAAyB,IAAI,4BAA4B;QAChG,IAAI,CAAC,oBAAoB,GAAG,IAAI,EAAE,oBAAoB,IAAI,0BAA0B;;IAGtF,oBAAoB,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAElE,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;aACrB;YACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;;;IAI3C,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;;;IAI3C,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;;IAG7B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;AAjEjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,gDAkBrB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAlBd,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfjC,6nDA0DA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7Cc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,2BAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,0BAA0B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAExG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACI,iBAAiB,EAAA,OAAA,EAGlB,CAAC,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,0BAA0B,CAAC,EAAA,QAAA,EAAA,6nDAAA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA;;0BAoBjH,MAAM;2BAAC,eAAe;;;MErBd,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;QAOE,IAAc,CAAA,cAAA,GAAG,KAAK,EAAkB;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAmB,OAAO,CAAC;AAE1C,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;AAClC,YAAA,OAAO;AACL,kBAAE;oBACE,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,oBAAA,QAAQ,EAAE;AACR,wBAAA;4BACE,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,eAAe,EAAE,IAAI,CAAC,eAAe;AACrC,4BAAA,WAAW,EAAE,CAAC;AACf,yBAAA;AACF,qBAAA;AACF;kBACD,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;AAClC,SAAC,CAAC;;AAGF,QAAA,IAAA,CAAA,gBAAgB,GAAG;AACjB,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,UAAU,EAAE,CAAC,KAAU,KAAI;AACzB,gBAAA,MAAM,EACJ,GAAG,EACH,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAC7B,GAAG,KAAK;AACT,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAS,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpF,MAAM,OAAO,GAAG,EAAE;gBAClB,GAAG,CAAC,IAAI,EAAE;AACV,gBAAA,GAAG,CAAC,IAAI,GAAG,wBAAwB;AACnC,gBAAA,GAAG,CAAC,SAAS,GAAG,SAAS;AACzB,gBAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,gBAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;gBAC3B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,CAAC;gBAC7E,GAAG,CAAC,OAAO,EAAE;aACd;SACF;;AAGD,QAAA,IAAA,CAAA,eAAe,GAAG;AAChB,YAAA,EAAE,EAAE,iBAAiB;AACrB,YAAA,gBAAgB,EAAE,CAAC,KAAU,KAAI;AAC/B,gBAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACpC,gBAAA,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,gBAAA,MAAM,gBAAgB,GAAG,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,EAAE;gBAEnB,GAAG,CAAC,IAAI,EAAE;AACV,gBAAA,GAAG,CAAC,WAAW,GAAG,MAAM;AACxB,gBAAA,GAAG,CAAC,SAAS,GAAG,CAAC;AACjB,gBAAA,GAAG,CAAC,IAAI,GAAG,CAAG,EAAA,QAAQ,iBAAiB;AACvC,gBAAA,GAAG,CAAC,SAAS,GAAG,SAAS;gBAEzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,KAAa,KAAI;AAC5C,oBAAA,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC;AACjD,oBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW;AAC9B,oBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC;AACrB,oBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC;;AAGrB,oBAAA,MAAM,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM;AACjD,oBAAA,MAAM,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM;;AAGjD,oBAAA,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,GAAG,YAAY,CAAC;AAChE,oBAAA,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,GAAG,YAAY,CAAC;;AAGhE,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/C,oBAAA,MAAM,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB;oBAChD,MAAM,IAAI,GAAG,IAAI;;oBAGjB,GAAG,CAAC,SAAS,EAAE;AACf,oBAAA,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1B,oBAAA,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,oBAAA,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;oBACtB,GAAG,CAAC,MAAM,EAAE;;AAGZ,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE;AAClD,oBAAA,MAAM,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC;AAClC,oBAAA,GAAG,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO;AAChD,oBAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;oBAC3B,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;AAClC,iBAAC,CAAC;gBAEF,GAAG,CAAC,OAAO,EAAE;aACd;SACF;AAEM,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC;AAEnF,QAAA,IAAA,CAAA,iBAAiB,GAA6B;AACnD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,MAAM,IAAI;AACnB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE,cAAc;AACtB,4BAAA,IAAI,EAAE,EAAE;AACT,yBAAA;AACD,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,OAAO,EAAE,EAAE;AACZ,qBAAA;AACF,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE,KAAK;AACf,iBAAA;AACD,gBAAA,UAAU,EAAE;AACV,oBAAA,OAAO,EAAE,KAAK;AACf,iBAAA;AACF,aAAA;SACF;AACF;+GA5HY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,mYCZhC,mNAUA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDEa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,mNAAA,EAAA;;;AELrB,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;MAOnB,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAJrB,YAAA,EAAA,CAAA,mBAAmB,CAExB,EAAA,OAAA,EAAA,CAAA,cAAc,aADd,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAEb,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA;;;ACTD,MAAM,mBAAmB,GAAG,EAAE;MAMjB,mBAAmB,CAAA;AAC9B,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;QAEb,IAAa,CAAA,aAAA,GAAG,KAAK;QACrB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAe,CAAA,eAAA,GAAG,KAAK;;AAIhC,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;;AAIjC,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,UAAU,GAAmB,KAAK,IAAqB,KAAM,EAAE,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1G,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC;;AAIxC,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAK,KAAa,CAAC,KAAK,KAAK,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE;gBAClG,KAAK,CAAC,cAAc,EAAE;gBACtB;;AACK,iBAAA,IAAK,KAAa,CAAC,KAAK,KAAK,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,EAAE;gBACpF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC;gBAC/B;;;;AAMN,IAAA,OAAO,CAAC,KAAU,EAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;AAC1E,YAAA,UAAU,CAAC,MAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;;;IAIzD,QAAQ,CAAC,KAAY,EAAE,IAAY,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;YACtC,MAAM,QAAQ,GACZ,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC/G,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,KAAK;oBACR,IAAI,CACF,CAAK,EAAA,EAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAG,EAAA,IAAI,CAAC,YAAY,GAAG,yBAAyB,GAAG,MAAM,CAAK,GAAA,CAAA,CACxF;;YAEf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC/B,KAAK,CAAC,cAAc,EAAE;gBACtB;;;;+GApDK,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;+EAIU,aAAa,EAAA,CAAA;sBAArB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBAID,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAMpC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAOjC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,CAAA,MAAA,CAAQ,CAAC;gBAcnC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACLnC;;;;;;;AAOG;AACI,IAAI,OAAO,GAAG;MAUR,cAAc,CAAA;AAyFzB;;;;;AAKG;IACH,IAAa,MAAM,CAAC,MAAgB,EAAA;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACrG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;;AAmQ5C,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACvC,OAAO,IAAI,CAAC,YAAY,GAAG,UAAU,GAAG,UAAU;;aAC7C;YACL,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC9C,OAAO,IAAI,CAAC,YAAY,GAAG,cAAc,GAAG,cAAc;;iBACrD;gBACL,OAAO,IAAI,CAAC,YAAY,GAAG,aAAa,GAAG,aAAa;;;;AAsB9D,IAAA,WAAA,CAC6E,eAAiC,EACpG,eAAgC,EAChC,YAA0B,EAC1B,GAAsB,EACH,SAAoB,EACvC,YAA0B,EAC1B,MAAc,EACd,UAAsB,EAAA;QAP6C,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG;QACgB,IAAS,CAAA,SAAA,GAAT,SAAS;QAC5B,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAU,CAAA,UAAA,GAAV,UAAU;QAxYL,IAAK,CAAA,KAAA,GAAG,UAAU;AAEjC;;;;;AAKG;QAGH,IAAS,CAAA,SAAA,GAAG,IAAI;AAEhB;;;;;AAKG;QAGH,IAAU,CAAA,UAAA,GAAG,KAAK;AAElB;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAI,EAAE;AAEpB;;;;AAIG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE;AACtB,YAAA,SAAS,EAAE,CAAC,KAAa,KAAK,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAC/E,SAAA,CAAC;AAkBF;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAI,EAAE;AAE1B;;;;;AAKG;QACH,IAAE,CAAA,EAAA,GAAG,KAAK,CAAC,CAAA,MAAA,EAAS,OAAO,EAAE,CAAA,CAAE,CAAC;AAEhC;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAsCnB;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,EAAE;AAEzB;;;;;AAKG;QAGH,IAAI,CAAA,IAAA,GAAc,MAAM;AAExB;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK;AAEhC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAa,CAAA,aAAA,GAAG,IAAI;AAE7B;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,IAAI;AAEjC;;;;;;AAMG;QAGH,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAU5C;;;;;AAKG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK;AAExB;;;;;AAKG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK;AAExB;;;;;AAKG;QACM,IAAa,CAAA,aAAA,GAAG,GAAG;AAE5B;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAC3B;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAC7B;;;;;AAKG;QACM,IAAO,CAAA,OAAA,GAAG,CAAC;AACpB;;;;;AAKG;QACM,IAAkB,CAAA,kBAAA,GAAG,IAAI;AAElC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAkBlC;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAG,GAAG;AAE7B;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;QAElB,IAAmB,CAAA,mBAAA,GAAG,KAAK;AAEpC;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK;AAE5B;;;;;AAKG;AACgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAC,EAAE,EAAE,CAAA,UAAA,CAAY,CAAC;AAE9E;;;;;AAKG;AACgB,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,CAAC;AACxE;;;;;AAKG;AACgB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAC,EAAE,EAAE,CAAA,YAAA,CAAc,CAAC;AAEjF;;;;;AAKG;AACgB,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,CAAC;AAEzE;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEf,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU;AAC1C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ;QAiB9C,IAAa,CAAA,aAAA,GAAG,KAAK;QACrB,IAAa,CAAA,aAAA,GAAG,KAAK;AAErB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;QAEZ,IAAkB,CAAA,kBAAA,GAAG,QAAQ;AAEhD;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AAEzB;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;QAmLlB,IAAS,CAAA,SAAA,GAAG,CAAC,KAAa,EAAE,KAAU,KAAK,KAAK,CAAC,qCAAqC;QAvKpF,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;AAGzC,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;;IAIvC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC;AACF,aAAA,OAAO,CAAC,IAAI,CAAC,KAAK;AAClB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,MAAM,IACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACnB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC;SAChD,CAAC,CACH;AAEH,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC;;;AAI1C;;;AAGG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;IAS3B,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE;;IAGnC,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAIrC,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;AAC9D,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,mBAAmB,CAAC,CAAC;AAChH,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;iBAChB;AACL,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;;aAEnB;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;;;IAK1B,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AACjD,YAAA,OAAO,MAAM;;QAEf,OAAO,IAAI,CAAC,IAAI;;;IAIlB,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,mBAAmB,EAAE;;;IAI5B,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;AACtC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE;;;IAInC,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;AAC9D,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;AAExB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;;;;;IAO3B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;;AAEpE,QAAA,OAAO,KAAK;;;AAId,IAAA,OAAO,CAAC,KAAU,EAAA;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,OAAO,EAAE;;AAEhB,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;aACX;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;;AAIzF,IAAA,UAAU,CAAC,KAAW,EAAA;QACpB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;aACb;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAEjB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,QAAQ,CAAC,KAAc,EAAE,MAAc,EAAA;AACrC,QAAA,IAAI,MAAM,KAAK,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AACrB,aAAA,IAAI,MAAM,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAE1B,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC7B,IAAI,CAAC,UAAU,EAAE;;;;IAKvB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,UAAU,EAAE;;;IAIb,UAAU,GAAA;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG3B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;IAKvB,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;;AAGlC,IAAA,qBAAqB,CAAC,GAAQ,EAAA;QAC5B,UAAU,CAAC,MAAK;AACd,YAAA,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;SACtB,EAAE,CAAC,CAAC;;AA3jBI,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAkYH,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAlY/C,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAiWU,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtZ/C,iuOAoMA,EAAA,MAAA,EAAA,CAAA,qgpCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FD/Ia,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACI,UAAU,EAAA,aAAA,EAGL,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,iuOAAA,EAAA,MAAA,EAAA,CAAA,qgpCAAA,CAAA,EAAA;;0BAoYhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAIvD;;0BAAY;oHArYA,KAAK,EAAA,CAAA;sBAAnB;gBAUD,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,kBAAkB;;sBAC9B;gBAWD,UAAU,EAAA,CAAA;sBAFT,WAAW;uBAAC,mBAAmB;;sBAC/B;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBAiBQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAgBQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBASY,MAAM,EAAA,CAAA;sBAAlB;gBAWQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAUD,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,kBAAkB;;sBAC9B;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAWD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;gBASQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAOQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,OAAO,EAAA,CAAA;sBAAf;gBAOQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,GAAG,EAAA,CAAA;sBAAX;gBAQQ,GAAG,EAAA,CAAA;sBAAX;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAsCQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,aAAa,EAAA,CAAA;sBAAtB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBAEgD,KAAK,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBACxB,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;;;MErXV,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAApB,oBAAoB,EAAA,YAAA,EAAA,CAlBhB,cAAc,CAAA,EAAA,OAAA,EAAA,CAE3B,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,aAAa;YACb,eAAe;YACf,qBAAqB;YACrB,sBAAsB;YACtB,mBAAmB;AACnB,YAAA,oBAAoB,aAEZ,cAAc,CAAA,EAAA,CAAA,CAAA;AAEb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAhB7B,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,aAAa;YAEb,qBAAqB;YAGrB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;4FAIX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,cAAc,CAAC;AAC9B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,aAAa;wBACb,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,mBAAmB;wBACnB,oBAAoB;AACrB,qBAAA;oBACD,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA;;;ACJD;;AAEG;AACI,IAAI,aAAa,GAAG;MAgBd,oBAAoB,CAAA;AA+I/B,IAAA,WAAA,CACU,GAAsB,EACtB,UAAsB,EACtB,UAAsB,EACH,SAAoB,EAAA;QAHvC,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAU,CAAA,UAAA,GAAV,UAAU;QACS,IAAS,CAAA,SAAA,GAAT,SAAS;QAlJvB,IAAK,CAAA,KAAA,GAAG,iBAAiB;AAExC;;AAEG;QACH,IAAE,CAAA,EAAA,GAAG,KAAK,CAAC,CAAA,aAAA,EAAgB,aAAa,EAAE,CAAA,CAAE,CAAC;AAE7C;;AAEG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAEjB;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC;AAEvB;;AAEG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAEjB;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AAEvB;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AAEvB;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAmB,OAAO,CAAC;AAEnD;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAY,MAAM,CAAC;AAEpC;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,CAAC,CAAC;AAE1B;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAW,EAAE,CAAC;AAE5B;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;AAExB;;AAEG;QACH,IAAY,CAAA,YAAA,GAAG,KAAK,CAA0B;AAC5C,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,UAAU,EAAE,cAAc;AAC3B,SAAA,CAAC;AAEF;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,EAAE,CAAC;AAE7C;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;AAErB;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAExB;;AAEG;QACH,IAAI,CAAA,IAAA,GAAG,MAAM,EAA0B;AAEvC;;AAEG;QACH,IAAM,CAAA,MAAA,GAAG,MAAM,EAAQ;AAEvB;;AAEG;QACH,IAAW,CAAA,WAAA,GAAG,MAAM,EAAU;AAE9B;;AAEG;QACH,IAAiB,CAAA,iBAAA,GAAG,MAAM,EAAW;AAErC;;AAEG;QACH,IAAU,CAAA,UAAA,GAAG,MAAM,EAAQ;AAE3B;;AAEG;QACH,IAAS,CAAA,SAAA,GAAG,MAAM,EAAQ;AAIlB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAmB,SAAS,CAAC;QAEpD,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,IAAY,CAAA,YAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACnD,IAAK,CAAA,KAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAErC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,OAAO;YACjC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,IAAI,MAAM;YAC9C,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,IAAI,cAAc;AACxD,YAAA,OAAO,EAAE,oBAA6B;AACtC,YAAA,IAAI,EAAE,OAAgB;AACtB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,OAAO;YACnC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,IAAI,QAAQ;YAClD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,IAAI,cAAc;AAC1D,YAAA,OAAO,EAAE,oBAA6B;AACtC,YAAA,IAAI,EAAE,OAAgB;AACtB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1B,SAAA,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,MAAc,KAAI,GAAG;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG;AAQ1B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;;IAIvC,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;;AAGpB,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAEnC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,WAAoB,EAAA;QACnC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAIzB,IAAA,mBAAmB,CAAC,KAAiB,EAAA;AACnC,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B;AACxD,QAAA,MAAM,kBAAkB,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;AAEnG,QAAA,IAAI,kBAAkB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7C,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;;AAKtB,IAAA,eAAe,CAAC,KAAoB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE;;;AAKrB,IAAA,cAAc,CAAC,KAAoB,EAAA;QACjC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,QAAQ,EAAE;;;IAKnB,YAAY,GAAA;QACV;;IAGF,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC,IAAI,CAAC,aAAa,EAAE;;AAEtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QACtB,IAAI,CAAC,SAAS,EAAE;;IAGlB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;AAGvB,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAA0B;AACrD,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAGjC,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE;;;IAItD,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACvC;;QAGF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAEjC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;;AAGF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;QACpC,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QAE5D,IAAI,kBAAkB,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;;AAGF,QAAA,MAAM,WAAW,GAA2B;AAC1C,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE;SACrC;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;IAG7B,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;;QAGF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;IAGZ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGjB,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;;aACtB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;;AACnB,aAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;;aACrB;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;;;AAItB,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAEhC,QACE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;AACpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC;AACrC,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC;YACnC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC;;IAIxC,gBAAgB,CAAC,KAAa,EAAE,MAA6B,EAAA;AACnE,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;;IAG3D,iBAAiB,CAAC,KAAa,EAAE,MAA6B,EAAA;AACpE,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS;;IAGtD,iBAAiB,CAAC,KAAa,EAAE,MAA6B,EAAA;AACpE,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS;;IAGtD,eAAe,CAAC,KAAa,EAAE,MAA6B,EAAA;AAClE,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGhD,wBAAwB,CAAC,KAAa,EAAE,MAA6B,EAAA;AAC3E,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;;+GApVvD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wnFChDjC,y4DAqDA,EAAA,MAAA,EAAA,CAAA,ulGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,OAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDLa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;+BACI,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,cAAc,EAAE,oBAAoB;AACpC,wBAAA,cAAc,EAAE,SAAS;AACzB,wBAAA,gBAAgB,EAAE,aAAa;AAC/B,wBAAA,oBAAoB,EAAE,aAAa;AACtC,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,y4DAAA,EAAA,MAAA,EAAA,CAAA,ulGAAA,CAAA,EAAA;;0BAqJhB;;0BAAY;yCAlJA,KAAK,EAAA,CAAA;sBAAnB;gBAgH0B,cAAc,EAAA,CAAA;sBAAxC,SAAS;uBAAC,cAAc;gBAsEzB,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAcpC,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAS1C,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;gBASzC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;ME3O5B,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA1B,0BAA0B,EAAA,YAAA,EAAA,CAZtB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,qBAAqB;YACrB,oBAAoB;AACpB,YAAA,mBAAmB,aAEX,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAEnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAVnC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAIV,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAbtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,qBAAqB;wBACrB,oBAAoB;wBACpB,mBAAmB;AACpB,qBAAA;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA;;;ICvBW;AAAZ,CAAA,UAAY,KAAK,EAAA;;AAEf,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,KAAA,CAAA,kBAAA,CAAA,GAAA,SAA4B;AAC5B,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,KAAA,CAAA,oBAAA,CAAA,GAAA,SAA8B;AAC9B,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;;AAGxB,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;AAC1B,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;AAC1B,IAAA,KAAA,CAAA,oBAAA,CAAA,GAAA,SAA8B;AAC9B,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;AAC1B,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;AAC1B,IAAA,KAAA,CAAA,sBAAA,CAAA,GAAA,SAAgC;AAChC,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;;AAG1B,IAAA,KAAA,CAAA,eAAA,CAAA,GAAA,SAAyB;AACzB,IAAA,KAAA,CAAA,eAAA,CAAA,GAAA,SAAyB;AACzB,IAAA,KAAA,CAAA,eAAA,CAAA,GAAA,SAAyB;AACzB,IAAA,KAAA,CAAA,qBAAA,CAAA,GAAA,SAA+B;AAC/B,IAAA,KAAA,CAAA,mBAAA,CAAA,GAAA,SAA6B;;AAG7B,IAAA,KAAA,CAAA,uBAAA,CAAA,GAAA,SAAiC;AACjC,IAAA,KAAA,CAAA,qBAAA,CAAA,GAAA,SAA+B;;AAG/B,IAAA,KAAA,CAAA,WAAA,CAAA,GAAA,SAAqB;AACrB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,WAAA,CAAA,GAAA,SAAqB;AACrB,IAAA,KAAA,CAAA,WAAA,CAAA,GAAA,SAAqB;;AAGrB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;;AAGpB,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,KAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;;AAGxB,IAAA,KAAA,CAAA,OAAA,CAAA,GAAA,SAAiB;;AAGjB,IAAA,KAAA,CAAA,WAAA,CAAA,GAAA,SAAqB;AACrB,IAAA,KAAA,CAAA,WAAA,CAAA,GAAA,SAAqB;;AAGrB,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;AAC1B,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;AAC1B,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;AAC1B,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;AAC1B,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,SAA0B;;AAG1B,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;;AAGtB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,KAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;;AAGpB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACxB,CAAC,EAvFW,KAAK,KAAL,KAAK,GAuFhB,EAAA,CAAA,CAAA;;MCjFY,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO;;;AAGT,IAAA,UAAU,CAAC,KAAY,EAAA;QAC3D,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;AAI4B,IAAA,WAAW,CAAC,KAAY,EAAA;QACpE,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;;AAIsB,IAAA,MAAM,CAAC,KAAgB,EAAA;QAC9D,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,QAAA,IAAI,KAAe;AACnB,QAAA,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE;AACxB,YAAA,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK;AAChC,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;;;+GA7BvB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAIiC,IAAI,EAAA,CAAA;sBAAnC,WAAW;uBAAC,iBAAiB;gBACpB,WAAW,EAAA,CAAA;sBAApB;gBAGqC,UAAU,EAAA,CAAA;sBAA/C,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAOU,WAAW,EAAA,CAAA;sBAAxD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAOI,MAAM,EAAA,CAAA;sBAA9C,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;MC0CrB,mBAAmB,CAAA;AAqI9B,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;;AAUvE,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;QAhJ7E,IAAK,CAAA,KAAA,GAAG,gBAAgB;AAgCvC;;;;;AAKG;QACM,IAAkB,CAAA,kBAAA,GAAY,IAAI;AAkB3C;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;QACM,IAAI,CAAA,IAAA,GAAgB,IAAI;AAEjC;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAkB,EAAE;AAKzC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;AAIG;QACM,IAAY,CAAA,YAAA,GAAG,IAAI;AAElB,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ;QAI5C,IAAkB,CAAA,kBAAA,GAAG,cAAc;AAEtD;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AAEzB;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;QAMlB,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAO,CAAA,OAAA,GAAG,KAAK;QAEf,IAAU,CAAA,UAAA,GAAG,KAAK;AAClB,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAC,UAAU;QAKnC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;;AAIpB,IAAA,aAAa,CAAC,KAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;;;AAItB,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,aAAiC;;AAEvD,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,QAAQ,EAAE,CAAC;;;;AAKlD,IAAA,QAAQ,CAAC,KAAe,EAAA;QACtB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,eAAe;AAClB,YAAA,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa;AACtG,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;;IAK1B,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;;IAI/D,WAAW,GAAA;QACT,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;;IAI9F,UAAU,GAAA;QACR,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC;;AAGhD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AAChD,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;;AAEjC,YAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;;AAEjC,YAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;;;;AAK7C,IAAA,UAAU,CAAC,KAAY,EAAA;QACrB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI;;aACpB;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;AAIpB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;IAGpB,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;;AAGnF,IAAA,YAAY,CAAC,QAAgB,EAAA;AACnC,QAAA,OAAO,QAAQ,GAAG,IAAI,GAAG,IAAI;;AAG/B,IAAA,SAAS,CAAC,EAAiB,EAAA;AACzB,QAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE;;AAChC,aAAA,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;;AAjQf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAiJR,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjJ/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EA1CjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCL,8yJAsHA,EDnFgB,MAAA,EAAA,CAAA,6oNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,gBAAgB,EAAE;gBACtB,UAAU,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAChC,oBAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;iBACnE,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,oBAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC5D,CAAC;aACL,CAAC;YACF,OAAO,CAAC,wBAAwB,EAAE;gBAC9B,UAAU,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAChC,oBAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;iBACnE,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,oBAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC5D,CAAC;aACL,CAAC;YACF,OAAO,CAAC,sBAAsB,EAAE;gBAC5B,UAAU,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAChC,oBAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;iBACnE,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,oBAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC5D,CAAC;aACL,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGQ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA/C/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGX,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;qBACJ,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA;wBACR,OAAO,CAAC,gBAAgB,EAAE;4BACtB,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAChC,gCAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;6BACnE,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,gCAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;6BAC5D,CAAC;yBACL,CAAC;wBACF,OAAO,CAAC,wBAAwB,EAAE;4BAC9B,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAChC,gCAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;6BACnE,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,gCAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;6BAC5D,CAAC;yBACL,CAAC;wBACF,OAAO,CAAC,sBAAsB,EAAE;4BAC5B,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAChC,gCAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;6BACnE,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,gCAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;6BAC5D,CAAC;yBACL,CAAC;AACL,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,8yJAAA,EAAA,MAAA,EAAA,CAAA,6oNAAA,CAAA,EAAA;;0BAmJhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAhJ3C,KAAK,EAAA,CAAA;sBAAnB;gBAOQ,aAAa,EAAA,CAAA;sBAArB;gBAOQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAQQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAQQ,MAAM,EAAA,CAAA;sBAAd;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,IAAI,EAAA,CAAA;sBAAZ;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBAGD,SAAS,EAAA,CAAA;sBADR,WAAW;uBAAC,eAAe;gBAUnB,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,YAAY,EAAA,CAAA;sBAApB;gBAES,MAAM,EAAA,CAAA;sBAAf;gBAEsB,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;;;MEtKV,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAXrB,YAAA,EAAA,CAAA,mBAAmB,EAAE,iBAAiB,aAEnD,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,0BAA0B;AAC1B,YAAA,eAAe,aAEP,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YATlC,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAKjB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;AACtD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,0BAA0B;wBAC1B,eAAe;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;MCXY,kBAAkB,CAAA;AAmD7B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAnD5F;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAa,IAAI;AAUlC;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAG,EAAE;AAElB;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAI,EAAE;AAExB;;;;;AAKG;QAGH,IAAU,CAAA,UAAA,GAAI,GAAG;AAEjB;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;QAKnD,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAI3C,IAAA,QAAQ;AA3DG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAoDP,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApD/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,4SCV/B,mIAEA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDQa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAGb,KAAK,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA;;0BAsDhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCA7CjD,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAUD,UAAU,EAAA,CAAA;sBAFT,WAAW;uBAAC,qBAAqB;;sBACjC;gBAUQ,gBAAgB,EAAA,CAAA;sBAAxB;;;MEhDU,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBALpB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CACvB,YAAY,EAAE,mBAAmB,aACjC,kBAAkB,CAAA,EAAA,CAAA,CAAA;gHAGjB,wBAAwB,EAAA,OAAA,EAAA,CAJzB,YAAY,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAIhC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;AAClC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;oBAC5C,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC7B,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;ICVW;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,YAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACjD,IAAA,YAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C;AAC3C,IAAA,YAAA,CAAA,uBAAA,CAAA,GAAA,uBAA+C;AAC/C,IAAA,YAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD;AACvD,IAAA,YAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD;AACvD,IAAA,YAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACjD,IAAA,YAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACjD,IAAA,YAAA,CAAA,0BAAA,CAAA,GAAA,0BAAqD;AACrD,IAAA,YAAA,CAAA,0BAAA,CAAA,GAAA,0BAAqD;AACvD,CAAC,EAbW,YAAY,KAAZ,YAAY,GAavB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,yBAAmC;AACnC,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,yBAAqC;AACrC,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,uBAAiC;AACjC,IAAA,YAAA,CAAA,wBAAA,CAAA,GAAA,iDAA0E;AAC1E,IAAA,YAAA,CAAA,qBAAA,CAAA,GAAA,8CAAoE;AACpE,IAAA,YAAA,CAAA,uBAAA,CAAA,GAAA,gDAAwE;AACxE,IAAA,YAAA,CAAA,2BAAA,CAAA,GAAA,oDAAgF;AAChF,IAAA,YAAA,CAAA,2BAAA,CAAA,GAAA,oDAAgF;AAChF,IAAA,YAAA,CAAA,wBAAA,CAAA,GAAA,iDAA0E;AAC1E,IAAA,YAAA,CAAA,wBAAA,CAAA,GAAA,iDAA0E;AAC1E,IAAA,YAAA,CAAA,0BAAA,CAAA,GAAA,mDAA8E;AAC9E,IAAA,YAAA,CAAA,0BAAA,CAAA,GAAA,mDAA8E;AAC9E,IAAA,YAAA,CAAA,mBAAA,CAAA,GAAA,qCAAyD;AAC3D,CAAC,EAdW,YAAY,KAAZ,YAAY,GAcvB,EAAA,CAAA,CAAA;;MCTY,aAAa,CAAA;AAwHxB,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAxH5F;;;;;AAKG;AACM,QAAA,IAAA,CAAA,IAAI,GAAiB,YAAY,CAAC,OAAO;AAElD;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;;AAMG;QACM,IAAK,CAAA,KAAA,GAAG,YAAY;AAE7B;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAG,GAAG;AAEpB;;;;;;AAMG;QACM,IAAa,CAAA,aAAA,GAAG,KAAK;QAEX,IAAY,CAAA,YAAA,GAAG,YAAY;AAO9C;;AAEG;QACH,IAAM,CAAA,MAAA,GAAG,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACvC,gBAAA,QAAQ,IAAI,CAAC,IAAI;AACf,oBAAA,KAAK,YAAY,CAAC,SAAS,EAAE;AAC3B,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,SAAS;wBACrC;;AAEF,oBAAA,KAAK,YAAY,CAAC,OAAO,EAAE;AACzB,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO;wBACnC;;oBAEF,SAAS;AACP,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO;wBACnC;;;;iBAGC;AACL,gBAAA,QAAQ,IAAI,CAAC,IAAI;AACf,oBAAA,KAAK,YAAY,CAAC,sBAAsB,EAAE;AACxC,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,sBAAsB;wBAClD;;AAEF,oBAAA,KAAK,YAAY,CAAC,mBAAmB,EAAE;AACrC,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,mBAAmB;wBAC/C;;AAEF,oBAAA,KAAK,YAAY,CAAC,qBAAqB,EAAE;AACvC,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,qBAAqB;wBACjD;;AAEF,oBAAA,KAAK,YAAY,CAAC,yBAAyB,EAAE;AAC3C,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,yBAAyB;wBACrD;;AAEF,oBAAA,KAAK,YAAY,CAAC,yBAAyB,EAAE;AAC3C,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,yBAAyB;wBACrD;;AAEF,oBAAA,KAAK,YAAY,CAAC,sBAAsB,EAAE;AACxC,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,sBAAsB;wBAClD;;AAEF,oBAAA,KAAK,YAAY,CAAC,sBAAsB,EAAE;AACxC,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,sBAAsB;wBAClD;;AAEF,oBAAA,KAAK,YAAY,CAAC,wBAAwB,EAAE;AAC1C,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,wBAAwB;wBACpD;;AAEF,oBAAA,KAAK,YAAY,CAAC,wBAAwB,EAAE;AAC1C,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,wBAAwB;wBACpD;;AAEF,oBAAA,KAAK,YAAY,CAAC,SAAS,EAAE;AAC3B,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,iBAAiB;wBAC7C;;oBAEF,SAAS;AACP,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,mBAAmB;wBAC/C;;;;AAIR,SAAC;QAKC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAI3C;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;AAGf;;AAEG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE;AACb,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;;;AAI3C,IAAA,WAAW,CAAC,YAAoB,EAAA;QACtC,IAAI,YAAY,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;AAC7C,YAAA,IAAI,CAAC,KAAK,GAAG,YAAY;;aACpB;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;;AArJT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAyHF,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAzH/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,yNCpB1B,8hBAcA,EAAA,MAAA,EAAA,CAAA,iuEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDMa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAGF,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,8hBAAA,EAAA,MAAA,EAAA,CAAA,iuEAAA,CAAA,EAAA;;0BA2HhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAlHjD,IAAI,EAAA,CAAA;sBAAZ;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBASQ,aAAa,EAAA,CAAA;sBAArB;;;MErDU,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAJf,YAAA,EAAA,CAAA,aAAa,CAClB,EAAA,OAAA,EAAA,CAAA,IAAI,aACJ,aAAa,CAAA,EAAA,CAAA,CAAA;gHAEZ,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,aAAa,CAAC;oBAC7B,OAAO,EAAE,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,CAAC,aAAa,CAAC;AACzB,iBAAA;;;ICNW;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EALW,UAAU,KAAV,UAAU,GAKrB,EAAA,CAAA,CAAA;AAIY,MAAA,QAAQ,GAA6B;AAChD,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,KAAK,EAAE,IAAI;;IAGD;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,SAAgB;AAChB,IAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,SAAe;AACf,IAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,SAAiB;AACjB,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,SAAkB;AAClB,IAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,SAAe;AACjB,CAAC,EANW,qBAAqB,KAArB,qBAAqB,GAMhC,EAAA,CAAA,CAAA;;MCjBY,gBAAgB,CAAA;AAC3B,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACjD,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO;AACJ,iBAAA,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;iBAC1F,IAAI,CAAC,EAAE,CAAC;;aACN;YACL,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAA,EAAG,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA,CAAE;;;+GAThF,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCKY,eAAe,CAAA;AA6C1B;;;;;;AAMG;IACH,IAAa,eAAe,CAAC,SAAoC,EAAA;QAC/D,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,SAAS,CAAC,WAAW,EAAwC,CAAC;;AAcnH,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAnE5F;;;;;AAKG;AACM,QAAA,IAAA,CAAA,IAAI,GAAmB,UAAU,CAAC,KAAK;AAChD;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAG,EAAE;AAEtB;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAG,EAAE;AAElB;;;;AAIG;QACM,IAAW,CAAA,WAAA,GAAG,EAAE;AAEzB;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK;AAE1B;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAarD;;;;AAIG;AACO,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAS;QAG5B,IAAQ,CAAA,QAAA,GAAG,QAAQ;QACnB,IAAU,CAAA,UAAA,GAAG,UAAU;QAKxC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAIjC,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;AA5EjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAoEJ,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApE/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,uSCV5B,umCAgCA,EAAA,MAAA,EAAA,CAAA,mxGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAwB,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDtBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,umCAAA,EAAA,MAAA,EAAA,CAAA,mxGAAA,CAAA,EAAA;;0BAsEhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCA7DjD,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,WAAW,EAAA,CAAA;sBAAnB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBASY,eAAe,EAAA,CAAA;sBAA3B;gBASS,SAAS,EAAA,CAAA;sBAAlB;;;MEzDU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAJjB,YAAA,EAAA,CAAA,eAAe,EAAE,gBAAgB,aACtC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,aAC3F,eAAe,CAAA,EAAA,CAAA,CAAA;AAEd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHtB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAGzE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;oBACjD,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,CAAC;oBACtG,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;MC+BY,8BAA8B,CAAA;AApB3C,IAAA,WAAA,GAAA;QAqBW,IAAM,CAAA,MAAA,GAAa,EAAE;AAC9B,QAAA,IAAA,CAAA,YAAY,GAAwB,KAAK,CAAC,EAAE,CAAC;QACpC,IAAK,CAAA,KAAA,GAAG,EAAE;QACV,IAAQ,CAAA,QAAA,GAAG,EAAE;QACb,IAAS,CAAA,SAAA,GAAe,EAAE;QAG1B,IAAS,CAAA,SAAA,GAAG,KAAK;QACjB,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAE3C,QAAA,IAAA,CAAA,aAAa,GAAyB,IAAI,YAAY,EAAU;AAChE,QAAA,IAAA,CAAA,eAAe,GAAyB,IAAI,YAAY,EAAU;AAClE,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ;QAEjD,IAAkB,CAAA,kBAAA,GAAG,SAAS;QACvC,IAAU,CAAA,UAAA,GAAG,UAAU;AAEjC,QAAA,IAAA,CAAA,eAAe,GAAgC,QAAQ,CAAC,MAAK;AAC3D,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1F,SAAC,CAAC;AAaH;AAXC,IAAA,QAAQ,CAAC,OAAe,EAAA;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC;;IAGxC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAGzB,IAAA,aAAa,CAAC,EAAU,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;;+GAhCpB,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5C3C,6hGAuFA,EAAA,MAAA,EAAA,CAAA,mwIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1DQ,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACrB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGJ,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBApB1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAG9B,OAAA,EAAA;wBACL,OAAO;wBACP,OAAO;wBACP,mBAAmB;wBACnB,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,wBAAwB;wBACxB,IAAI;wBACJ,gBAAgB;wBAChB,qBAAqB;wBACrB,qBAAqB;wBACrB,SAAS;AACZ,qBAAA,EAAA,QAAA,EAAA,6hGAAA,EAAA,MAAA,EAAA,CAAA,mwIAAA,CAAA,EAAA;8BAGM,MAAM,EAAA,CAAA;sBAAd;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,wBAAwB,EAAA,CAAA;sBAAhC;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAES,aAAa,EAAA,CAAA;sBAAtB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;AEzDH,IAAY,iBAIX;AAJD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAY;AACZ,IAAA,iBAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAa;AACb,IAAA,iBAAA,CAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAmB;AACrB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,GAI5B,EAAA,CAAA,CAAA;;MCGY,gBAAgB,CAAA;AAG3B,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc;AAF1B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAA0B;;AAI7D,IAAA,IAAI,CAAI,MAAuB,EAAA;QAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM;AAChD,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC7F,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC;AACpF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;QAC9E,OAAO,kBAAkB,CAAC,QAAa;;IAGzC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG/B,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;;+GAlB/B,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCkBY,kBAAkB,CAAA;AAwB7B,IAAA,UAAU,CAAC,CAAgB,EAAA;AACzB,QAAA,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;AAS1B,IAAA,WAAA,CAC6E,eAAiC,EACpG,gBAAkC,EAClC,UAAsB,EAAA;QAF6C,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU;AApCpB;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAsB,KAAK;AAE5C;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAE3C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAW;QAUxC,IAAK,CAAA,KAAA,GAAG,EAAE;QACV,IAAc,CAAA,cAAA,GAAG,KAAK;QACtB,IAAgB,CAAA,gBAAA,GAAG,KAAK;QACxB,IAAQ,CAAA,QAAA,GAAG,KAAK;AAChB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;QAO/D,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE;;IAGhB,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC9E,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;AAClE,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;gBACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;;iBAC9C,IAAI,CAAC,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;AAE1B,SAAC,CAAC;;AAGI,IAAA,SAAS,CAAC,MAAuB,EAAA;QACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK;QACxC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,KAAK;QACpD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,KAAK;AAExD,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACrE,gBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC1B,aAAC,CAAC;;;IAII,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;;AAGtB,IAAA,YAAY,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAhFrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAmCP,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA8B,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAnC/C,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAqBG,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7ClD,yoDAqCA,EAAA,MAAA,EAAA,CAAA,06HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9B,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA/B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDba,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAGb,KAAK,EAAA,QAAA,EAAA,yoDAAA,EAAA,MAAA,EAAA,CAAA,06HAAA,CAAA,EAAA;;0BAqChB;;0BAAY,MAAM;2BAAC,oCAAoC;8FA5BjD,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBAEoB,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ;gBACgD,SAAS,EAAA,CAAA;sBAA3E,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE;gBAGjE,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;MEd5B,eAAe,CAAA;AAkE1B;;;;AAIG;IACH,IAAa,gBAAgB,CAAC,KAAa,EAAA;QACzC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAmEvC,IAAA,WAAA,CACmB,kBAAsC,EACoB,eAAiC,EACpG,gBAAkC,EAClC,UAAsB,EAAA;QAHb,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QACwC,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU;AA/IpB;;;;;;AAMG;QACM,IAAM,CAAA,MAAA,GAAa,EAAE;AAE9B;;;;;AAKG;AACH,QAAA,IAAA,CAAA,YAAY,GAAwB,KAAK,CAAC,EAAE,CAAC;AAE7C;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,EAAE;AAEtB;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAEnB;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAe,EAAE;AAEnC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AA4BrD;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,IAAI;AAExB;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAG,EAAE;AAEvB;;AAEG;AACO,QAAA,IAAA,CAAA,aAAa,GAAyB,IAAI,YAAY,EAAU;AAE1E;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAyB,IAAI,YAAY,EAAU;AAE5E;;AAEG;AACO,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ;AAC1D,QAAA,IAAA,CAAA,SAAS,GAA4B,IAAI,YAAY,EAAa;QAElE,IAAU,CAAA,UAAA,GAAe,SAAS;QACzB,IAAkB,CAAA,kBAAA,GAAG,SAAS;AAChC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,CAAS,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,CAAS,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACxF,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACtF,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC3D,SAAS,CAAC,UAAU,IAClB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAe,YAAA,EAAA,UAAU,CAAK,GAAA,CAAA,CAAC,CAAC,IAAI,CAClE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EACnB,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,QAAQ,IAAI,SAAS,CAAC,CAAC,CACvE,CACF,CACF;AACkB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC3D,SAAS,CAAC,UAAU,IAClB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAe,YAAA,EAAA,UAAU,CAAK,GAAA,CAAA,CAAC,CAAC,IAAI,CAClE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EACnB,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,QAAQ,IAAI,SAAS,CAAC,CAAC,CACvE,CACF,CACF;QACS,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAQ,CAAA,QAAA,GAAG,YAAY;AAEjC,QAAA,IAAA,CAAA,eAAe,GAAiC,QAAQ,CAAC,MAAK;AAC5D,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1F,SAAC,CAAC;QA+DiB,IAAU,CAAA,UAAA,GAAG,UAAU;QAvDxC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,cAAc,GAAA;AACZ,QAAA,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAQ;AAC9C,QAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAiC;AAC1F,YAAA,YAAY,EAAE,8BAA8B;AAC5C,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,kBAAkB;AAC3B,SAAA,CAAC;AAEF,QAAA,wBAAwB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACjD,QAAA,wBAAwB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AACnD,QAAA,wBAAwB,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACzD,QAAA,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC7C,QAAA,wBAAwB,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC3C,QAAA,wBAAwB,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AACrE,QAAA,wBAAwB,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB;AACjF,QAAA,wBAAwB,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AAEjE,QAAA,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5F,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACvB,kBAAkB,CAAC,IAAI,EAAE;AAC3B,SAAC,CAAC;AAEF,QAAA,wBAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACnG,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YAChC,kBAAkB,CAAC,IAAI,EAAE;AAC3B,SAAC,CAAC;AAEF,QAAA,wBAAwB,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACjG,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,kBAAkB,CAAC,IAAI,EAAE;AAC3B,SAAC,CAAC;;AAGJ,IAAA,QAAQ,CAAC,OAAe,EAAA;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC;;IAGxC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAGzB,IAAA,aAAa,CAAC,EAAU,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;;IAG/B,iBAAiB,CAAC,QAAiB,EAAE,UAAsB,EAAA;AACzD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;;AAtMpC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,sDA8IJ,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAyB,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9I/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,6uDCjC5B,4/JAgJA,EAAA,MAAA,EAAA,CAAA,0zQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/B,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0B,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAqC,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD/Ga,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGJ,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,4/JAAA,EAAA,MAAA,EAAA,CAAA,0zQAAA,CAAA,EAAA;;0BAgJhB;;0BAAY,MAAM;2BAAC,oCAAoC;8FAtIjD,MAAM,EAAA,CAAA;sBAAd;gBAgBQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBASQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAMQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAOY,gBAAgB,EAAA,CAAA;sBAA5B;gBAaQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAKS,aAAa,EAAA,CAAA;sBAAtB;gBAKS,eAAe,EAAA,CAAA;sBAAxB;gBAKS,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;;;MEtHU,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAxB,wBAAwB,EAAA,YAAA,EAAA,CAZpB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAG3B,YAAY;YACZ,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;AACf,YAAA,mBAAmB,aARf,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAWjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAT7B,YAAY;YACZ,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB;YAEhB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAGd,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC3B,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,mBAAmB;AACtB,qBAAA;AACJ,iBAAA;;;MCeY,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CAnBjB,eAAe,CAAA,EAAA,OAAA,EAAA,CAE5B,YAAY;YACZ,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,eAAe;YACf,aAAa;YACb,mBAAmB;YACnB,mBAAmB;YACnB,eAAe;YACf,qBAAqB;YACrB,wBAAwB;YACxB,qBAAqB;YACrB,8BAA8B;AAC9B,YAAA,oBAAoB,aAEZ,eAAe,CAAA,EAAA,CAAA,CAAA;AAEd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAjB9B,YAAY;YACZ,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,eAAe;YACf,aAAa;YACb,mBAAmB;YACnB,mBAAmB;YAEnB,qBAAqB;YACrB,wBAAwB;YACxB,qBAAqB;YACrB,8BAA8B;YAC9B,oBAAoB,CAAA,EAAA,CAAA,CAAA;;4FAIX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBApBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,mBAAmB;wBACnB,mBAAmB;wBACnB,eAAe;wBACf,qBAAqB;wBACrB,wBAAwB;wBACxB,qBAAqB;wBACrB,8BAA8B;wBAC9B;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;MC1BY,4BAA4B,CAAA;AAkCvC;;AAEG;AACH,IAAA,QAAQ;AAER,IAAA,WAAA,GAAA;;;;AAlCA;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAEvC;;;;;AAKG;QACM,IAAM,CAAA,MAAA,GAAG,CAAC;AAEnB;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;AAE7B;;AAEG;AACO,QAAA,IAAA,CAAA,qBAAqB,GAA4B,IAAI,YAAY,EAAa;;AASxF,IAAA,gBAAgB,CAAC,SAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC;;+GA1CjC,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,wMCVzC,6MAIgB,EAAA,MAAA,EAAA,CAAA,2yFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDMH,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAGP,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,6MAAA,EAAA,MAAA,EAAA,CAAA,2yFAAA,CAAA,EAAA;wDAqBV,MAAM,EAAA,CAAA;sBAAd;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAKS,qBAAqB,EAAA,CAAA;sBAA9B;;;ME/BU,kCAAkC,CAAA;+GAAlC,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,iBAL9B,4BAA4B,CAAA,EAAA,OAAA,EAAA,CACjC,YAAY,EAAE,kBAAkB,aAChC,4BAA4B,CAAA,EAAA,CAAA,CAAA;gHAG3B,kCAAkC,EAAA,OAAA,EAAA,CAJnC,YAAY,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAI/B,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,4BAA4B,CAAC;AAC5C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;oBAC3C,OAAO,EAAE,CAAC,4BAA4B,CAAC;AACvC,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;ACiBD,MAAM,mBAAmB,GAAe;AACtC,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,SAAS,EAAE,OAAO;CACnB;MAUY,qBAAqB,CAAA;AAwGhC,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;;AAGtE,IAAA,WAAA,CAC6E,eAAiC,EACpG,YAA0B,EAC1B,MAAc,EAAA;QAFqD,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;AAtGhB;;;;AAIG;QACM,IAAW,CAAA,WAAA,GAAa,eAAe;AAEhD;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAG,EAAE;AAEvB;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,EAAE;AAUzB;;;;;;AAMG;QACM,IAAa,CAAA,aAAA,GAAuB,IAAI;AAEjD;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAe,QAAQ;QAEjC,IAAU,CAAA,UAAA,GAAe,mBAAmB;QAE5C,IAAa,CAAA,aAAA,GAAG,KAAK;QAErB,IAAmB,CAAA,mBAAA,GAAG,KAAK;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU;AAE7D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;QAM/C,IAAS,CAAA,SAAA,GAAa,EAAE;QACxB,IAAQ,CAAA,QAAA,GAAsC,EAAE;AAEhD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAiGzB,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,CAAS,EAAE,GAA6B,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;QAtFhG,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE;;AAGhB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YAC5C,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,EAAE;;;IAIlB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAE7B,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,MAAM,IAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACzB,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;;qBACnB;AACL,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AACxB,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;;;aAG9B,CAAC,CACH;SACF,EAAE,GAAG,CAAC;;IAGT,YAAY,CAAC,KAAY,EAAE,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAI/B,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;aACtD,EAAE,GAAG,CAAC;;;IAIX,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;AAGxB,IAAA,aAAa,CAAC,MAAgC,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,MAAM,CAAC,SAAS,GAAG,IAAI;;;AAI3B,IAAA,YAAY,CAAC,MAAgC,EAAA;AAC3C,QAAA,MAAM,CAAC,SAAS,GAAG,KAAK;;IAG1B,aAAa,CAAC,MAAgC,EAAE,MAAa,EAAA;AAC3D,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,MAAM,CAAC,cAAc,EAAE;YACvB,MAAM,CAAC,eAAe,EAAE;;aACnB;YACL,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;;;IAI3C,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;aACrD,EAAE,GAAG,CAAC;;;IAMX,aAAa,CAAC,MAAgC,EAAE,KAAc,EAAA;AAC5D,QAAA,MAAM,CAAC,SAAS,GAAG,KAAK;;AAG1B,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,OAAO,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI;;IAGzF,OAAO,GAAA;QACb,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAA+B,KAAI;AACxD,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAA6B,KAAI;AAC7C,gBAAA,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE;AACvB,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;;AAE3D,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGI,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGb,IAAA,cAAc,CAAC,IAA+B,EAAE,MAAc,EAAE,KAAa,EAAA;AACnF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,IAAI,CAAC,GAAG,CAAC,CAAC,IAA6B,EAAE,KAAa,MAAM;YAC1D,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK;YAClD,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAC,CACJ;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,IAA6B,EAAE,KAAa,KAAI;AAC5D,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,cAAc,CAAE,IAA+C,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;;AAE5G,SAAC,CAAC;;AAtPO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBA6GV,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7G/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EA6FlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAO,EACP,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAc,qECxI9B,inMA2JA,EAAA,MAAA,EAAA,CAAA,4vOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDjHa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACI,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,inMAAA,EAAA,MAAA,EAAA,CAAA,4vOAAA,CAAA,EAAA;;0BA+GhB;;0BAAY,MAAM;2BAAC,oCAAoC;2FAtGjD,OAAO,EAAA,CAAA;sBAAf;gBAOQ,WAAW,EAAA,CAAA;sBAAnB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAQQ,kBAAkB,EAAA,CAAA;sBAA1B;gBASQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBAEsB,QAAQ,EAAA,CAAA;sBAA9B,YAAY;uBAAC,OAAO;gBACS,UAAU,EAAA,CAAA;sBAAvC,YAAY;uBAAC,cAAc;gBACA,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe;;;AEzI5B,IAAY,cAUX;AAVD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,GAAW;AACX,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,WAAwB;AACxB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,QAAkB;AAClB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,UAAsB;AACxB,CAAC,EAVW,cAAc,KAAd,cAAc,GAUzB,EAAA,CAAA,CAAA;;MCcY,YAAY,CAAA;AACvB;;;;AAIG;IACH,IAAa,KAAK,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,oBAAoB,EAAE;;;AAiI/B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AA9H5F;;;;;AAKG;QACM,IAAI,CAAA,IAAA,GAAa,EAAE;AAE5B;;;;;;AAMG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAE3B;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;AAMG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAE3B;;;;;;AAMG;QACM,IAAoB,CAAA,oBAAA,GAAG,KAAK;AAErC;;;;;;AAMG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAE3B;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;AACO,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ;AAE1C;;;;;AAKG;AACO,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAW;AAE7C;;;;;AAKG;AACK,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,aAAa,CAAO,CAAC,CAAC;AAExD;;;;;;AAMG;AACO,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3D,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,MAAK;AACP,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa;AAC1C,YAAA,OAAO,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW;SACvC,CAAC,CACH;QACS,IAAS,CAAA,SAAA,GAAG,EAAE;QACd,IAAS,CAAA,SAAA,GAAG,KAAK;QACjB,IAAM,CAAA,MAAA,GAAG,KAAK;AAGd,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;QAOvC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;;IAG1B,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE;;IAG7B,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK;YACtE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;;AAIpC,IAAA,aAAa,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACvC,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,SAAqB;;iBAC9C;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI;;AAE7B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,GAAG,OAAO;;;AAIvD,IAAA,cAAc,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;IAGrB,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGX,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;AAGjC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;;AAGlD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;;AAG5D,IAAA,SAAS,CAAC,MAAqB,EAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YAC3G,IAAI,CAAC,OAAO,EAAE;;aACT,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE;YACjH,IAAI,CAAC,OAAO,EAAE;;;AAtMP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBA2ID,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA3I/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,sfCxBzB,mjDA8BA,EAAA,MAAA,EAAA,CAAA,4kJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDNa,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,cAGN,KAAK,EAAA,QAAA,EAAA,mjDAAA,EAAA,MAAA,EAAA,CAAA,4kJAAA,CAAA,EAAA;;0BA6IhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCArI7C,KAAK,EAAA,CAAA;sBAAjB;gBAaQ,IAAI,EAAA,CAAA;sBAAZ;gBASQ,UAAU,EAAA,CAAA;sBAAlB;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,UAAU,EAAA,CAAA;sBAAlB;gBASQ,oBAAoB,EAAA,CAAA;sBAA5B;gBASQ,UAAU,EAAA,CAAA;sBAAlB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQS,KAAK,EAAA,CAAA;sBAAd;gBAQS,KAAK,EAAA,CAAA;sBAAd;gBA+B0B,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc;;;MEzHd,eAAe,CAAA;AAf5B,IAAA,WAAA,GAAA;AAgBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAc,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,GAAG,CAAC;AAClC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAS,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,IAAI,CAAC;AAChC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAU,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,CAAC;QAExC,IAAU,CAAA,UAAA,GAAG,MAAM,EAAc;AAEjC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAS,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAS,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAA4B,EAAE,CAAC;AAE1D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAc,EAAE,CAAC;AACrC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAc,EAAE,CAAC;AACxC,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAS,EAAE,CAAC;AAE3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC;AACzC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEjD,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAA+B,aAAa,CAAC;AACjE,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA+B,aAAa,CAAC;AACpE,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAC,QAAQ,CAAiB,UAAU,CAAC;AAEzD,QAAA,IAAA,CAAA,iBAAiB,GAAwB;AAChD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;SACF;AAmIO,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AACzB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;AAc3B;IAhJC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,EAAE;;IAGjB,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,eAAe,EAAE;SACvB,EAAE,CAAC,CAAC;;IAGP,MAAM,UAAU,CAAC,KAAY,EAAA;AAC3B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,aAAkC,CAAC,KAAK;AAC7D,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAG;gBACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,CAAC;AAChC,gBAAA,OAAO,IAAI;AACb,aAAC,CAAC;YACF,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE;;;IAI/B,cAAc,GAAA;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;AAE3F,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE;;;AAI1B,IAAA,kBAAkB,CAAC,eAAuB,EAAA;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC;AAC9F,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC;AAC5F,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC;;IAG5C,SAAS,CAAC,GAAc,EAAE,KAAY,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAG,EAAA,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,YAAY,CAAA,CAAE,CAAC;QACnE,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;QACpD,IAAI,CAAC,OAAO,EAAE;;AAGhB,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACjC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACvD,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;;;IAIvC,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;;IAGlC,cAAc,GAAA;QACZ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;;IAGrD,gBAAgB,GAAA;QACd,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;SAC1C,EAAE,GAAG,CAAC;;IAGD,eAAe,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;YACnD;;QAGF,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO;AAC5D,aAAA,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EACnC,GAAG,CAAC,CAAC,KAAY,KAAM,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,EAC/D,YAAY,CAAC,GAAG,CAAC,EACjB,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,EAC1C,GAAG,CAAC,KAAK,IAAG;AACV,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;AACjC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;;YAErC,IAAI,CAAC,SAAS,EAAE;AAClB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;IAGR,QAAQ,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE;YACxB;;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC;;AAGF,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAGvC,IAAA,MAAM,cAAc,GAAA;QAC1B,MAAM,UAAU,GAA8B,EAAE;AAChD,QAAA,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACrF,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,IAAI,IAAG;YACpC,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,WAAW,EAAE,OAAO;AACrB,aAAA,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;;IAGjC,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;;AAGjC,IAAA,UAAU,CAAC,KAAiB,EAAA;QAC1B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;;AAK7C,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;IAGX,SAAS,GAAA;QACf,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACpF,IAAI,CAAC,OAAO,EAAE;;+GArLL,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAXb,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA;YACP,eAAe;AACf,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCL,quMAwKA,EAAA,MAAA,EAAA,CAAA,ovJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,OAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDjIa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAf3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGV,SAAA,EAAA;wBACP,eAAe;AACf,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,quMAAA,EAAA,MAAA,EAAA,CAAA,ovJAAA,CAAA,EAAA;;;MErBR,2BAA2B,CAAA;+GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,iBAJvB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC1B,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,aACjJ,qBAAqB,CAAA,EAAA,CAAA,CAAA;gHAEpB,2BAA2B,EAAA,OAAA,EAAA,CAH5B,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAGzG,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,CAAC;oBAC5J,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA;;;MCAY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EALd,YAAA,EAAA,CAAA,YAAY,CACjB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,aAC5G,YAAY,CAAA,EAAA,CAAA,CAAA;gHAGX,kBAAkB,EAAA,OAAA,EAAA,CAJnB,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAI1F,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,YAAY,CAAC;AAC5B,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,CAAC;oBACvH,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;MCqBY,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAZ,YAAY,EAAA,YAAA,EAAA,CAlBR,eAAe,CAAA,EAAA,OAAA,EAAA,CAE5B,YAAY;YACZ,oBAAoB;YACpB,qBAAqB;YACrB,2BAA2B;YAC3B,kBAAkB;YAClB,oBAAoB;YACpB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,sBAAsB;YACtB,UAAU;AACV,YAAA,eAAe,aAEP,eAAe,CAAA,EAAA,CAAA,CAAA;AAEd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAhBrB,YAAY;YACZ,oBAAoB;YACpB,qBAAqB;YACrB,2BAA2B;YAC3B,kBAAkB;YAClB,oBAAoB;YAGpB,mBAAmB;YAEnB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAMb,YAAY,EAAA,UAAA,EAAA,CAAA;kBAnBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,qBAAqB;wBACrB,2BAA2B;wBAC3B,kBAAkB;wBAClB,oBAAoB;wBACpB,gBAAgB;wBAChB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,sBAAsB;wBACtB,UAAU;wBACV,eAAe;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;AClCD;MAkDa,oBAAoB,CAAA;AAE/B,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,GAAG,sBAAsB,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,GAAG,gBAAgB,CAAC,EAAE;YACtI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE;;;AAsBzD,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;;AAwJ3B,IAAA,WAAA,CAC6E,eAAiC,EACjF,SAAoB,EACpB,aAAwB,EAC3C,UAAsB,EACtB,YAA0B,EAC1B,MAAc,EACd,GAAsB,EAAA;QAN6C,IAAe,CAAA,eAAA,GAAf,eAAe;QAC/D,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAa,CAAA,aAAA,GAAb,aAAa;QAChC,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAG,CAAA,GAAA,GAAH,GAAG;AAvLb;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;AAMG;;QAGH,IAAS,CAAA,SAAA,GAAG,KAAK;AASjB;;;;;;AAMG;QACM,IAAa,CAAA,aAAA,GAAG,KAAK;AAE9B;;;;;;AAMG;QAGH,IAAY,CAAA,YAAA,GAAkB,IAAI;AAElC;;;;;AAKG;QACM,IAAI,CAAA,IAAA,GAAG,EAAE;AAElB;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAEnB;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAWzB;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAG,EAAE;AAE5B;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;AAE7B;;;;AAIG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAc,QAAQ;AAExC;;;;;;;AAOG;QACM,IAAQ,CAAA,QAAA,GAAG,CAAC;AAErB;;;;AAIG;QACM,IAAqB,CAAA,qBAAA,GAAG,KAAK;AAEtC;;;;;AAKG;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAwB;QAGhE,IAAW,CAAA,WAAA,GAAG,KAAK;QACT,IAAM,CAAA,MAAA,GAAkB,IAAI;AA6FtC,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AAEzB;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;QApFhB,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;AAGzC,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;;IAIvC,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;;AAGtC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;;QAEtC,IAAI,CAAC,eAAe,EAAE;;IAGxB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;QAC3E,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,GAAG,MAAK;YAC3D,IAAI,CAAC,UAAU,EAAE;AACnB,SAAC;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAC3E,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpC,CAAC,SAAS,CAAC,MAAM,IAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;SACpC,CAAC,CACH;;IAGH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC;;;IAIjF,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO;YACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO;AAC1C,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO;YACzC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;;aACpG;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;;AAErF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;;AAEjE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;;AAG/B,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AACtD,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;;AAIzB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;;IAW5B,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,SAAS,GAAG,kBAAkB,GAAG,oBAAoB;;AAEnE,QAAA,OAAO,EAAE;;AAGX,IAAA,qBAAqB,CAAC,UAAmB,EAAA;QACvC,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,qBAAqB;;IAGtD,SAAS,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK;YACvD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CACnC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBACpB,IAAI,CAAC,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK;AACpC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;AACtC,aAAC,CAAC;;;IAIE,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;;AAGzH,IAAA,OAAO,CAAC,OAAgB,EAAA;QACtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE;AAC/B,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;qBACrB;AACL,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;;SAG/B,EAAE,CAAC,CAAC;;IAGP,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;;AA/ThB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAwLT,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxL/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,gkCClDjC,mxCAwCA,EAAA,MAAA,EAAA,CAAA,gvQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDUa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGV,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;;AAEF,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,MAAM;;;;AAIjC,wBAAA,SAAS,EAAE,sBAAsB;AACpC,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,mxCAAA,EAAA,MAAA,EAAA,CAAA,gvQAAA,CAAA,EAAA;;0BA0LhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BACvD;;0BAAY;;0BACZ;;0BAAY;oJAxLf,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAaxB,QAAQ,EAAA,CAAA;sBAAhB;gBAaG,QAAQ,EAAA,CAAA;sBADX;gBAeQ,aAAa,EAAA,CAAA;sBAArB;gBAWD,YAAY,EAAA,CAAA;sBAFX,WAAW;uBAAC,eAAe;;sBAC3B;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAOQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAUQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAQS,WAAW,EAAA,CAAA;sBAApB;gBAMmB,YAAY,EAAA,CAAA;sBAA/B,SAAS;uBAAC,OAAO;gBACI,cAAc,EAAA,CAAA;sBAAnC,SAAS;uBAAC,SAAS;;;MEvNT,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA1B,0BAA0B,EAAA,YAAA,EAAA,CAJtB,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAChK,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAEnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAH3B,OAAA,EAAA,CAAA,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAwB,gBAAgB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAGxI,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;oBAC3K,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA;;;MCaY,iBAAiB,CAAA;AAgB5B;;;;AAIG;IACH,IAAa,IAAI,CAAC,KAAa,EAAA;QAC7B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;AA6FpE,IAAA,WAAA,CAC6E,eAAiC,EAEpG,IAOP,EACO,WAA8C,EAC9C,YAA0B,EAAA;QAXyC,IAAe,CAAA,eAAA,GAAf,eAAe;QAElF,IAAI,CAAA,IAAA,GAAJ,IAAI;QAQJ,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAY,CAAA,YAAA,GAAZ,YAAY;AA/HtB;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAiB,SAAS;AAE/C;;;;AAIG;QACM,IAAO,CAAA,OAAA,GAAG,EAAE;AAarB;;;;AAIG;QACM,IAAO,CAAA,OAAA,GAAG,CAAC;AAEpB;;;;AAIG;QACM,IAAoB,CAAA,oBAAA,GAAG,IAAI;AAEpC;;;;AAIG;QACM,IAAK,CAAA,KAAA,GAAG,IAAI;AAErB;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAI,EAAE;AASvB;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAoB,QAAQ;AAE/C;;;;;AAKG;QACM,IAAO,CAAA,OAAA,GAAoB,SAAS;AAE7C;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;AAKG;QACM,IAAkB,CAAA,kBAAA,GAAG,EAAE;AAEhC;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;QAG7B,IAAY,CAAA,YAAA,GAAG,IAAI;QAEnB,IAAO,CAAA,OAAA,GAAG,KAAK;QAEf,IAAc,CAAA,cAAA,GAAG,CAAC;QAClB,IAAa,CAAA,aAAA,GAAG,CAAC;QAIjB,IAAkB,CAAA,kBAAA,GAAG,WAAW;QACb,IAAa,CAAA,aAAA,GAAG,EAAE;QAgBnC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;QAGzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QACrF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC;;IAGlC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;QACvC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAIvD,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC;;;IAItE,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC;AACvB,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;QACtB,IAAI,CAAC,eAAe,EAAE;;;IAIxB,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE;AAC/B,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAI1B,YAAY,GAAA;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;AACrD,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;;QAEpB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;;IAI7E,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,eAAe,EAAE;;AAGxB,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,KAAK,EAAE,cAAc,EAAE;QAEvB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;;aACnB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;AAC9B,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC;;;IAItC,eAAe,GAAA;AACrB,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;;;+GAxMnB,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAqHN,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAChD,kBAAkB,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAtHjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5B9B,62EAqDA,EDvCgB,MAAA,EAAA,CAAA,u/LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,WAAW,EAAE;gBACjB,UAAU,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACtC,oBAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;iBAClE,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACrC,oBAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBAClE,CAAC;aACL,CAAC;AACL,SAAA,EAAA,CAAA,CAAA;;4FAGQ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAGX,UAAA,EAAA;wBACR,OAAO,CAAC,WAAW,EAAE;4BACjB,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACtC,gCAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;6BAClE,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACrC,gCAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BAClE,CAAC;yBACL,CAAC;AACL,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,62EAAA,EAAA,MAAA,EAAA,CAAA,u/LAAA,CAAA,EAAA;;0BAuHhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BACvD,MAAM;2BAAC,kBAAkB;qGA/GnB,YAAY,EAAA,CAAA;sBAApB;gBAOQ,OAAO,EAAA,CAAA;sBAAf;gBAOY,IAAI,EAAA,CAAA;sBAAhB;gBAWQ,OAAO,EAAA,CAAA;sBAAf;gBAOQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;;;ME1HU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,QAAqB,EAAA;QAArB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAE5B,KAAK,CAAC,OAAe,EAAE,gBAAmC,EAAE,IAAa,EAAE,IAAmB,EAAE,OAAgB,EAAA;AAC9G,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;;IAG3E,OAAO,CAAC,OAAe,EAAE,gBAAmC,EAAE,IAAa,EAAE,IAAmB,EAAE,OAAgB,EAAA;AAChH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;;IAG7E,IAAI,CAAC,OAAe,EAAE,gBAAmC,EAAE,IAAa,EAAE,IAAmB,EAAE,OAAgB,EAAA;AAC7G,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;;IAG1E,OAAO,CAAC,OAAe,EAAE,gBAAmC,EAAE,IAAa,EAAE,IAAmB,EAAE,OAAgB,EAAA;AAChH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;;IAG7E,IAAI,CACF,YAA0B,EAC1B,OAAe,EACf,gBAAmC,EACnC,IAAa,EACb,IAAmB,EACnB,OAAgB,EAAA;QAEhB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,iBAAiB,EAAE;AACtE,YAAA,IAAI,EAAE;gBACJ,YAAY;gBACZ,OAAO;gBACP,IAAI;gBACJ,IAAI;gBACJ,OAAO;AACR,aAAA;AACF,SAAA,CAAC;QACF,IAAI,gBAAgB,EAAE;AACpB,YAAA,YAAY,CAAC,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB;;AAE3D,QAAA,OAAO,YAAY;;+GAvCV,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAf,eAAe,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;MCUY,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EALnB,YAAA,EAAA,CAAA,iBAAiB,CACtB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,aAC9G,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAFvB,SAAA,EAAA,CAAC,eAAe,CAAC,EAFlB,OAAA,EAAA,CAAA,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAmB,iBAAiB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAI7G,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;oBACzH,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,SAAS,EAAE,CAAC,eAAe,CAAC;AAC7B,iBAAA;;;MCNY,sBAAsB,CAAA;AACjC,IAAA,SAAS,CAAC,GAAW,EAAE,OAAA,GAAkB,EAAE,EAAA;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;;IAG9B,UAAU,CAAC,GAAQ,EAAE,IAAY,EAAA;QACvC,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE;AAC9C,YAAA,OAAO,EAAE;;QAEX,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;AACpD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,YAAA,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1B;;YAEF,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE;AAC9C,gBAAA,OAAO,EAAE;;;AAGb,QAAA,OAAO,GAAG;;+GAnBD,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACRD;;;;;;;;AAQG;AACI,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,SAA2C,EAAE,KAAA,GAA2B,KAAK,KAAY;IACzI,MAAM,QAAQ,GAAG,wBAAwB;IACzC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACxC,QAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;;AAG7C,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACnC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,GAAG;AAElC,IAAA,IAAI,KAAK,KAAK,KAAK,EAAE;AACnB,QAAA,IAAI,SAAS,GAAG,EAAE,KAAK,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,EAAE;AACxE,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;AACpC,aAAA,IAAI,SAAS,GAAG,EAAE,KAAK,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,EAAE;AAC/E,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;AACpC,aAAA,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,EAAE,KAAK,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,EAAE;AACjG,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;;SAEtC;QACL,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,OAAO,EAAE;AAC3C,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;aACpC,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,OAAO,EAAE;AAClD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;AACpC,aAAA,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,OAAO,EAAE;AACpE,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;aACpC,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;AACpD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;aACpC,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;AACpD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;AACpC,aAAA,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;AACtE,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;aACpC,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,UAAU,EAAE;AACrD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;aACpC,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,UAAU,EAAE;AACrD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;AACpC,aAAA,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,UAAU,EAAE;AACvE,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;;AAI7C,IAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC;AAED;;;AAGG;AACI,MAAM,QAAQ,GAAG,CAAC,QAAgB,KAAyC;AAChF,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAChD,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG;AACxC,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG;IACvC,MAAM,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,IAAI,GAAG;AAEhC,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAE7B,IAAI,CAAC,GAAG,CAAC;AACT,IAAA,IAAI,CAAC;IACL,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAEzB,IAAA,IAAI,GAAG,KAAK,GAAG,EAAE;AACf,QAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;SACL;AACL,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG;QACnB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;QAEnD,QAAQ,GAAG;AACT,YAAA,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC;AACF,YAAA,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnB;AACF,YAAA,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnB;;QAGJ,CAAC,IAAI,CAAC;;AAGR,IAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB,CAAC;AAED;;;AAGG;AACI,MAAM,QAAQ,GAAG,CAAC,QAA6C,KAAY;IAChF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ;IAE5B,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,KAAY;AAC3D,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,CAAC,IAAI,CAAC;;AAER,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,CAAC,IAAI,CAAC;;AAER,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE5B,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACb,YAAA,OAAO,CAAC;;AAEV,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;;AAEtC,QAAA,OAAO,CAAC;AACV,KAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,IAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAEnB,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEnC,IAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;AAE/F,IAAA,OAAO,CAAI,CAAA,EAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACrD,CAAC;AAED;;;AAGG;AACH,MAAM,KAAK,GAAG,CAAC,KAAa,KAAa,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;;MC1F3D,iBAAiB,CAAA;IA4L5B,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;;AAazB,IAAA,WAAA,CAC6E,eAAiC,EAC3F,GAAsB,EACZ,SAAoB,EAC9B,SAAoB,EACpB,YAA0B,EAC1B,UAAsB,EACtB,MAAc,EAAA;QAN4C,IAAe,CAAA,eAAA,GAAf,eAAe;QACzE,IAAG,CAAA,GAAA,GAAH,GAAG;QACO,IAAS,CAAA,SAAA,GAAT,SAAS;QACnB,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAM,CAAA,MAAA,GAAN,MAAM;QAhNV,IAAK,CAAA,KAAA,GAAG,aAAa;AAEpC,QAAA,IAAA,CAAA,qBAAqB,GAAG,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,KAAK;AAC3E;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAI,EAAE;AAUpB;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK;AAiB5B;;;;;AAKG;QACM,IAAE,CAAA,EAAA,GAAI,EAAE;AAkBjB;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAiB,EAAE;AAErC;;;;;;AAMG;QACM,IAAU,CAAA,UAAA,GAAG,IAAI;AAE1B;;;;;;AAMG;QACM,IAAsB,CAAA,sBAAA,GAAI,KAAK;AAExC;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,IAAI;AAEjC;;;;;;AAMG;QAGH,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAE5C;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAG,EAAE;AAEvB;;;;AAIG;QACM,IAAU,CAAA,UAAA,GAAG,EAAE;QAEf,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAW,EAAE;AAElC;;;;AAIG;QACM,IAAU,CAAA,UAAA,GAAW,EAAE;AAEtB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAa3C;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AAEzB;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;AA2BlB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,KAAK,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAjBpB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;QACnB,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;AAGzC,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;;AAYvC;;;AAGG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;IAI3B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;QAC1C,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,gBAAgB,EAAE;;;IAI3B,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3F,iBAAA,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACxC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC;aAChD,CAAC,CAAC;;AAGP,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3D,IAAA,UAAU,CAAC,KAAY,EAAA;QACrB,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAI3B,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;QAC1C,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAI3B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;;AAE9C,QAAA,OAAO,KAAK;;AAGd,IAAA,UAAU,CAAC,KAAW,EAAA;QACpB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;;aACnB;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAEjB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;IAGxB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGvB,gBAAgB,GAAA;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,SAAS;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,SAAS;QACzF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,MAAM,CAAC;QACzE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,+BAA+B,EAAE,KAAK,CAAC;;AAGzE,IAAA,SAAS,CAAC,MAAqB,EAAA;AAC7B,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,QAAQ,EAAE;AACtF,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAC7B,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;iBAChB;AACL,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK;AACxE,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;gBACpE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;AAC9I,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC;AAEjE,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;;;;AAG5D,aAAA,KAAK,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,GAAG;AACvF,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,oBAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;wBAChC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;AAChD,wBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;yBACjB;AACL,wBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,4BAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;6BACpN;AACL,4BAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;;;qBAGjD;AACL,oBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;;gBAE3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;iBAC9B;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;;aAElB,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,IAAI,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,kBAAkB,EAAE;;aAC1C,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,EAAE;AAC5C,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,iBAAiB,EAAE;;;AA3WvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBA2MN,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA3M/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAuLkB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EACH,EAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,0JCpOnE,+1IAqHA,EAAA,MAAA,EAAA,CAAA,stdAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAzC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkB,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAwB,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDzEa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACI,aAAa,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,+1IAAA,EAAA,MAAA,EAAA,CAAA,stdAAA,CAAA,EAAA;;0BA6MhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAEvD;;0BAAY;4IA5MA,KAAK,EAAA,CAAA;sBAAnB;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAQQ,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,WAAW,EAAA,CAAA;sBAAnB;gBAQQ,EAAE,EAAA,CAAA;sBAAV;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,MAAM,EAAA,CAAA;sBAAd;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBASQ,UAAU,EAAA,CAAA;sBAAlB;gBASQ,sBAAsB,EAAA,CAAA;sBAA9B;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAWD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;gBASQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,UAAU,EAAA,CAAA;sBAAlB;gBAES,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;gBAEuB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;gBAEuC,oBAAoB,EAAA,CAAA;sBAAhF,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAE3D,4BAA4B,EAAA,CAAA;sBAD3B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,8BAA8B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAInE,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;MEzM5B,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAvB,uBAAuB,EAAA,YAAA,EAAA,CAhBnB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAE9B,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,eAAe;YACf,eAAe;YACf,qBAAqB;AACrB,YAAA,sBAAsB,aAEd,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAdhC,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,eAAe;YAEf,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAKZ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,eAAe;wBACf,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;AACvB,qBAAA;oBACD,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA;;;MClBY,gBAAgB,CAAA;AAqD3B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AArD5F;;;;;;AAMG;QACM,IAAI,CAAA,IAAA,GAAgB,OAAO;AAEpC;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,IAAI;AAExB;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAkB,IAAI;AAEnC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAa,IAAI;QAOhC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;;IAG1B,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;;IAG1B,iBAAiB,GAAA;QACf,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,CAAI,CAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,EAAE,IAC1F,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,EAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAA,CAAE;AAE3B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;;AA1EvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAsDL,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtD/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,4OCX7B,mgBAmBA,EAAA,MAAA,EAAA,CAAA,qyGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA1C,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDRa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAGV,KAAK,EAAA,QAAA,EAAA,mgBAAA,EAAA,MAAA,EAAA,CAAA,qyGAAA,CAAA,EAAA;;0BAwDhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCA9CjD,IAAI,EAAA,CAAA;sBAAZ;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;;;MEjDU,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAJlB,YAAA,EAAA,CAAA,gBAAgB,CAErB,EAAA,OAAA,EAAA,CAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,aAD9D,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAFoB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAE7D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;oBAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,CAAC;AAC1E,iBAAA;;;MCKY,sBAAsB,CAAA;AA0BjC,IAAA,WAAA,CAC6E,eAAiC,EACrG,SAA+C,EACrB,IAAuB,EAC9C,YAA0B,EAAA;QAHuC,IAAe,CAAA,eAAA,GAAf,eAAe;QACnF,IAAS,CAAA,SAAA,GAAT,SAAS;QACiB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAC3B,IAAY,CAAA,YAAA,GAAZ,YAAY;AAzBxB,QAAA,IAAA,CAAA,IAAI,GAAG,eAAe,CAAC,eAAe;QAEtC,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAmB,CAAA,mBAAA,GAAG,IAAI;QAK1B,IAAuB,CAAA,uBAAA,GAAG,+BAA+B;QACzD,IAAyB,CAAA,yBAAA,GAAG,8BAA8B;AAG1D;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAQnD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO;AAClC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAC/C,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC,eAAe;AAC5D,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;cAC3B,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW;cAC1D,SAAS;QACb,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,KAAK;QACpD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI;QAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI;QAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,SAAS;QAC5D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,OAAO;QAC9D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,SAAS;QACpE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,IAAI,+BAA+B;QAC9F,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,IAAI,8BAA8B;QACjG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,IAAI,MAAM;QAEzE,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;+GA3DjB,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA2BX,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAEhD,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7Bd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,gICfnC,qnCA0BA,EAAA,MAAA,EAAA,CAAA,2DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4C,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,2BAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDXa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,qnCAAA,EAAA,MAAA,EAAA,CAAA,2DAAA,CAAA,EAAA;;0BA6BhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAEvD,MAAM;2BAAC,eAAe;sEALhB,gBAAgB,EAAA,CAAA;sBAAxB;;;MEtBU,4BAA4B,CAAA;+GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EARxB,YAAA,EAAA,CAAA,sBAAsB,CAM3B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,eAAe,aAL5F,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAOrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAN5B,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC1C,YAAA,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE;AACxC,SAAA,EAAA,OAAA,EAAA,CACS,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAE1E,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBATxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC1C,wBAAA,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE;AACxC,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,eAAe;AACvG,iBAAA;;;MCXY,iBAAiB,CAAA;IAC5B,mBAAmB,GAAG,KAAK;IAE3B,IAAI,kBAAkB,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;;AAGlC,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,mBAAmB;;+GARtB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACCM,MAAM,eAAe,GAAG;AAC7B,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACjE,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,OAAO;QAClB,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;AACnD,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE;QACjE,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;AACvD,KAAA;CACF;AAGK,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAClD,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;AAGA,IAAA,MAAM,CAAC,IAAU,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;YAC/C,OAAO,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC;;AAGhD,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ;AACjC,QAAA,MAAM,OAAO,GAAwC;YACnD,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;AAC1D,YAAA,SAAS,EAAE,OAAO;SACnB;AAED,QAAA,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;;+GAlBnD,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAb,aAAa,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACZK,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAC7C,IAAA,MAAM,CAAC,IAAU,EAAA;QACxB,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;;+GAFlC,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;AAOD,MAAM,OAAO,GAAmB;AAC9B,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;CACF;MAgBY,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAZrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,QAAQ,EAAE,iBAAiB;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,QAAQ,EAAE,OAAO;AAClB,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,QAAQ,EAAE,iBAAiB;AAC5B,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,QAAQ,EAAE,OAAO;AAClB,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACpCD;AAuCA;MACa,mBAAmB,CAAA;AA4C9B;;;;;AAKG;IACH,IAAa,MAAM,CAAC,MAAgB,EAAA;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;;AAqJ5C;;;;AAIG;IACH,IAAa,eAAe,CAAC,KAAc,EAAA;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,KAAK;;IA6BnD,WAC6E,CAAA,eAAiC,EACpG,GAAsB,EACtB,SAAuB,EACJ,SAAoB,EACvC,iBAAoC,EAAA;QAJ+B,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;QACU,IAAS,CAAA,SAAA,GAAT,SAAS;QAC5B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAhPZ,IAAK,CAAA,KAAA,GAAG,eAAe;AAEtC;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAI,EAAE;AAUpB;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAI,EAAE;AAE1B;;;;;AAKG;QACM,IAAE,CAAA,EAAA,GAAI,EAAE;AA8EjB;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,IAAI;AAEjC;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK;AAkB1B;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK;AAE5B;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK;AAEjC;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAG,EAAE;AAW1B;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AAEzB;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;AAElB;;;;;AAKG;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAiB;QAErD,IAAK,CAAA,KAAA,GAAG,IAAI,SAAS,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AACzC,YAAA,GAAG,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AACxC,SAAA,CAAC;QAGQ,IAAkB,CAAA,kBAAA,GAAG,aAAa;QAS1C,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;AAGzC,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;;AAIvC,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;YAClC,OAAO,IAAI,CAAC,OAAO,GAAG,yBAAyB,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS,GAAG,YAAY;;QAG/F,OAAO,IAAI,CAAC,WAAW;;AAGzB;;;AAGG;;IAEH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;;IAK3B,QAAQ,GAAA;QACN,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC1D,IAAI,CAAC,gBAAgB,EAAE;;;AAIzB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,EAAE;;AAEjB,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,gBAAgB,EAAE;;;;;IAM3B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;;AAEpE,QAAA,OAAO,KAAK;;AAGd,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,OAAO,EAAE;;AAEhB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B,IAAA,UAAU,CAAC,KAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,EAAE;;;AAInB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,sBAAsB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;;;AAIlC,IAAA,mBAAmB,CAAC,OAAgB,EAAA;QAClC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;QAC1C,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,GAAG;QAC3C,MAAM,aAAa,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK;QAE3C,IAAI,aAAa,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC/C,YAAA,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,eAAe,EAAE;;;IAI1B,eAAe,GAAA;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAM;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAM;AAC1C,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAW,CAAC;;IAG5F,eAAe,CAAC,sBAA2B,EAAE,UAA+B,EAAA;QAC1E,MAAM,SAAS,GAAI,IAAI,CAAC,KAAc,IAAI,IAAI,IAAI,EAAE;QAEpD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;QACrD,SAAS,CAAC,WAAW,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QAE3D,UAAU,CAAC,KAAK,EAAE;QAElB,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;;IAGjC,QAAQ,GAAA;QACd,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;YAE/B,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;AACtE,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;;YAGrD,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;AAChE,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;;;AAInD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;;;AAI1C,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAyC;AAC9D,QAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QACjC,MAAM,cAAc,GAAG,CAAG,EAAA,KAAK,IAAI,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;;IAGtB,gBAAgB,GAAA;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,SAAS;QACzF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,KAAK,CAAC;AAClE,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAA,EAAG,IAAI,CAAC,YAAY,IAAI,SAAS,CAAA,CAAE,CAAC;;AAvY1F,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBA6OR,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA6C,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7O/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAPjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE;AACjD,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC3D,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCL,qlMA+KA,EAAA,MAAA,EAAA,CAAA,upRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA3C,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA4C,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDvIa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;+BACI,eAAe,EAAA,aAAA,EAGV,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE;AACjD,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC3D,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,qlMAAA,EAAA,MAAA,EAAA,CAAA,upRAAA,CAAA,EAAA;;0BAgPhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAGvD;;0BAAY;sEA/OA,KAAK,EAAA,CAAA;sBAAnB;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAQQ,EAAE,EAAA,CAAA;sBAAV;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBASY,MAAM,EAAA,CAAA;sBAAlB;gBAWQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAQQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,gBAAgB,EAAA,CAAA;sBAAxB;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBAOY,eAAe,EAAA,CAAA;sBAA3B;gBAoBS,OAAO,EAAA,CAAA;sBAAhB;;;ME1OU,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAzB,yBAAyB,EAAA,YAAA,EAAA,CAjBrB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEhC,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,eAAe;YACf,qBAAqB;YACrB,sBAAsB;AACtB,YAAA,qBAAqB,aAEb,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAflC,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YAInB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAIZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,WAAW;wBACX,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;AACtB,qBAAA;oBACD,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;MCzBY,YAAY,CAAA;AACvB;;;;;;AAMG;IACH,SAAS,CAAC,KAAa,EAAE,KAAa,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;;+GATpD,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCOY,eAAe,CAAA;IAmE1B,IAAa,MAAM,CAAC,MAAc,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;aACjD,IAAI,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;;AAKrB,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;QA3E3E,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAc,CAAA,cAAA,GAAG,CAAC;QACzB,IAAK,CAAA,KAAA,GAAa,EAAE;AAG9B;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AASrD;;;;AAIG;QACM,IAAK,CAAA,KAAA,GAAyB,OAAO;AAE9C;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAUzB;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAG,EAAE;AAEtB;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,IAAI;AAQjB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU;QAKhD,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;AAEzC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc;;AAIzB,IAAA,MAAM,CAAC,KAAa,EAAA;AAC5B,QAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC;;QAG1B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;YAChD;;AAGF,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,CAAC,GAAG,QAAQ;QACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGzB,IAAA,OAAO,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC;;AAlGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBA4EJ,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5E/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,iVCZ5B,2nCAgCA,EAAA,MAAA,EAAA,CAAA,+5LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDpBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGJ,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,2nCAAA,EAAA,MAAA,EAAA,CAAA,+5LAAA,CAAA,EAAA;;0BA8EhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCA/DjD,gBAAgB,EAAA,CAAA;sBAAxB;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAEY,MAAM,EAAA,CAAA;sBAAlB;gBAMS,WAAW,EAAA,CAAA;sBAApB;;;ME1EU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CAJjB,eAAe,EAAE,YAAY,aAClC,YAAY,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CAC5B,eAAe,CAAA,EAAA,CAAA,CAAA;gHAEd,qBAAqB,EAAA,OAAA,EAAA,CAHtB,YAAY,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAG3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;AAC7C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;oBACvC,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;ACVM,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,KAAA,GAAgB,GAAG,KAAY;IAC5E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAE3B,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,IAAI,GAAG;IAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG;AAC3B,IAAA,IAAI,CAAC,GAAG,MAAM,GAAG,GAAG;IAEpB,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAK,EAAA,EAAA,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAG;AAC3C,CAAC;;MCiBY,cAAc,CAAA;AAczB;;;;AAIG;IACH,IAAa,MAAM,CAAC,MAAc,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;aACjD,IAAI,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;;AAyBrB,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;QA/C3E,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAc,CAAA,cAAA,GAAG,CAAC;QACzB,IAAK,CAAA,KAAA,GAAa,EAAE;AAI9B;;;;AAIG;QACM,IAAa,CAAA,aAAA,GAAkB,IAAI;AAa5C;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAW,EAAE;AAExB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU;AAE1D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC;QAK5E,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;AAEzC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc;;IAGnC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE;;;AAI1B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,eAAe,EAAE;;;AAIhB,IAAA,MAAM,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;IAGnD,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;;AAExB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;;AAE3D,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;;AAC7B,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;;YAE/D,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAChE,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;;AAC7B,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;;AAErD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;;;AAItC,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa;QAChE,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE;;;AAInB,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,YAAA,OAAO,0BAA0B;;AAC5B,aAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,oBAAoB;;AAE7B,QAAA,OAAO,EAAE;;IAGH,eAAe,GAAA;AACrB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,MAAM,CAAC,eAAe,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9D,QAAA,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,YAAY;AAC9C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;;AAGzB,IAAA,OAAO,CAAC,IAAY,EAAA;;QAElB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;;;AAtHP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAgDH,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAhD/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,iXC1B3B,s4BAyBA,EAAA,MAAA,EAAA,CAAA,sjHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDCa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAGH,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,s4BAAA,EAAA,MAAA,EAAA,CAAA,sjHAAA,CAAA,EAAA;;0BAkDhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCA3C/B,UAAU,EAAA,CAAA;sBAApC,YAAY;uBAAC,WAAW;gBAOhB,aAAa,EAAA,CAAA;sBAArB;gBAOY,MAAM,EAAA,CAAA;sBAAlB;gBAaQ,gBAAgB,EAAA,CAAA;sBAAxB;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBAES,mBAAmB,EAAA,CAAA;sBAA5B;;;ME3DU,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJhB,YAAA,EAAA,CAAA,cAAc,CACnB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,cAAc,CAAA,EAAA,CAAA,CAAA;AAEb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHrB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,cAAc,CAAC;oBAC9B,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,cAAc;AACzB,iBAAA;;;MCUY,mBAAmB,CAAA;AAVhC,IAAA,WAAA,GAAA;AAWE;;;;;;AAMG;AACI,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAmB,OAAO,CAAC;AAE1D;;;;;;AAMG;AACI,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAe;AAEjD;;;;;;AAMG;AACI,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAY;AACnC,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAC,KAAK,CAAC;QACnC,IAAe,CAAA,eAAA,GAAG,MAAM,EAG3B;AACJ,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC;QAE9B,IAAkB,CAAA,kBAAA,GAAG,cAAc;AAYvD;IAVQ,MAAM,CAAC,cAAsB,EAAE,UAAkB,EAAA;AACtD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAG;AAC7B,YAAA,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,GAAG,UAAU;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC;AACjC,aAAA,CAAC;AACF,YAAA,OAAO,CAAC,GAAG,KAAK,CAAC;AACnB,SAAC,CAAC;;+GA5CO,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBhC,y0CAkCA,EAAA,MAAA,EAAA,CAAA,0oIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDpBc,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAK7F,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,mBAGT,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,eAAe,EAAE,oBAAoB,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,EACjG,IAAA,EAAA;AACF,wBAAA,uBAAuB,EAAE,cAAc;AAC1C,qBAAA,EAAA,QAAA,EAAA,y0CAAA,EAAA,MAAA,EAAA,CAAA,0oIAAA,CAAA,EAAA;;;MEaQ,eAAe,CAAA;AA0G1B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AA1G5F;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;AAMG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAEnB;;;;;;AAMG;QACM,IAAO,CAAA,OAAA,GAAG,EAAE;AAYrB;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;AAKG;AACO,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAW;AAU9C;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;AAIG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK;AAExB;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;QAEnB,IAAgB,CAAA,gBAAA,GAAG,KAAK;QA4D1B,IAAQ,CAAA,QAAA,GAAe,MAAK;AACpC,SAAC;QACO,IAAS,CAAA,SAAA,GAAe,MAAK;AACrC,SAAC;QAzDC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,EAAE;;IAGnB,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;;IAGnB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;QAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAIhC,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;;AAIzB,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,eAAe,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;AAG/B,IAAA,SAAS,CAAC,MAAqB,EAAA;AAC7B,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,EAAE;YAC9E,MAAM,CAAC,eAAe,EAAE;YACxB,MAAM,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,QAAQ,EAAE;;;IASX,UAAU,GAAA;QAChB,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,GAAG,EAAE,CAAA,CAAE;;AAzKzI,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBA2GJ,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA3G/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EATb,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BL,y0CAqCA,EAAA,MAAA,EAAA,CAAA,04MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgD,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDPa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGV,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,y0CAAA,EAAA,MAAA,EAAA,CAAA,04MAAA,CAAA,EAAA;;0BA6GhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAnGjD,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBASQ,OAAO,EAAA,CAAA;sBAAf;gBAUD,QAAQ,EAAA,CAAA;sBAFP,WAAW;uBAAC,mBAAmB;;sBAC/B;gBAUQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQS,MAAM,EAAA,CAAA;sBAAf;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;;;MEpHU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAJjB,eAAe,CAAA,EAAA,OAAA,EAAA,CACpB,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,aAClI,eAAe,CAAA,EAAA,CAAA,CAAA;gHAEd,qBAAqB,EAAA,OAAA,EAAA,CAHtB,YAAY,EAAE,gBAAgB,EAAwB,cAAc,EAAmB,mBAAmB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAGjI,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,CAAC;oBAC7I,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;MCTY,eAAe,GAAG,IAAI,cAAc,CAAC,WAAW,EAAE;IAC7D,OAAO,EAAE,MAAK;AACZ,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACrD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAA,YAAA,EAAe,iBAAiB,CAAC,MAAM,CAAK,GAAA,CAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;KAC1G;AACF,CAAA;;ACLM,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAAC,iBAAiB,EAAE;IACzE,OAAO,EAAE,MAAK;AACZ,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACrD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAA,YAAA,EAAe,iBAAiB,CAAC,YAAY,CAAK,GAAA,CAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;KAChH;AACF,CAAA,CAAC;;MCkBW,aAAa,CAAA;AAgMxB,IAAA,WAAA,CAC6E,eAAiC,EACpG,YAA0B,EAC1B,UAAsB,EAAA;QAF6C,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAU,CAAA,UAAA,GAAV,UAAU;AA7KpB;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAyB,EAAE;AA8BxC;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;AAIG;QACM,IAAiB,CAAA,iBAAA,GAAwB,KAAK;AAEvD;;;;AAIG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAE3B;;;;AAIG;QACM,IAAe,CAAA,eAAA,GAAmB,KAAK;AAEhD;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK;AAE1B;;;;AAIG;QACM,IAAoB,CAAA,oBAAA,GAAG,KAAK;AAErC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAWrD;;;;;;AAMG;QACM,IAAe,CAAA,eAAA,GAAsB,EAAE;AAEhD;;;;;;AAMG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK;AAoB1B;;;;;;AAMG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK;AAW/B;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAqB,SAAS;AAElD;;;;AAIG;AACO,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU;QAIhC,IAAmB,CAAA,mBAAA,GAAG,mBAAmB;AAElD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;QAOvC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;;AAGxB,IAAA,IAAc,sBAAsB,GAAA;AAClC,QAAA,OAAO,CAAC,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAG1E,IAAA,cAAc,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAIvB,eAAe,GAAA;QACvB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa;AACrD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;;AAGzE,IAAA,SAAS,CAAC,MAAqB,EAAA;AAC7B,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,EAAE;AAC9E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;aAC1B,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,QAAQ,EAAE;AACjD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAQ,KAAA,EAAA,SAAS,CAAE,CAAA,CAAC;YAEhE,IAAI,CAAC,WAAW,EAAE;gBAChB;;YAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;;aAC9C,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,UAAU,EAAE;AACnD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAQ,KAAA,EAAA,SAAS,CAAE,CAAA,CAAC;YAEhE,IAAI,CAAC,WAAW,EAAE;gBAChB;;YAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;;;AAhP5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAiMF,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA3C,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjM/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,k1BC5B1B,u7LA8JA,EAAA,MAAA,EAAA,CAAA,i+XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDlIa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAGF,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,u7LAAA,EAAA,MAAA,EAAA,CAAA,i+XAAA,CAAA,EAAA;;0BAmMhB;;0BAAY,MAAM;2BAAC,oCAAoC;+FA3LjD,KAAK,EAAA,CAAA;sBAAb;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,MAAM,EAAA,CAAA;sBAAd;gBAOQ,aAAa,EAAA,CAAA;sBAArB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAOQ,UAAU,EAAA,CAAA;sBAAlB;gBAOQ,eAAe,EAAA,CAAA;sBAAvB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,oBAAoB,EAAA,CAAA;sBAA5B;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,eAAe,EAAA,CAAA;sBAAvB;gBASQ,SAAS,EAAA,CAAA;sBAAjB;gBASQ,cAAc,EAAA,CAAA;sBAAtB;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBASQ,cAAc,EAAA,CAAA;sBAAtB;gBASQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAOS,YAAY,EAAA,CAAA;sBAArB;gBAEkB,WAAW,EAAA,CAAA;sBAA7B,SAAS;uBAAC,MAAM;;;IEpNP;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAU;AACV,IAAA,uBAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAU;AACZ,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,GAGlC,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,GAGjC,EAAA,CAAA,CAAA;;MCiBY,uBAAuB,CAAA;AAsElC,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAtE5F;;;;AAIG;AACM,QAAA,IAAA,CAAA,IAAI,GAAuB,sBAAsB,CAAC,KAAK;AAChE;;;;AAIG;QACM,IAAK,CAAA,KAAA,GAAG,CAAC;AAClB;;;;AAIG;QACM,IAAK,CAAA,KAAA,GAAG,CAAC;AAElB;;;AAGG;QACM,IAAO,CAAA,OAAA,GAA0B,QAAQ;AAElD;;;AAGG;QACM,IAAkB,CAAA,kBAAA,GAAG,IAAI;AAElC;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAa,EAAE;AAE5B;;;;AAIG;QACM,IAAa,CAAA,aAAA,GAAG,EAAE;AAa3B;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAE3C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAS;QAEzC,IAAkB,CAAA,kBAAA,GAAG,sBAAsB;QAKnD,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAI3C,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;;;AAInF,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,KAAK,GAAG,uBAAuB,CAAC,KAAK,GAAG,uBAAuB,CAAC,KAAK;;AAGnH,IAAA,IAAc,UAAU,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;;AAGrE,IAAA,IAAc,WAAW,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,GAAG,CAAC,GAAG,CAAC;;AAGzE,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,kBAAkB,GAAG,GAAG,IAAI,CAAC,UAAU,CAAG,CAAA,CAAA,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE;;AAGrE,IAAA,aAAa,CAAC,EAAS,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;;AArGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAuEZ,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvE/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2bC3BpC,6pCAoCA,EAAA,MAAA,EAAA,CAAA,olGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDTa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAGb,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,6pCAAA,EAAA,MAAA,EAAA,CAAA,olGAAA,CAAA,EAAA;;0BAyEhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAjEjD,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAMQ,OAAO,EAAA,CAAA;sBAAf;gBAMQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,aAAa,EAAA,CAAA;sBAArB;gBAWD,YAAY,EAAA,CAAA;sBAFX,WAAW;uBAAC,eAAe;;sBAC3B;gBAUQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAES,aAAa,EAAA,CAAA;sBAAtB;;;AE1FH,MAAM,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,GAAG,EAAE;AAElB;;AAEG;MAKU,wBAAwB,CAAA;IAKnC,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,EAAE;;AAGhB,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;QAPb,IAAQ,CAAA,QAAA,GAAoB,YAAY;;IASjD,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,EAAE;YAClC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAe,YAAA,EAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,OAAO,CAAA,GAAA,CAAK;YACxH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,CAAA,CAAG;YACxC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM;YACxC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,OAAO,CAAA,EAAA,CAAI;;aACtG;YACL,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAe,YAAA,EAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAA,GAAA,CAAK;YAC1H,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;YACvC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAA,EAAA,CAAI;YACtG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM;;;IAI7C,WAAW,GAAA;QACT,cAAc,CAAC,MAAK;YAClB,IAAI,CAAC,OAAO,EAAE;AAChB,SAAC,CAAC;;+GA5BO,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAEU,eAAe,EAAA,CAAA;sBAAvB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGD,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC;;;MCQvC,gBAAgB,CAAA;AAC3B;;;;;;AAMG;IACH,IAAkC,sBAAsB,CAAC,KAAc,EAAA;AACrE,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM;AAChD,gBAAA,GAAG,IAAI;gBACP,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAChE,aAAA,CAAC,CAAC;;;;AAIP;;;;;AAKG;IACH,IAAa,KAAK,CAAC,SAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAC1B,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAChD,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,SAAS;AACnC,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI;YACtB,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC;;;AAKtC;;;;;AAKG;IACH,IAA4B,gBAAgB,CAAC,KAAa,EAAA;AACxD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM;AAChD,gBAAA,GAAG,IAAI;gBACP,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAChE,aAAA,CAAC,CAAC;;;AA8DP,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ;;IAGtB,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;IAOvB,WAC6E,CAAA,eAAiC,EAChE,SAA8B,EACxB,cAAmC,EAC3E,YAA0B,EAC1B,UAAsB,EAAA;QAJ2C,IAAe,CAAA,eAAA,GAAf,eAAe;QAC9C,IAAS,CAAA,SAAA,GAAT,SAAS;QACH,IAAc,CAAA,cAAA,GAAd,cAAc;QACtD,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAU,CAAA,UAAA,GAAV,UAAU;AA3EtB;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAoB,YAAY;AAEjD;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAqB,SAAS;AAE3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAgE;QAEpG,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAmB,CAAA,mBAAA,GAAG,IAAI;QACxB,IAAS,CAAA,SAAA,GAAW,EAAE;QACtB,IAAa,CAAA,aAAA,GAAG,CAAC;QACjB,IAAkB,CAAA,kBAAA,GAAG,UAAU;QAC/B,IAAa,CAAA,aAAA,GAAG,CAAC;AAUjB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;QAWvC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;;IAGd,QAAQ,CAAC,YAAoB,EAAE,IAAU,EAAA;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,YAAY,EAAE;AAC1D,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAEvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;AAEnG,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;QACjC,IAAI,CAAC,eAAe,EAAE;;IAGd,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;QAE1B,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,iBAAiB,EAAE;AAC1B,SAAC,CAAC;;IAGM,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;IAGX,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB;;QAGF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa;AACxD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;;IAGjE,iBAAiB,GAAA;AACvB,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAE7E,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE;YAC5D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC;;;AA5KhD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAyHL,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,oCAAoC,EAChD,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,eAAe,aACf,qBAAqB,EAAA,EAAA,EAAA,KAAA,EAAAS,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA3HpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,+jBCzB7B,61LAgJA,EAAA,MAAA,EAAA,CAAA,gyKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoD,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,eAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDvHa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAGL,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,61LAAA,EAAA,MAAA,EAAA,CAAA,gyKAAA,CAAA,EAAA;;0BA2HhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BACvD,MAAM;2BAAC,eAAe;;0BACtB,MAAM;2BAAC,qBAAqB;+FAnHG,sBAAsB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,qBAAqB;gBAgBf,KAAK,EAAA,CAAA;sBAAjB;gBAgB2B,gBAAgB,EAAA,CAAA;sBAA3C,KAAK;uBAAC,eAAe;gBAgBb,iBAAiB,EAAA,CAAA;sBAAzB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAES,eAAe,EAAA,CAAA;sBAAxB;gBAmBqB,cAAc,EAAA,CAAA;sBAAnC,SAAS;uBAAC,SAAS;;;MEnIT,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,aAAa,CAAA,EAAA,OAAA,EAAA,CAClB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3E,aAAa,CAAA,EAAA,CAAA,CAAA;AAEZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAG1E,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,aAAa,CAAC;oBAC7B,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,CAAC;oBACtF,OAAO,EAAE,CAAC,aAAa,CAAC;AACzB,iBAAA;;;MCAY,6BAA6B,CAAA;+GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA7B,6BAA6B,EAAA,YAAA,EAAA,CAJzB,uBAAuB,CAE5B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,wBAAwB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAD7D,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAGtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,EAF9B,OAAA,EAAA,CAAA,YAAY,EAAE,wBAAwB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAE5D,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;AACzE,iBAAA;;;MCcY,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAZlB,YAAA,EAAA,CAAA,gBAAgB,EAAE,wBAAwB,aAEvD,YAAY;YACZ,mBAAmB;YACnB,mBAAmB;YACnB,wBAAwB;YACxB,6BAA6B;YAC7B,eAAe;AACf,YAAA,cAAc,aAEN,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAEf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAV/B,YAAY;YACZ,mBAAmB;YACnB,mBAAmB;YACnB,wBAAwB;YACxB,6BAA6B;YAE7B,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAIL,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;AAC1D,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,mBAAmB;wBACnB,wBAAwB;wBACxB,6BAA6B;wBAC7B,eAAe;wBACf,cAAc;AACf,qBAAA;oBACD,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;;;MCvBY,iBAAiB,CAAA;AAC5B,IAAA,OAAO,qBAAqB,CAAC,KAAU,EAAE,SAAiB,EAAA;AACxD,QAAA,OAAO,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;;IAG1E,OAAO,WAAW,CAAC,KAAU,EAAE,UAAkB,EAAE,SAAkB,EAAE,OAAO,GAAG,KAAK,EAAA;QACpF,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE;YACtD,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAU,KAAI;AACjC,oBAAA,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AACzH,oBAAA,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM;AACnC,iBAAC,CAAC;;YAEJ,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;;aAC/F;YACL,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;;YAEtI,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;;;IAI7F,OAAO,WAAW,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;;aAC9C;AACL,YAAA,OAAO,OAAO,KAAK,KAAK,QAAQ;;;IAIpC,OAAO,OAAO,CAAC,KAAU,EAAA;AACvB,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;;;AAI7B,IAAA,OAAO,sBAAsB,GAAA;QAC3B,MAAM,IAAI,KAAK,CACb,CAAA;AACsF,2FAAA,CAAA,CACvF;;AAGH,IAAA,OAAO,kBAAkB,CAAC,KAAY,EAAE,YAAmB,EAAE,UAAmB,EAAA;AAC9E,QAAA,IAAI,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YACxC,OAAO,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,IAAI,CAAC,CAAC;;aAChF;AACL,YAAA,OAAO;AACL,kBAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;kBACrG,EAAE;;;AAIV,IAAA,OAAO,cAAc,CAAC,KAAU,EAAE,SAAiB,EAAE,UAAkB,EAAA;AACrE,QAAA,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;;AAGjE,IAAA,OAAO,eAAe,CAAC,KAAU,EAAE,SAAiB,EAAE,UAAkB,EAAA;QACtE,OAAO,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU;AAClE,cAAE,EAAE,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,UAAU,GAAG,KAAK;cACzC,KAAK;;AAGX,IAAA,OAAO,aAAa,CAAC,KAAU,EAAE,aAAkB,EAAE,SAAkB,EAAA;AACrE,QAAA,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAI;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;oBAClD,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC,SAAS,CAAC;;gBAElD,OAAO,CAAC,KAAK,aAAa;AAC5B,aAAC,CAAC;;aACG;YACL,OAAO,KAAK,KAAK,aAAa;;;IAIlC,OAAO,kBAAkB,CAAC,KAAY,EAAE,KAAa,EAAE,SAAkB,EAAE,OAAO,GAAG,KAAK,EAAA;AACxF,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,EAAE;QAC1C,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;;QAE/N,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC1L,OAAO,aAAa,CAAC,MAAM;;AAE9B;;ICjFW;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAJW,YAAY,KAAZ,YAAY,GAIvB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAA2B;AAC3B,IAAA,OAAA,CAAA,OAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAuB;AACvB,IAAA,OAAA,CAAA,OAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAAiC;AACjC,IAAA,OAAA,CAAA,OAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAA6B;AAC/B,CAAC,EALW,OAAO,KAAP,OAAO,GAKlB,EAAA,CAAA,CAAA;AAEM,MAAM,gBAAgB,GAAG;IAEpB;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,+BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,+BAAmC;AACnC,IAAA,OAAA,CAAA,OAAA,CAAA,iCAAA,CAAA,GAAA,GAAA,CAAA,GAAA,iCAAqC;AACvC,CAAC,EAHW,OAAO,KAAP,OAAO,GAGlB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;;MCnBY,qBAAqB,CAAA;AAGhC,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;SACtG;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE;YAC/F,KAAK,CAAC,cAAc,EAAE;;;+GARf,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;8BAEU,cAAc,EAAA,CAAA;sBAAtB;gBAED,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACNrC;;AAEG;MAKU,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;;AAEtB;;;;AAIG;IACK,YAAY,GAAA;AAClB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAA4B;QACxD,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW;AACnC,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;gBAClC,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CACzC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAClC,KAAK,IAAI,CAAoC,iCAAA,EAAA,KAAK,CAAS,OAAA,CAAA,CAC5D;;SAEJ,EAAE,CAAC,CAAC;;IAGP,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,YAAY,EAAE;;;+GAzBZ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAEU,UAAU,EAAA,CAAA;sBAAlB;;;ACPH;;;AAGG;MAKU,iBAAiB,CAAA;AAC5B,IAAA,SAAS,CAAC,KAAU,EAAE,KAAa,EAAE,eAAwB,KAAK,EAAA;QAChE,IAAI,YAAY,EAAE;YAChB,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK;;AAGjI,QAAA,IAAI,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,KAAK;;aACP,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAChG,YAAA,OAAO,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;aACnC;YACL,iBAAiB,CAAC,sBAAsB,EAAE;;;+GAXnC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACRD;;;;AAIG;MAKU,YAAY,CAAA;AACvB,IAAA,SAAS,CAAC,KAAU,EAAE,MAAW,EAAE,UAAmB,EAAA;AACpD,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;AACzB,cAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,KAAK,GAAG,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAC1F,cAAE;kBACA,KAAK,GAAG,UAAU,CAAC,KAAK,MAAM,GAAG,UAAU;AAC7C,kBAAE,KAAK,KAAK,MAAM;;+GANX,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AC0CD;MACa,qBAAqB,CAAA;AAyDhC;;;;AAIG;IACH,IAAa,SAAS,CAAC,CAAM,EAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;;AAqE9D;;;;;AAKG;IACH,IAAa,MAAM,CAAC,MAAgB,EAAA;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;;IAqI1G,IAA4D,wBAAwB,CAClF,QAAkC,EAAA;AAElC,QAAA,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACvC,YAAA,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE;;QAGnD,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,0BAA0B,GAAG,QAAQ;AAE1C,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;AAC3D,wBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,WAAW;AACzC,qBAAC,CAAC;iBACH,EAAE,CAAC,CAAC;AAEL,gBAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;AACxC,qBAAA,eAAe;qBACf,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EACxE,MAAM,CAAC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,GAAG,GAAG,CAAC,EAClF,YAAY,CAAC,GAAG,CAAC,EACjB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;qBAEpC,SAAS,CAAC,MAAK;AACd,oBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,wBAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,EAAE;;yBAC1C;AACL,wBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE;;AAE3C,iBAAC,CAAC;;;;AAwDV,IAAA,WAAA,CAC6E,eAAiC,EAC3F,GAAsB,EACtB,YAA0B,EAChB,SAAoB,EACT,UAAe,EACpC,EAAc,EACd,YAA0B,EAC1B,UAAsB,EACtB,MAAc,EAAA;QAR4C,IAAe,CAAA,eAAA,GAAf,eAAe;QACzE,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAY,CAAA,YAAA,GAAZ,YAAY;QACF,IAAS,CAAA,SAAA,GAAT,SAAS;QACE,IAAU,CAAA,UAAA,GAAV,UAAU;QAC/B,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAM,CAAA,MAAA,GAAN,MAAM;AA/WzB;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAoE,EAAE;AAExF;;;;AAIG;QACM,IAAe,CAAA,eAAA,GAAU,EAAE;AAEpC;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAG,IAAI;AAExB;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAG,EAAE;AAEvB;;;;AAIG;QACM,IAAU,CAAA,UAAA,GAAG,EAAE;AAExB;;;;AAIG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAEnB;;;;AAIG;QACM,IAAW,CAAA,WAAA,GAAG,EAAE;AAWzB;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAqB,OAAO;AAEzC;;;;AAIG;QACM,IAAmB,CAAA,mBAAA,GAAG,CAAC;AAEhC;;;;AAIG;AACwB,QAAA,IAAA,CAAA,OAAO,GAA0B,iBAAiB,CAAC,YAAY;AAE1F;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,IAAI;AAEjC;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK;AAE/B;;;;;AAKG;QAGH,IAAS,CAAA,SAAA,GAAG,KAAK;AAEjB;;;;;;AAMG;QAGH,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAoB5C;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAkB,SAAS;AAEhD;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACqC,IAAa,CAAA,aAAA,GAAG,KAAK;AAS7D;;;;AAIG;QACM,IAAkB,CAAA,kBAAA,GAAG,EAAE;AAEhC;;;;AAIG;QACM,IAAa,CAAA,aAAA,GAAG,KAAK;AAE9B;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAqB,QAAQ;AAE1C;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAG,IAAI;AAE9B;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAG,IAAI;AAEzB;;;;;AAKG;QACM,IAAgB,CAAA,gBAAA,GAAG,IAAI;AAEhC;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,QAAQ;QAU1B,IAAyB,CAAA,yBAAA,GAAG,KAAK;QACjC,IAAoB,CAAA,oBAAA,GAAG,KAAK;QAC5B,IAAmB,CAAA,mBAAA,GAAiB,IAAI;QAExC,IAAc,CAAA,cAAA,GAAG,KAAK;QACtB,IAA+B,CAAA,+BAAA,GAAG,IAAI;AAErC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAO;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAC7C,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;AAC/B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ;AAE1C;;;;AAIG;AACO,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAQ;AAEhE;;;;AAIG;AACO,QAAA,IAAA,CAAA,mCAAmC,GAAG,IAAI,YAAY,EAAQ;QA2C9D,IAAU,CAAA,UAAA,GAAe,EAAE;QAE3B,IAAU,CAAA,UAAA,GAAQ,EAAE;QACpB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAgB,CAAA,gBAAA,GAAG,YAAY;QAC/B,IAAa,CAAA,aAAA,GAAG,KAAK;QACrB,IAAiB,CAAA,iBAAA,GAAG,IAAI;QACxB,IAAY,CAAA,YAAA,GAAG,CAAC;QAChB,IAAY,CAAA,YAAA,GAAG,CAAC;QAChB,IAAgB,CAAA,gBAAA,GAAW,CAAC;AAC5B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,aAAa,CAAS,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,aAAa,CAAS,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;QAC9D,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACxD,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,UAAU,IACZ,UAAU,CAAC;AACT,cAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS;AAC1F,cAAE,IAAI,CACT,CACF;AACS,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAC7D,GAAG,CAAC,UAAU,IACZ,UAAU,CAAC,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAC3G,CACF;QAGS,IAAkB,CAAA,kBAAA,GAAG,KAAK;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,KAAU,KAAU;AACjC,YAAA,MAAM,uBAAuB,GAC3B,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,mBAAmB,CAAC;gBAChD,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,mBAAmB,CAAC;gBAC/D,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,8BAA8B,CAAC;YAEpE,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,uBAAuB,EAAE;AAC1D,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;;AAElC,SAAC;QAES,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,IAAkB,CAAA,kBAAA,GAAG,eAAe;QAC3B,IAAiB,CAAA,iBAAA,GAAG,iBAAiB;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEtD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,KAAK,CAAC;QAClD,IAAc,CAAA,cAAA,GAAG,KAAK;AAgGtB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AACzB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;QAoUR,IAAS,CAAA,SAAA,GAAG,CAAC,KAAa,EAAE,KAAU,KAAK,KAAK,CAAC,qCAAqC;AAxZ9F,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;QAGrC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;QAGzC,IAAI,CAAC,uBAAuB,EAAE;;IAGhC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAClC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB;;;AAIvD;;;AAGG;;IAEH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;;AAK3B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAClC,MAAM,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,EAAE,YAAY;YAExE,IAAI,mBAAmB,EAAE;AACvB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC;;YAGrD;;AAGF,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AAC/E,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;kBAClB,IAAI,CAAC;AACP,kBAAE,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC;YAC/F,IAAI,CAAC,SAAS,EAAE;;QAGlB,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC9C,IAAI,CAAC,uBAAuB,EAAE;;;;IAKlC,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,+BAA+B,EAAE,IAAI,CAAC;;AAElE,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACjD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;;AAG3D,QAAA,IAAI,CAAC;AACF,aAAA,OAAO,CAAC,IAAI,CAAC,QAAQ;AACrB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,MAAM,IACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACnB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC;SAChD,CAAC,CACH;AAEH,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAInE,WAAW,GAAA;QACT,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AAE5D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;;AAO9B,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;gBACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC;;iBACpE;gBACL,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK;AAC1C,sBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;sBACjF,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC;gBAClE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;;;aAE/D;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;QAGpB,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,IAAc,SAAS,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,OAAO,CAAC;;AAGhD,IAAA,gBAAgB,CAAC,KAAmC,EAAA;AAC5D,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AACrC,QAAA,MAAM,SAAS,GAAG,iBAAiB,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;AAChG,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAE3B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC7C,IAAI,CAAC,YAAY,EAAE;;QAGrB,cAAc,CAAC,MAAK;YAClB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC9C,gBAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;iBACf;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;;AAEvF,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE;;AAGP,IAAA,eAAe,CAAC,MAAW,EAAA;AACnC,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC;QAE/G,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC;YAC5G,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;gBAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;oBAC5C,MAAM,CAAC,QAAQ,EAAE;;AAErB,aAAC,CAAC;;QAGJ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC7C,IAAI,CAAC,YAAY,EAAE;;AAGrB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;QAGtB,IAAI,CAAC,QAAQ,EAAE;;AAGP,IAAA,aAAa,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,UAAU,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACjD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;AACtC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAExG,YAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAC3D,CAAC,IAAI,UAAU,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAC7D;YACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,kBAAkB,CAChD,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,EACtC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CACf;YACD,IAAI,SAAS,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACrD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAkC,CAAC;;;aAEpF;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;;QAE1B,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,IAAI,CAAC;cAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC;AAC7D,cAAE,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;;IAGpE,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5D,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,CAAC,OAAO,EAAE;;IAGN,WAAW,GAAA;QACnB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAChF,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;;iBAChF,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AACjD,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;;iBAChB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AAC/G,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CACvD,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAClE,IAAI,CAAC,SAAS,CACf;;AACI,iBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;;AAGvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;YACzB,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;SACjB,EAAE,CAAC,CAAC;;IAGG,MAAM,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE;;;IAI7C,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAExB,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU;AAEpG,QAAA,IAAI,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;AAC7C,YAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;AACjE,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,EAAE;;;aAErC;AACL,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE;;;AAG5D,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGX,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,6BAA6B,EAAE,IAAI,GAAG,KAAK,EAAA;AAC9E,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;QAErB,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAC5E,IAAI,IAAI,EAAE;gBACR,IAAI,KAAK,GAAG,CAAC;gBACb,IAAI,aAAa,GAAG,CAAC;gBAErB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,KAAa,KAAI;AACvC,oBAAA,KAAK,IAAI,GAAG,CAAC,qBAAqB,EAAE,CAAC,KAAK;oBAE1C,IAAI,CAAC,KAAK,EAAE;wBACV,aAAa,GAAG,KAAK;;AAGvB,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,EAAE;AACxF,oBAAA,IAAI,CAAC,gBAAgB;wBACnB,IAAI,CAAC,MAAM,GAAG;AACZ,8BAAE,QAAQ;AACR,iCAAC,IAAI,CAAC,OAAO,KAAK,iBAAiB,CAAC;sCAChC,OAAO,CAAC;AACV,sCAAE,OAAO,CAAC,4BAA4B;8BACxC,QAAQ;AAEd,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,GAAG,UAAU,IAAI,KAAK,GAAG,CAAC,EAAE;AAC1D,wBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAE7B,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;gBAC9B,IAAI,IAAI,EAAE;oBACR,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC9C,wBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;;AACnF,yBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AAC7B,wBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;;;AAGzB,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;gBACvF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,GAAG,GAAG,GAAG,MAAM,GAAG,iBAAiB,GAAG,IAAI;AAC5G,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAEzB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC;SACtB,EAAE,KAAK,CAAC;;IAGH,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;aACpB;YACL,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;iBACrC;gBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;;;QAGjE,IAAI,CAAC,8BAA8B,EAAE;QACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG/B,8BAA8B,GAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;QACvC,IAAI,CAAC,OAAO,EAAE;YACZ;;QAGF,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;AACrC,YAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE;YAE3C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC;AAChB,oBAAA,GAAG,cAAc;AACjB,oBAAA,eAAe,EAAE;wBACf,QAAQ,EAAE,IAAI,CAAC,eAAe;AAC9B,wBAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;AAC1B,qBAAA;AACF,iBAAA,CAAC;gBACF,OAAO,CAAC,aAAa,EAAE;;iBAClB;AACL,gBAAA,IAAI,cAAc,CAAC,iBAAiB,CAAC,EAAE;AACrC,oBAAA,OAAO,cAAc,CAAC,iBAAiB,CAAC;oBACxC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;;;;;IAM7E,SAAS,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,iBAAiB,CAAC,QAAQ,EAAE;YAC7F,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;;iBACnF;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;;;aAEpG,IAAI,IAAI,CAAC,OAAO,KAAK,iBAAiB,CAAC,QAAQ,EAAE;AACtD,YAAA,IAAI,CAAC,UAAU;gBACb,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC;AACtE,sBAAE;AACF,sBAAE,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;AAC7B,0BAAE,iBAAiB,CAAC,qBAAqB,CACrC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAClE,IAAI,CAAC,SAAS;0BAEhB,GAAG;;aACJ;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE;;QAE9D,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC7C,IAAI,CAAC,YAAY,EAAE;;;AAIf,IAAA,WAAW,CAAC,QAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC7D,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGjB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;cACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC3D,cAAE,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QAEzE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,KAAK,GAAG;AACX,kBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,KACvB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,cAAc;kBAEhF,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;;aACxB;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;;;AAIzB,IAAA,IAAc,UAAU,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,iBAAiB,CAAC,QAAQ;;AAG1C,IAAA,cAAc,CAAC,YAA6B,EAAA;AACpD,QAAA,IAAI,YAAY,CAAC,MAAM,EAAE;YACvB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;aAC/B,EAAE,CAAC,CAAC;;;AAIT,IAAA,IAAc,UAAU,GAAA;QACtB,QACE,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAClE,aAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;;AAMnF;;AAEG;IACK,uBAAuB,GAAA;AAC7B,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC;;IAGnF,uBAAuB,GAAA;AAC7B,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAErD,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,SAAS,IAAG;AAC/C,YAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,gBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE;oBACtC,MAAM,YAAY,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,OAAO;AACtE,oBAAA,IAAI,YAAY,KAAK,MAAM,EAAE;wBAC3B,IAAI,CAAC,YAAY,EAAE;;;AAGzB,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE;AAC7C,YAAA,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,OAAO,CAAC;AAC3B,SAAA,CAAC;;AAGJ,IAAA,IAAc,cAAc,GAAA;QAC1B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK;;AAG9D,IAAA,SAAS,CAAC,MAAqB,EAAA;QAC7B,MAAM,YAAY,GAAG,EAAE;QAEvB,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,IAAI,EAAE;AACtC,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,kBAAkB,EAAE;;aAChD,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,EAAE;AAC5C,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE;;aAC/C,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,SAAS,EAAE;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE;;aAC/C,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,OAAO,EAAE;AAChD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,EAAE;;AAG1D,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,eAAgB,GAAG,YAAY,CAAC;;AAG5F,IAAA,sBAAsB,CAAC,SAAiB,EAAA;QAChD,MAAM,UAAU,GAAG,EAAE;QACrB,MAAM,SAAS,GAAG,GAAG;QACrB,MAAM,SAAS,GAAG,EAAE;AAEpB,QAAA,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU;AAE/C,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC;;+GAt0BxD,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAwWV,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAIhD,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5WV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EA6KZ,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,gBAAgB,CAmGzB,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,mCAAA,EAAA,qCAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,8PCrUrC,yg/BAqnBA,EAAA,MAAA,EAAA,CAAA,w0RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwD,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkC,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAsB,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDhkBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGV,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,yg/BAAA,EAAA,MAAA,EAAA,CAAA,w0RAAA,CAAA,EAAA;;0BA2WhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAGvD;;0BAAY;;0BACZ,MAAM;2BAAC,WAAW;6IAtWZ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,eAAe,EAAA,CAAA;sBAAvB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,UAAU,EAAA,CAAA;sBAAlB;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAOQ,WAAW,EAAA,CAAA;sBAAnB;gBAOY,SAAS,EAAA,CAAA;sBAArB;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAO0B,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAQhB,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAUD,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,kBAAkB;;sBAC9B;gBAYD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQY,MAAM,EAAA,CAAA;sBAAlB;gBAWQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQuC,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAO7B,WAAW,EAAA,CAAA;sBAAnB;gBAOQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAOQ,aAAa,EAAA,CAAA;sBAArB;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,yBAAyB,EAAA,CAAA;sBAAjC;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAEQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,+BAA+B,EAAA,CAAA;sBAAvC;gBAES,eAAe,EAAA,CAAA;sBAAxB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBACS,IAAI,EAAA,CAAA;sBAAb;gBACS,KAAK,EAAA,CAAA;sBAAd;gBAOS,2BAA2B,EAAA,CAAA;sBAApC;gBAOS,mCAAmC,EAAA,CAAA;sBAA5C;gBAEuB,gBAAgB,EAAA,CAAA;sBAAvC,SAAS;uBAAC,WAAW;gBACK,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc;gBACH,YAAY,EAAA,CAAA;sBAAjC,SAAS;uBAAC,SAAS;gBACwC,wBAAwB,EAAA,CAAA;sBAAnF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAmC3B,eAAe,EAAA,CAAA;sBAAzC,SAAS;uBAAC,cAAc;gBACF,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;;;ME9TV,2BAA2B,CAAA;+GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA3B,2BAA2B,EAAA,YAAA,EAAA,CAtBvB,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEpF,YAAY;YACZ,kBAAkB;YAClB,qBAAqB;YACrB,cAAc;YACd,WAAW;YACX,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,eAAe;YACf,qBAAqB;YACrB,sBAAsB;YACtB,eAAe;YACf,wBAAwB;YACxB,yBAAyB;YACzB,qBAAqB;AACrB,YAAA,sBAAsB,aAElB,qBAAqB,CAAA,EAAA,CAAA,CAAA;gHAGpB,2BAA2B,EAAA,SAAA,EAF3B,CAAC,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAA,OAAA,EAAA,CAlB3D,YAAY;YACZ,kBAAkB;YAClB,qBAAqB;YACrB,cAAc;YACd,WAAW;YACX,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YAEnB,qBAAqB;YAGrB,wBAAwB;YAGxB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAKjB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAvBvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAC;AACzF,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,kBAAkB;wBAClB,qBAAqB;wBACrB,cAAc;wBACd,WAAW;wBACX,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,eAAe;wBACf,wBAAwB;wBACxB,yBAAyB;wBACzB,qBAAqB;wBACrB;AACH,qBAAA;oBACH,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAChC,oBAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAC;AAClE,iBAAA;;;MC7BY,mBAAmB,CAAA;AAqC9B;;;;AAIG;IACH,IAAa,QAAQ,CAAC,KAAa,EAAA;QACjC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;AA6KxE,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAzNpF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAE3C,IAAY,CAAA,YAAA,GAAa,EAAE;AAC3B;;;;AAIG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK;AACjC;;;;AAIG;QACM,IAAmB,CAAA,mBAAA,GAAwB,cAAc;AAClE;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAa,EAAE;AAE5B;;;;AAIG;QACM,IAAiB,CAAA,iBAAA,GAAsB,SAAS;AAEzD;;;;AAIG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAanB;;;;AAIG;QACM,IAAiB,CAAA,iBAAA,GAAG,EAAE;AAE/B;;;;AAIG;QACM,IAAoB,CAAA,oBAAA,GAAkB,MAAM;AAErD;;;;AAIG;QACM,IAAsB,CAAA,sBAAA,GAAgB,SAAS;AAExD;;;;AAIG;QACM,IAAqB,CAAA,qBAAA,GAAa,EAAE;AAE7C;;;;AAIG;QACM,IAAyB,CAAA,yBAAA,GAAuB,MAAM;AAE/D;;;;AAIG;QACM,IAAmB,CAAA,mBAAA,GAAG,EAAE;AAEjC;;;;AAIG;QACM,IAAsB,CAAA,sBAAA,GAAkB,OAAO;AAExD;;;;AAIG;QACM,IAAuB,CAAA,uBAAA,GAAa,EAAE;AAE/C;;;;AAIG;QACM,IAA2B,CAAA,2BAAA,GAAuB,MAAM;AAEjE;;;;AAIG;QACM,IAAkB,CAAA,kBAAA,GAAG,EAAE;AAEhC;;;;AAIG;QACM,IAAqB,CAAA,qBAAA,GAAkB,OAAO;AAEvD;;;;AAIG;QACM,IAAsB,CAAA,sBAAA,GAAa,EAAE;AAE9C;;;;AAIG;QACM,IAA0B,CAAA,0BAAA,GAAuB,MAAM;AAEhE;;;;AAIG;QACM,IAA0B,CAAA,0BAAA,GAAG,EAAE;AAExC;;;;AAIG;QACM,IAA0B,CAAA,0BAAA,GAAe,KAAK;AAEvD;;;;AAIG;QACM,IAA8B,CAAA,8BAAA,GAAa,EAAE;AAEtD;;;;AAIG;QACM,IAAkC,CAAA,kCAAA,GAAuB,MAAM;AAExE;;;;AAIG;QACM,IAA8B,CAAA,8BAAA,GAAG,KAAK;AAE/C;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;AAKG;AACO,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAS;AAExD;;;;;AAKG;AACO,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAS;AAE1D;;;;;AAKG;AACO,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAS;AAEzD;;;;;AAKG;AACO,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAS;QAO/D,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACvC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB;;;AAIvD,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGrC,IAAA,sBAAsB,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGvC,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGtC,IAAA,6BAA6B,CAAC,KAAY,EAAA;AACxC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG9C,IAAA,UAAU,CAAC,OAAsB,EAAA;AAC/B,QAAA,IAAI,OAAO,KAAK,MAAM,EAAE;AACtB,YAAA,OAAO,SAAS;;AACX,aAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO;AACrC,YAAA,OAAO,WAAW;;aACb;AACL,YAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO;AACrC,YAAA,OAAO,OAAO;;;AA/PP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBA0NR,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1N/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,87CCbhC,mgGAuCA,EAAA,MAAA,EAAA,CAAA,itGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7D,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD1Ba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,mgGAAA,EAAA,MAAA,EAAA,CAAA,itGAAA,CAAA,EAAA;;0BA4NhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAjNjD,gBAAgB,EAAA,CAAA;sBAAxB;gBAMQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAOY,QAAQ,EAAA,CAAA;sBAApB;gBAWQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAOQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAOQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAOQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAOQ,yBAAyB,EAAA,CAAA;sBAAjC;gBAOQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAOQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAOQ,uBAAuB,EAAA,CAAA;sBAA/B;gBAOQ,2BAA2B,EAAA,CAAA;sBAAnC;gBAOQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAOQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAOQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAOQ,0BAA0B,EAAA,CAAA;sBAAlC;gBAOQ,0BAA0B,EAAA,CAAA;sBAAlC;gBAOQ,0BAA0B,EAAA,CAAA;sBAAlC;gBAOQ,8BAA8B,EAAA,CAAA;sBAAtC;gBAOQ,kCAAkC,EAAA,CAAA;sBAA1C;gBAOQ,8BAA8B,EAAA,CAAA;sBAAtC;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQS,kBAAkB,EAAA,CAAA;sBAA3B;gBAQS,oBAAoB,EAAA,CAAA;sBAA7B;gBAQS,mBAAmB,EAAA,CAAA;sBAA5B;gBAQS,2BAA2B,EAAA,CAAA;sBAApC;;;MEtNU,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAJrB,YAAA,EAAA,CAAA,mBAAmB,CACxB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,aAC3F,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAH1B,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAoB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAGzE,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,CAAC;oBACtG,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;ICgEW;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAJW,UAAU,KAAV,UAAU,GAIrB,EAAA,CAAA,CAAA;IAeW;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAJW,cAAc,KAAd,cAAc,GAIzB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,GAI9B,EAAA,CAAA,CAAA;;AC5GD;;;AAGG;AACI,MAAM,WAAW,GAAG,CAAI,OAAyB,KAAsB;AAC5E,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACrD,IAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAEzD,IAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC5B,QAAA,OAAO,OAAO;;AAGhB,IAAA,IAAI,mBAAmB,CAAC,MAAM,EAAE;QAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3C,gBAAgB,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC,KAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC/E,QAAA,mBAAmB,CAAC,OAAO,CAAC,MAAM,IAAG;AACnC,YAAA,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,YAAA,aAAa,CAAC,UAAU,CAAC,GAAG,MAAM;AACpC,SAAC,CAAC;AACF,QAAA,OAAO,aAAa;;SACf;AACL,QAAA,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAE7F,QAAA,OAAO,CAAC,GAAG,oBAAoB,EAAE,GAAG,mBAAmB,CAAC;;AAE5D,CAAC;;MCjBY,kBAAkB,CAAA;AAwD7B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAxD5F;;;;;AAKG;QACM,IAAe,CAAA,eAAA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAEvC;;;;;AAKG;QACM,IAAM,CAAA,MAAA,GAAG,CAAC;AAEnB;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,EAAE;AAEtB;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;;;AAOG;QACM,IAAW,CAAA,WAAA,GAAG,CAAC;AAEd,QAAA,IAAA,CAAA,eAAe,GAA4B,IAAI,YAAY,EAAa;AAElF,QAAA,IAAA,CAAA,YAAY,GAA6B,EAAE,UAAU,EAAE,kBAAkB,EAAE;QAKzE,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAI3C,IAAA,iBAAiB,CAAC,SAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;;AAjE3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAyDP,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAzD/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,0SCV/B,oVAWA,EAAA,MAAA,EAAA,CAAA,u9LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,KAAK,EAAA,QAAA,EAAA,oVAAA,EAAA,MAAA,EAAA,CAAA,u9LAAA,CAAA,EAAA;;0BA2DhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAlDjD,eAAe,EAAA,CAAA;sBAAvB;gBAQQ,MAAM,EAAA,CAAA;sBAAd;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAUQ,WAAW,EAAA,CAAA;sBAAnB;gBAES,eAAe,EAAA,CAAA;sBAAxB;;;MEjDU,yBAAyB,CAAA;IAIpC,IAAa,gBAAgB,CAAC,iBAAqC,EAAA;AACjE,QAAA,IAAI,iBAAiB,CAAC,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAEpE,YAAA,IAAI,iBAAiB,CAAC,MAAM,EAAE;AAC5B,gBAAA,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CACvC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CACtF;;AAGH,YAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,IAAG;oBAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CACpG;AACH,iBAAC,CAAC;;;;AAKR,IAAA,WAAA,CAAoB,GAAqB,EAAA;QAArB,IAAG,CAAA,GAAA,GAAH,GAAG;AAvBf,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;;IAyBzC,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;;AAExB,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;;+GA9BtB,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;qFAKc,gBAAgB,EAAA,CAAA;sBAA5B;;;MCXU,gBAAgB,CAAA;AAC3B,IAAA,SAAS,CAAC,KAAyB,EAAA;QACjC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;;AAEX,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;;+GAL1D,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCgDY,cAAc,CAAA;AAsGzB,IAAA,WAAA,CAC6E,eAAiC,EACpG,UAAsB,EACc,SAA8B,EAAA;QAFC,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAU,CAAA,UAAA,GAAV,UAAU;QAC0B,IAAS,CAAA,SAAA,GAAT,SAAS;AAxFvD;;;;;;AAMG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK;AAExB;;;;;AAKG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;QAS5C,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK;AAEpC;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK;AAE5B;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAG,OAAO;AAElB,QAAA,IAAA,CAAA,eAAe,GAAsB,IAAI,YAAY,EAAO;AAC5D,QAAA,IAAA,CAAA,qBAAqB,GAAsB,IAAI,YAAY,EAAO;AAClE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAa;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;QAMrC,IAAmB,CAAA,mBAAA,GAAoB,EAAE;QAEzC,IAAgB,CAAA,gBAAA,GAAa,EAAE;QAC/B,IAAsB,CAAA,sBAAA,GAAa,EAAE;AACrC,QAAA,IAAA,CAAA,mBAAmB,GAAG;AAC9B,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,MAAM,EAAE,MAAM;SACf;AACS,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,kBAAkB,CAAM,EAAE,CAAC;QAEzC,IAAQ,CAAA,QAAA,GAAG,UAAU;QAC9B,IAAe,CAAA,eAAA,GAAG,IAAI,eAAe,CAAiB;AAC9D,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA,CAAC;AAgJM,QAAA,IAAA,CAAA,uBAAuB,GAAe;AAC5C,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,mBAAmB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACjC,YAAA,UAAU,EAAE,EAAE;SACf;AAED,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,KAAa,EAAE,MAAsB,KAAa,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG;QAhJpG,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAE5B,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACvC,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,SAAS;;QAEjD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAE1D,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC3F,YAAA,IAAI,CAAC,sBAAsB,GAAG,eAAe,CAAC;AAC5C,kBAAE,eAAe,CAAC,GAAG,CAAC,CAAC,WAAiC,KAAK,WAAW,CAAC,KAAM;kBAC7E,EAAE;;AAGR,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;YACxD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAY,EAAE,KAAK,CAAC;;;IAI3D,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;QACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ;AACzC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;AAG3C,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE;YACvD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,YAA8B;AAC/D,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;;AAE7B,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAyB,CAAC;;;IAIhE,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;QACtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AAC9D,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;AAC3E,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,YAAA,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU;YAC9B,SAAS;YACT,gBAAgB;AACjB,SAAA,CAAC;;AAGJ,IAAA,YAAY,CAAC,CAAC,UAAU,EAAE,OAAO,CAA4C,EAAA;QAC3E,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,UAAU,CAAC,OAAO,CAAC;;;AAIpB,IAAA,iBAAiB,CAAC,KAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGxB,kBAAkB,CAAC,WAAmB,EAAE,WAAoB,EAAA;QACpE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,IAAG;AAC/D,YAAA,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;AAChC,gBAAA,MAAM,CAAC,WAAW,GAAG,WAAW;;AAElC,YAAA,OAAO,MAAM;AACf,SAAC,CAAC;;AAGM,IAAA,YAAY,CAAC,SAAe,EAAE,SAAS,GAAG,IAAI,EAAA;QACtD,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGjC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;YAC9B,IAAI,CAAC,SAAS,GAAG;gBACf,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC9B,oBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,KAAK,KAAK;oBAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;oBAChC,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;oBAChC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,iBAAC,CAAC;aACH;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACxB,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;;;;IAKjC,UAAU,CAAC,SAAc,EAAE,QAAgB,EAAA;AACnD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;;AAGpD,IAAA,gBAAgB,CAAC,SAAc,EAAA;AACvC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGlC,IAAA,SAAS,CAAC,OAAU,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,OAAO,GAAG,IAAI,GAAG,OAAO;AACpE,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;AACvC,oBAAA,IAAI,EAAE,OAAO;oBACb,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9D,iBAAA,CAAC;;;;AAKA,IAAA,wBAAwB,CAAC,OAAkB,EAAA;QACjD,IAAI,CAAC,gBAAgB,GAAG,IAAI,kBAAkB,CAAM,OAAO,CAAC;;AAGtD,IAAA,cAAc,CAAC,MAAsB,EAAA;QAC3C,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,uBAAuB;AAEtE,QAAA,IAAI,CAAC,WAAW,GAAG,MAAsC;AAEzD,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAAM;YAChE,KAAK;AACL,YAAA,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;AACzC,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CACzF,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,CACxC;;AAGK,IAAA,YAAY,CAAC,IAAe,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;+GAjPZ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAuGH,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAEhD,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAzGd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrD3B,+9jBAyVA,ED9SgB,MAAA,EAAA,CAAA,8uTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2D,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7C,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,cAAc,EAAE;gBACpB,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACzC,gBAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACrF,gBAAA,UAAU,CAAC,mBAAmB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;aACnF,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGQ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAGH,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA;wBACR,OAAO,CAAC,cAAc,EAAE;4BACpB,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;4BAClD,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACzC,4BAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACrF,4BAAA,UAAU,CAAC,mBAAmB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;yBACnF,CAAC;AACL,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,+9jBAAA,EAAA,MAAA,EAAA,CAAA,8uTAAA,CAAA,EAAA;;0BAyGhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAEvD,MAAM;2BAAC,eAAe;yCAlGE,MAAM,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAQhB,IAAI,EAAA,CAAA;sBAAZ;gBASQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAES,eAAe,EAAA,CAAA;sBAAxB;gBACS,qBAAqB,EAAA,CAAA;sBAA9B;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBAEmB,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO;;;ME3HP,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBAJpB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CACvB,YAAY,EAAE,kBAAkB,aAChC,kBAAkB,CAAA,EAAA,CAAA,CAAA;gHAEjB,wBAAwB,EAAA,OAAA,EAAA,CAHzB,YAAY,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAG/B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;AAClC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;oBAC3C,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA;;;MCyBY,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAjBhB,YAAA,EAAA,CAAA,cAAc,EAAE,gBAAgB,aAE7C,YAAY;YACZ,cAAc;YACd,gBAAgB;YAChB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;YACrB,aAAa;YACb,mBAAmB;YACnB,oBAAoB;YACpB,yBAAyB;YACzB,sBAAsB;AACtB,YAAA,eAAe,aAEP,cAAc,CAAA,EAAA,CAAA,CAAA;AAEb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAf7B,YAAY;YACZ,cAAc;YACd,gBAAgB;YAChB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;YACrB,aAAa;YACb,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAQV,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;AAChD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,gBAAgB;wBAChB,iBAAiB;wBACjB,wBAAwB;wBACxB,qBAAqB;wBACrB,aAAa;wBACb,mBAAmB;wBACnB,oBAAoB;wBACpB,yBAAyB;wBACzB,sBAAsB;wBACtB,eAAe;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA;;;MC8BY,eAAe,CAAA;AAyG1B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAzG5F;;;;;AAKG;QACM,IAAG,CAAA,GAAA,GAAG,GAAG;AAElB;;;;;AAKG;QACM,IAAG,CAAA,GAAA,GAAG,CAAC;AAEhB;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAE3B;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAG,CAAC;AAExB;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAG,GAAG;AAExB;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAEnB;;;;;AAKG;QACM,IAAU,CAAA,UAAA,GAAG,IAAI;AAE1B;;;;;AAKG;QACM,IAAI,CAAA,IAAA,GAAG,CAAC;AAEjB;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;;;AAMG;QACM,IAAO,CAAA,OAAA,GAAkB,OAAO;AAEzC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC;QAElC,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU;QAE1B,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;AAEZ,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAe;AAE7D,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAazB,IAAK,CAAA,KAAA,GAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;QACzC,IAAkB,CAAA,kBAAA,GAAG,SAAS;QAC9B,IAAkB,CAAA,kBAAA,GAAG,EAAE;AAEjC,QAAA,IAAA,CAAA,QAAQ,GAAiC,MAAK,GAAG;AACjD,QAAA,IAAA,CAAA,OAAO,GAAe,MAAK,GAAG;QAZ5B,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;AACvC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;QAEzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAUhD,IAAA,gBAAgB,CAAC,EAAgC,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,UAAU,CAAC,KAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;QAEvB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;;AAEzC,SAAC,CAAC;;AAGM,IAAA,aAAa,CAAC,EAAW,EAAA;AACjC,QAAA,MAAM,KAAK,GAAgB,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;QAE7E,IAAI,EAAE,EAAE;AACN,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE;AAChB,YAAA,KAAK,CAAC,GAAG,GAAG,CAAC;;AAGf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,CAAC,OAAO,EAAE;;AAGN,IAAA,WAAW,CAAC,SAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;AACnC,QAAA,MAAM,KAAK,GAAgB,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AAE7E,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,aAAa,EAAE;;;IAId,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGjB,IAAA,cAAc,CAAC,KAAkB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;;AAGzE,IAAA,IAAI,QAAQ,GAAA;QACV,QACE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS;AAC1B,YAAA,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW;AAC5B,YAAA,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS;AAC1B,YAAA,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW;YAC5B,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW;;AAIvC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO;;AAGjC,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;;AAG9G,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI;;AA1MvE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBA0GJ,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1G/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EA3Bb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA,cAAc,EAAE;YAChB,WAAW;AACd,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjDL,s9LAyLA,EDrIQ,MAAA,EAAA,CAAA,yqQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8TACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,8BAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACnB,eAAe,EACf,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,uHACnB,gBAAgB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGX,eAAe,EAAA,UAAA,EAAA,CAAA;kBA/B3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGV,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACD,wBAAA,cAAc,EAAE;wBAChB,WAAW;qBACd,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACL,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,cAAc;wBACd,gBAAgB;wBAChB,mBAAmB;wBACnB,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;AACnB,qBAAA,EAAA,QAAA,EAAA,s9LAAA,EAAA,MAAA,EAAA,CAAA,yqQAAA,CAAA,EAAA;;0BA4GA;;0BAAY,MAAM;2BAAC,oCAAoC;yCAnGjD,GAAG,EAAA,CAAA;sBAAX;gBAQQ,GAAG,EAAA,CAAA;sBAAX;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,WAAW,EAAA,CAAA;sBAAnB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAQQ,IAAI,EAAA,CAAA;sBAAZ;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBASQ,OAAO,EAAA,CAAA;sBAAf;gBAUS,iBAAiB,EAAA,CAAA;sBAA1B;;;ME3JU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,OAAA,EAAA,CAHtB,eAAe,CAAA,EAAA,OAAA,EAAA,CACf,eAAe,CAAA,EAAA,CAAA,CAAA;AAEd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHtB,eAAe,CAAA,EAAA,CAAA,CAAA;;4FAGd,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;MCIY,qBAAqB,CAAA;AAmBhC;;;;;AAKG;IACH,IAA+B,QAAQ,CAAC,QAAwB,EAAA;QAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;;AAsCvD,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAhE5F;;;;;;AAMG;QACM,IAAK,CAAA,KAAA,GAAG,MAAM;AAEvB;;;;;;AAMG;QACM,IAAI,CAAA,IAAA,GAAwB,OAAO;AAY5C;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK;QAE7B,IAAW,CAAA,WAAA,GAAiC,EAAE;QAK5C,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAI3C,IAAA,oBAAoB,CAAC,QAAwB,EAAA;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AACvE,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAG;YAC5B,IAAI,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG;YAC9C,IAAI,eAAe,GAAG,EAAE;AAExB,YAAA,IAAI,UAAU,KAAK,CAAC,EAAE;gBACpB,eAAe,GAAG,IAAI;;iBACjB,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE;gBAC3C,eAAe,GAAG,KAAK;;iBAClB;gBACL,eAAe,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAA,CAAG;;YAG/C,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE;AACpD,SAAC,CAAC;;AAGJ,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC;aACT,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,CAAG,EAAA,OAAO,CAAC,OAAO,IAAI,SAAS,KAAK,CAAA,CAAE,KAAK,OAAO,CAAC,KAAK,CAAA,CAAE;aAClF,IAAI,CAAC,IAAI,CAAC;;AA7FJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAiEV,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjE/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,uQCVlC,2hFAuFA,EAAA,MAAA,EAAA,CAAA,kjKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD7Ea,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,2hFAAA,EAAA,MAAA,EAAA,CAAA,kjKAAA,CAAA,EAAA;;0BAmEhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAzDjD,KAAK,EAAA,CAAA;sBAAb;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAQ8B,QAAQ,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAWhB,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;;;MEzDU,2BAA2B,CAAA;+GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAJvB,YAAA,EAAA,CAAA,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,aAC3F,qBAAqB,CAAA,EAAA,CAAA,CAAA;gHAEpB,2BAA2B,EAAA,OAAA,EAAA,CAH5B,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAG1F,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,CAAC;oBACtG,OAAO,EAAE,CAAC,qBAAqB;AAChC,iBAAA;;;MCDY,mBAAmB,CAAA;IAgC9B,WAC6E,CAAA,eAAiC,EAChE,SAA8B,EAAA;QADC,IAAe,CAAA,eAAA,GAAf,eAAe;QAC9C,IAAS,CAAA,SAAA,GAAT,SAAS;AAjCvD;;;;AAIG;QACqC,IAAc,CAAA,cAAA,GAAG,IAAI;AAE7D;;;;AAIG;QACM,IAAO,CAAA,OAAA,GAAG,aAAa;AAEhC;;;;;;AAMG;QAGH,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAE5C;;;AAGG;AACO,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;QAMvC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAIjC,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;+GA1CP,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAiCR,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAChD,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAlCd,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAMV,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBtC,s4CAsCA,EAAA,MAAA,EAAA,CAAA,m/GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD3Ba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,s4CAAA,EAAA,MAAA,EAAA,CAAA,m/GAAA,CAAA,EAAA;;0BAmChB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BACvD,MAAM;2BAAC,eAAe;yCA5Be,cAAc,EAAA,CAAA;sBAArD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAO7B,OAAO,EAAA,CAAA;sBAAf;gBAWD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;gBAOS,IAAI,EAAA,CAAA;sBAAb;;;ME9BU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAhB,gBAAgB,EAAA,YAAA,EAAA,CAJZ,mBAAmB,CACxB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,qBAAqB,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CACpD,mBAAmB,CAAA,EAAA,CAAA,CAAA;gHAElB,gBAAgB,EAAA,OAAA,EAAA,CAHjB,YAAY,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAGlC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,eAAe,CAAC;oBAC/D,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;MCeY,aAAa,CAAA;IAoExB,WAC6E,CAAA,eAAiC,EAChE,SAA8B,EAAA;QADC,IAAe,CAAA,eAAA,GAAf,eAAe;QAC9C,IAAS,CAAA,SAAA,GAAT,SAAS;AArEvD;;;;;;AAMG;QAGH,IAAY,CAAA,YAAA,GAAkB,SAAS;AACvC;;;;;;AAMG;QACM,IAAI,CAAA,IAAA,GAAa,YAAY;AAEtC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,GAAG;AAEhC;;;;;AAKG;QAGH,IAAoB,CAAA,oBAAA,GAAG,MAAM;AAE7B;;;;AAIG;QACqC,IAAa,CAAA,aAAA,GAAG,IAAI;AAE5D;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAEd,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAC7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO;QAIrC,IAAI,CAAA,IAAA,GAAU,EAAE;AACjB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;QACnB,IAAW,CAAA,WAAA,GAA2B,EAAE;;QAG1C,IAAgB,CAAA,gBAAA,GAAW,CAAC;QAMlC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,SAAS,GAAI,IAAI,CAAC,QAAgB,CAAC,UAAU;AACnD,YAAA,SAAS,CAAC,cAAc,GAAG,OAAO,KAAoB,KAAI;AACxD,gBAAA,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;oBACzB;;AAEF,gBAAA,QAAQ,KAAK,CAAC,OAAO;AACnB,oBAAA,KAAK,KAAK;AACV,oBAAA,KAAK,KAAK;AACR,wBAAA,MAAM,QAAQ,GAAI,KAAK,CAAC,MAAsB,CAAC,SAAS;wBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7C,wBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;wBAEhE,IAAI,CAAC,OAAO,EAAE;4BACZ;;AAGF,wBAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI;wBAC/E,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE;4BACtD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;AACtD,4BAAA,SAAS,CAAC,UAAU,GAAG,YAAY;AACnC,4BAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,YAAY;;wBAE5C;AACF,oBAAA;AACE,wBAAA,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;;AAE5C,aAAC;AAEA,YAAA,IAAI,CAAC,QAAgB,CAAC,YAAY,GAAG,OAAO,GAAW,EAAE,SAAc,EAAE,KAAa,KAAI;AACzF,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AAChD,gBAAA,IAAI,GAAG,CAAC,QAAQ,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,KAAK,YAAY,EAAE;oBACxE;;gBAEF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,gBAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI;gBAC/E,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,IAAI,QAAQ,EAAE;AACpD,oBAAA,SAAS,CAAC,UAAU,GAAG,KAAK;AAC5B,oBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,KAAK;;AAEvC,aAAC;AACH,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,GAAQ,EAAA;;AAEb,QAAA,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE;AAC3B,YAAA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;;;AAIrC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,CAAC,QAAQ,EAAE;;QAGf,IAAI,CAAC,iBAAiB,EAAE;;IAGlB,QAAQ,GAAA;;QAEd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtB,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,QAAQ;AAClC,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,QAAQ;YAClC,OAAO,MAAM,GAAG,MAAM;AACxB,SAAC,CAAC;;IAGI,iBAAiB,GAAA;;QAEvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK;AACvC,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,EAAqB,EAAA;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGpC,IAAA,SAAS,CAAC,OAAe,EAAA;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;AAI3C,IAAA,OAAO,CAAC,OAAe,EAAA;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;IAGxC,cAAc,CAAC,KAAa,EAAE,GAAQ,EAAA;QACpC,OAAO,GAAG,CAAC,OAAO;;AAGpB,IAAA,SAAS,CAAC,OAAe,EAAA;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1B,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAChC,IAAI,CAAC,iBAAiB,EAAE;;;IAI5B,SAAS,CAAC,OAAe,EAAE,GAAkC,EAAA;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE;;AAGlD,YAAA,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC3B,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,iBAAiB,EAAE;;;;+GAlMnB,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAqEF,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAChD,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtEd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAmCJ,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,CAAC,KAAa,KAAa,KAAK,GAAG,IAAI,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAQvC,gBAAgB,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpEtC,yiEA2DA,EAAA,MAAA,EAAA,CAAA,4yRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDlCa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,cAGP,KAAK,EAAA,QAAA,EAAA,yiEAAA,EAAA,MAAA,EAAA,CAAA,4yRAAA,CAAA,EAAA;;0BAuEhB;;0BAAY,MAAM;2BAAC,oCAAoC;;0BACvD,MAAM;2BAAC,eAAe;yCA5DzB,YAAY,EAAA,CAAA;sBAFX,WAAW;uBAAC,eAAe;;sBAC3B;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAUD,oBAAoB,EAAA,CAAA;sBAFnB,WAAW;uBAAC,gCAAgC;;sBAC5C,KAAK;uBAAC,EAAE,SAAS,EAAE,CAAC,KAAa,KAAa,KAAK,GAAG,IAAI,EAAE;gBAQrB,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAS7B,gBAAgB,EAAA,CAAA;sBAAxB;gBAIS,gBAAgB,EAAA,CAAA;sBAAzB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBAEwC,QAAQ,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ME1E5B,YAAY,CAAA;AAJzB,IAAA,WAAA,GAAA;AAKE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAU;AACnC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAU;QAClC,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAY;QAC5B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAY;QAC7B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAkB,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QACzE,IAAQ,CAAA,QAAA,GAAG,KAAK,EAA2E;QAC3F,IAAO,CAAA,OAAA,GAAG,KAAK,EAAU;QACzB,IAAK,CAAA,KAAA,GAAG,KAAK,EAAU;QACvB,IAAa,CAAA,aAAA,GAAG,KAAK,EAAgC;QACrD,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAW;AAE5B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAE9B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,MAAK;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC3C,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,gBAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC5C,aAAA,CAAC;AACJ,SAAC,CAAC;QAEM,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9C,SAAC,CAAC;AAqBH;IAnBC,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGP,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACxB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,kBAAkB,EAAE,IAAI,CAAC,QAAQ;AACjC,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC5C,SAAA,CAAC;;+GAlDO,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;;;MCKY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAJf,aAAa,CAAA,EAAA,OAAA,EAAA,CAClB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,CAClG,EAAA,OAAA,EAAA,CAAA,aAAa,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;AAE1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHN,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAmB,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAGjG,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,aAAa,CAAC;AAC7B,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,CAAC;AAC7G,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;AACvC,iBAAA;;;MCeY,wBAAwB,CAAA;AAwBnC;;;;AAIG;IACH,IAAa,KAAK,CAAC,CAAM,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAgBlB,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;AAGpB,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AA5C5F;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK;AAY1B;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAE3C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAO;AAgBlD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AACzB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;QANhB,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAO3C,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;AAGlB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;IAGnB,iBAAiB,CAAC,EAAE,KAAK,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;AAhFtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAoDb,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApD/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAVtB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBL,ysBAmBA,EAAA,MAAA,EAAA,CAAA,ooRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,gCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDSa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAGpB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,ysBAAA,EAAA,MAAA,EAAA,CAAA,ooRAAA,CAAA,EAAA;;0BAsDhB;;0BAAY,MAAM;2BAAC,oCAAoC;yCA9C/B,YAAY,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAShB,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOY,KAAK,EAAA,CAAA;sBAAjB;gBAYQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAES,cAAc,EAAA,CAAA;sBAAvB;;;ME3DU,8BAA8B,CAAA;+GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA9B,8BAA8B,EAAA,YAAA,EAAA,CAJ1B,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAE7B,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CADlE,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,YAF/B,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAEjE,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;oBACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;oBACnC,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,CAAC;AAC9E,iBAAA;;;MCiBY,iBAAiB,CAAA;AAoC5B,IAAA,WAAA,CACmB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;AAnC7B;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAG,IAAI;AAE5B;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEf,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU;AAE3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW;QAI/C,IAAW,CAAA,WAAA,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;QACtD,IAAc,CAAA,cAAA,GAA+B,EAAE;AAG/C,QAAA,IAAA,CAAA,QAAQ,GAA4C;AAC5D,YAAA,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,EAAE,cAAc,EAAE;AAC3D,YAAA,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,EAAE,cAAc,EAAE;AAC3D,YAAA,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE;AACrD,YAAA,EAAE,YAAY,EAAE,4BAA4B,EAAE,GAAG,EAAE,gBAAgB,EAAE;AACrE,YAAA,EAAE,YAAY,EAAE,qBAAqB,EAAE,GAAG,EAAE,cAAc,EAAE;SAC7D;AAoCD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AACzB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,GAAG;AAhChB,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACrF,IAAI,CAAC,aAAa,EAAE;AACtB,SAAC,CAAC;;IAGJ,aAAa,GAAA;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC7C,IAAI,CAAC,cAAc,GAAG;AACpB,YAAA,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,YAAA,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,YAAA,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzC,YAAA,cAAc,EAAE,6CAA6C,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5E,YAAA,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;SACpC;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AAC9G,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;AACpF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;IAGzB,WAAW,GAAA;QACT,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACvE,gBAAA,KAAK,EAAE;;;AAGX,QAAA,OAAO,KAAK;;AAKd,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;;AAGhC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;;+GAtFpF,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAVf,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBL,8pDAoCA,EAAA,MAAA,EAAA,CAAA,g/FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,OAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDRa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGrB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,8pDAAA,EAAA,MAAA,EAAA,CAAA,g/FAAA,CAAA,EAAA;+EAUV,YAAY,EAAA,CAAA;sBAApB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,cAAc,EAAA,CAAA;sBAAvB;gBAES,iBAAiB,EAAA,CAAA;sBAA1B;gBAE8B,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB;;;ME7BlB,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAvB,uBAAuB,EAAA,YAAA,EAAA,CAXnB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAG9B,YAAY;YACZ,oBAAoB;YACpB,mBAAmB;YACnB,mBAAmB;YACnB,0BAA0B;AAC1B,YAAA,eAAe,aAPP,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAUhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YARhC,YAAY;YACZ,oBAAoB;YACpB,mBAAmB;YACnB,mBAAmB;YACnB,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAIjB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAZnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,mBAAmB;wBACnB,mBAAmB;wBACnB,0BAA0B;wBAC1B,eAAe;AAChB,qBAAA;AACF,iBAAA;;;MCdY,eAAe,CAAA;IAC1B,SAAS,CAAC,KAAe,EAAE,SAAkB,EAAA;AAC3C,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC;;+GAFvD,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCuDY,mBAAmB,CAAA;AAC9B;;;;;AAKG;IACH,IACI,KAAK,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK;AAC9C,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC;AACtC,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,mBAAmB,EAAE;AAC9C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAQ,CAAC,IAAI,IAAI,CAAC,eAAe;YAC3F,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;;QAC/F,OAAO,GAAG,EAAE;AACZ,YAAA,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe;;YAEpF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;;AAE/F,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAG1B;;;;;AAKG;IACH,IAAa,WAAW,CAAC,WAAwB,EAAA;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC,CAAC,CAAC;;AAG/D;;;;;AAKG;IACH,IACI,WAAW,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAyC1B;;;;;AAKG;IACH,IAAa,MAAM,CAAC,MAAgB,EAAA;QAClC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAClG,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;;;aAoBvC,IAAM,CAAA,MAAA,GAAG,CAAH,CAAK;AAyBlB,IAAA,IACI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAKb,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;;AAG1B,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAA6B,EAAE,IAAI,CAAC;;AAG3F,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE;;AAGxC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,mBAAmB;;AASjC,IAAA,WAAA,CAC6B,SAAoB,EACvC,YAA+B,EAC/B,EAAsB,EACtB,YAA0B,EAC1B,GAAsB,EACtB,SAAuB,EAC4C,eAAiC,EAAA;QANjF,IAAS,CAAA,SAAA,GAAT,SAAS;QAC5B,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;QAC0D,IAAe,CAAA,eAAA,GAAf,eAAe;AA9G5F;;;;;;AAMG;QAGH,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAE5C;;;;;AAKG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK;AAgB1B;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAI1B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAc,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AACpD,QAAA,IAAA,CAAA,IAAI,GAAqB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,YAAY,EAAE,IAAI,kBAAkB,EAAE;AACvC,SAAA,CAAC;QACQ,IAAW,CAAA,WAAA,GAAG,cAAc;AAE5B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAc,EAAE,CAAC;AACrD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC;QAEpC,IAAc,CAAA,cAAA,GAAG,2BAA2B;AAQ/D,QAAA,IAAA,CAAA,EAAE,GAAG,CAAe,YAAA,EAAA,mBAAmB,CAAC,MAAM,EAAE,EAAE;QAOZ,IAAW,CAAA,WAAA,GAAG,EAAE;QAmBrC,IAAoB,CAAA,oBAAA,GAAG,IAAI;AAGpC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;QAgM7C,IAAS,CAAA,SAAA,GAAG,CAAC,KAAa,EAAE,KAAU,KAAK,KAAK,CAAC,qCAAqC;AArLpF,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;QAGrC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAI3C;;;AAGG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;IAI3B,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,sBAAsB,EAAE;;IAG/B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;;AAErD,QAAA,OAAO,KAAK;;AAGd,IAAA,iBAAiB,CAAC,GAAa,EAAA;QAC7B,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;;AAM1C,IAAA,UAAU,CAAC,WAAmB,EAAA;QAC5B,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,WAAW;;;AAI5B,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QAClC,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;aACd;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;AAEpB,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;;AAGjC,IAAA,iBAAiB,CAAC,KAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;AAGxB,IAAA,OAAO,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,IAAI,EAAE,IAAI,KAAK;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG3B,4BAA4B,CAAC,KAAa,EAAE,EAAa,EAAA;QACvD,OAAO,EAAE,CAAC,UAAU;;AAGd,IAAA,UAAU,CAAC,OAAyB,EAAA;QAC1C,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,eAAe,GAAG,OAAO;;AAEhC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGnB,wBAAwB,GAAA;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,YAAsB;AAC9D,QAAA,OAAO,cAAc,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,IAAI,EAAE,IAAI,cAAc,GAAG,EAAE;;IAGjF,sBAAsB,GAAA;QAC5B,MAAM,oBAAoB,GAAG,aAAa,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC,SAAA,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;QAE1D,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,KAAI;YAC3D,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,WAAW,IAAI,UAAU,CAAC;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,SAAC,CAAC;AAEF,QAAA,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAChD,IAAI,CAAC,OAAO,EAAE;AAChB,SAAC,CAAC;;IAGI,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC3B,QAAA,aAAa,CAAC;YACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EACzC,KAAK,EAAE,CACR;AACD,YAAA,IAAI,CAAC,WAAW;SACjB;aACE,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,KAAI;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,gBAAA,MAAM,OAAO,GACX,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,CAAC;AACxG,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAoB,CAAC;;iBAChC;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY;;AAGhC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;AAGR,IAAA,sBAAsB,CAAC,UAAkB,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC;;AAGxE,IAAA,uBAAuB,CAAC,WAAmB,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC;;IAG1E,aAAa,GAAA;QACnB,MAAM,WAAW,GAAuB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAEjH,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;AAC7C,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAI;AAC9B,YAAA,MAAM,mBAAmB,GAAG,UAAU,CAAC,WAAW,EAAE;YACpD,MAAM,iBAAiB,GAAG;AACvB,iBAAA,MAAM,CACL,MAAM,IACJ,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACvD,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBAC7D,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;AAEjE,iBAAA,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;SACvC,CAAC,EACF,KAAK,CAAC,CAAC,CAAC,EACR,GAAG,CAAC,MAAK;AACP,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC;YAClF,IAAI,CAAC,eAAe,GAAG,YAAY,IAAI,IAAI,CAAC,eAAe;AAC3D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;AAGhB,IAAA,YAAY,CAAC,EAAS,EAAA;QACpB,EAAE,CAAC,cAAc,EAAE;QACnB,EAAE,CAAC,eAAe,EAAE;;AAnWX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,6OA+KR,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA/K/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EARjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,gCAAgC;AACzC,gBAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,2BAA2B,EAAE;AAC/D,aAAA;SACJ,EAsIQ,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,QAAQ,2BAAU,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE5B,SAAS,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,2CCjM1C,w0FAgEA,EAAA,MAAA,EAAA,CAAA,0uJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,uCAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,kCAAA,EAAA,uBAAA,EAAA,mCAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA0D,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDJa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGT,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,gCAAgC;AACzC,4BAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,2BAA2B,EAAE;AAC/D,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,w0FAAA,EAAA,MAAA,EAAA,CAAA,0uJAAA,CAAA,EAAA;;0BA2KhB;;0BAAY;;0BAMZ;;0BAAY,MAAM;2BAAC,oCAAoC;yCAvKtD,KAAK,EAAA,CAAA;sBADR;gBAuBY,WAAW,EAAA,CAAA;sBAAvB;gBAYG,WAAW,EAAA,CAAA;sBADd;gBAcD,QAAQ,EAAA,CAAA;sBAFP,WAAW;uBAAC,eAAe;;sBAC3B;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBAWD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;gBASQ,SAAS,EAAA,CAAA;sBAAjB;gBASY,MAAM,EAAA,CAAA;sBAAlB;gBAaQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAoBM,KAAK,EAAA,CAAA;sBADX,SAAS;uBAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGhD,MAAM,EAAA,CAAA;sBADZ,SAAS;uBAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;gBAIxD,EAAE,EAAA,CAAA;sBADD;gBAIG,gBAAgB,EAAA,CAAA;sBADnB,WAAW;uBAAC,eAAe;gBAKU,WAAW,EAAA,CAAA;sBAAhD,WAAW;uBAAC,uBAAuB;;;ME1KzB,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAjBrB,YAAA,EAAA,CAAA,mBAAmB,EAAE,eAAe,aAGjD,YAAY;YACZ,wBAAwB;YACxB,mBAAmB;YACnB,eAAe;YACf,aAAa;YACb,cAAc;YACd,wBAAwB;YACxB,mBAAmB;YACnB,sBAAsB;YACtB,eAAe;YACf,qBAAqB;AACrB,YAAA,sBAAsB,aAbd,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAgBlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAdlC,YAAY;YACZ,wBAAwB;YACxB,mBAAmB;YACnB,eAAe;YACf,aAAa;YACb,cAAc;YACd,wBAAwB;YACxB,mBAAmB;YACnB,sBAAsB;YAEtB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAIZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,eAAe,CAAC;oBACpD,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC9B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,wBAAwB;wBACxB,mBAAmB;wBACnB,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,wBAAwB;wBACxB,mBAAmB;wBACnB,sBAAsB;wBACtB,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;AACvB,qBAAA;AACF,iBAAA;;;MCvBY,yBAAyB,CAAA;AAUpC;;;;;AAKG;IACH,IAAa,QAAQ,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;;AAsBpC,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAxC5F;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAarD;;;;;AAKG;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW;QAG7C,IAAc,CAAA,cAAA,GAA+B,EAAE;QACjD,IAAS,CAAA,SAAA,GAAG,EAAE;AACZ,QAAA,IAAA,CAAA,QAAQ,GAA4C;AAC5D,YAAA,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,EAAE,cAAc,EAAE;AAC3D,YAAA,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,EAAE,cAAc,EAAE;AAC3D,YAAA,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE;AACrD,YAAA,EAAE,YAAY,EAAE,4BAA4B,EAAE,GAAG,EAAE,gBAAgB,EAAE;AACrE,YAAA,EAAE,YAAY,EAAE,qBAAqB,EAAE,GAAG,EAAE,cAAc,EAAE;SAC7D;AAKC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;AAI3C,IAAA,aAAa,CAAC,QAAgB,EAAA;QAC5B,IAAI,CAAC,cAAc,GAAG;AACpB,YAAA,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,YAAA,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,YAAA,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzC,YAAA,cAAc,EAAE,6CAA6C,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5E,YAAA,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;SACpC;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AAC9G,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;;IAG5E,WAAW,GAAA;QACjB,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACvE,gBAAA,KAAK,EAAE;;;AAGX,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,MAAM,GAAG,cAAc;;AAGtE,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,aAAa,GAAG,qBAAqB;;AA7EzE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAyCd,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAzC/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,0MCVtC,msBAmBA,EAAA,MAAA,EAAA,CAAA,2uFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5C,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAtB,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDTa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,msBAAA,EAAA,MAAA,EAAA,CAAA,2uFAAA,CAAA,EAAA;;0BA2ChB;;0BAAY,MAAM;2BAAC,oCAAoC;yCAjCjD,gBAAgB,EAAA,CAAA;sBAAxB;gBAQY,QAAQ,EAAA,CAAA;sBAApB;gBAWS,eAAe,EAAA,CAAA;sBAAxB;;;MEzBU,+BAA+B,CAAA;+GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA/B,+BAA+B,EAAA,YAAA,EAAA,CAJ3B,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAC9B,YAAY,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CAC9E,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAExB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,EAHhC,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAG5D,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,eAAe,CAAC;oBACzF,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA;;;ACXD;AAIO,MAAM,kBAAkB,GAAG,CAAC,OAAyC,KAA6B;AACvG,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK;IAElC,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;AAE7D,IAAA,IAAI,WAAW,IAAI,YAAY,EAAE;AAC/B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;;;AAG7B,IAAA,OAAO,IAAI;AACb,CAAC;;AChBD;AACA;AACA;AACA;MAiCa,mBAAmB,CAAA;IA6J9B,WACgC,CAAA,SAAoB,EACjC,EAAe,EAAA;QADF,IAAS,CAAA,SAAA,GAAT,SAAS;QACtB,IAAE,CAAA,EAAA,GAAF,EAAE;AA9JrB;;;;;AAKG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAA4C;AAEtE;;;;;AAKG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAU;AAExC;;;;;AAKG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAU;AAEzC;;;;;AAKG;QACH,IAAK,CAAA,KAAA,GAAG,KAAK,EAAmB;AAEhC;;;;;AAKG;QACH,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAExD;;;;;AAKG;QACH,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAExD;;;;;AAKG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAEjB;;;;;AAKG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC;AAEvB;;;;;AAKG;QACH,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAE3D;;;;;AAKG;QACH,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAE5D;;;;;AAKG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAW,EAAE,CAAC;AAE5B;;;;;AAKG;QACH,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAEjE;;;;;AAKG;QACH,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAEjE;;;;;AAKG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC;AAExB;;;;;AAKG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAgB,EAAE,CAAC;AAErC;;;;;AAKG;QAGH,IAAS,CAAA,SAAA,GAAY,KAAK;AAEhB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAmB;QAE5C,IAAK,CAAA,KAAA,GAAG,gBAAgB;AAEvC;;;;;AAKG;QACH,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAE/D;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAU,GAAG;AAE/B;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,MAAW,GAAG;AAEL,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAkB;AACjE,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;QAMA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC1C,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;YAC1C,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAEnE,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE;AACzC,YAAA,IAAI,eAAe,EAAE,MAAM,EAAE;AAC3B,gBAAA,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC;gBACjD,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAEnE,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;;AAE1B,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAEzB,SAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;AAGrC,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,IAAG;AAChF,YAAA,IAAI,CAAC,YAAY,CAAC,SAA4B,CAAC;AACjD,SAAC,CAAC;;IAGJ,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC;;;AAI7D,IAAA,UAAU,CAAC,KAAsB,EAAA;QAC/B,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAGvB,IAAA,SAAS,CAAC,KAAkC,EAAA;QAC1C,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;aACtD;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;;AAI9D,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;;AAGrC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGT,IAAA,YAAY,CAAC,KAAsB,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAGtB,IAAA,IAAc,eAAe,GAAA;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;;AAG5D,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK;;IAGjC,aAAa,GAAA;QACrB,IAAI,CAAC,OAAO,EAAE;;IAGN,kBAAkB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;YACrD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAClG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;;;AAI5C,IAAA,IAAc,eAAe,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;aACrD;YACL,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,GAAG,CAAC;;;IAI1B,cAAc,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC;;AAGjD,IAAA,kBAAkB,CAAC,KAAc,EAAA;QACvC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;aAC5C;YACL,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;;+GA/QzC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,y/ECpChC,2pDAkDA,EAAA,MAAA,EAAA,CAAA,kxJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmE,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,IAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9D,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6D,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,OAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDda,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,2pDAAA,EAAA,MAAA,EAAA,CAAA,kxJAAA,CAAA,EAAA;;0BAgKhB;;0BAAY;qEA7Bf,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,kBAAkB;;sBAC9B;gBAGS,WAAW,EAAA,CAAA;sBAApB;gBAEc,KAAK,EAAA,CAAA;sBAAnB;;;MExIU,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAzB,yBAAyB,EAAA,YAAA,EAAA,CAhBrB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEhC,YAAY;YACZ,cAAc;YACd,eAAe;YACf,sBAAsB;YACtB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,mBAAmB;YACnB,sBAAsB;YACtB,qBAAqB;AACrB,YAAA,oBAAoB,aAEZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAdlC,YAAY;YACZ,cAAc;YACd,eAAe;YACf,sBAAsB;YACtB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YAGnB,qBAAqB;YACrB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;4FAIX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,eAAe;wBACf,sBAAsB;wBACtB,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,mBAAmB;wBACnB,sBAAsB;wBACtB,qBAAqB;wBACrB,oBAAoB;AACrB,qBAAA;oBACD,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;MC9BY,eAAe,GAAG,IAAI,cAAc,CAAU,iBAAiB;;ACF5E;IAMY;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,uBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,uBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAC3B,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,GAKlC,EAAA,CAAA,CAAA;MAIY,eAAe,CAAA;AAS3B;AAEY,MAAA,sBAAsB,GAAoB;AACrD,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,IAAI,EAAE,OAAO;;MAGF,iBAAiB,GAAG,IAAI,cAAc,CAAkB,mBAAmB,EAAE;AACxF,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,sBAAsB;AACtC,CAAA;AAED;;;AAGG;MACU,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;AACmB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAiB;;AAQ5D;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;AAGzC;;;AAGG;AACH,IAAA,KAAK,CAAC,MAAU,EAAA;;;;AAKhB,IAAA,UAAU,CAAC,MAAU,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;AAE/B;;ACxEM,MAAM,0BAA0B,GAAG,GAAG;AAEtC,MAAM,kBAAkB,GAAG;IAChC,OAAO,CAAC,YAAY,EAAE;AACpB,QAAA,KAAK,CAAC,CAAA,EAAG,uBAAuB,CAAC,IAAI,CAAE,CAAA,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AAC/E,QAAA,KAAK,CAAC,CAAA,EAAG,uBAAuB,CAAC,WAAW,CAAE,CAAA,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACzF,QAAA,KAAK,CAAC,CAAA,EAAG,uBAAuB,CAAC,UAAU,CAAE,CAAA,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACzF,UAAU,CAAC,CAAG,EAAA,uBAAuB,CAAC,IAAI,QAAQ,uBAAuB,CAAC,WAAW,CAAA,CAAE,EAAE;AACvF,YAAA,OAAO,CAAC,CAAA,EAAG,0BAA0B,CAAA,cAAA,CAAgB,CAAC;SACvD,CAAC;QACF,UAAU,CAAC,CAAG,EAAA,uBAAuB,CAAC,IAAI,QAAQ,uBAAuB,CAAC,UAAU,CAAA,CAAE,EAAE;AACtF,YAAA,OAAO,CAAC,CAAA,EAAG,0BAA0B,CAAA,cAAA,CAAgB,CAAC;SACvD,CAAC;KACH,CAAC;CACH;AAEM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,CAAC,WAAW,EAAE;AACnB,QAAA,KAAK,CAAC,CAAA,EAAG,uBAAuB,CAAC,IAAI,CAAE,CAAA,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,QAAA,KAAK,CAAC,CAAA,EAAG,uBAAuB,CAAC,MAAM,CAAE,CAAA,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjE,UAAU,CAAC,CAAG,EAAA,uBAAuB,CAAC,IAAI,QAAQ,uBAAuB,CAAC,MAAM,CAAA,CAAE,EAAE;AAClF,YAAA,OAAO,CAAC,CAAA,EAAG,0BAA0B,CAAA,cAAA,CAAgB,CAAC;SACvD,CAAC;KACH,CAAC;CACH;;MCRY,gBAAgB,CAAA;AAS3B,IAAA,WAAA,GAAA;AAJQ,QAAA,IAAA,CAAA,sBAAsB,GAAoB,MAAM,CAAC,iBAAiB,CAAC;AACnE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;;AAIvC,IAAA,IAAI,CACF,OAAmC,EACnC,MAAgC,EAChC,cAAyB,EAAA;QAEzB,MAAM,WAAW,GAAoB,EAAE,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,MAAM,EAAE;AAElF,QAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAQ;AAC7C,QAAA,IAAI,CAAC,mBAAmB,GAAG,YAAY;AAEvC,QAAA,YAAY,CAAC,KAAK,GAAG,CAAC,MAAU,KAAI;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACpB,SAAC;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,cAAc,CAAC;AAC1E,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC3F,YAAA,IAAI,CAAC,qBAAqB,GAAG,qBAAqB;;AAGpD,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;;aACrB;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC;;AAG3C,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAE;AAE1C,QAAA,OAAO,YAAY;;AAGrB,IAAA,KAAK,CAAU,MAAU,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;;;AAIrD,IAAA,gBAAgB,CAAU,MAAU,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;;AAGtC,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;AAC3D,YAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS;;AAGxC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;;;IAIhC,uBAAuB,CAAC,MAAuB,EAAE,cAAyB,EAAA;QAChF,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE;gBAC9C,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE;AACpD,aAAA;AACF,SAAA,CAAC;;IAGI,wBAAwB,CAAC,QAA2B,EAAE,QAAkB,EAAA;AAC9E,QAAA,MAAM,qBAAqB,GAAG,eAAe,CAAC,kBAAkB,EAAE;YAChE,mBAAmB,EAAE,IAAI,CAAC,QAAQ;AAClC,YAAA,eAAe,EAAE,QAAQ;AAC1B,SAAA,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QAEtD,MAAM,WAAW,GAAI,qBAAqB,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB;AACxG,QAAA,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAEjE,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;AAEtC,QAAA,OAAO,qBAAqB;;IAGtB,aAAa,CAAU,SAAkB,EAAE,YAAkC,EAAA;QACnF,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,kBAAkB;QAChF,IAAI,gBAAgB,EAAE;AACpB,YAAA,gBAAgB,EAAE,CAAC,KAAK,EAAE;YAC1B,IAAI,CAAC,mBAAmB,GAAG,gBAAgB,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC;;YAExE,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAa;;;AAInE,IAAA,YAAY,CAAC,QAA0B,EAAA;QAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,kBAAkB;QAChF,IAAI,gBAAgB,EAAE;AACpB,YAAA,gBAAgB,EAAE,CAAC,KAAK,EAAE;YAC1B,IAAI,CAAC,eAAe,GAAG,gBAAgB,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC;;;+GA1G/D,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCSY,kBAAkB,CAAA;AAyB7B,IAAA,WAAA,GAAA;AAxBA,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAoB,OAAO,CAAC;AAEtD,QAAA,IAAA,CAAA,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AACzF,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA6B,WAAW,CAAC;AACvE,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAA6B,mBAAmB,CAAC;AAC9E,QAAA,IAAA,CAAA,QAAQ,GAAG,eAAe,CAAC,eAAe;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAU,KAAK,CAAC;AAC/B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAA4B,SAAS,CAAC;AACnD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC;AACjD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC;AAEjD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACjB,OAAO,uBAAuB,CAAC,IAAI;;AAGrC,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,KAAK;kBAChC,uBAAuB,CAAC;AAC1B,kBAAE,uBAAuB,CAAC,WAAW;AACzC,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAG9C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe;AAC/C,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGrB,IAAI,GAAA;QACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,SAAC,CAAC;;AAGJ,IAAA,KAAK,CAAC,MAAY,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC;SAC/C,EAAE,0BAA0B,CAAC;;+GAzCrB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,8KAGyC,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BxF,82CAyCA,EAAA,MAAA,EAAA,CAAA,iuGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBc,sBAAsB,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,qBAAqB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,eAAe,+CAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAFvE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAI1C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;+BACI,eAAe,EAAA,UAAA,EAGb,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAClC,uBAAuB,CAAC,MAAM,WACtC,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,82CAAA,EAAA,MAAA,EAAA,CAAA,iuGAAA,CAAA,EAAA;;;AExBjG;AACO,MAAM,oBAAoB,GAAW;AACrC,MAAM,oBAAoB,GAAW;;MCU/B,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AAOE;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAoB,OAAO;AASxC;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAW,EAAE;AAE9B;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAW,uDAAuD;AAEpF;;;;AAIG;QACM,IAAO,CAAA,OAAA,GAAY,KAAK;AAEjC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAQrD,QAAA,IAAA,CAAA,cAAc,GAAuB;AACnC,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,QAAQ,EAAE,EAAE;SACb;QAED,IAAc,CAAA,cAAA,GAAgD,EAAE;QAChE,IAAqB,CAAA,qBAAA,GAAY,KAAK;QACtC,IAAiB,CAAA,iBAAA,GAAW,CAAC;QAC7B,IAAyB,CAAA,yBAAA,GAAW,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAuB;AACrC,YAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,YAAA,QAAQ,EAAE,EAAE;SACb;AACD,QAAA,IAAA,CAAA,mBAAmB,GAA0B;AAC3C,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,GAAG,EAAE,EAAE;AACP,oBAAA,MAAM,EAAE,EAAE;AACX,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,CAAC,EAAE;AACD,oBAAA,UAAU,EAAE;AACV,wBAAA,OAAO,EAAE,IAAI;wBACb,KAAK,EAAE,KAAK,CAAC,YAAY;AAC1B,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,MAAM,KAAK,CAAC,YAAY;AAChC,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,OAAO,EAAE,KAAK;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC;AACf,oBAAA,YAAY,EAAE,GAAG;AACjB,oBAAA,KAAK,EAAE;wBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,wBAAA,OAAO,EAAE,KAAK;AACf,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;QACkB,IAAkB,CAAA,kBAAA,GAAG,gBAAgB;AA8UzD;IA5UC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,eAAe,EAAE;;;IAIlB,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5E,YAAA,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;;AAExE,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AAChG,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;;AAElF,QAAA,IACE,IAAI,CAAC,eAAe,CAAC,gBAAgB;AACrC,YAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EACnF;AACA,YAAA,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC;;AAExF,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;AACnD,YAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;QAEpE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAChG,YAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;;QAE/E,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE;AACvF,YAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC;;QAErF,IACE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;AAC1C,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YACrC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EACnF;AACA,YAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC;;;IAI/E,YAAY,GAAA;QAClB,MAAM,QAAQ,GAAG,EAAE;QACnB,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa;YACrD,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AAC3C,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,eAAe,EAAE,yBAAyB;YAC1C,WAAW,EAAE,KAAK,CAAC,QAAQ;YAC3B,oBAAoB,EAAE,KAAK,CAAC,QAAQ;YACpC,gBAAgB,EAAE,KAAK,CAAC,SAAS;YACjC,yBAAyB,EAAE,KAAK,CAAC,SAAS;YAC1C,qBAAqB,EAAE,KAAK,CAAC,QAAQ;AACtC,SAAA,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9C,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa;gBACrD,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AAC3C,gBAAA,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,KAAK,CAAC,KAAK;AACxB,gBAAA,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAClB,gBAAA,WAAW,EAAE,CAAC;gBACd,oBAAoB,EAAE,KAAK,CAAC,KAAK;gBACjC,gBAAgB,EAAE,KAAK,CAAC,SAAS;gBACjC,yBAAyB,EAAE,KAAK,CAAC,SAAS;gBAC1C,qBAAqB,EAAE,KAAK,CAAC,KAAK;AACnC,aAAA,CAAC;;QAEJ,IAAI,CAAC,cAAc,GAAG;AACpB,YAAA,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;AACnC,YAAA,QAAQ,EAAE,QAAQ;SACnB;;IAGK,eAAe,GAAA;QACrB,IAAI,CAAC,iBAAiB,GAAG;AACvB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE;AACJ,oBAAA,WAAW,EAAE,CAAC;AACf,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,GAAG,EAAE,EAAE;AACP,oBAAA,MAAM,EAAE,EAAE;AACX,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,CAAC,EAAE;AACD,oBAAA,UAAU,EAAE;AACV,wBAAA,OAAO,EAAE,IAAI;wBACb,KAAK,EAAE,KAAK,CAAC,KAAK;AACnB,qBAAA;AACD,oBAAA,IAAI,EAAE;wBACJ,KAAK,EAAE,OAAO,IAAG;4BACf,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE;gCAC9B,OAAO,KAAK,CAAC,KAAK;;4BAEpB,OAAO,KAAK,CAAC,YAAY;yBAC1B;AACF,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,KAAK,EAAE,OAAO;AACd,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE,OAAO;AACf,4BAAA,IAAI,EAAE,EAAE;AACT,yBAAA;AACD,wBAAA,OAAO,EAAE,KAAK;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC;AACf,oBAAA,YAAY,EAAE,GAAG;AACjB,oBAAA,KAAK,EAAE;wBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,wBAAA,OAAO,EAAE,KAAK;AACf,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,KAAK;AACf,iBAAA;AACF,aAAA;SACF;;IAGH,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACtC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;;AAIvC,IAAA,oBAAoB,CAAC,KAAY,EAAA;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAQ;AACtC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,oBAAoB,GAAG,oBAAoB;AACvF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,oBAAoB,GAAG,oBAAoB;;AAGxF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACnD,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;;YAGjE,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,IAAI,GAAG;AACjD,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,IAAI,YAAY,IAAI,GAAG,CAAC;AAEpE,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AACjG,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;;IAGnC,8BAA8B,CAAC,KAAa,EAAE,MAAc,EAAA;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC;AACjB,QAAA,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;YACtC,OAAO,CAAA,KAAA,EAAQ,QAAQ,CAAC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAA,GAAA,CAAK;;AAC1C,aAAA,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,OAAO,CAAA,KAAA,EAAQ,QAAQ,CAAC,CAAC,OAAO,MAAM,CAAA,KAAA,EAAQ,OAAO,CAAA,GAAA,CAAK;;aACrD;AACL,YAAA,OAAO,QAAQ,QAAQ,CAAC,CAAC,CAAO,IAAA,EAAA,OAAO,KAAK;;;IAIhD,4BAA4B,CAAC,KAAa,EAAE,KAAa,EAAA;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC3C,MAAM,OAAO,GAAG,EAAE;AAClB,QAAA,IAAI,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACrB,OAAO,CAAA,KAAA,EAAQ,QAAQ,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAA,GAAA,CAAK;;AACzC,aAAA,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,OAAO,CAAA,KAAA,EAAQ,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAA,KAAA,EAAQ,OAAO,CAAA,GAAA,CAAK;;aACpD;AACL,YAAA,OAAO,QAAQ,QAAQ,CAAC,CAAC,CAAO,IAAA,EAAA,OAAO,KAAK;;;IAIhD,cAAc,CAAC,KAAoB,EAAE,KAAa,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAC3D,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;AACrB,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AAC/D,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;;AAI1B,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;QAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;;aACrD;YACL,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;;AAEnD,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;;AAG5B,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,aAAa,GAAG,KAAK,GAAG,CAAC;AAC/B,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;;aACzD;YACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE;;AAElD,QAAA,IAAI,CAAC,iBAAiB,GAAG,aAAa;;IAGxC,mBAAmB,CAAC,KAAoB,EAAE,KAAa,EAAA;AACrD,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;AAC9B,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAClE,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;;AAC1B,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AAC/D,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;AAI/B,IAAA,mBAAmB,CAAC,KAAa,EAAA;AACvC,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;QAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;;aACjD;YACL,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;;;AAIzC,IAAA,uBAAuB,CAAC,KAAa,EAAA;AAC3C,QAAA,MAAM,aAAa,GAAG,KAAK,GAAG,CAAC;AAC/B,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;;aACrD;YACL,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE;;;AAIhD,IAAA,uBAAuB,CAAC,KAAoB,EAAE,KAAa,EAAE,cAAuB,KAAK,EAAA;AACvF,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAC3D,YAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC;YAC/C,IAAI,CAAC,uBAAuB,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,WAAW,CAAC;;AACpG,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AAC/D,YAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC;AACnD,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,WAAW,CAAC;;AACxG,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC9B,IAAI,CAAC,kBAAkB,EAAE;;;AAIrB,IAAA,sBAAsB,CAAC,KAAa,EAAE,WAAA,GAAuB,KAAK,EAAA;AACxE,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;QAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1C,YAAA,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc;YACvF,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;;aAC/C;AACL,YAAA,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc;AACvF,YAAA,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;;QAE7C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,IAAI,CAAC,yBAAyB,GAAG,SAAS;;;AAItC,IAAA,0BAA0B,CAAC,KAAa,EAAE,WAAA,GAAuB,KAAK,EAAA;AAC5E,QAAA,MAAM,aAAa,GAAG,KAAK,GAAG,CAAC;AAC/B,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;AACtB,YAAA,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc;YACvF,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;;aACnD;AACL,YAAA,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc;AACvF,YAAA,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE;;QAE5C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,IAAI,CAAC,yBAAyB,GAAG,aAAa;;;AAIlD,IAAA,uBAAuB,CAAC,KAAa,EAAE,WAAA,GAAuB,KAAK,EAAA;AACjE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK;AACvC,QAAA,IAAI,CAAC,aAAa;YAAE;AACpB,QAAA,MAAM,aAAa,GAAG,CAAC,EAAE,YAAY,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AACpE,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,MAAM,aAAa,GAAG;YACpB,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,CAAC,EAAE,SAAS,CAAC,CAAC;SACf;QACD,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK;;QAGxC,aAAa,CAAC,OAAO,EAAE,iBAAiB,CAAC,aAAa,EAAE,aAAa,CAAC;QAEtE,aAAa,CAAC,MAAM,EAAE;;IAGhB,kBAAkB,GAAA;AACxB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK;AACvC,QAAA,IAAI,CAAC,aAAa;YAAE;;AAGpB,QAAA,aAAa,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAE5D,aAAa,CAAC,MAAM,EAAE;;AAGxB,IAAA,uBAAuB,CAAC,YAAoB,EAAA;AAC1C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK;AACvC,QAAA,IAAI,CAAC,aAAa;YAAE;QAEpB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AACzD,QAAA,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM;QAChC,aAAa,CAAC,MAAM,EAAE;;AAGxB,IAAA,gBAAgB,CAAC,YAAoB,EAAA;AACnC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK;AACvC,QAAA,IAAI,CAAC,aAAa;YAAE;QACpB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM;;AAG1D,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9B,IAAI,SAAS,GAAG,EAAE;AAClB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,MAAM,IAAI,EAAE,EAAE;AACnC,gBAAA,SAAS,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI;;iBACrC;gBACL;;;AAGJ,QAAA,OAAO,SAAS;;AAGlB,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1C,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;;+GA3atC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA6CpB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1D/B,iqIA2FA,EAAA,MAAA,EAAA,CAAA,21HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0E,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApE,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD9Ea,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,iqIAAA,EAAA,MAAA,EAAA,CAAA,21HAAA,CAAA,EAAA;8BAQV,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,eAAe,EAAA,CAAA;sBAAvB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,OAAO,EAAA,CAAA;sBAAf;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAE8B,KAAK,EAAA,CAAA;sBAAnC,SAAS;uBAAC,kBAAkB;gBACG,eAAe,EAAA,CAAA;sBAA9C,YAAY;uBAAC,gBAAgB;gBACE,cAAc,EAAA,CAAA;sBAA7C,YAAY;uBAAC,gBAAgB;gBACW,uBAAuB,EAAA,CAAA;sBAA/D,YAAY;uBAAC,yBAAyB;gBACX,WAAW,EAAA,CAAA;sBAAtC,YAAY;uBAAC,YAAY;;;AEpD5B,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;MAgBnB,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA1B,0BAA0B,EAAA,YAAA,EAAA,CAbtB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAGjC,OAAO;YACP,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,sBAAsB;AACtB,YAAA,YAAY,aATJ,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAYnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YARnC,cAAc;YACd,gBAAgB;YAGhB,sBAAsB;YACtB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGH,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAC/B,oBAAA,OAAO,EAAE;wBACP,OAAO;wBACP,eAAe;wBACf,cAAc;wBACd,gBAAgB;wBAChB,eAAe;wBACf,eAAe;wBACf,sBAAsB;wBACtB,YAAY;AACb,qBAAA;AACF,iBAAA;;;MCgBY,kBAAkB,CAAA;AAkG7B,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAe,CAAA,eAAA,GAAf,eAAe;AAlG3E,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACpD;;;;AAIG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAEjB;;;;AAIG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE;AACxB,YAAA,SAAS,EAAE,CAAC,KAAa,KAAK,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAC/E,SAAA,CAAC;AAEF;;;;AAIG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,EAAE,CAAC;AAElC;;;;AAIG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA+B,SAAS,CAAC;AACxD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC;AAEhF;;;;AAIG;AACH,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAqB,SAAS,CAAC;AAExD;;;;;AAKG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,CAAC;AAEhD;;;;;AAKG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC;AAEjD;;;;AAIG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AAEvB;;;AAGG;QACH,IAAmB,CAAA,mBAAA,GAAG,MAAM,EAAQ;AAEpC;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,MAAM,EAAQ;AAEnC;;;AAGG;QACH,IAAY,CAAA,YAAA,GAAG,KAAK,EAAiB;AAE5B,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,OAAO,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxD,SAAC,CAAC;AAEQ,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;AAC1B,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;AACzD,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,YAAA,IAAI,aAAa,KAAK,GAAG,EAAE;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;AAEvB,YAAA,OAAO,aAAa;AACtB,SAAC,CAAC;;AAMF,IAAA,UAAU,CAAC,IAAmB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrF;;AAEF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;AACpD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;;AAEnC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;;IAG7B,cAAc,CAAC,MAAqB,EAAE,IAAmB,EAAA;AACvD,QAAA,IAAI,cAAc,CAAC,KAAK,KAAK,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,KAAK,KAAK,MAAM,CAAC,GAAG,EAAE;YAC9E,MAAM,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;;IAIzB,IAAI,GAAA;AACF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;QACxC,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;;;IAInD,IAAI,GAAA;AACF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,QAAA,IAAI,YAAY,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;;;AAInD,IAAA,iBAAiB,CAAC,KAAY,EAAA;QAC5B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;AAxItB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAmGP,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnG/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,ECzC/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,y6EAuEA,ED1CQ,MAAA,EAAA,CAAA,g/IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,0BAA0B,4OAC1B,0BAA0B,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,qBAAqB,EACrB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,sBAAsB,EACtB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,eAAe,+CACf,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAMJ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACf,OAAA,EAAA;wBACL,0BAA0B;wBAC1B,0BAA0B;wBAC1B,mBAAmB;wBACnB,qBAAqB;wBACrB,sBAAsB;wBACtB,eAAe;wBACf,SAAS;qBACZ,EAGgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,y6EAAA,EAAA,MAAA,EAAA,CAAA,g/IAAA,CAAA,EAAA;;0BAqG9C;;0BAAY,MAAM;2BAAC,oCAAoC;;;ME3H/C,kBAAkB,CAAA;AAX/B,IAAA,WAAA,GAAA;AA8BE;;;;AAIG;QACwB,IAAW,CAAA,WAAA,GAAG,EAAE;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ;QACtC,IAAgB,CAAA,gBAAA,GAAG,KAAK;AACnC;+GA3BY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB/B,ikBAiBA,EDRQ,MAAA,EAAA,CAAA,mjNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,sBAAsB,yKACtB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAChB,OAAA,EAAA;wBACL,sBAAsB;wBACtB,qBAAqB;wBACrB,oBAAoB;wBACpB;AACH,qBAAA,EAAA,QAAA,EAAA,ikBAAA,EAAA,MAAA,EAAA,CAAA,mjNAAA,CAAA,EAAA;8BAUwB,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAME,WAAW,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAME,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAME,WAAW,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACf,WAAW,EAAA,CAAA;sBAApB;;;AEnCH,IAAK,mBAMJ;AAND,CAAA,UAAK,mBAAmB,EAAA;AACtB,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAW;AACX,IAAA,mBAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAU;AACV,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAY;AACZ,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAW;AACX,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,SAAa;AACf,CAAC,EANI,mBAAmB,KAAnB,mBAAmB,GAMvB,EAAA,CAAA,CAAA;MAUY,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAqBE;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAErD;;;;AAIG;QACM,IAAc,CAAA,cAAA,GAAmB,cAAc;QAE/C,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QACd,IAAS,CAAA,SAAA,GAAG,CAAC;QACb,IAAS,CAAA,SAAA,GAAG,CAAC;QACb,IAAQ,CAAA,QAAA,GAAG,GAAG;QACd,IAAY,CAAA,YAAA,GAAG,CAAC;AAChB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;AACpE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;AACpE,QAAA,IAAA,CAAA,sBAAsB,GAAG,EAAE,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAG,EAAE;QACvB,IAAqB,CAAA,qBAAA,GAAG,KAAK;QAC7B,IAAoB,CAAA,oBAAA,GAAG,OAAO;QAEvC,IAAmB,CAAA,mBAAA,GAAG,mBAAmB;AAUzC,QAAA,IAAA,CAAA,iBAAiB,GAAsB;AACrC,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,QAAQ,EAAE,EAAE;SACb;QAEkB,IAAkB,CAAA,kBAAA,GAAG,wBAAwB;AA2MjE;IAzMC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACnD,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;;AAE1E,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE;AAC7E,YAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;;QAEvF,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,eAAe,EAAE;;IAGhB,YAAY,GAAA;QAClB,MAAM,OAAO,GAAa,EAAE;QAC5B,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;AAEjF,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3G,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACf,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;QAGhD,IAAI,CAAC,iBAAiB,GAAG;YACvB,MAAM;AACN,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;SACxC;;IAGK,eAAe,GAAA;QACrB,IAAI,CAAC,oBAAoB,GAAG;AAC1B,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAA,OAAO,EAAE;;;;AAIP,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE,KAAK;AACf,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,KAAK;AACf,iBAAA;AACF,aAAA;SACF;;IAGK,UAAU,GAAA;QAChB,OAAO;AACL,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,SAAS,EAAE;gBACT,KAAK,EAAE,WAAW,IAAG;oBACnB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC7F,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG;iBACnB;AACD,gBAAA,KAAK,EAAE,MAAM,EAAE;AAChB,aAAA;SACF;;IAGK,QAAQ,GAAA;QAId,OAAO;AACL,YAAA,CAAC,EAAE;AACD,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE;oBACJ,OAAO,EAAE,KAAK;AACf,iBAAA;AACF,aAAA;AACD,YAAA,CAAC,EAAE;AACD,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE;oBACJ,OAAO,EAAE,KAAK;AACf,iBAAA;AACF,aAAA;SACF;;AAGK,IAAA,eAAe,CACrB,OAAiB,EAAA;QAEjB,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvG,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,KAAK,mBAAmB,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AACjG,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE;oBACJ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,oBAAA,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvE,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,iBAAA;AACD,gBAAA,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,KAAK,CAAC,KAAK;AACxB,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,oBAAA,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC;AACrE,iBAAA;AACD,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,KAAK,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AAClG,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA;SACF;;AAGK,IAAA,cAAc,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY,EAAA;QAC3D,MAAM,MAAM,GAAG,EAAE;QACjB,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YACnE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AAE3B,QAAA,OAAO,MAAM;;IAGP,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,MAAM;;AACzC,aAAA,IAAI,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE;AAC7F,YAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,KAAK;;AACxC,aAAA,IAAI,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,OAAO,EAAE;AAC9F,YAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,OAAO;;AAC1C,aAAA,IAAI,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE;AAC/F,YAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,MAAM;;aACzC,IAAI,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,MAAM,EAAE;AACnD,YAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,OAAO;;;;IAK3C,gBAAgB,GAAA;AACtB,QAAA,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChF,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;IAG5B,4BAA4B,GAAA;AAClC,QAAA,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC7F,QAAA,IAAI,CAAC,sBAAsB,GAAG,aAAa;AAC3C,QAAA,IAAI,CAAC,sBAAsB,GAAG,aAAa;;AAGrC,IAAA,sBAAsB,CAAC,KAAa,EAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;QACpD,IAAI,aAAa,GAAG,KAAK;QACzB,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;AAEjF,QAAA,IAAI,MAAM,IAAI,IAAI,CAAC,eAAe,IAAI,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;AACpE,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;YAClG,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC;AAClE,YAAA,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;AACpF,YAAA,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;;AAGtF,QAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE;;IAGjC,QAAQ,CAAC,KAAa,EAAE,KAAa,EAAE,KAAa,EAAE,MAAc,EAAE,MAAc,EAAA;QAC1F,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,MAAM,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC,GAAG,MAAM;;IAGzE,eAAe,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,KAAK,CAAuC,EAAA;AAC3F,QAAA,MAAM,QAAQ,GAAG,SAAS,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG;AAChD,QAAA,OAAO,QAAQ,UAAU,CAAA,EAAA,EAAK,QAAQ,CAAI,CAAA,EAAA,MAAM,KAAK;;AAGvD,IAAA,2BAA2B,CAAC,SAAiB,EAAA;AAC3C,QAAA,OAAO,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB;;AAGrG,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE;AACtC,YAAA,OAAO,2CAA2C;;AAC7C,aAAA,IAAI,KAAK,IAAI,mBAAmB,CAAC,MAAM,IAAI,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE;AACnF,YAAA,OAAO,sCAAsC;;AACxC,aAAA,IAAI,KAAK,IAAI,mBAAmB,CAAC,KAAK,IAAI,KAAK,GAAG,mBAAmB,CAAC,OAAO,EAAE;AACpF,YAAA,OAAO,gCAAgC;;AAClC,aAAA,IAAI,KAAK,IAAI,mBAAmB,CAAC,OAAO,IAAI,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE;AACrF,YAAA,OAAO,sCAAsC;;aACxC;AACL,YAAA,OAAO,2CAA2C;;;+GAlQ3C,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,4NCvBnC,gyKAiIA,EAAA,MAAA,EAAA,CAAA,4gMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD1Ga,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,gyKAAA,EAAA,MAAA,EAAA,CAAA,4gMAAA,CAAA,EAAA;8BAQV,KAAK,EAAA,CAAA;sBAAb;gBAOQ,kBAAkB,EAAA,CAAA;sBAA1B;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAOQ,cAAc,EAAA,CAAA;sBAAtB;;;AE1CH,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;MAenB,4BAA4B,CAAA;+GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA5B,4BAA4B,EAAA,YAAA,EAAA,CAZxB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAGnC,OAAO;YACP,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,YAAY;YACZ,mBAAmB;AACnB,YAAA,eAAe,aARP,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAWrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YAPrC,cAAc;YACd,gBAAgB;YAChB,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAIV,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAbxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,OAAO;wBACP,eAAe;wBACf,cAAc;wBACd,gBAAgB;wBAChB,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;AAChB,qBAAA;AACF,iBAAA;;;MCLY,oCAAoC,CAAA;AAsC/C,IAAA,WAAA,CAC6E,eAAiC,EACpG,sBAA8C,EAC9C,eAAgC,EAAA;QAFmC,IAAe,CAAA,eAAA,GAAf,eAAe;QAClF,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAe,CAAA,eAAA,GAAf,eAAe;AAxCzB;;;;;AAKG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAUrD;;;;;AAKG;QACM,IAAO,CAAA,OAAA,GAAY,KAAK;AAEjC;;;;;AAKG;QACM,IAAI,CAAA,IAAA,GAAsB,OAAO;QAEjC,IAAkB,CAAA,kBAAA,GAAG,0BAA0B;QAGxD,IAAwB,CAAA,wBAAA,GAA+B,EAAE;QAOvD,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;;;IAI3C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE;QACzD,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC5E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE;QAC3E,IAAI,CAAC,sBAAsB,EAAE;;IAG/B,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,wBAAwB,GAAG,EAAE;AAClC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,cAAc,IAAG;AAC7D,YAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,IACjE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAG,EAAA,IAAI,CAAC,kBAAkB,CAAoB,iBAAA,EAAA,SAAS,CAAC,aAAa,CAAQ,MAAA,CAAA,CAAC,CAC9G;AAED,YAAA,MAAM,2BAA2B,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,IAC5E,IAAI,CAAC,eAAe,CAAC,SAAS,CAC5B,CAAG,EAAA,IAAI,CAAC,kBAAkB,CAAoB,iBAAA,EAAA,SAAS,CAAC,aAAa,CAAc,YAAA,CAAA,CACpF,CACF;YAED,MAAM,cAAc,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,2BAA2B,CAAC;YAC5E,MAAM,YAAY,GAAa,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,UAAU,IAAG;AAClC,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;AAC/C,oBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,iBAAC,CAAC;AACJ,aAAC,CAAC;AACF,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;YAC7D,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAErE,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;gBACjC,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,WAAW,EAAE,cAAc,CAAC,WAAW;AACvC,gBAAA,eAAe,EAAE;AACf,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,gBAAgB,EAAE,iBAAiB;oBACnC,QAAQ,EACN,cAAc,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,qBAAqB,KAAK;AAC3D,0BAAE;AACE,4BAAA;AACE,gCAAA,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,iBAAiB,CAAC;AAChF,gCAAA,aAAa,EAAE,wBAAwB;AACxC,6BAAA;AACD,4BAAA;AACE,gCAAA,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,qBAAqB,IAAI,CAAC,CAAC;AACzF,gCAAA,aAAa,EAAE,iCAAiC;AACjD,6BAAA;AACF;AACH,0BAAE;AACE,4BAAA;AACE,gCAAA,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,iBAAiB,CAAC;AAChF,gCAAA,aAAa,EAAE,wBAAwB;AACxC,6BAAA;AACF,yBAAA;AACR,iBAAA;AACF,aAAA,CAAC;AACJ,SAAC,CAAC;;AAxGO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,kBAuCzB,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvC/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,0NCnBjD,ohBAQA,EAAA,MAAA,EAAA,CAAA,uQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwE,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjE,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDWa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAPhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,EAG5B,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,ohBAAA,EAAA,MAAA,EAAA,CAAA,uQAAA,CAAA,EAAA;;0BAyChB;;0BAAY,MAAM;2BAAC,oCAAoC;yGAhCjD,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,IAAI,EAAA,CAAA;sBAAZ;;;MErBU,0CAA0C,CAAA;+GAA1C,0CAA0C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA1C,0CAA0C,EAAA,YAAA,EAAA,CAhBtC,oCAAoC,CAAA,EAAA,OAAA,EAAA,CAEjD,YAAY;YACZ,wBAAwB;YACxB,oBAAoB;YACpB,0BAA0B;YAC1B,0BAA0B;YAC1B,sBAAsB;YACtB,eAAe;YACf,eAAe;YACf,iBAAiB;AACjB,YAAA,YAAY,aAGJ,oCAAoC,CAAA,EAAA,CAAA,CAAA;AAEnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0CAA0C,EAH1C,SAAA,EAAA,CAAC,eAAe,CAAC,YAX1B,YAAY;YACZ,wBAAwB;YACxB,oBAAoB;YACpB,0BAA0B;YAC1B,0BAA0B;YAC1B,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FASb,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAjBtD,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oCAAoC,CAAC;AACpD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,wBAAwB;wBACxB,oBAAoB;wBACpB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,sBAAsB;wBACtB,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB,YAAY;AACb,qBAAA;oBACD,SAAS,EAAE,CAAC,eAAe,CAAC;oBAC5B,OAAO,EAAE,CAAC,oCAAoC,CAAC;AAChD,iBAAA;;;MCOY,qBAAqB,CAAA;IAuIhC,WAC6E,CAAA,eAAiC,EAC3F,GAAsB,EAAA;QADoC,IAAe,CAAA,eAAA,GAAf,eAAe;QACzE,IAAG,CAAA,GAAA,GAAH,GAAG;QAxIP,IAAK,CAAA,KAAA,GAAG,kBAAkB;AAEzC;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAEnB;;;;;AAKG;QACM,IAAO,CAAA,OAAA,GAAI,EAAE;AAEtB;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAkB,EAAE;AAElC;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;AAKG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAuB,EAAE,CAAC;AAEzC;;;;;;AAMG;QACM,IAAU,CAAA,UAAA,GAAG,IAAI;AAE1B;;;;;;AAMG;QACM,IAAe,CAAA,eAAA,GAAI,KAAK;AAYjC;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAwB,OAAO;AAEpD;;;;;AAKG;QACM,IAAgB,CAAA,gBAAA,GAAI,EAAE;AAE/B;;;;;AAKG;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAiB;AAErD;;;;;AAKG;AACO,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAqB;AAC9D;;;;;;AAMG;QAGH,IAAgB,CAAA,gBAAA,GAAqB,OAAO;AAK5C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAU,KAAK,CAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAS,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAS,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAS,EAAE,CAAC;QAC3B,IAAW,CAAA,WAAA,GAA+B,EAAE;AAC5C,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,IAAI,gBAAwB;YAC5B,OAAO,IAAI,CAAC,OAAO;iBAChB,GAAG,CAAC,MAAM,IAAG;AACZ,gBAAA,gBAAgB,GAAG,MAAM,CAAC,YAAY,IAAI,gBAAgB;gBAC1D,OAAO,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE;AACtD,aAAC;iBACA,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACvF,SAAC,CAAC;QACO,IAA6B,CAAA,6BAAA,GAAG,CAAC;QAEhC,IAAkB,CAAA,kBAAA,GAAG,gBAAgB;AAK7C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe;;;AAIhD,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE;;;IAItB,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG/B,YAAY,GAAA;AACV,QAAA,MAAM,CAAC,UAAU,CAAC,MAAK;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,SAAC,CAAC;;IAGJ,MAAM,GAAA;QACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;AACpE,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;;AAElC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,UAAU,CAAC,KAAmB,EAAA;QAC5B,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;;IAG1C,aAAa,CAAC,QAAiB,EAAE,MAA0B,EAAA;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;AAC7B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;;aACtC;YACL,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;iBACxB;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;;QAG1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE;;AAGpB,IAAA,cAAc,CAAC,EAAO,EAAA;QACpB,IAAI,EAAE,CAAC,GAAG,KAAK,cAAc,CAAC,UAAU,EAAE;YACxC,EAAE,CAAC,cAAc,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;;aAC9B,IAAI,EAAE,CAAC,GAAG,KAAK,cAAc,CAAC,QAAQ,EAAE;YAC7C,EAAE,CAAC,cAAc,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;;aAClC,IAAI,EAAE,CAAC,GAAG,KAAK,cAAc,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;IAI1B,qBAAqB,CAAC,UAAmB,EAAE,KAAkB,EAAA;AAC3D,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU;;IAG9B,WAAW,GAAA;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,cAAc,GAAG,EAAE;QACvB,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO;AAC9B,aAAA,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;aAClD,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;AAEjC,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;YAC3F,OAAO,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAE;;QAGjF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,cAAc,IAAI,CAAM,GAAA,EAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA,CAAA,CAAG;;AAElD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAlOd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAwIV,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxI/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,k6DCnClC,ogLAsIA,EAAA,MAAA,EAAA,CAAA,wgJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0D,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,OAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1D,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2D,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA3D,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDnGa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACI,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,ogLAAA,EAAA,MAAA,EAAA,CAAA,wgJAAA,CAAA,EAAA;;0BA0IhB;;0BAAY,MAAM;2BAAC,oCAAoC;yEAvI3C,KAAK,EAAA,CAAA;sBAAnB;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBAiBQ,UAAU,EAAA,CAAA;sBAAlB;gBASQ,eAAe,EAAA,CAAA;sBAAvB;gBAUQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQS,OAAO,EAAA,CAAA;sBAAhB;gBAQS,YAAY,EAAA,CAAA;sBAArB;gBAUD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;gBAG8B,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB;gBACC,aAAa,EAAA,CAAA;sBAA1C,YAAY;uBAAC,cAAc;;;MExHjB,2BAA2B,CAAA;+GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA3B,2BAA2B,EAAA,YAAA,EAAA,CAhBvB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAElC,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,qBAAqB;YACrB,mBAAmB;YACnB,uBAAuB;YACvB,oBAAoB;YACpB,oBAAoB;AACpB,YAAA,0BAA0B,aAElB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAdpC,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,aAAa;YAEb,qBAAqB;YACrB,mBAAmB;YACnB,uBAAuB;YACvB,oBAAoB;YAEpB,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAIjB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAjBvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,uBAAuB;wBACvB,oBAAoB;wBACpB,oBAAoB;wBACpB,0BAA0B;AAC3B,qBAAA;oBACD,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA;;;MCxBY,YAAY,CAAA;AACvB,IAAA,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,MAAe,EAAE,QAAkB,EAAA;AACxE,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,KAAK;;AAGd,QAAA,MAAM,GAAG,MAAM,KAAK,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM;AAErD,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE;AAC1B,YAAA,OAAO,KAAK;;AAGd,QAAA,QAAQ,GAAG,QAAQ,IAAI,KAAK;AAC5B,QAAA,MAAM,GAAG,MAAM,IAAI,EAAE;QACrB,IAAI,KAAK,GAAG,MAAM;QAElB,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,gBAAA,KAAK,GAAG,KAAK,CAAC,MAAM;;iBACf;gBACL,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;;;QAItC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM;;+GAxBhC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCoBY,mBAAmB,CAAA;AA6B9B,IAAA,WAAA,GAAA;AA5BA,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAiB,OAAO,CAAC;AACrC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAmB,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAmB,OAAO,CAAC;AACnD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,CAAC;AACzC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAS,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,EAAE,CAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU;AAC7D,QAAA,IAAA,CAAA,oBAAoB,GAAwB,IAAI,YAAY,EAAS;AAE/E,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACjE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAmB,EAAE,CAAC;AAC3C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAmB,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAA4B,MACxD,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK;YAChC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC,CACJ;AACD,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAU,KAAK,CAAC;QAKvC,IAAe,CAAA,eAAA,GAAG,CAAC;;QAKzB,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC;AACxB,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,aAAa,EAAE;;gBAE3C,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;;AAEzD,SAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,EAAE;YAE5C,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,IAAI,mBAAmB,KAAK,KAAK,EAAE;gBACvE,IAAI,CAAC,mBAAmB,EAAE;;AAG5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB;AACjD,SAAC,CAAC;;IAGJ,eAAe,GAAA;QACb,IAAI,CAAC,yBAAyB,EAAE;QAChC,IAAI,CAAC,mBAAmB,EAAE;;IAG5B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;;IAG3B,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YACzE,IAAI,CAAC,iBAAiB,EAAE;YACxB;;AAGF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;QACtD,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;QAEvE,IAAI,qBAAqB,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE;;AAChB,aAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE;;YAEnC,IAAI,CAAC,iBAAiB,EAAE;;aACnB;YACL,IAAI,CAAC,iBAAiB,EAAE;;;IAIpB,cAAc,GAAA;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAElF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;;;QAI5B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,aAAa,EAAE;AAC3C,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;gBACtD,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;AAElE,gBAAA,IAAI,gBAAgB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtE,IAAI,CAAC,cAAc,EAAE;;AAChB,qBAAA,IAAI,gBAAgB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/E,oBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;;;SAG1C,EAAE,CAAC,CAAC;;IAGC,iBAAiB,GAAA;AACvB,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC;AAEpD,QAAA,IAAI,mBAAmB,IAAI,CAAC,EAAE;YAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC;YAChE,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE;AAEnG,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACvC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC;;AAGzC,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;;YAGtC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,aAAa,EAAE;AAC3C,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;oBACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;oBAE7D,IAAI,CAAC,WAAW,EAAE;;AAEhB,wBAAA,IAAI,CAAC,eAAe,GAAG,mBAAmB;wBAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;;AAGhD,wBAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE;;4BAE5B,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;;;yBAE1C;;wBAEL,IAAI,CAAC,gBAAgB,EAAE;;wBAGvB,UAAU,CAAC,MAAK;AACd,4BAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,aAAa,EAAE;AAC3C,gCAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;gCAC/D,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,WAAW,GAAG,gBAAgB,CAAC,WAAW;AAEpF,gCAAA,IAAI,gBAAgB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACxE,oCAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;;;yBAG1C,EAAE,CAAC,CAAC;;;aAGV,EAAE,CAAC,CAAC;;aACA;;YAEL,IAAI,CAAC,iBAAiB,EAAE;;YAGxB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,aAAa,EAAE;AAC3C,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;oBACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;oBAE7D,IAAI,WAAW,EAAE;;AAEf,wBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;wBACzB,IAAI,CAAC,cAAc,EAAE;;;aAG1B,EAAE,CAAC,CAAC;;;IAID,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;aAC1D;YACL,IAAI,CAAC,iBAAiB,EAAE;;;IAIpB,iBAAiB,GAAA;QACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC;;IAGlB,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa,EAAE;YAC5C;;AAGF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;YAC5C,IAAI,CAAC,yBAAyB,EAAE;AAClC,SAAC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;;+GAnM1D,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,kwCCzBhC,owFAmEA,EAAA,MAAA,EAAA,CAAA,myHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+E,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3E,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAyE,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD1Ca,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGR,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,owFAAA,EAAA,MAAA,EAAA,CAAA,myHAAA,CAAA,EAAA;wDAUT,UAAU,EAAA,CAAA;sBAAnB;gBACS,oBAAoB,EAAA,CAAA;sBAA7B;gBAciC,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB;;;MEvBrB,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAbrB,YAAA,EAAA,CAAA,mBAAmB,EAAE,YAAY,aAE9C,YAAY;YACZ,mBAAmB;YACnB,gBAAgB;YAChB,2BAA2B;YAC3B,qBAAqB;YACrB,iBAAiB;AACjB,YAAA,eAAe,aAGP,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAHzB,SAAA,EAAA,CAAC,YAAY,CAAC,YARvB,YAAY;YACZ,mBAAmB;YACnB,gBAAgB;YAChB,2BAA2B;YAC3B,qBAAqB;YACrB,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAMR,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC;AACjD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,gBAAgB;wBAChB,2BAA2B;wBAC3B,qBAAqB;wBACrB,iBAAiB;wBACjB,eAAe;AAChB,qBAAA;oBACD,SAAS,EAAE,CAAC,YAAY,CAAC;oBACzB,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;ACxBD;AAEA;AACA;AAsOA;AACA;;AC1OA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui.mjs","sources":["../../../projects/tgo-canopy-ui/models/universal-skills-report.model.ts","../../../projects/tgo-canopy-ui/services/universal-skills.service.ts","../../../projects/tgo-canopy-ui/components/accordion/accordion.component.ts","../../../projects/tgo-canopy-ui/components/accordion/accordion.component.html","../../../projects/tgo-canopy-ui/pipes/memoize-func.pipe.ts","../../../projects/tgo-canopy-ui/pipes/ui-ordinal-suffix.pipe.ts","../../../projects/tgo-canopy-ui/components/universal-skills-report/universal-skills-report.component.ts","../../../projects/tgo-canopy-ui/components/universal-skills-report/universal-skills-report.component.html","../../../projects/tgo-canopy-ui/components/accordion/accordion.component.module.ts","../../../projects/tgo-canopy-ui/components/universal-skills-report/universal-skills-report.component.module.ts","../../../projects/tgo-canopy-ui/utils/alert-bars.utils.ts","../../../projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.ts","../../../projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.html","../../../projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.module.ts","../../../projects/tgo-canopy-ui/components/ai-feedback/ai-feedback.component.ts","../../../projects/tgo-canopy-ui/components/ai-feedback/ai-feedback.component.html","../../../projects/tgo-canopy-ui/components/ai-feedback/ai-feedback.module.ts","../../../projects/tgo-canopy-ui/components/selectable-card/selectable-card.component.ts","../../../projects/tgo-canopy-ui/components/selectable-card/selectable-card.component.html","../../../projects/tgo-canopy-ui/components/selectable-card/selectable-card.component.module.ts","../../../projects/tgo-canopy-ui/components/dialog/dialog.component.ts","../../../projects/tgo-canopy-ui/components/dialog/dialog.component.html","../../../projects/tgo-canopy-ui/components/dialog/dialog.service.ts","../../../projects/tgo-canopy-ui/components/dialog/dialog.component.module.ts","../../../projects/tgo-canopy-ui/components/media-dialog/media-dialog.component.ts","../../../projects/tgo-canopy-ui/components/media-dialog/media-dialog.component.html","../../../projects/tgo-canopy-ui/components/donut-chart/donut-chart.component.ts","../../../projects/tgo-canopy-ui/components/donut-chart/donut-chart.component.html","../../../projects/tgo-canopy-ui/components/donut-chart/donut-chart.component.module.ts","../../../projects/tgo-canopy-ui/models/colors.model.ts","../../../projects/tgo-canopy-ui/directives/drag-drop.directive.ts","../../../projects/tgo-canopy-ui/components/file-upload/file-upload.component.ts","../../../projects/tgo-canopy-ui/components/file-upload/file-upload.component.html","../../../projects/tgo-canopy-ui/components/file-upload/file-upload.component.module.ts","../../../projects/tgo-canopy-ui/components/icon-label/icon-label.component.ts","../../../projects/tgo-canopy-ui/components/icon-label/icon-label.component.html","../../../projects/tgo-canopy-ui/components/icon-label/icon-label.component.module.ts","../../../projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.ts","../../../projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.html","../../../projects/tgo-canopy-ui/models/screen-breakpoints.model.ts","../../../projects/tgo-canopy-ui/components/side-sheet/side-sheet.service.ts","../../../projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.ts","../../../projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.html","../../../projects/tgo-canopy-ui/components/navbar/navbar.component.ts","../../../projects/tgo-canopy-ui/components/navbar/navbar.component.html","../../../projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.module.ts","../../../projects/tgo-canopy-ui/components/navbar/navbar.component.module.ts","../../../projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.ts","../../../projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.html","../../../projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.module.ts","../../../projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.ts","../../../projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.html","../../../projects/tgo-canopy-ui/components/prompt/prompt.component.ts","../../../projects/tgo-canopy-ui/components/prompt/prompt.component.html","../../../projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.module.ts","../../../projects/tgo-canopy-ui/components/prompt/prompt.module.ts","../../../projects/tgo-canopy-ui/components/snackbar/snackbar.component.ts","../../../projects/tgo-canopy-ui/components/snackbar/snackbar.component.html","../../../projects/tgo-canopy-ui/components/snackbar/snackbar.service.ts","../../../projects/tgo-canopy-ui/components/snackbar/snackbar.component.module.ts","../../../projects/tgo-canopy-ui/pipes/data-property-getter.ts","../../../projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.ts","../../../projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.html","../../../projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.module.ts","../../../projects/tgo-canopy-ui/utils/color-contrast.ts","../../../projects/tgo-canopy-ui/components/datepicker/datepicker.service.ts","../../../projects/tgo-canopy-ui/components/datepicker/date-adapter.ts","../../../projects/tgo-canopy-ui/components/datepicker/no-date-format.directive.ts","../../../projects/tgo-canopy-ui/pipes/has-validation-error.pipe.ts","../../../projects/tgo-canopy-ui/components/datepicker/datepicker.component.ts","../../../projects/tgo-canopy-ui/components/datepicker/datepicker.component.html","../../../projects/tgo-canopy-ui/components/datepicker/datepicker.component.module.ts","../../../projects/tgo-canopy-ui/components/scale-table/scale-table.component.ts","../../../projects/tgo-canopy-ui/components/scale-table/scale-table.component.html","../../../projects/tgo-canopy-ui/providers/is-mobile.ts","../../../projects/tgo-canopy-ui/providers/is-large-tablet.ts","../../../projects/tgo-canopy-ui/models/keyboard-events.model.ts","../../../projects/tgo-canopy-ui/components/step/step.component.ts","../../../projects/tgo-canopy-ui/components/step/step.component.html","../../../projects/tgo-canopy-ui/directives/step-line-element.directive.ts","../../../projects/tgo-canopy-ui/components/stepper/stepper.component.ts","../../../projects/tgo-canopy-ui/components/stepper/stepper.component.html","../../../projects/tgo-canopy-ui/components/step/step.component.module.ts","../../../projects/tgo-canopy-ui/components/stepper/stepper.component.module.ts","../../../projects/tgo-canopy-ui/components/table/table.model.ts","../../../projects/tgo-canopy-ui/utils/table.utils.ts","../../../projects/tgo-canopy-ui/directives/dynamic-component.directive.ts","../../../projects/tgo-canopy-ui/components/table/sentence-case.pipe.ts","../../../projects/tgo-canopy-ui/components/table/table.component.ts","../../../projects/tgo-canopy-ui/components/table/table.component.html","../../../projects/tgo-canopy-ui/components/table/table.component.module.ts","../../../projects/tgo-canopy-ui/components/page-header/page-header.component.ts","../../../projects/tgo-canopy-ui/components/page-header/page-header.component.html","../../../projects/tgo-canopy-ui/components/page-header/page-header.component.module.ts","../../../projects/tgo-canopy-ui/components/tabs/tabs.component.ts","../../../projects/tgo-canopy-ui/components/tabs/tabs.component.html","../../../projects/tgo-canopy-ui/components/tabs/tab.directive.ts","../../../projects/tgo-canopy-ui/components/tabs/tabs.component.module.ts","../../../projects/tgo-canopy-ui/components/password-criteria/password.component.ts","../../../projects/tgo-canopy-ui/components/password-criteria/password.component.html","../../../projects/tgo-canopy-ui/components/password-criteria/password.component.module.ts","../../../projects/tgo-canopy-ui/components/phone-input/join-strings.pipe.ts","../../../projects/tgo-canopy-ui/components/phone-input/phone-input.component.ts","../../../projects/tgo-canopy-ui/components/phone-input/phone-input.component.html","../../../projects/tgo-canopy-ui/components/phone-input/phone-input.component.module.ts","../../../projects/tgo-canopy-ui/components/password-strength/password-strength.component.ts","../../../projects/tgo-canopy-ui/components/password-strength/password-strength.component.html","../../../projects/tgo-canopy-ui/components/password-strength/password-strength.component.module.ts","../../../projects/tgo-canopy-ui/components/multi-input/required-multi-input.validator.ts","../../../projects/tgo-canopy-ui/components/multi-input/multi-input.component.ts","../../../projects/tgo-canopy-ui/components/multi-input/multi-input.component.html","../../../projects/tgo-canopy-ui/components/multi-input/multi-input.component.module.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel-data-injection-token.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.model.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.animations.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.service.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.component.ts","../../../projects/tgo-canopy-ui/components/side-panel/side-panel.component.html","../../../projects/tgo-canopy-ui/components/spider-chart/spider-chart.model.ts","../../../projects/tgo-canopy-ui/components/spider-chart/spider-chart.component.ts","../../../projects/tgo-canopy-ui/components/spider-chart/spider-chart.component.html","../../../projects/tgo-canopy-ui/components/spider-chart/spider-chart.module.ts","../../../projects/tgo-canopy-ui/components/checklist/checklist.component.ts","../../../projects/tgo-canopy-ui/components/checklist/checklist.component.html","../../../projects/tgo-canopy-ui/components/media-card/media-card.component.ts","../../../projects/tgo-canopy-ui/components/media-card/media-card.component.html","../../../projects/tgo-canopy-ui/components/gaussian-chart/gaussian-chart.component.ts","../../../projects/tgo-canopy-ui/components/gaussian-chart/gaussian-chart.component.html","../../../projects/tgo-canopy-ui/components/gaussian-chart/gaussian-chart.module.ts","../../../projects/tgo-canopy-ui/components/universal-skills-spider-charts/universal-skills-spider-charts.component.ts","../../../projects/tgo-canopy-ui/components/universal-skills-spider-charts/universal-skills-spider-charts.component.html","../../../projects/tgo-canopy-ui/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.ts","../../../projects/tgo-canopy-ui/pipes/truncate.pipe.ts","../../../projects/tgo-canopy-ui/components/breadcrumb/breadcrumb.component.ts","../../../projects/tgo-canopy-ui/components/breadcrumb/breadcrumb.component.html","../../../projects/tgo-canopy-ui/components/breadcrumb/breadcrumb.component.module.ts","../../../projects/tgo-canopy-ui/public-api.ts","../../../projects/tgo-canopy-ui/testgorilla-tgo-ui.ts"],"sourcesContent":["import { SpiderChartData } from '../components/spider-chart/spider-chart.model';\n\nexport interface SkillAreaGroup {\n title: string;\n description: string;\n skillAreaList: SkillAreaData[];\n}\n\nexport interface SkillAreaSpiderChartData {\n title: string;\n description: string;\n spiderChartData: SpiderChartData;\n}\n\nexport interface SkillAreaData {\n percentileScoring: number;\n poolPercentileScoring?: number;\n skillAreaName: SkillAreaTypes;\n}\n\n//TODO Update this model after backend/endpoint definitions\nexport enum SkillAreaGroupTypes {\n FocusingOnObjectives = 1,\n WorkingWithPeople = 2,\n ManagingOnesSelf = 3,\n}\n\n//TODO Update this model after backend/endpoint definitions\nexport enum SkillAreaTypes {\n BusinessSavvy = 'BUSINESS_SAVVY',\n StrategicPerspective = 'STRATEGIC_PERSPECTIVE',\n CustomerFocus = 'CUSTOMER_FOCUS',\n NavigatingComplexity = 'NAVIGATING_COMPLEXITY',\n AgileDecisionMaking = 'AGILE_DECISION_MAKING',\n EmbracingInnovation = 'EMBRACING_INNOVATION',\n PlanningAndPrioritizing = 'PLANNING_AND_PRIORITIZING',\n OrganizingResources = 'ORGANIZING_RESOURCES',\n DrivingResults = 'DRIVING_RESULTS',\n\n WorkingCollaboratively = 'WORKING_COLLABORATIVELY',\n SocialAgility = 'SOCIAL_AGILITY',\n CommunicatingEffectively = 'COMMUNICATING_EFFECTIVELY',\n HandlingConflict = 'HANDLING_CONFLICT',\n ValuingDiversity = 'VALUING_DIVERSITY',\n DevelopingOthers = 'DEVELOPING_OTHERS',\n\n ShowingResilience = 'SHOWING_RESILIENCE',\n NavigatingAmbiguity = 'NAVIGATING_AMBIGUITY',\n SelfAwareness = 'SELF_AWARENESS',\n SelfDevelopment = 'SELF_DEVELOPMENT',\n BeingBold = 'BEING_BOLD',\n EarningTrust = 'EARNING_TRUST',\n}\n","import { Injectable } from '@angular/core';\nimport {\n SkillAreaData,\n SkillAreaGroup,\n SkillAreaGroupTypes,\n SkillAreaTypes,\n} from '../models/universal-skills-report.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UniversalSkillsService {\n readonly translationContext = 'UNIVERSAL_SKILLS_REPORT.';\n\n private skillAreaGroupMap: Record<SkillAreaGroupTypes, SkillAreaGroup>;\n private staticSkillAreaGroupMap: SkillAreaTypes[][] = [\n [\n SkillAreaTypes.BusinessSavvy,\n SkillAreaTypes.StrategicPerspective,\n SkillAreaTypes.CustomerFocus,\n SkillAreaTypes.NavigatingComplexity,\n SkillAreaTypes.AgileDecisionMaking,\n SkillAreaTypes.EmbracingInnovation,\n SkillAreaTypes.PlanningAndPrioritizing,\n SkillAreaTypes.OrganizingResources,\n SkillAreaTypes.DrivingResults,\n ],\n [\n SkillAreaTypes.WorkingCollaboratively,\n SkillAreaTypes.SocialAgility,\n SkillAreaTypes.CommunicatingEffectively,\n SkillAreaTypes.HandlingConflict,\n SkillAreaTypes.ValuingDiversity,\n SkillAreaTypes.DevelopingOthers,\n ],\n [\n SkillAreaTypes.ShowingResilience,\n SkillAreaTypes.NavigatingAmbiguity,\n SkillAreaTypes.SelfAwareness,\n SkillAreaTypes.SelfDevelopment,\n SkillAreaTypes.EarningTrust,\n SkillAreaTypes.BeingBold,\n ],\n ];\n\n initializeSkillAreaGroupMap(): void {\n this.skillAreaGroupMap = {\n [SkillAreaGroupTypes.FocusingOnObjectives]: {\n title: `${this.translationContext}SKILL_AREA_GROUP_TYPES.FOCUSING_ON_OBJECTIVES.TITLE`,\n description: `${this.translationContext}SKILL_AREA_GROUP_TYPES.FOCUSING_ON_OBJECTIVES.DESCRIPTION`,\n skillAreaList: [],\n },\n [SkillAreaGroupTypes.WorkingWithPeople]: {\n title: `${this.translationContext}SKILL_AREA_GROUP_TYPES.WORKING_WITH_PEOPLE.TITLE`,\n description: `${this.translationContext}SKILL_AREA_GROUP_TYPES.WORKING_WITH_PEOPLE.DESCRIPTION`,\n skillAreaList: [],\n },\n [SkillAreaGroupTypes.ManagingOnesSelf]: {\n title: `${this.translationContext}SKILL_AREA_GROUP_TYPES.MANAGING_ONES_SELF.TITLE`,\n description: `${this.translationContext}SKILL_AREA_GROUP_TYPES.MANAGING_ONES_SELF.DESCRIPTION`,\n skillAreaList: [],\n },\n };\n }\n\n prepareSkillAreaGroupMap(skillAreaDataList: SkillAreaData[]): void {\n skillAreaDataList?.forEach(currentItem => {\n const formattedSkillAreaType = currentItem.skillAreaName;\n\n if (this.staticSkillAreaGroupMap[0].includes(formattedSkillAreaType)) {\n this.skillAreaGroupMap[SkillAreaGroupTypes.FocusingOnObjectives]?.skillAreaList?.push(currentItem);\n }\n\n if (this.staticSkillAreaGroupMap[1].includes(formattedSkillAreaType)) {\n this.skillAreaGroupMap[SkillAreaGroupTypes.WorkingWithPeople]?.skillAreaList?.push(currentItem);\n }\n\n if (this.staticSkillAreaGroupMap[2].includes(formattedSkillAreaType)) {\n this.skillAreaGroupMap[SkillAreaGroupTypes.ManagingOnesSelf]?.skillAreaList?.push(currentItem);\n }\n });\n }\n\n getSkillAreaGroupMap(): Record<SkillAreaGroupTypes, SkillAreaGroup> {\n return this.skillAreaGroupMap;\n }\n\n getStaticSkillAreaGroupMap(): SkillAreaTypes[][] {\n return this.staticSkillAreaGroupMap;\n }\n}\n","import { booleanAttribute, Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { AccordionVariant, ToggleIconPosition } from './accordion.model';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\n@Component({\n selector: 'ui-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n standalone: false\n})\nexport class AccordionComponent {\n /**\n * The label displayed for the accordion.\n * @type {string}\n * @required\n * @memberof AccordionComponent\n */\n @Input({ required: true }) label: string;\n\n /**\n * Determines whether the accordion is initially open.\n * @type {boolean}\n * @default false\n * @memberof AccordionComponent\n */\n @Input({ transform: booleanAttribute }) open = false;\n\n /**\n * Disables the accordion if set to true.\n * @type {boolean}\n * @default false\n * @memberof AccordionComponent\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * Indicates whether to show a premium icon.\n * @type {boolean}\n * @default false\n * @memberof AccordionComponent\n */\n @Input({ transform: booleanAttribute }) showPremiumIcon = false;\n\n /**\n * The tooltip text for the premium icon.\n * @type {string}\n * @default ''\n * @memberof AccordionComponent\n */\n @Input() premiumTooltipText = '';\n\n /**\n *\n * Defines the application theme where accordion is used\n *\n * @type {ApplicationTheme}\n * @memberof AccordionComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Changed premium icon on this icon\n *\n * @type {IconName}\n * @memberof AccordionComponent\n */\n @Input() labelIcon: IconName;\n\n /**\n *\n * Select accordion variant. Don`t work on Classic theme\n *\n * @type {AccordionVariant}\n * @memberof AccordionComponent\n */\n @Input() variant: AccordionVariant = 'standard';\n\n /**\n *\n * Projects content with attribute 'customHeader'\n *\n * @type {boolean}\n * @memberof AccordionComponent\n */\n @Input() allowCustomHeader: boolean = false;\n\n /**\n *\n * Sets background color of content to none\n *\n * @type {boolean}\n * @memberof AccordionComponent\n */\n @Input() noBackgroundColor: boolean = false;\n\n /**\n *\n * Defines the toggle icon position\n *\n * @type {boolean}\n * @memberof AccordionComponent\n */\n @Input() toggleIconPosition: ToggleIconPosition = 'right';\n\n @Output() closed = new EventEmitter<void>();\n @Output() opened = new EventEmitter<void>();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n protected toggle(open: boolean): void {\n this.open = open;\n\n if (this.open) {\n this.opened.emit();\n } else {\n this.closed.emit();\n }\n }\n}\n","<mat-accordion class=\"accordion-wrapper\" [class.disabled]=\"disabled\" [ngClass]=\"variant\" [attr.theme]=\"applicationTheme\">\n <mat-expansion-panel [expanded]=\"open\"\n [class.bgcolor-none]=\"noBackgroundColor\"\n (opened)=\"toggle(true)\"\n (closed)=\"toggle(false)\">\n <mat-expansion-panel-header\n [tabIndex]=\"disabled ? -1 : 0\"\n [class.custom-height]=\"allowCustomHeader\"\n [class.left-toggle]=\"toggleIconPosition === 'left'\"\n [attr.aria-label]=\"label\"\n >\n <mat-panel-title *ngIf=\"!allowCustomHeader; else customHeader\">\n <div *ngIf=\"variant === 'table' && applicationTheme !== 'classic'; else default\" class=\"table-container\">\n <ui-icon [size]=\"'24'\" [ngClass]=\"{ open }\" [name]=\"'Arrow-chevron-down-filled'\"></ui-icon>\n <div class=\"accordion-label\">\n {{ label }}\n </div>\n </div>\n <ng-template #default>\n <div class=\"accordion-label\">\n {{ label }}\n <ng-content select=\"[subHeader]\"></ng-content>\n <ui-icon\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"premiumTooltipText\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"labelIcon ? labelIcon : applicationTheme === 'classic' ? 'Premium' : 'Premium-circle-in-line'\"\n *ngIf=\"showPremiumIcon || labelIcon\"\n ></ui-icon>\n </div>\n </ng-template>\n </mat-panel-title>\n <ng-template #customHeader>\n <ng-content select=\"[customHeader]\"></ng-content>\n </ng-template>\n <mat-panel-description>\n <div class=\"accordion-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <ng-content></ng-content>\n </mat-expansion-panel>\n</mat-accordion>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * USAGE:\n * {{ argument | memoizeFunc : method [: context] }}\n *\n * You could provide multiple arguments for the function like that:\n * {{ [argument1, argument2] | memoizeFunc : method [: context] }}\n *\n *\n * FUNCTION WITH CONTEXT\n * We still could have optimization in impure functions with Angular pipes. Just provide context as second parameter\n * to the memoizeFunc pipe.\n *\n * {{ argument | memoizeFunc : method : this }}\n *\n * Alternative variant use 'bind'\n *\n * {{ argument | memoizeFunc : method.bind(this) }}\n *\n * */\n@Pipe({\n name: 'memoizeFunc',\n standalone: true,\n})\nexport class MemoizeFuncPipe implements PipeTransform {\n transform<T, K>(value: T, handler: (value: T) => K, context?: any): K {\n if (context) {\n return handler.call(context, value);\n }\n\n return handler(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ordinalSuffix',\n standalone: true,\n})\nexport class OrdinalSuffixPipe implements PipeTransform {\n\n transform(value: number): string {\n const lastDigit = value % 10;\n const lastTwoDigits = value % 100;\n\n if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {\n return 'PERCENTILE_SUFFIXES.TH';\n }\n\n switch (lastDigit) {\n case 1:\n return 'PERCENTILE_SUFFIXES.ST';\n case 2:\n return 'PERCENTILE_SUFFIXES.ND';\n case 3:\n return 'PERCENTILE_SUFFIXES.RD';\n default:\n return 'PERCENTILE_SUFFIXES.TH';\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { RebrandBadgeColor, RebrandBadgeColorEnum } from '@testgorilla/tgo-ui/components/badge';\nimport { SkillAreaData, SkillAreaGroup, SkillAreaGroupTypes } from '../../models/universal-skills-report.model';\nimport { UniversalSkillsService } from '../../services/universal-skills.service';\n\n@Component({\n selector: 'ui-universal-skills-report',\n templateUrl: './universal-skills-report.component.html',\n styleUrls: ['./universal-skills-report.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class UniversalSkillsReportComponent implements OnInit {\n /**\n * Defines the application theme\n * @property applicationTheme\n * @type {ApplicationTheme}\n * @memberof UniversalSkillsReportComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * The list of items to be used\n * @property items\n * @type {SkillAreaData[]}\n * @memberof UniversalSkillsReportComponent\n */\n @Input() skillAreaDataList: SkillAreaData[];\n\n readonly translationContext = 'UNIVERSAL_SKILLS_REPORT.';\n\n skillAreaGroupMap: Record<SkillAreaGroupTypes, SkillAreaGroup>;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private universalSkillsService: UniversalSkillsService\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n this.universalSkillsService.initializeSkillAreaGroupMap();\n this.universalSkillsService.prepareSkillAreaGroupMap(this.skillAreaDataList);\n this.skillAreaGroupMap = this.universalSkillsService.getSkillAreaGroupMap();\n }\n\n getScoreBadgeLabel(percentileScoring: number): string {\n return `PERCENTILE_LABEL_TYPES.${this.checkScoreClassification([percentileScoring, true])}`;\n }\n\n getScoreBadgeColor(percentileScoring: number): RebrandBadgeColor {\n return this.checkScoreClassification([percentileScoring, false]) as RebrandBadgeColor;\n }\n\n checkScoreClassification([percentileScoring, isLabelRequest]: [number, boolean]): string | RebrandBadgeColor {\n let scoreBadgeLabel = '';\n let scoreBadgeColor: RebrandBadgeColor = RebrandBadgeColorEnum.BLUE_10;\n\n if (percentileScoring >= 1 && percentileScoring <= 19) {\n scoreBadgeLabel = 'WELL_BELOW_AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.GREY_30;\n }\n\n if (percentileScoring >= 20 && percentileScoring <= 39) {\n scoreBadgeLabel = 'BELOW_AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.GREY_10;\n }\n\n if (percentileScoring >= 40 && percentileScoring <= 59) {\n scoreBadgeLabel = 'AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.BLUE_10;\n }\n\n if (percentileScoring >= 60 && percentileScoring <= 79) {\n scoreBadgeLabel = 'ABOVE_AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.BLUE_20;\n }\n\n if (percentileScoring >= 80 && percentileScoring <= 100) {\n scoreBadgeLabel = 'WELL_ABOVE_AVERAGE';\n scoreBadgeColor = RebrandBadgeColorEnum.BLUE_40;\n }\n\n return isLabelRequest ? scoreBadgeLabel : scoreBadgeColor;\n }\n}\n","<div\n *ngFor=\"let skillAreaGroup of skillAreaGroupMap | keyvalue\"\n class=\"universal-skills-report\"\n>\n <section class=\"title-and-info\">\n <h4>{{skillAreaGroup.value.title | uiTranslate | async}}</h4>\n <span>{{skillAreaGroup.value.description | uiTranslate | async}}</span>\n </section>\n\n <section class=\"accordion-items\">\n <ui-accordion\n *ngFor=\"let skillAreaData of skillAreaGroup?.value?.skillAreaList\"\n class=\"universal-skills-accordion\"\n label=\"-\"\n [allowCustomHeader]=\"true\"\n >\n <div\n customHeader\n class=\"custom-header\"\n >\n <h4 class=\"custom-header-subtitle\">{{ (translationContext + 'SKILL_AREA_TYPES.' + skillAreaData.skillAreaName + '.TITLE') | uiTranslate | async}}</h4>\n\n <div class=\"inner-container\">\n <ui-badge\n class=\"percentile-scoring-badge\"\n [label]=\"((skillAreaData.percentileScoring | memoizeFunc : getScoreBadgeLabel : this) | uiTranslate | async) || 'neutral'\"\n [rebrandColor]=\"skillAreaData.percentileScoring | memoizeFunc : getScoreBadgeColor : this\"\n [applicationTheme]=\"'light'\"\n ></ui-badge>\n\n <h5 class=\"percentile-quantity\">\n {{skillAreaData?.percentileScoring}}\n <sup class=\"percentile-suffix\">{{(skillAreaData.percentileScoring | ordinalSuffix) | uiTranslate | async}}</sup>\n {{(translationContext + 'PERCENTILE') | uiTranslate | async}}\n </h5>\n\n <ui-progress-bar\n class=\"percentile-scoring-bar\"\n mode=\"determinate\"\n [progress]=\"skillAreaData.percentileScoring\"\n ></ui-progress-bar>\n </div>\n </div>\n\n <div class=\"content-container\">\n <p class=\"skill-description\">{{ (translationContext + 'SKILL_AREA_TYPES.' + skillAreaData.skillAreaName + '.DESCRIPTION') | uiTranslate | async}}</p>\n\n <h5>{{(skillAreaData.percentileScoring | memoizeFunc : getScoreBadgeLabel : this) | uiTranslate | async}} score</h5>\n\n <div class=\"inner-container\">\n <p>{{ (translationContext +\n 'SKILL_AREA_TYPES.' +\n skillAreaData.skillAreaName + '.' +\n ([skillAreaData.percentileScoring, true] | memoizeFunc : checkScoreClassification : this) +\n '.GENERAL')\n | uiTranslate | async}}</p>\n </div>\n\n <div class=\"inner-container\">\n <p>{{ (translationContext +\n 'SKILL_AREA_TYPES.' +\n skillAreaData.skillAreaName + '.' +\n ([skillAreaData.percentileScoring, true] | memoizeFunc : checkScoreClassification : this) +\n '.WORK_ENVIRONMENT')\n | uiTranslate | async}}</p>\n </div>\n\n <div class=\"inner-container\">\n <p>{{ (translationContext +\n 'SKILL_AREA_TYPES.' +\n skillAreaData.skillAreaName + '.' +\n ([skillAreaData.percentileScoring, true] | memoizeFunc : checkScoreClassification : this) +\n '.RECOMMENDATIONS')\n | uiTranslate | async}}</p>\n </div>\n </div>\n </ui-accordion>\n </section>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccordionComponent } from './accordion.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { MatExpansionModule } from \"@angular/material/expansion\";\n\n\n\n@NgModule({\n declarations: [\n AccordionComponent\n ],\n exports: [\n AccordionComponent\n ],\n imports: [\n CommonModule,\n IconComponentModule,\n ButtonComponentModule,\n MatTooltipModule,\n MatExpansionModule\n ]\n})\nexport class AccordionComponentModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule, KeyValuePipe } from '@angular/common';\nimport { UniversalSkillsReportComponent } from './universal-skills-report.component';\nimport { AccordionComponentModule } from '../accordion/accordion.component.module';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { OrdinalSuffixPipe } from '../../pipes/ui-ordinal-suffix.pipe';\n\n@NgModule({\n declarations: [UniversalSkillsReportComponent],\n imports: [\n CommonModule,\n AccordionComponentModule,\n BadgeComponentModule,\n ProgressBarComponentModule,\n MemoizeFuncPipe,\n UiTranslatePipe,\n OrdinalSuffixPipe,\n KeyValuePipe,\n ],\n exports: [UniversalSkillsReportComponent]\n})\nexport class UniversalSkillsReportComponentModule {\n}\n","import { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { AlertVariant } from './alert-bar.model';\n\nexport const alertBarsUtil = {\n //Set css class and iconName according type\n setIcon: (alertType: string): IconName => {\n if (alertType === 'success') {\n return 'Round-check';\n }\n if (alertType === 'info') {\n return 'Info';\n }\n if (alertType === 'warning') {\n return 'Warning';\n }\n if (alertType === 'error') {\n return 'Error';\n }\n return '';\n },\n\n //Set cssClass for fixed or static position\n setPosition: (fixed: boolean): string => {\n if (fixed === true) {\n return 'fixed';\n } else {\n return 'static';\n }\n },\n\n //Set css class for alertbanner\n setCssClass: (fullWidth: boolean, type: string, position: string, variant: AlertVariant = 'banner'): string => {\n const isFullWidth = !!fullWidth ? 'full-width' : '';\n const _type = variant === 'banner' ? type : (type === 'success') ? 'info' : type;\n return `${_type} ${position} ${isFullWidth} ${variant}`;\n },\n};\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { AlertBarType, AlertVariant } from '../../utils/alert-bar.model';\nimport { alertBarsUtil } from '../../utils/alert-bars.utils';\nimport { LinkTargetType } from './alert-banner.model';\n\n@Component({\n selector: 'ui-alert-banner',\n templateUrl: './alert-banner.component.html',\n styleUrls: ['./alert-banner.component.scss'],\n animations: [\n trigger('openClose', [\n transition(':enter', [animate('0.2s ease-out', style({ opacity: 1 }))]),\n transition(':leave', [animate('0.2s ease-in', style({ opacity: 0 }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AlertBannerComponent implements OnInit, OnChanges {\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private domSanitizer: DomSanitizer\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n /**\n * Alert Banner type\n *\n * @type {AlertBarType}\n * @default 'success'\n * @memberof AlertBannerComponent\n */\n @Input() alertType: AlertBarType = 'success';\n\n /**\n * Alert Banner variant\n *\n * @type {AlertVariant}\n * @default 'banner'\n * @memberof AlertBannerComponent\n */\n @Input() alertVariant: AlertVariant = 'banner';\n\n /**\n * Alert banner message\n *\n * @memberof AlertBannerComponent\n */\n @Input() set message(msg: string) {\n this._message = this.domSanitizer.bypassSecurityTrustHtml(msg);\n }\n\n /**\n * Include dismmiss button\n *\n * @default true\n * @memberof AlertBannerComponent\n */\n @Input() includeDismissButton = true;\n\n /**\n * Include shadow or not\n *\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() shadow = false;\n\n /**\n * Link text that will appended at the end of message\n *\n * @default ''\n * @memberof AlertBannerComponent\n */\n @Input() linkText? = '';\n\n /**\n * Link url\n *\n * @memberof AlertBannerComponent\n */\n @Input() linkUrl?: string;\n\n /**\n * Link target\n *\n * @type {@type {LinkTargetType}}\n * @default '_blank'\n * @memberof AlertBannerComponent\n */\n @Input() linkTarget?: LinkTargetType = '_blank';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @default 'light'\n * @memberof AlertBannerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Sets the full width\n *\n * @type {boolean}\n * @memberof AlertBannerComponent\n */\n @Input() isFullWidth: boolean | undefined;\n\n /**\n * Close button tooltip\n *\n * @type {string}\n * @default ''\n * @memberof AlertBannerComponent\n */\n @Input() closeButtonTooltip = '';\n\n /**\n * Shows icon\n *\n * @type {boolean}\n * @default true\n * @memberof AlertBannerComponent\n */\n @Input() hasIcon = true;\n\n /**\n * Sets the alert banner position\n *\n * @type {boolean}\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() fixed = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof AlertBannerComponent\n */\n @Input() ariaDescribedby = '';\n\n @Input() set secondaryAlerts(alerts: string[]) {\n this._secondaryAlerts = alerts.map(alert => this.domSanitizer.bypassSecurityTrustHtml(alert));\n }\n\n @HostBinding('class.display-none') get isDismissed() {\n return this.dismissAlertBanner;\n }\n\n iconName: IconName;\n visible = true;\n fullWidth: boolean;\n position: string;\n cssClass: string;\n _message: SafeHtml = '';\n _secondaryAlerts: SafeHtml[] = [];\n dismissAlertBanner = false;\n\n ngOnInit(): void {\n this.updateBanner();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // eslint-disable-next-line dot-notation\n if (changes['alertType']) {\n this.updateBanner();\n }\n }\n\n private updateBanner(): void {\n this.iconName = alertBarsUtil.setIcon(this.alertType);\n this.position = alertBarsUtil.setPosition(this.fixed);\n this.fullWidth = this.isFullWidth ?? this.alertVariant === 'banner';\n this.cssClass = alertBarsUtil.setCssClass(this.fullWidth, this.alertType, this.position, this.alertVariant);\n }\n\n //Hide snackbar when dismiss button is clicked\n dismissClick() {\n this.visible = false;\n setTimeout(() => {\n this.dismissAlertBanner = true;\n }, 200);\n }\n}\n","<div\n [ngClass]=\"cssClass\"\n [@openClose]\n *ngIf=\"visible\"\n role=\"alert\"\n class=\"alert-container\"\n [attr.theme]=\"applicationTheme\"\n [class.shadow]=\"alertVariant === 'callout' && shadow\"\n [attr.aria-live]=\"(alertType === 'error' || alertType === 'warning') ? 'assertive' : 'polite'\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [tabIndex]=\"0\"\n>\n <span style=\"position: absolute; left: -9999px\" id=\"labelledby\">{{ ('ALERT_BANNER.' + (alertType | uppercase)) | uiTranslate | async }}</span>\n <span [style.display]=\"'none'\" id=\"describedby\">{{ ariaDescribedby }}</span>\n <div class=\"primary-alert-container\">\n <div class=\"alert-text\">\n @if (hasIcon) {\n <ui-icon class=\"left-icon\" [name]=\"iconName\" size=\"24\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n }\n <span [innerHTML]=\"_message\"></span>\n <a *ngIf=\"!!linkText\" [target]=\"linkTarget\" [href]=\"linkUrl\">{{ linkText }}</a>\n </div>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme === 'classic'\"\n variant=\"text\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n (buttonClickEvent)=\"dismissClick()\"\n ></ui-button>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme !== 'classic' && alertVariant !== 'callout'\"\n class=\"right-icon\"\n [variant]=\"'icon-button'\"\n [applicationTheme]=\"applicationTheme\"\n [iconName]=\"'Close'\"\n [size]=\"'small'\"\n [justIcon]=\"true\"\n [tooltip]=\"(closeButtonTooltip || ('COMMON.CLOSE' | uiTranslate | async))!\"\n (click)=\"dismissClick()\"\n ></ui-button>\n </div>\n <div class=\"secondary-alerts-container\">\n <div class=\"alert-text\" *ngFor=\"let alert of _secondaryAlerts\">\n <ui-icon class=\"left-icon\" [name]=\"'Stop-filled'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n <span [innerHTML]=\"alert\"></span>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { AlertBannerComponent } from './alert-banner.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [AlertBannerComponent],\n imports: [CommonModule, ButtonComponentModule, IconComponentModule, UiTranslatePipe],\n exports: [AlertBannerComponent],\n})\nexport class AlertBannerComponentModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, signal } from '@angular/core';\nimport { AiFeedbackSelection } from './ai-feedback.model';\nimport { TooltipPosition } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ui-ai-feedback',\n templateUrl: './ai-feedback.component.html',\n styleUrl: './ai-feedback.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AiFeedbackComponent {\n @Input() set selection(selection: AiFeedbackSelection) {\n this.selected.set(selection || null);\n }\n\n @Input() tooltipPosition: TooltipPosition = 'above';\n\n @Output() selectedValue: EventEmitter<AiFeedbackSelection> = new EventEmitter<AiFeedbackSelection>();\n\n selected = signal<AiFeedbackSelection>(null);\n readonly optionYes: AiFeedbackSelection = 'yes';\n readonly optionNo: AiFeedbackSelection = 'no';\n\n onSelectionChange(selection: AiFeedbackSelection): void {\n const newValue = this.selected() === selection ? null : selection;\n this.selected.set(newValue);\n\n this.selectedValue.emit(this.selected());\n }\n}\n","<div class=\"ai-feedback\" [attr.aria-label]=\"'AI_FEEDBACK.TITLE' | uiTranslate\">\n <span>{{ 'AI_FEEDBACK.TITLE' | uiTranslate | async}}</span>\n <div class=\"ai-feedback-buttons\">\n @if(selected() !== optionNo) {\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-up-in-line'\"\n [size]=\"'small'\"\n [tooltipPosition]=\"tooltipPosition\"\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\n [iconFilled]=\"selected() === optionYes\"\n (buttonClickEvent)=\"onSelectionChange(optionYes)\"\n variant=\"icon-button\"\n role=\"button\"\n ></ui-button>\n }\n\n @if(selected() !== optionYes) {\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-down-in-line'\"\n [iconFilled]=\"selected() === optionNo\"\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\n [size]=\"'small'\"\n (buttonClickEvent)=\"onSelectionChange(optionNo)\"\n variant=\"icon-button\"\n role=\"button\"\n ></ui-button>\n }\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { AiFeedbackComponent } from './ai-feedback.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { AsyncPipe } from '@angular/common';\n\n@NgModule({\n declarations: [AiFeedbackComponent],\n imports: [ButtonComponentModule, UiTranslatePipe, AsyncPipe],\n exports: [AiFeedbackComponent],\n})\nexport class AiFeedbackModule {}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { CardSize } from '@testgorilla/tgo-ui/components/card';\n\n@Component({\n selector: 'ui-selectable-card',\n templateUrl: './selectable-card.component.html',\n styleUrls: ['./selectable-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectableCardComponent {\n /**\n * Card size. Defaults to \"medium\".\n */\n size = input<CardSize>('medium');\n\n /**\n * Whether the card is selected (input from parent).\n */\n selected = input<boolean>(false);\n\n /**\n * Whether the checkbox is disabled.\n */\n isCheckboxDisabled = input<boolean>(false);\n\n /**\n * Event emitted when the card is selected, with the current selected state.\n */\n cardSelected = output<boolean>();\n\n /**\n * Internal override for selected state (when user interacts).\n */\n private internalSelectedOverride = signal<boolean | null>(null);\n\n /**\n * Computed selected state that prioritizes user interaction over input.\n */\n isSelected = computed(() => {\n const override = this.internalSelectedOverride();\n return override !== null ? override : this.selected();\n });\n\n /**\n * Handles card selection, toggles internal state and emits the new value.\n */\n handleSelect(): void {\n if (this.isCheckboxDisabled()) {\n return;\n }\n \n const newValue = !this.isSelected();\n this.internalSelectedOverride.set(newValue);\n this.cardSelected.emit(newValue);\n }\n}\n","<ui-card\n class=\"selectable-card\"\n [size]=\"size()\"\n [selected]=\"isSelected()\"\n [allowSelect]=\"!isCheckboxDisabled()\"\n [allowFocus]=\"false\"\n [variant]=\"isCheckboxDisabled() ? 'default' : 'state'\"\n (cardSelected)=\"handleSelect()\"\n>\n <ui-checkbox class=\"selectable-card-checkbox\" [checked]=\"isSelected()\" [disabled]=\"isCheckboxDisabled()\">\n <div checkbox-label>\n <ng-content select=\"[ui-selectable-card-label]\"></ng-content>\n </div>\n </ui-checkbox>\n <ng-content select=\"[ui-selectable-card-content]\"></ng-content>\n</ui-card>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SelectableCardComponent } from './selectable-card.component';\nimport { CardComponentModule } from '@testgorilla/tgo-ui/components/card';\nimport { CheckboxComponentModule } from '@testgorilla/tgo-ui/components/checkbox';\n\n@NgModule({\n declarations: [SelectableCardComponent],\n imports: [CommonModule, CardComponentModule, CheckboxComponentModule],\n exports: [SelectableCardComponent],\n})\nexport class SelectableCardComponentModule {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport { ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\n@Component({\n selector: 'ui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class DialogComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * Dialog title\n *\n * @memberof DialogComponent\n */\n @Input() title? = '';\n\n /**\n * Show close button\n *\n * @memberof DialogComponent\n */\n @Input() showCloseButton = true;\n\n /**\n * Fuction called before dialgo is closed\n *\n * @memberof DialogComponent\n */\n @Input() canCloseFn: () => boolean = () => true;\n\n /**\n * Secondary button label\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonLabel? = '';\n\n /**\n * Footer dialog message\n *\n * @memberof DialogComponent\n */\n @Input() footerMessage? = '';\n\n /**\n * Primary button label\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonLabel? = '';\n\n /**\n * Primary button icon name\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonIconName?: IconName | '' = '';\n\n /**\n * Secondary button type\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonType: ButtonColor = 'ghost';\n\n /**\n * Primary button type\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonType: ButtonColor = 'primary';\n\n /**\n * Primary button test id\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonDataTestId: string | null = null;\n\n /**\n * Secondary button test id\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonDataTestId: string | null = null;\n\n /**\n * Color of the dialog.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = '';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n /**\n *\n * Disable primary button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disablePrimaryButton = false;\n /**\n *\n * Disable close button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disableClose = false;\n\n /**\n *\n * Disable button when canCloseFn is used\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() shouldDisableButtons = true;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() ariaLabelledby = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Defines how modal was opened (with keyboard or not)\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() keyboardOpen = false;\n\n primaryButtonIconPosition = input<ButtonIconPosition>('left');\n\n @Output() closeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() secondaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() primaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('closeButton') closeButton: ButtonComponent;\n\n modalClosed = false;\n\n @HostListener('keydown.esc', ['$event'])\n onEsc(_: KeyboardEvent) {\n this.dismiss();\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<DialogComponent>,\n @Inject(MAT_DIALOG_DATA) private data: { applicationTheme: ApplicationTheme }\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n disableButtons = false;\n protected readonly translationContext = 'DIALOG.';\n\n @ContentChild('dialogHeader')\n customHeader?: any;\n\n get hasCustomHeader(): boolean {\n return !!this.customHeader;\n }\n\n ngOnInit(): void {\n this.areButtonsDisabled();\n if (this.data?.applicationTheme) {\n this.applicationTheme = this.data.applicationTheme;\n }\n if (this.applicationTheme !== 'classic') {\n this.companyColor = this.companyColor || '#D410AA';\n } else {\n this.companyColor = this.companyColor || '#46A997';\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['canCloseFn']) {\n this.dialogRef.disableClose = !this.canCloseFn();\n this.areButtonsDisabled();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.keyboardOpen) {\n setTimeout(() => {\n this.closeButton.buttonElement.focus('keyboard');\n }, 100);\n }\n }\n\n //Disable primary button when canClose is false\n areButtonsDisabled() {\n this.disableButtons = !this.canCloseFn() && this.shouldDisableButtons;\n }\n\n //Close modal\n dismiss(): void {\n if (this.canCloseFn()) {\n this.dialogRef.disableClose = false;\n this.dialogRef.close();\n this.modalClosed = true;\n }\n }\n\n onClose(event: Event): void {\n this.closeEvent.emit(event);\n this.modalClosed = true;\n }\n\n onSecondaryButtonClick(event: Event): void {\n this.secondaryButtonClickEvent.emit(event);\n }\n\n onPrimaryButtonClick(event: Event): void {\n this.primaryButtonClickEvent.emit(event);\n }\n}\n","<div class=\"dialog-container\" [attr.theme]=\"applicationTheme\">\n <div\n mat-dialog-title\n class=\"dialog-title\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [attr.aria-describedby]=\"'ariaDescribedby'\"\n >\n <span [style.display]=\"'none'\" id=\"ariaDescribedby\">{{ ariaDescribedby }}</span>\n\n <!-- Default header content -->\n <ng-container *ngIf=\"!hasCustomHeader\">\n <h3 class=\"bold\" id=\"labelledby\">{{ title }}</h3>\n <div *ngIf=\"showCloseButton\">\n <ui-button\n #closeButton\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"onClose($event)\"\n (buttonClickEvent)=\"dismiss()\"\n id=\"dialog-close-button\"\n ></ui-button>\n </div>\n </ng-container>\n\n <!-- Custom header content projection -->\n <ng-content select=\"[dialogHeader]\"></ng-content>\n </div>\n <mat-dialog-content>\n <ng-content></ng-content>\n </mat-dialog-content>\n <div\n mat-dialog-actions\n *ngIf=\"secondaryButtonLabel !== '' || primaryButtonLabel !== ''\"\n [class.dialog-action-w-message]=\"!!footerMessage\"\n >\n @if (footerMessage) {\n <div class=\"actions-footer-message\">{{ footerMessage }}</div>\n }\n <ui-button\n *ngIf=\"!!secondaryButtonLabel\"\n [companyColor]=\"companyColor\"\n [variant]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [label]=\"secondaryButtonLabel\"\n [attr.data-testid]=\"secondaryButtonDataTestId\"\n (click)=\"onSecondaryButtonClick($event)\"\n ></ui-button>\n <ui-button\n *ngIf=\"!!primaryButtonLabel\"\n [iconPosition]=\"primaryButtonIconPosition()\"\n [iconName]=\"primaryButtonIconName ? primaryButtonIconName : undefined\"\n [variant]=\"primaryButtonType\"\n [disabled]=\"disableButtons || disablePrimaryButton\"\n [applicationTheme]=\"applicationTheme\"\n (click)=\"onPrimaryButtonClick($event)\"\n [label]=\"primaryButtonLabel\"\n [companyColor]=\"companyColor\"\n [attr.data-testid]=\"primaryButtonDataTestId\"\n (buttonClickEvent)=\"dismiss()\"\n ></ui-button>\n </div>\n\n <!-- This is announcement for screen reader that dialog was closed-->\n <div aria-live=\"assertive\" role=\"alert\" style=\"position: absolute; left: -9999px\">\n <span *ngIf=\"modalClosed\">{{ 'DIALOG.CLOSED' | uiTranslate | async }}</span>\n </div>\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { DialogConfig } from './dialog.model';\n\nexport type DialogSize = 'small' | 'large' | 'x-large';\n@Injectable()\nexport class DialogService {\n constructor(\n private matDialog: MatDialog,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {}\n\n open<K = any, R = any, T = any>(\n dialogComponent: ComponentType<T>,\n dialogConfig?: DialogConfig<K>\n ): MatDialogRef<T, R> {\n const {\n applicationTheme = 'light',\n size = 'small',\n panelClass = '',\n extraData = {},\n backdropClass = '',\n keyboardOpen = false,\n config = {},\n } = dialogConfig || {};\n // Open the dialog using UI custom styles\n return this.matDialog.open(dialogComponent, {\n ...config,\n data: {\n applicationTheme: this.defaultAppTheme ?? applicationTheme,\n ...extraData,\n keyboardOpen,\n },\n backdropClass: backdropClass || '',\n panelClass:\n applicationTheme === 'classic'\n ? ['ui-dialog-wrapper', panelClass, size]\n : ['ui-dialog-wrapper', panelClass, applicationTheme, size],\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DialogComponent } from './dialog.component';\nimport { DialogService } from './dialog.service';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [DialogComponent],\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, UiTranslatePipe],\n exports: [DialogComponent],\n providers: [{ provide: MAT_DIALOG_DATA, useValue: {} }, { provide: MatDialogRef, useValue: {} }, DialogService],\n})\nexport class DialogComponentModule {}\n","import { Component, Inject, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DialogComponentModule } from '../dialog/dialog.component.module';\nimport { MediaDialogData, MediaDialogStep } from './media-dialog.model';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\n\n@Component({\n selector: 'ui-media-dialog',\n templateUrl: './media-dialog.component.html',\n styleUrls: ['./media-dialog.component.scss'],\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, DialogComponentModule, ProgressBarComponentModule]\n})\nexport class MediaDialogComponent {\n primaryButtonLabel: string | undefined;\n secondaryButtonLabel: string | undefined;\n backButtonLabel: string | undefined;\n title: string | undefined;\n primaryButtonDataTestId = 'media-dialog.confirm-button';\n secondaryButtonDataTestId = 'media-dialog.cancel-button';\n backButtonDataTestId = 'media-dialog.back-button';\n\n mediaContainer: TemplateRef<any>;\n subheader: string | undefined;\n body: SafeHtml;\n\n currentStepIndex = 0;\n steps: MediaDialogStep[] = [];\n\n constructor(\n public dialogRef: MatDialogRef<MediaDialogComponent>,\n @Inject(MAT_DIALOG_DATA) private data: MediaDialogData,\n protected domSanitizer: DomSanitizer\n ) {\n this.steps = data.steps ?? [];\n if (this.steps.length < 1) {\n this.dialogRef.close();\n throw new Error('MediaDialogComponent: steps must contain at least one step.');\n }\n this.setStep(0);\n }\n\n private setStep(index: number): void {\n const step = this.steps[index];\n this.currentStepIndex = index;\n this.title = step.title;\n this.subheader = step.subheader;\n this.body = this.domSanitizer.bypassSecurityTrustHtml(step.body ?? '');\n this.mediaContainer = step.mediaContainer;\n this.primaryButtonLabel = step?.primaryButtonLabel;\n this.secondaryButtonLabel = step?.secondaryButtonLabel;\n this.backButtonLabel = step?.backButtonLabel;\n this.primaryButtonDataTestId = step?.primaryButtonDataTestId ?? 'media-dialog.confirm-button';\n this.secondaryButtonDataTestId = step?.secondaryButtonDataTestId ?? 'media-dialog.cancel-button';\n this.backButtonDataTestId = step?.backButtonDataTestId ?? 'media-dialog.back-button';\n }\n\n onPrimaryButtonClick(): void {\n const isLastStep = this.currentStepIndex === this.steps.length - 1;\n\n if (isLastStep) {\n this.dialogRef.close(true);\n } else {\n this.setStep(this.currentStepIndex + 1);\n }\n }\n\n onBackButtonClick(): void {\n if (this.currentStepIndex > 0) {\n this.setStep(this.currentStepIndex - 1);\n }\n }\n\n onSecondaryButtonClick(): void {\n this.dialogRef.close(false);\n }\n\n dismiss(): void {\n this.dialogRef.close(null);\n }\n}\n","<ng-container>\n @if (steps && steps.length > 1) {\n <ui-progress-bar [progress]=\"(currentStepIndex + 1) * (100 / steps.length)\"></ui-progress-bar>\n }\n\n <ui-dialog\n [title]=\"title\"\n (closeEvent)=\"dialogRef.close(null)\"\n [showCloseButton]=\"true\"\n >\n @if (mediaContainer) {\n <div class=\"media-container\">\n <ng-container [ngTemplateOutlet]=\"mediaContainer\"></ng-container>\n </div>\n }\n\n @if (subheader) {\n <h4 class=\"subheader\">{{ subheader }}</h4>\n }\n\n @if (body) {\n <div [innerHTML]=\"body\"></div>\n }\n\n <div mat-dialog-actions class=\"footer\">\n <div>\n @if (backButtonLabel && currentStepIndex > 0) {\n <ui-button\n variant=\"text-inline\"\n size=\"medium\"\n [label]=\"backButtonLabel\"\n [attr.data-testid]=\"backButtonDataTestId\"\n (click)=\"onBackButtonClick()\"\n ></ui-button>\n }\n </div>\n\n <div class=\"action-buttons\">\n @if (secondaryButtonLabel) {\n <ui-button\n variant=\"ghost\"\n [label]=\"secondaryButtonLabel\"\n [attr.data-testid]=\"secondaryButtonDataTestId\"\n (click)=\"onSecondaryButtonClick()\"\n ></ui-button>\n }\n @if (primaryButtonLabel) {\n <ui-button\n variant=\"primary\"\n [label]=\"primaryButtonLabel\"\n [attr.data-testid]=\"primaryButtonDataTestId\"\n (click)=\"onPrimaryButtonClick()\"\n ></ui-button>\n }\n </div>\n </div>\n </ui-dialog>\n</ng-container>\n","import { Component, computed, input } from '@angular/core';\nimport { DonutChartData } from './donut-chart.component.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ChartOptions } from 'chart.js';\nimport DataLabelsPlugin from 'chartjs-plugin-datalabels';\n\n@Component({\n selector: 'ui-donut-chart',\n templateUrl: './donut-chart.component.html',\n styleUrls: ['./donut-chart.component.scss'],\n standalone: false\n})\nexport class DonutChartComponent {\n donutChartData = input<DonutChartData>();\n applicationTheme = input<ApplicationTheme>('light');\n\n readonly chartData = computed(() => {\n const data = this.donutChartData();\n return data\n ? {\n labels: data.labels,\n datasets: [\n {\n data: data.data,\n backgroundColor: data.backgroundColor,\n borderWidth: 0,\n },\n ],\n }\n : { labels: [], datasets: [] };\n });\n\n // Plugin to display the total in the center\n centerTextPlugin = {\n id: 'centerText',\n beforeDraw: (chart: any) => {\n const {\n ctx,\n chartArea: { width, height },\n } = chart;\n const total = chart.data.datasets[0].data.reduce((a: number, b: number) => a + b, 0);\n const padding = 32;\n ctx.save();\n ctx.font = 'bold 14px ModernGothic';\n ctx.fillStyle = '#242424';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(total.toString(), (width + padding) / 2, (height + padding) / 2);\n ctx.restore();\n },\n };\n\n // Plugin to draw lines from the donut segments to the labels\n labelLinePlugin = {\n id: 'labelLinePlugin',\n afterDatasetDraw: (chart: any) => {\n const { ctx, data } = chart;\n const meta = chart.getDatasetMeta(0);\n const radialOffset = 10; // length of the radial segment (elbow)\n const horizontalLength = 20; // new length of the horizontal segment\n const fontSize = 14;\n\n ctx.save();\n ctx.strokeStyle = '#666';\n ctx.lineWidth = 1;\n ctx.font = `${fontSize}px ModernGothic`;\n ctx.fillStyle = '#242424';\n\n meta.data.forEach((arc: any, index: number) => {\n const angle = (arc.startAngle + arc.endAngle) / 2;\n const radius = arc.outerRadius;\n const centerX = arc.x;\n const centerY = arc.y;\n\n // Start point: outer edge of the arc\n const startX = centerX + Math.cos(angle) * radius;\n const startY = centerY + Math.sin(angle) * radius;\n\n // Elbow: short line outward\n const midX = centerX + Math.cos(angle) * (radius + radialOffset);\n const midY = centerY + Math.sin(angle) * (radius + radialOffset);\n\n // Extended horizontal line\n const direction = Math.cos(angle) >= 0 ? 1 : -1;\n const endX = midX + direction * horizontalLength;\n const endY = midY;\n\n // Draw line with elbow\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineTo(midX, midY);\n ctx.lineTo(endX, endY);\n ctx.stroke();\n\n // Draw value at the end\n const value = data.datasets[0].data?.[index] ?? '';\n const textX = endX + direction * 5;\n ctx.textAlign = direction > 0 ? 'left' : 'right';\n ctx.textBaseline = 'middle';\n ctx.fillText(value, textX, endY);\n });\n\n ctx.restore();\n },\n };\n\n public donutChartPlugins = [DataLabelsPlugin, this.centerTextPlugin, this.labelLinePlugin];\n\n public donutChartOptions: ChartOptions<'doughnut'> = {\n responsive: true,\n cutout: '65%',\n aspectRatio: 2,\n layout: {\n padding: 16,\n },\n plugins: {\n legend: {\n onClick: () => null, // Disable legend click events\n position: 'right',\n labels: {\n font: {\n family: 'ModernGothic',\n size: 14,\n },\n boxWidth: 14,\n padding: 20,\n },\n },\n tooltip: {\n enabled: false,\n },\n datalabels: {\n display: false,\n },\n },\n };\n}\n","<div style=\"height: 200px;\">\n <canvas\n baseChart\n [data]=\"chartData()\"\n type=\"doughnut\"\n [options]=\"donutChartOptions\"\n [plugins]=\"donutChartPlugins\"\n >\n </canvas>\n</div>\n","import { NgModule } from '@angular/core';\nimport { DonutChartComponent } from './donut-chart.component';\nimport { NgChartsModule } from 'ng2-charts';\nimport { Chart, registerables } from 'chart.js';\n\nChart.register(...registerables);\n\n@NgModule({\n declarations: [DonutChartComponent],\n exports: [DonutChartComponent],\n imports: [NgChartsModule],\n})\nexport class DonutChartComponentModule {}\n","export enum Color {\n // Teal colors\n TGO_TEAL_60B = '#1C443C',\n TGO_TEAL_30B = '#31766A',\n TGO_TEAL_DEFAULT = '#46A997',\n TGO_TEAL_30W = '#7EC3B6',\n TGO_TEAL_60W = '#B5DDD5',\n TGO_TEAL_SECONDARY = '#CBD6CB',\n TGO_TEAL_90W = '#ECF6F5',\n\n // Petrol colors\n TGO_PETROL_60B = '#102930',\n TGO_PETROL_30B = '#1B4754',\n TGO_PETROL_DEFAULT = '#276678',\n TGO_PETROL_30W = '#6894A0',\n TGO_PETROL_60W = '#A9C2C9',\n TGO_PETROL_SECONDARY = '#C8D7DE',\n TGO_PETROL_90W = '#E9F0F1',\n\n // Error colors\n TGO_ERROR_60B = '#513131',\n TGO_ERROR_30B = '#8E5655',\n TGO_ERROR_60W = '#E3C3C6',\n TGO_ERROR_SECONDARY = '#F0DAD9',\n TGO_ERROR_DEFAULT = '#CB7B7A',\n\n // Warning colors\n TGO_WARNING_SECONDARY = '#F0D6BB',\n TGO_WARNING_DEFAULT = '#CCA45F',\n\n // Black colors - grayscale\n TGO_BLACK = '#000000',\n TGO_DARK = '#888888',\n TGO_MEDIUM = '#E0E0E0',\n TGO_GREY = '#EDEDED',\n TGO_LIGHT = '#F6F6F6',\n TGO_WHITE = '#FFFFFF',\n\n // Brand colors\n BRAND_60 = '#A90686',\n BRAND_50 = '#D410AA',\n BRAND_40 = '#FF54DA',\n BRAND_30 = '#FFB3EE',\n BRAND_20 = '#FFE6FA',\n BRAND_10 = '#FFF2FC',\n\n // Grayscale colors\n GRAYSCALE_50 = '#666666',\n GRAYSCALE_40 = '#919191',\n GRAYSCALE_30 = '#D3D3D3',\n GRAYSCALE_20 = '#E9E9E9',\n GRAYSCALE_10 = '#F4F4F4',\n\n // Additional colors\n BLACK = '#242424',\n\n // Accent colors\n ACCENT_20 = '#FFF5ED',\n ACCENT_10 = '#FFFAF6',\n\n // Informative colors\n INFORMATIVE_50 = '#1A47AA',\n INFORMATIVE_40 = '#0165FC',\n INFORMATIVE_30 = '#277CFD',\n INFORMATIVE_20 = '#99C1FE',\n INFORMATIVE_10 = '#D9E8FF',\n\n // Success colors\n SUCCESS_50 = '#3C9A13',\n SUCCESS_40 = '#56C71A',\n SUCCESS_30 = '#80D63E',\n SUCCESS_20 = '#AAE47A',\n SUCCESS_10 = '#D4F2C3',\n\n // Error additional colors\n ERROR_50 = '#E02800',\n ERROR_40 = '#FF3003',\n ERROR_30 = '#FF6E4F',\n ERROR_20 = '#FFAC9A',\n ERROR_10 = '#FFEAE6',\n\n // Warning additional colors\n WARNING_50 = '#D07D00',\n WARNING_40 = '#FF9A03',\n WARNING_30 = '#FFC268',\n WARNING_20 = '#FFE1B3',\n WARNING_10 = '#FFF5E6',\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[uiDragDrop]',\n standalone: false\n})\nexport class DragDropDirective {\n constructor() { }\n\n @HostBinding('class.file-over') file: boolean;\n @Output() fileDropped = new EventEmitter<any>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.file = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.file = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.file = false;\n let files: FileList;\n if (!!event.dataTransfer) {\n files = event.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { Color } from '../../models/colors.model';\n\n@Component({\n selector: 'ui-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUploadComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('inOutAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n trigger('inOutAnimationProgress', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n trigger('inOutAnimationChange', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n ],\n standalone: false\n})\nexport class FileUploadComponent implements OnInit, OnChanges, ControlValueAccessor {\n @HostBinding() class = 'ui-file-upload';\n\n /**\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() maxFileSizeMB: number;\n\n /**\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() minFileSizeMB: number;\n\n /**\n * Supported files for input field\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() supportedFileTypes?: string;\n\n /**\n * Upload progress\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() uploadProgress: number;\n\n /**\n * Show Upload progress percentage or not\n *\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() showUploadProgress: boolean = true;\n\n /**\n * Custom progress message\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() fileProcessingMessage: string | undefined;\n\n /**\n * File upload errors\n *\n * @type {string[]}\n * @memberof FileUploadComponent\n */\n @Input() errors?: string[] | null;\n\n /**\n * File upload disabled\n *\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() disabled = false;\n\n /**\n * Existing file information\n *\n * @type {(File | null)}\n * @memberof FileUploadComponent\n */\n @Input() file: File | null = null;\n\n /**\n * Color of the file upload.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() companyColor: string | null = '';\n\n @HostBinding('style.--color')\n compColor: string;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FileUploadComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * Whether to show the file size information.\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() showFileSize = true;\n\n @Output() OnDrop: EventEmitter<File> = new EventEmitter<File>();\n\n @ViewChild('fileDrop') fileDrop: ElementRef<HTMLInputElement>;\n\n protected readonly translationContext = 'FILE_UPLOAD.';\n\n /**\n * @ignore\n */\n onChange = (_: any) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n get fileSizeInMB(): string | null {\n return this.file ? (this.file.size / (1024 * 1024)).toFixed(2) : null;\n }\n\n isMissedMinSize = false;\n progress = false;\n success = false;\n browse: boolean;\n isCanceled = false;\n colorUploadSuccess = Color.SUCCESS_50;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.browse = true;\n }\n\n //When file is dropped\n onFileDropped(files: FileList) {\n this.emitFile(files);\n }\n\n //When input changes\n onChangeUpload(event: Event) {\n this.isCanceled = false;\n const element = event.currentTarget as HTMLInputElement;\n // Prevents clearing items when user selects cancel in the dialog. Cancel event can emit empty file list.\n if (element.files?.length) {\n this.emitFile(element.files || new FileList());\n }\n }\n\n //Emit drop file\n emitFile(files: FileList) {\n const [file] = Array.from(files);\n this.file = file;\n this.errors = null;\n this.onTouch();\n this.isMissedMinSize =\n !file?.size && !this.minFileSizeMB ? true : this.fileSizeToMB(file?.size ?? 0) <= this.minFileSizeMB;\n if (!this.isMissedMinSize) {\n this.onChange(this.file);\n this.OnDrop.emit(file);\n }\n }\n\n //Show progress-bar\n showProgress(): boolean {\n this.browse = false;\n return !!(this.file && !this.errors && !this.isMissedMinSize);\n }\n\n //Show success elements\n showSuccess(): boolean {\n return !!(this.file && this.uploadProgress === 100 && !this.errors && !this.isMissedMinSize);\n }\n\n //Show browse when there are error\n showBrowse(): boolean {\n return !!(this.errors || this.isMissedMinSize);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.isCanceled) {\n if (changes['uploadProgress'] || changes['file']) {\n this.progress = this.showProgress();\n this.success = this.showSuccess();\n this.browse = this.showBrowse();\n }\n if (changes['errors']) {\n this.progress = this.showProgress();\n this.success = this.showSuccess();\n this.browse = this.showBrowse();\n }\n if (changes['applicationTheme']) {\n this.compColor = this.getCompanyColor();\n }\n }\n }\n\n writeValue(value?: File): void {\n if (value) {\n this.file = value || null;\n } else {\n this.file = null;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private getCompanyColor(): string {\n return this.companyColor || (this.applicationTheme === 'classic' ? '#46A997' : '#D410AA');\n }\n\n private fileSizeToMB(fileSize: number): number {\n return fileSize / 1024 / 1024;\n }\n\n onKeydown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n this.fileDrop?.nativeElement?.click();\n } else if (ev.key === 'Escape') {\n this.file = null;\n this.success = false;\n this.progress = false;\n this.errors = null;\n this.isMissedMinSize = false;\n this.browse = true;\n this.isCanceled = true;\n }\n }\n}\n","<ng-container>\n <div\n class=\"upload-file-container\"\n uiDragDrop\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{ 'upload-errors': !!errors || isMissedMinSize, 'upload-file-container-disabled': disabled }\"\n (fileDropped)=\"onFileDropped($event)\"\n [tabIndex]=\"0\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"fileDrop?.nativeElement?.click()\"\n >\n <div *ngIf=\"browse && !(success && !!file && progress)\" [@inOutAnimation] class=\"upload-files\">\n <div class=\"upload-browse\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n\n <div class=\"errors\" *ngIf=\"!!errors || isMissedMinSize\" role=\"alert\">\n <ng-container *ngIf=\"!!errors\">\n <span *ngFor=\"let error of errors\"><ui-icon name=\"Error\" class=\"error-icon\"></ui-icon> {{ error }}</span>\n </ng-container>\n\n <span *ngIf=\"isMissedMinSize\">\n <ui-icon name=\"Error\" class=\"error-icon\"></ui-icon>\n {{ translationContext + 'MIN_SIZE_ERROR' | uiTranslate: { min: minFileSizeMB } | async }}\n </span>\n </div>\n <input\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"'upload-supported-files'\"\n [tabIndex]=\"-1\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"file\"\n [accept]=\"supportedFileTypes\"\n [disabled]=\"disabled\"\n (change)=\"onChangeUpload($event)\"\n />\n <p *ngIf=\"applicationTheme === 'classic'; else rebrandedDnDCopyTpl\">\n {{ translationContext + 'DRAG_AND_DROP_OR' | uiTranslate | async }}\n <span class=\"semibold\"> {{ translationContext + 'BROWSE' | uiTranslate | async | lowercase }}</span>\n {{ translationContext + 'YOUR_FILES' | uiTranslate | async }}\n </p>\n <span class=\"upload-text\">{{ maxFileSizeMB }}{{ translationContext + 'MAX_SIZE' | uiTranslate | async }}</span>\n <span *ngIf=\"minFileSizeMB\" class=\"upload-text\"\n >{{ minFileSizeMB }}{{ translationContext + 'MIN_SIZE' | uiTranslate | async }}</span\n >\n </div>\n </div>\n @if (success) {\n <div class=\"upload-success\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n <span class=\"upload-success-text\"\n ><ui-icon name=\"Check-round-in-line\" [color]=\"colorUploadSuccess\"></ui-icon\n >{{ translationContext + 'FILE_UPLOADING_SUCCESS' | uiTranslate | async }}</span\n >\n <input\n [tabIndex]=\"-1\"\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"success || progress ? '' : 'supported-file-types'\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"fileTest\"\n [accept]=\"supportedFileTypes\"\n (change)=\"onChangeUpload($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"upload-text\">{{ file?.name }}</span>\n @if (showFileSize) {\n <span class=\"upload-text\">{{\n translationContext + 'FILE_SIZE' | uiTranslate: { fileSize: fileSizeInMB } | async\n }}</span>\n }\n </div>\n }\n <div class=\"upload-progress\" [@inOutAnimationProgress] *ngIf=\"!!progress && !!file && !success\">\n <p>{{ file.name }}</p>\n <ui-progress-bar\n [progress]=\"uploadProgress\"\n [companyColor]=\"compColor\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-progress-bar>\n <p class=\"upload-text\">\n {{ fileProcessingMessage ?? (translationContext + 'UPLOADING' | uiTranslate | async) }}\n @if (showUploadProgress) {\n <span>{{ uploadProgress }}</span\n >%\n }\n </p>\n </div>\n\n <ng-template #iconTpl>\n <ui-icon\n *ngIf=\"applicationTheme === 'classic'; else rebrandedIconTpl\"\n class=\"upload-icon\"\n name=\"File-upload\"\n ></ui-icon>\n <ng-template #rebrandedIconTpl>\n <ui-icon class=\"upload-icon\" name=\"Upload\" [size]=\"'24'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n </ng-template>\n </ng-template>\n <ng-template #rebrandedDnDCopyTpl>\n <p id=\"'drag-and-drop'\">{{ translationContext + 'DRAG_AND_DROP' | uiTranslate | async }}</p>\n </ng-template>\n\n <div\n *ngIf=\"!!supportedFileTypes\"\n [attr.theme]=\"applicationTheme\"\n class=\"upload-supported-files\"\n id=\"upload-supported-files\"\n >\n <span>{{ translationContext + 'SUPPORTED_FILE_TYPES' | uiTranslate | async }}</span\n >{{ supportedFileTypes }}\n </div>\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { DragDropDirective } from '../../directives/drag-drop.directive';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\nimport { FileUploadComponent } from './file-upload.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [FileUploadComponent, DragDropDirective],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n ProgressBarComponentModule,\n UiTranslatePipe,\n ],\n exports: [FileUploadComponent],\n})\nexport class FileUploadComponentModule {}\n","import { Component, HostBinding, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { IconName, IconSize } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\n@Component({\n selector: 'ui-icon-label',\n templateUrl: './icon-label.component.html',\n styleUrls: ['./icon-label.component.scss'],\n standalone: false\n})\nexport class IconLabelComponent implements OnInit {\n /**\n * Icon size\n *\n * @type {IconSize}\n * @memberof IconLabelComponent\n */\n @Input() iconSize: IconSize = '16';\n\n /**\n * Icon name\n *\n * @type {IconName}\n * @memberof IconLabelComponent\n */\n @Input() iconName: IconName;\n\n /**\n * Label\n *\n * @memberof IconLabelComponent\n */\n @Input() text = '';\n\n /**\n * Icon color\n *\n * @type {IconColor}\n * @memberof IconLabelComponent\n */\n @Input() iconColor? = '';\n\n /**\n * Indent between icon and label\n *\n * @type {string}\n * @memberof IconLabelComponent\n */\n @HostBinding('style.--icon-indent')\n @Input()\n iconIndent? = '8';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof IconLabelComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {}\n}\n","<ui-icon [name]=\"iconName\" [size]=\"iconSize\" [color]=\"iconColor\" aria-hidden=\"true\"></ui-icon>\n<span>{{ text }}</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { IconLabelComponent } from './icon-label.component';\n\n@NgModule({\n declarations: [IconLabelComponent],\n imports: [CommonModule, IconComponentModule],\n exports: [IconLabelComponent],\n providers: [],\n})\nexport class IconLabelComponentModule {}\n","import {\n Component,\n computed,\n EventEmitter,\n input,\n Input,\n InputSignal,\n Output,\n Signal,\n TemplateRef,\n} from '@angular/core';\nimport { IRoute, MenuItem } from \"../navbar.model\";\nimport { AsyncPipe, NgClass, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { UiTranslatePipe } from \"@testgorilla/tgo-ui/components/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { AccordionComponentModule } from \"../../accordion/accordion.component.module\";\nimport { AvatarComponentModule, AvatarSize } from \"@testgorilla/tgo-ui/components/avatar\";\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme } from \"@testgorilla/tgo-ui/components/core\";\n\n@Component({\n selector: 'ui-mobile-navbar-side-sheet',\n templateUrl: './mobile-navbar-side-sheet.component.html',\n styleUrls: ['./mobile-navbar-side-sheet.component.scss'],\n imports: [\n NgForOf,\n NgClass,\n IconComponentModule,\n MatIconModule,\n MatMenuModule,\n UiTranslatePipe,\n MatButtonModule,\n AccordionComponentModule,\n NgIf,\n NgTemplateOutlet,\n AvatarComponentModule,\n ButtonComponentModule,\n AsyncPipe,\n ]\n})\nexport class MobileNavbarSideSheetComponent {\n @Input() routes: IRoute[] = [];\n activedRoute: InputSignal<string> = input('');\n @Input() email = '';\n @Input() userName = '';\n @Input() menuItems: MenuItem[] = [];\n @Input() contentTemplateRef: TemplateRef<any>;\n @Input() userInfoExtraTemplateRef: TemplateRef<any>;\n @Input() isDesktop = false;\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n @Output() navigateEvent: EventEmitter<string> = new EventEmitter<string>();\n @Output() menuItemClicked: EventEmitter<string> = new EventEmitter<string>();\n @Output() logoutEvent: EventEmitter<void> = new EventEmitter<void>();\n\n protected readonly translationContext = 'NAVBAR.';\n protected avatarSize = AvatarSize;\n\n activeRoutesMap:Signal<Map<string, boolean>> = computed(() => {\n const currentRoute = this.activedRoute();\n return new Map(this.routes.map(route => [route.id, currentRoute?.startsWith(route.id)]));\n });\n\n navigate(routeId: string) {\n this.navigateEvent.emit(`/${routeId}`);\n }\n\n logout(): void {\n this.logoutEvent.emit();\n }\n\n clickMenuItem(id: string) {\n this.menuItemClicked.emit(id);\n }\n}\n","<div class=\"mobile-navbar-container\">\n <ng-container *ngIf=\"isDesktop\" [ngTemplateOutlet]=\"userInfo\"></ng-container>\n\n <div class=\"routes\">\n <div\n *ngFor=\"let route of routes\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n (click)=\"navigate(route.id)\"\n class=\"route\"\n [ngClass]=\"{ active: activeRoutesMap().get(route.id) }\"\n >\n <span>{{ route.title }}</span>\n </div>\n </div>\n\n <div class=\"settings\">\n <ng-container *ngFor=\"let e of menuItems\">\n <div *ngIf=\"e\" class=\"menu-item\">\n <ui-button\n [attr.data-testid]=\"e.id\"\n data-test-role=\"menu-item\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"e.icon\"\n [label]=\"e.text\"\n (buttonClickEvent)=\"clickMenuItem(e.id)\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n [ariaLabel]=\"e.text + '--' + e.text\"\n ></ui-button>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div class=\"bottom-content\" [ngClass]=\"{ desktop: isDesktop }\">\n <ng-container *ngIf=\"!isDesktop\" [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n <ng-container *ngIf=\"isDesktop; else tablet\">\n <div class=\"menu-item\">\n <ui-button\n data-testid=\"logout-button\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"'Logout-in-line'\"\n [label]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n (buttonClickEvent)=\"logout()\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n ></ui-button>\n </div>\n </ng-container>\n\n <ng-template #tablet>\n <ng-container [ngTemplateOutlet]=\"userInfo\"></ng-container>\n </ng-template>\n</div>\n\n<ng-template #userInfo>\n <div class=\"user-info\" [ngClass]=\"{ desktop: isDesktop }\">\n <ui-avatar [size]=\"avatarSize.MEDIUM\" [name]=\"userName\"></ui-avatar>\n <div class=\"details-container\">\n <div class=\"name-container\">\n <span class=\"user-name dd-privacy-mask\">{{ userName }}</span>\n <span class=\"user-email dd-privacy-mask\">{{ email }}</span>\n @if (userInfoExtraTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"userInfoExtraTemplateRef\"></ng-container>\n }\n </div>\n <ui-button\n *ngIf=\"!isDesktop\"\n data-testid=\"logout-button\"\n [tooltip]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n [iconName]=\"'Logout-in-line'\"\n [applicationTheme]=\"'light'\"\n [variant]=\"'icon-button'\"\n (click)=\"logout()\"\n ></ui-button>\n </div>\n </div>\n</ng-template>\n","export enum ScreenBreakpoints {\n MOBILE = 600,\n TABLET = 1023,\n LARGE_TABLET = 1280,\n}\n","import { ApplicationRef, Injectable, ViewContainerRef } from '@angular/core';\nimport { SideSheetConfig } from './side-sheet.model';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SideSheetService {\n private componentRef$ = new Subject<SideSheetConfig | null>();\n\n constructor(private applicationRef: ApplicationRef) {}\n\n open<T>(config: SideSheetConfig): T {\n const { componentRef, ...configFields } = config;\n const rootViewContainerRef = this.applicationRef.components[0].injector.get(ViewContainerRef);\n const componentReference = rootViewContainerRef.createComponent(config.componentRef);\n this.componentRef$.next({ ...configFields, componentRef: componentReference });\n return componentReference.instance as T;\n }\n\n close(): void {\n this.componentRef$.next(null);\n }\n\n getComponentRef(): Observable<SideSheetConfig | null> {\n return this.componentRef$.asObservable();\n }\n}\n","import {\n Component,\n DestroyRef,\n EventEmitter, HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { SideSheetService } from './side-sheet.service';\nimport { SideSheetConfig, SideSheetPosition } from './side-sheet.model';\nimport { MatDrawer } from '@angular/material/sidenav';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\n@Component({\n selector: 'ui-side-sheet',\n templateUrl: './side-sheet.component.html',\n styleUrls: ['./side-sheet.component.scss'],\n standalone: false\n})\nexport class SideSheetComponent implements OnInit {\n /**\n * Set position. Defaults \"end\"\n *\n * @type {SideSheetPosition}\n * @memberof SideSheetComponent\n */\n @Input() position: SideSheetPosition = 'end';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SideSheetComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n @Output() openChange = new EventEmitter<boolean>();\n\n @ViewChild('drawer') drawer: MatDrawer;\n @ViewChild('container', { read: ViewContainerRef, static: false }) container: ViewContainerRef;\n\n @HostListener('keydown.esc', ['$event'])\n onEscPress(_: KeyboardEvent): void {\n void this.drawer.close();\n }\n\n protected title = '';\n protected showBackButton = false;\n protected showTitleTooltip = false;\n protected showLogo = false;\n protected componentRef$ = this.sideSheetService.getComponentRef();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private sideSheetService: SideSheetService,\n private destroyRef: DestroyRef,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.setComponentRef();\n }\n\n private setComponentRef(): void {\n this.componentRef$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(config => {\n if (config && config.componentRef && this.container && this.drawer) {\n this.setConfig(config);\n this.drawer.toggle();\n this.container.clear();\n this.container.insert(config.componentRef.hostView);\n } else if (!config) {\n this.drawer.toggle();\n this.container.clear();\n }\n });\n }\n\n private setConfig(config: SideSheetConfig): void {\n this.title = config.title ?? '';\n this.showLogo = config.showLogo ?? false;\n this.showBackButton = config.showBackButton ?? false;\n this.showTitleTooltip = config.showTitleTooltip ?? false;\n\n if (config.closed) {\n config.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.drawer.close();\n });\n }\n }\n\n protected onClose(): void {\n this.drawer.toggle();\n }\n\n onOpenChange(isOpened: boolean): void {\n this.openChange.emit(isOpened);\n }\n}\n","<ng-container>\n <mat-drawer-container class=\"side-sheet-container\" [attr.theme]=\"applicationTheme\" [hasBackdrop]=\"true\">\n <mat-drawer (closedStart)=\"onOpenChange(false)\" (openedStart)=\"onOpenChange(true)\" #drawer [mode]=\"'over'\" [autoFocus]=\"false\" class=\"side-sheet-content\" [position]=\"position\">\n <div class=\"header\">\n <div class=\"title\">\n <ui-button\n *ngIf=\"showBackButton\"\n [variant]=\"'icon-button'\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-filled'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onClose()\"\n ></ui-button>\n <span\n *ngIf=\"title\"\n [matTooltip]=\"showTitleTooltip ? title : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >{{ title }}</span>\n <ui-logo *ngIf=\"showLogo\"></ui-logo>\n </div>\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"(('COMMON.CLOSE') | uiTranslate | async)!\"\n (click)=\"onClose()\"\n ></ui-button>\n </div>\n <ng-container #container></ng-container>\n </mat-drawer>\n <mat-drawer-content>\n <ng-content></ng-content>\n </mat-drawer-content>\n </mat-drawer-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n EventEmitter,\n Inject,\n input,\n Input,\n InputSignal,\n Optional,\n Output,\n Signal,\n TemplateRef,\n} from '@angular/core';\nimport { IRoute, MenuItem, MenuState, ScreenSize } from './navbar.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { map, ReplaySubject, startWith, Subject, switchMap, tap } from 'rxjs';\nimport { SideSheetService } from '../side-sheet/side-sheet.service';\nimport { MobileNavbarSideSheetComponent } from './mobile-navbar-side-sheet/mobile-navbar-side-sheet.component';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { ScreenBreakpoints } from '../../models/screen-breakpoints.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LogoTypeEnum } from '@testgorilla/tgo-ui/components/logo';\nimport { AvatarSize } from '@testgorilla/tgo-ui/components/avatar';\n\n@Component({\n selector: 'ui-navbar',\n templateUrl: './navbar.component.html',\n styleUrls: ['./navbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class NavbarComponent {\n /**\n * Routes object\n *\n * @type {IRoute}\n * @memberof NavbarComponent\n * @ignore\n */\n @Input() routes: IRoute[] = [];\n\n /**\n * Actived route id\n *\n * @type {InputSignal<string>}\n * @memberof NavbarComponent\n */\n activedRoute: InputSignal<string> = input('');\n\n /**\n * User first name and last name\n *\n * @type {string}\n * @memberof NavbarComponent\n */\n @Input() userName = '';\n\n /**\n * User email\n *\n * @type {string}\n * @memberof NavbarComponent\n */\n @Input() email = '';\n\n /**\n * Menu items to show in menu above the Log out button\n *\n * @type {string}\n * @memberof NavbarComponent\n */\n @Input() menuItems: MenuItem[] = [];\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof NavbarComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * It's ng-content for mobile version\n *\n * @type {ApplicationTheme}\n * @memberof NavbarComponent\n */\n @Input() contentTemplateRef: TemplateRef<any>;\n /**\n * Additional info template reference for the extra user info in the dropdown/sidesheet\n * @type {TemplateRef<any>}\n * @memberof NavbarComponent\n */\n @Input() userInfoExtraTemplateRef: TemplateRef<any>;\n\n /**\n * Mobile breakpoint\n * @type {number}\n * @memberof NavbarComponent\n */\n @Input() set mobileBreakpoint(value: number) {\n if (value) {\n this._mobileBreakpoint$.next(value);\n }\n }\n\n /**\n *\n * Show avatar with user initials\n *\n * @type {boolean}\n * @memberof NavbarComponent\n */\n @Input() isAvatar = true;\n\n /**\n * Sets class for the menu\n *\n * @type {string}\n * @memberof NavbarComponent\n */\n @Input() menuClass = '';\n\n /**\n * @ignore\n */\n @Output() navigateEvent: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * @ignore\n */\n @Output() menuItemClicked: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * @ignore\n */\n @Output() logoutEvent: EventEmitter<void> = new EventEmitter<void>();\n @Output() menuState: EventEmitter<MenuState> = new EventEmitter<MenuState>();\n\n protected screenSize: ScreenSize = 'desktop';\n protected readonly translationContext = 'NAVBAR.';\n private readonly _mobileBreakpoint$ = new ReplaySubject<number>(1);\n private readonly _tabletBreakpoint$ = new ReplaySubject<number>(1);\n private readonly mobileBreakpointObs$ = this._mobileBreakpoint$.pipe(startWith(ScreenBreakpoints.MOBILE));\n private readonly tabletBreakpointObs$ = this._tabletBreakpoint$.pipe(startWith(ScreenBreakpoints.TABLET));\n protected readonly isMobile$ = this.mobileBreakpointObs$.pipe(\n switchMap(breakpoint =>\n this.breakpointObserver.observe(`(max-width: ${breakpoint}px)`).pipe(\n map(v => v.matches),\n tap(isMobile => (isMobile ? (this.screenSize = 'mobile') : 'desktop'))\n )\n )\n );\n protected readonly isTablet$ = this.tabletBreakpointObs$.pipe(\n switchMap(breakpoint =>\n this.breakpointObserver.observe(`(max-width: ${breakpoint}px)`).pipe(\n map(v => v.matches),\n tap(isTablet => (isTablet ? (this.screenSize = 'tablet') : 'desktop'))\n )\n )\n );\n protected isOpened = false;\n protected logoType = LogoTypeEnum;\n\n activeRoutesMap: Signal<Map<string, boolean>> = computed(() => {\n const currentRoute = this.activedRoute();\n return new Map(this.routes.map(route => [route.id, currentRoute?.startsWith(route.id)]));\n });\n\n constructor(\n private readonly breakpointObserver: BreakpointObserver,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private sideSheetService: SideSheetService,\n private destroyRef: DestroyRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n openMobileMenu(): void {\n const isSideSheetClosed$ = new Subject<void>();\n const navbarSideSheetComponent = this.sideSheetService.open<MobileNavbarSideSheetComponent>({\n componentRef: MobileNavbarSideSheetComponent,\n showLogo: true,\n closed: isSideSheetClosed$,\n });\n\n navbarSideSheetComponent.userName = this.userName;\n navbarSideSheetComponent.menuItems = this.menuItems;\n navbarSideSheetComponent.activedRoute = this.activedRoute;\n navbarSideSheetComponent.routes = this.routes;\n navbarSideSheetComponent.email = this.email;\n navbarSideSheetComponent.contentTemplateRef = this.contentTemplateRef;\n navbarSideSheetComponent.userInfoExtraTemplateRef = this.userInfoExtraTemplateRef;\n navbarSideSheetComponent.applicationTheme = this.applicationTheme;\n\n navbarSideSheetComponent.logoutEvent.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.logoutEvent.emit();\n isSideSheetClosed$.next();\n });\n\n navbarSideSheetComponent.menuItemClicked.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n this.menuItemClicked.emit(value);\n isSideSheetClosed$.next();\n });\n\n navbarSideSheetComponent.navigateEvent.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n this.navigateEvent.emit(value);\n isSideSheetClosed$.next();\n });\n }\n\n navigate(routeId: string) {\n this.navigateEvent.emit(`/${routeId}`);\n }\n\n logout(): void {\n this.logoutEvent.emit();\n }\n\n clickMenuItem(id: string) {\n this.menuItemClicked.emit(id);\n }\n\n onChangeMenuState(isOpened: boolean, screenSize: ScreenSize) {\n this.isOpened = isOpened;\n this.menuState.emit({ isOpened, screenSize });\n }\n\n protected readonly AvatarSize = AvatarSize;\n}\n","<ui-side-sheet\n [applicationTheme]=\"applicationTheme\"\n (openChange)=\"onChangeMenuState($event, screenSize)\"\n [position]=\"(isMobile$ | async) ? 'start' : 'end'\"\n>\n <mat-toolbar [attr.theme]=\"applicationTheme\">\n <div class=\"custom-toolbar row\">\n <ui-logo\n [applicationTheme]=\"applicationTheme\"\n class=\"logo\"\n (click)=\"navigate('')\"\n [allowResizing]=\"true\"\n [width]=\"(isMobile$ | async) ? 160 : (isTablet$ | async) ? 30 : 160\"\n [type]=\"\n (isMobile$ | async)\n ? logoType.DEFAULT\n : (isTablet$ | async)\n ? logoType.PRIMARY_BRANDMARK_PINK\n : logoType.DEFAULT\n \"\n ></ui-logo>\n\n <ui-button\n (click)=\"openMobileMenu()\"\n *ngIf=\"isMobile$ | async\"\n [variant]=\"'text'\"\n [companyColor]=\"'#242424'\"\n [applicationTheme]=\"'light'\"\n [iconName]=\"isOpened ? 'Close-in-line' : 'Menu-burger-in-line'\"\n [justIcon]=\"true\"\n ></ui-button>\n\n <div class=\"navigation row\">\n <a\n *ngFor=\"let route of routes\"\n (click)=\"navigate(route.id); $event.preventDefault()\"\n [href]=\"route.id\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n [ngClass]=\"{ active: activeRoutesMap().get(route.id) }\"\n >\n <ui-badge\n *ngIf=\"route?.badgeOptions\"\n [label]=\"route.badgeOptions!.text\"\n [rebrandColor]=\"route.badgeOptions!.color\"\n ></ui-badge>\n <span>{{ route.title }}</span>\n </a>\n </div>\n\n <div class=\"actions\">\n <div class=\"custom-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n <button mat-button class=\"profile-menu\" *ngIf=\"isTablet$ | async; else pc\" (click)=\"openMobileMenu()\">\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n\n <ng-template #pc>\n <button\n mat-button\n class=\"profile-menu\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n (menuOpened)=\"onChangeMenuState(true, 'desktop')\"\n (menuClosed)=\"onChangeMenuState(false, 'desktop')\"\n [matMenuTriggerFor]=\"menu\"\n >\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n </ng-template>\n\n <ng-template #buttonContent>\n <div class=\"profile-button-content\">\n <ng-container *ngIf=\"isAvatar; else onlyName\">\n <ui-avatar\n data-testid=\"profile-button\"\n [ngClass]=\"{ opened: menu._panelAnimationState !== 'void' }\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"userName\"\n [size]=\"AvatarSize.SMALL_MEDIUM\"\n ></ui-avatar>\n </ng-container>\n\n <ng-template #onlyName>\n {{ userName }}\n </ng-template>\n\n <mat-icon *ngIf=\"applicationTheme === 'classic'; else newThemeIcon\" iconPositionEnd>expand_more</mat-icon>\n <ng-template #newThemeIcon>\n <ui-icon\n [size]=\"'24'\"\n *ngIf=\"!isAvatar\"\n [name]=\"menu._panelAnimationState === 'void' ? 'Arrow-chevron-down-filled' : 'Arrow-chevron-up-filled'\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-icon>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n </mat-toolbar>\n\n <ng-content></ng-content>\n\n <mat-menu [class]=\"menuClass\" #menu=\"matMenu\">\n <ng-container *ngIf=\"applicationTheme === 'classic'; else newTheme\">\n <button\n *ngFor=\"let e of menuItems\"\n mat-menu-item\n (click)=\"clickMenuItem(e.id)\"\n [attr.data-testid]=\"e.id\"\n data-test-role=\"profile-menu-item\"\n >\n <div class=\"menu-item\">\n <ui-icon *ngIf=\"e?.icon\" [name]=\"e.icon\" size=\"24\"></ui-icon>\n {{ e.text }}\n </div>\n </button>\n\n <button data-testid=\"logout-button\" mat-menu-item (click)=\"logout()\">\n <mat-icon>power_settings_new</mat-icon>\n {{ translationContext + 'LOG_OUT' | uiTranslate | async }}\n </button>\n </ng-container>\n\n <ng-template #newTheme>\n <ui-mobile-navbar-side-sheet\n [isDesktop]=\"true\"\n [menuItems]=\"menuItems\"\n [userName]=\"userName\"\n [routes]=\"routes\"\n [activedRoute]=\"activedRoute()\"\n [email]=\"email\"\n [applicationTheme]=\"applicationTheme\"\n [contentTemplateRef]=\"contentTemplateRef\"\n [userInfoExtraTemplateRef]=\"userInfoExtraTemplateRef\"\n (menuItemClicked)=\"clickMenuItem($event)\"\n (logoutEvent)=\"logout()\"\n >\n </ui-mobile-navbar-side-sheet>\n </ng-template>\n </mat-menu>\n</ui-side-sheet>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SideSheetComponent } from './side-sheet.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { LogoComponentModule } from '@testgorilla/tgo-ui/components/logo';\n\n@NgModule({\n declarations: [SideSheetComponent],\n exports: [SideSheetComponent],\n imports: [\n CommonModule,\n IconComponentModule,\n ButtonComponentModule,\n MatTooltipModule,\n MatSidenavModule,\n UiTranslatePipe,\n LogoComponentModule,\n ],\n})\nexport class SideSheetComponentModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { LogoComponentModule } from '@testgorilla/tgo-ui/components/logo';\nimport { NavbarComponent } from './navbar.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { AvatarComponentModule } from '@testgorilla/tgo-ui/components/avatar';\nimport { SideSheetComponentModule } from \"../side-sheet/side-sheet.component.module\";\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { MobileNavbarSideSheetComponent } from './mobile-navbar-side-sheet/mobile-navbar-side-sheet.component';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\n\n@NgModule({\n declarations: [NavbarComponent],\n imports: [\n CommonModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatRippleModule,\n MatMenuModule,\n LogoComponentModule,\n IconComponentModule,\n UiTranslatePipe,\n AvatarComponentModule,\n SideSheetComponentModule,\n ButtonComponentModule,\n MobileNavbarSideSheetComponent,\n BadgeComponentModule\n ],\n exports: [NavbarComponent],\n})\nexport class NavbarComponentModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PageEvent } from '@angular/material/paginator';\n\n@Component({\n selector: 'ui-paginator',\n templateUrl: './deprecated-paginator.component.html',\n styleUrls: ['./deprecated-paginator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class DeprecatedPaginatorComponent implements OnInit {\n // TODO: Some properties and methods are ignored on purpose because of a current issue with compodoc and angular 13\n // https://github.com/StoryFnbookjs/StoryFnbook/issues/16865\n // https://github.com/StoryFnbookjs/StoryFnbook/issues/17004\n\n /**\n * Paginator size options\n *\n * @type {number[]}\n * @memberof PaginatorComponent\n */\n readonly pageSizeOptions = [10, 25, 50];\n\n /**\n * Data length\n *\n * @type {number}\n * @memberof PaginatorComponent\n */\n @Input() length = 0;\n\n /**\n * Default page size\n *\n * @type {number}\n * @memberof PaginatorComponent\n */\n @Input() defaultPageSize = 25;\n\n /**\n * @ignore\n */\n @Output() paginatorChangedEvent: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n /**\n * @ignore\n */\n ngOnInit(): void {}\n\n constructor() {}\n\n paginatorChanged(paginator: PageEvent) {\n this.paginatorChangedEvent.emit(paginator);\n }\n}\n","<mat-paginator [length]=\"length\"\n [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"paginatorChanged($event)\">\n</mat-paginator>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { DeprecatedPaginatorComponent } from './deprecated-paginator.component';\n\n@NgModule({\n declarations: [DeprecatedPaginatorComponent],\n imports: [CommonModule, MatPaginatorModule],\n exports: [DeprecatedPaginatorComponent],\n providers: [],\n})\nexport class DeprecatedPaginatorComponentModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnInit,\n Optional,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n OnChanges,\n AfterViewInit,\n} from '@angular/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { MenuConfig, OverflowMenuButtonModify, OverflowMenuButtonsType } from './overflow-menu.model';\nimport { ButtonColor, ButtonSize } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\nconst DEFAULT_MENU_CONFIG: MenuConfig = {\n overlapTrigger: false,\n panelClass: '',\n xPosition: 'after',\n yPosition: 'below',\n};\n\n@Component({\n selector: 'ui-overflow-menu',\n templateUrl: './overflow-menu.component.html',\n styleUrls: ['./overflow-menu.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class OverflowMenuComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * Menu buttons\n *\n * @type {OverflowMenuButtonsType[]}\n * @memberof OverflowMenuComponent\n */\n @Input() buttons: OverflowMenuButtonsType[];\n\n /**\n * Menu icon trigger\n *\n * @memberof OverflowMenuComponent\n */\n @Input() iconTrigger: IconName = 'Menu-ellipsis';\n\n /**\n * Label menu\n *\n * @memberof OverflowMenuComponent\n */\n @Input() menuLabel = '';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof OverflowMenuComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof OverflowMenuComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof OverflowMenuComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input for description.\n * @type {text}\n * @memberof OverflowMenuComponent\n */\n @Input() describedby = '';\n\n /**\n * Custom template for the button (optional)\n *\n * @type {TemplateRef<any>}\n * @memberof OverflowMenuComponent\n */\n @Input() contentTemplateRef: TemplateRef<any>;\n\n /**\n * Button variant for the overflow menu trigger\n * When null, uses the default icon rendering\n *\n * @type {ButtonColor | null}\n * @memberof OverflowMenuComponent\n */\n @Input() buttonVariant: ButtonColor | null = null;\n\n /**\n * Button size for the overflow menu trigger\n *\n * @type {ButtonSize}\n * @memberof OverflowMenuComponent\n */\n @Input() buttonSize: ButtonSize = 'medium';\n\n @Input() menuConfig: MenuConfig = DEFAULT_MENU_CONFIG;\n\n @Input() isDynamicMenu = false;\n\n @Input() withRemovableOption = false;\n\n @Output() selectItem: EventEmitter<string> = new EventEmitter<string>();\n\n @Output() menuOpened = new EventEmitter<void>();\n\n @Output() menuClosed = new EventEmitter<void>();\n\n @ViewChildren(MatMenu) matmenus: QueryList<MatMenu>;\n @ViewChildren(MatMenuTrigger) matTrigger: QueryList<MatMenuTrigger>;\n @ViewChild('buttonElement') buttonElement: any;\n\n menuItems: string[] = [];\n submenus: Array<OverflowMenuButtonModify[]> = [];\n\n isMenuRendered = signal(false);\n isMenuOpened = signal(false);\n isFocused = signal(false);\n\n get menuItemHasHovered(): boolean {\n return this.submenus.some(menu => menu.some(item => item.isHovered));\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private focusMonitor: FocusMonitor,\n private ngZone: NgZone\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n this.createSubmenus(this.buttons, 's0', 1);\n this.reindex();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['buttons'] && this.isDynamicMenu) {\n this.resetSubmenus();\n this.createSubmenus(this.buttons, 's0', 1);\n this.reindex();\n }\n }\n\n ngAfterViewInit() {\n this.isMenuRendered.set(true);\n\n setTimeout(() => {\n this.focusMonitor.monitor(this.buttonElement).subscribe(origin =>\n this.ngZone.run(() => {\n if (origin === 'keyboard') {\n this.isFocused.set(true);\n } else {\n if (!this.isMenuOpened()) {\n this.isFocused.set(false);\n }\n }\n })\n );\n }, 300);\n }\n\n onSelectItem(event: Event, value: string) {\n if (!!value) {\n this.selectItem.emit(value);\n }\n }\n\n onMenuOpened(): void {\n this.menuOpened.emit();\n this.isMenuOpened.set(true);\n\n if (this.isFocused()) {\n setTimeout(() => {\n this.matmenus.first._allItems.first.focus('keyboard');\n }, 300);\n }\n }\n\n onMenuClosed(): void {\n this.isMenuOpened.set(false);\n this.menuClosed.emit();\n }\n\n onButtonFocus(button: OverflowMenuButtonModify) {\n if (this.isFocused()) {\n button.isFocused = true;\n }\n }\n\n onButtonBlur(button: OverflowMenuButtonModify) {\n button.isFocused = false;\n }\n\n onButtonClick(button: OverflowMenuButtonModify, $event: Event) {\n if (button.disabled) {\n $event.preventDefault();\n $event.stopPropagation();\n } else {\n this.onSelectItem($event, button.value);\n }\n }\n\n onSubmenuOpened(): void {\n this.isMenuOpened.set(!this.isMenuOpened);\n if (this.isFocused()) {\n setTimeout(() => {\n this.matmenus.last._allItems.first.focus('keyboard');\n }, 300);\n }\n }\n\n trackByButton = (_: number, btn: OverflowMenuButtonModify) => btn.action ?? btn.value ?? btn.label;\n\n onButtonHover(button: OverflowMenuButtonModify, state: boolean) {\n button.isHovered = state;\n }\n\n getMenu(index: any) {\n return index >= 0 && this.matmenus ? (this.matmenus.find((x, i) => i === index) ?? null) : null;\n }\n\n private reindex() {\n this.submenus.forEach((menu: OverflowMenuButtonsType[]) => {\n menu.forEach((item: OverflowMenuButtonsType) => {\n if (item.subMenu !== -1) {\n item.subMenu = this.menuItems.indexOf(`${item.action}`);\n }\n });\n });\n }\n\n private resetSubmenus() {\n this.submenus = [];\n this.menuItems = [];\n }\n\n private createSubmenus(menu: OverflowMenuButtonsType[], prefix: string, count: number): void {\n this.menuItems.push(prefix);\n this.submenus.push(\n menu.map((item: OverflowMenuButtonsType, index: number) => ({\n label: item.label,\n icon: item.icon,\n isDestructive: item.isDestructive,\n tooltipText: item.tooltipText,\n value: item.value,\n disabled: item.disabled,\n btnTemplate: item.btnTemplate,\n subMenu: item.subMenu ? 0 : -1,\n action: item.action ? item.action : prefix + index,\n isTitleButton: item.isTitleButton,\n hideTitleButton: item.hideTitleButton,\n }))\n );\n\n menu.forEach((item: OverflowMenuButtonsType, index: number) => {\n if (item.subMenu) {\n this.createSubmenus((item as { subMenu: OverflowMenuButtonsType[] }).subMenu, prefix + index, count + 1);\n }\n });\n }\n}\n","<div class=\"overflow-menu-container\" [attr.theme]=\"applicationTheme\">\n <button\n #buttonElement\n mat-button\n [ngClass]=\"{\n 'icon-button': !contentTemplateRef && !buttonVariant,\n 'content-template': contentTemplateRef,\n 'no-hover': buttonVariant,\n }\"\n *ngIf=\"isMenuRendered()\"\n [matMenuTriggerFor]=\"matmenus.first\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-expanded]=\"isMenuOpened()\"\n disableRipple\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"onMenuClosed()\"\n class=\"overflow-menu-opener\"\n [matTooltip]=\"menuLabel\"\n >\n <span [id]=\"'describedby'\" [style.display]=\"'none'\">{{ describedby }}</span>\n @if (buttonVariant) {\n <ui-button\n [variant]=\"buttonVariant\"\n [justIcon]=\"true\"\n [iconName]=\"iconTrigger\"\n [applicationTheme]=\"applicationTheme\"\n [disabled]=\"false\"\n [size]=\"buttonSize\"\n >\n </ui-button>\n } @else if (contentTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n } @else {\n <ui-icon\n [name]=\"iconTrigger\"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [color]=\"'rebrand-black'\"\n ></ui-icon>\n }\n </button>\n\n @for (menu of submenus; track submenus[$index]) {\n <mat-menu\n [xPosition]=\"menuConfig.xPosition\"\n [yPosition]=\"menuConfig.yPosition\"\n #matMenu\n [class]=\"'overflow-menu ' + menuConfig.panelClass\"\n [overlapTrigger]=\"menuConfig.overlapTrigger\"\n backdropClass=\"overflow-menu-backdrop\"\n >\n <ng-container *ngFor=\"let button of menu; index as id; trackBy: trackByButton\">\n @if (button.btnTemplate) {\n <!-- Menu option by provided button template-->\n <ng-container\n [ngTemplateOutlet]=\"button.btnTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"\n ></ng-container>\n } @else if (withRemovableOption) {\n <!-- Simple menu option that can be removed dynamically -->\n <div class=\"menu-option\" [ngClass]=\"{ 'is-destructive': button.isDestructive, disabled: button.disabled }\">\n <span\n [id]=\"'labelledby-' + button.label + id\"\n class=\"label\"\n uiEllipseText\n [refresh]=\"isMenuOpened()\"\n [maxDiffPixels]=\"1\"\n [isMultiline]=\"true\"\n (onChangeTextState)=\"button.isTextEllipsed = $event\"\n >{{ button.label }}\n </span>\n\n @if (button.icon) {\n <ui-button\n variant=\"icon-button\"\n [applicationTheme]=\"applicationTheme\"\n [iconName]=\"button.icon\"\n [tooltip]=\"button.tooltipText ? button.tooltipText : button.isTextEllipsed ? button.label : ''\"\n [tooltipPosition]=\"'above'\"\n [size]=\"'medium'\"\n (focus)=\"onButtonFocus(button)\"\n (blur)=\"onButtonBlur(button)\"\n (mouseenter)=\"onButtonHover(button, true)\"\n (mouseleave)=\"onButtonHover(button, false)\"\n (click)=\"onSelectItem($event, button.value)\"\n >\n </ui-button>\n }\n </div>\n } @else {\n <!-- Default non-removable menu option -->\n @if (button.isTitleButton && !button.hideTitleButton) {\n <div class=\"menu-title\">{{ button.label }}</div>\n }\n\n @if (!button.isTitleButton) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"getMenu(button.subMenu)\"\n (menuOpened)=\"onSubmenuOpened()\"\n (focus)=\"onButtonFocus(button)\"\n (blur)=\"onButtonBlur(button)\"\n (mouseenter)=\"onButtonHover(button, true)\"\n (mouseleave)=\"onButtonHover(button, false)\"\n [ngClass]=\"{ 'is-destructive': button.isDestructive, disabled: button.disabled }\"\n disableRipple\n (click)=\"onButtonClick(button, $event)\"\n [matTooltip]=\"button.tooltipText ? button.tooltipText : button.isTextEllipsed ? button.label : ''\"\n [attr.aria-labelledby]=\"'labelledby-' + button.label + id\"\n [attr.aria-describedby]=\"'describedby-' + button.label + id\"\n [attr.aria-label]=\"button.ariaLabel || null\"\n role=\"menuitem\"\n matTooltipPosition=\"right\"\n >\n <span [id]=\"'describedby-' + button.label + id\" [style.display]=\"'none'\">\n {{\n button.disabled\n ? ('MENU.MENUITEM_DISABLED' | uiTranslate | async) + ' ' + (button.describedby || '')\n : button.describedby\n }}\n </span>\n @if (button.icon) {\n <ui-icon\n [name]=\"button.icon\"\n [toggleIconStyle]=\"true\"\n [filled]=\"\n button.disabled ? false : button.isHovered ? true : menuItemHasHovered ? false : !!button.isFocused\n \"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [color]=\"button.disabled ? 'dark' : button.isDestructive ? 'red' : 'rebrand-black'\"\n ></ui-icon>\n }\n <span\n [id]=\"'labelledby-' + button.label + id\"\n class=\"label\"\n uiEllipseText\n [refresh]=\"isMenuOpened()\"\n [maxDiffPixels]=\"1\"\n [isMultiline]=\"true\"\n (onChangeTextState)=\"button.isTextEllipsed = $event\"\n >{{ button.label }}</span\n >\n </button>\n }\n }\n </ng-container>\n\n <ng-content select=\"[menu-content]\"></ng-content>\n </mat-menu>\n }\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnInit,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { OverflowMenuButtonsType } from '../overflow-menu/overflow-menu.model';\nimport { debounceTime, filter, firstValueFrom, fromEvent, map, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FieldComponent } from '@testgorilla/tgo-ui/components/field';\nimport { PromptData, PromptTag } from './prompt.model';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ui-prompt',\n templateUrl: './prompt.component.html',\n styleUrl: './prompt.component.scss',\n providers: [\n UiTranslatePipe,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PromptComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PromptComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n tags = input<PromptTag[]>([]);\n maxCharacters = input<number>(255);\n supportedFileTypes = input<string>('');\n autoClear = input<boolean>(true);\n showSendButton = input<boolean>(false);\n enableFileUpload = input<boolean>(false);\n\n promptData = output<PromptData>();\n\n promptFilesList = signal<File[]>([]);\n promptTextValue = signal<string>('');\n fileListMenuConfig = signal<OverflowMenuButtonsType[]>([]);\n\n tagsVisible = signal<PromptTag[]>([]);\n tagsInDropdown = signal<PromptTag[]>([]);\n autocompleteSuggestion = signal<string>('');\n\n isDropdownOpened = signal<boolean>(false);\n isFieldHovered = signal(false);\n isFieldFocused = signal(false);\n isHighlighted = computed(() => this.isFieldHovered() || this.isFieldFocused());\n\n private destroyRef = inject(DestroyRef);\n private translationPipe = inject(UiTranslatePipe);\n\n fileDrop = viewChild<ElementRef<HTMLInputElement>>('fileDropRef');\n tagDropdown = viewChild<ElementRef<HTMLInputElement>>('tagDropdown');\n fieldComponentRef = viewChild.required<FieldComponent>('textarea');\n\n readonly dropdownPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n ];\n\n ngOnInit() {\n this.initTags();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.syncInputChange();\n }, 0);\n }\n\n async uploadFile(event: Event): Promise<void> {\n const files = (event.currentTarget as HTMLInputElement).files;\n if (files && files.length) {\n this.promptFilesList.update(list => {\n list.push(files.item(0) as File);\n return list;\n });\n this.emitValue();\n await this.updateFileMenu();\n }\n }\n\n sendPromptData(): void {\n this.promptData.emit({ text: this.promptTextValue() || '', files: this.promptFilesList() });\n\n if (this.autoClear()) {\n this.clearPromptData();\n }\n }\n\n selectedMenuOption(menuOptionValue: string): void {\n const updatedConfig = this.fileListMenuConfig().filter(menu => menu.value !== menuOptionValue);\n const updatedFileList = this.promptFilesList().filter(file => file.name !== menuOptionValue);\n this.promptFilesList.set(updatedFileList);\n this.fileListMenuConfig.set(updatedConfig);\n }\n\n selectTag(tag: PromptTag, event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n\n this.isDropdownOpened.set(false);\n this.promptTextValue.set(tag.label);\n this.autocompleteSuggestion.set(`${tag.label} ${tag.autocomplete}`);\n this.fieldComponentRef().field.nativeElement.focus();\n this.onTouch();\n }\n\n onTextareaTab(event: Event): void {\n if (this.autocompleteSuggestion()) {\n event.preventDefault();\n this.promptTextValue.set(this.autocompleteSuggestion());\n this.autocompleteSuggestion.set('');\n }\n }\n\n dropdownOutsideClick(): void {\n this.isDropdownOpened.set(false);\n }\n\n toggleDropdown(): void {\n this.isDropdownOpened.set(!this.isDropdownOpened());\n }\n\n focusTagDropdown(): void {\n setTimeout(() => {\n this.tagDropdown()?.nativeElement.focus();\n }, 300);\n }\n\n private syncInputChange() {\n if (!this.fieldComponentRef()?.field?.nativeElement) {\n return;\n }\n\n fromEvent(this.fieldComponentRef().field.nativeElement, 'input')\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map((event: Event) => (event.target as HTMLInputElement).value),\n debounceTime(200),\n filter(value => typeof value === 'string'),\n tap(value => {\n this.promptTextValue.set(value);\n if (this.autocompleteSuggestion()) {\n this.autocompleteSuggestion.set('');\n }\n this.emitValue();\n })\n )\n .subscribe();\n }\n\n private initTags(): void {\n if (!this.tags()?.length) {\n return;\n }\n if (this.tags().length <= 5) {\n this.tagsVisible.set(this.tags());\n return;\n }\n\n this.tagsVisible.set(this.tags().slice(0, 5));\n this.tagsInDropdown.set(this.tags().slice(5));\n }\n\n private async updateFileMenu(): Promise<void> {\n const menuConfig: OverflowMenuButtonsType[] = [];\n const tooltip = await firstValueFrom(this.translationPipe.transform('COMMON.DELETE'));\n this.promptFilesList().forEach(file => {\n menuConfig.push({\n label: file.name,\n value: file.name,\n icon: 'Delete',\n tooltipText: tooltip,\n });\n });\n this.fileListMenuConfig.set(menuConfig);\n }\n\n private clearPromptData(): void {\n this.promptTextValue.set('');\n this.promptFilesList.set([]);\n this.fileListMenuConfig.set([]);\n }\n\n writeValue(value: PromptData): void {\n this.promptTextValue.set(value.text || '');\n this.promptFilesList.set(value.files || []);\n }\n private onChange = (v: any) => {};\n private onTouch = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n private emitValue(): void {\n this.onChange({ text: this.promptTextValue() || '', files: this.promptFilesList() });\n this.onTouch();\n }\n}\n","<ng-container>\n <div\n class=\"prompt-container\"\n cdkOverlayOrigin\n #promptOrigin=\"cdkOverlayOrigin\"\n #promptContainerRef\n [ngClass]=\"{ 'prompt-container-focused': isHighlighted() }\"\n >\n <div class=\"prompt-autocomplete\">\n <textarea tabindex=\"-1\" class=\"ghost\" id=\"autocomplete\" [value]=\"autocompleteSuggestion()\" readonly></textarea>\n\n <ui-field\n #textarea\n class=\"prompt-text\"\n role=\"input\"\n [showBottomContent]=\"false\"\n [borderless]=\"true\"\n [type]=\"'multi-line'\"\n [autosizableTextarea]=\"true\"\n [maxCharacters]=\"maxCharacters()\"\n [placeholder]=\"('PROMPT.ASK_ANYTHING' | uiTranslate | async)!\"\n [value]=\"promptTextValue() || ''\"\n [hasTextAreaCounter]=\"false\"\n (mouseenter)=\"isFieldHovered.set(true)\"\n (mouseleave)=\"isFieldHovered.set(false)\"\n (focusin)=\"isFieldFocused.set(true)\"\n (fieldBlur)=\"isFieldFocused.set(false)\"\n (keydown.tab)=\"onTextareaTab($event)\"\n ></ui-field>\n </div>\n <div class=\"prompt-footer flex-container\">\n <div class=\"flex-container\">\n @if (enableFileUpload()) {\n <ui-button\n [variant]=\"'icon-button'\"\n [tooltip]=\"('PROMPT.ADD_FILES' | uiTranslate | async)!\"\n [tooltipPosition]=\"'above'\"\n [ariaLabel]=\"('PROMPT.ADD_FILES' | uiTranslate | async)!\"\n [iconName]=\"'Plus'\"\n (click)=\"fileDrop()?.nativeElement?.click()\"\n ></ui-button>\n <input\n [tabIndex]=\"-1\"\n class=\"form-control\"\n #fileDropRef\n type=\"file\"\n id=\"file-upload\"\n [accept]=\"supportedFileTypes()\"\n (change)=\"uploadFile($event)\"\n />\n\n @if (promptFilesList().length) {\n <div class=\"menu\">\n <ui-badge\n [notificationsAmount]=\"promptFilesList().length\"\n [variant]=\"'notification'\"\n class=\"menu-badge\"\n ></ui-badge>\n <ui-overflow-menu\n [matTooltip]=\"('PROMPT.FILES' | uiTranslate | async)!\"\n [matTooltipPosition]=\"'above'\"\n [buttonSize]=\"'medium'\"\n [iconTrigger]=\"'Document'\"\n [buttonVariant]=\"'ghost'\"\n [buttons]=\"fileListMenuConfig()\"\n [isDynamicMenu]=\"true\"\n [withRemovableOption]=\"true\"\n (selectItem)=\"selectedMenuOption($event)\"\n ></ui-overflow-menu>\n </div>\n }\n }\n </div>\n\n @if (tags()?.length && !promptTextValue()) {\n <div class=\"flex-container carousel\">\n <div class=\"tag-container flex-container\" role=\"list\" #tagsScrollContainer>\n @for (tag of tagsVisible(); track tag) {\n <ui-tag\n [label]=\"tag.label\"\n role=\"listitem\"\n [ariaLabel]=\"tag.label\"\n (click)=\"selectTag(tag, $event)\"\n (keyup.enter)=\"selectTag(tag, $event)\"\n (keyup.space)=\"selectTag(tag, $event)\"\n ></ui-tag>\n }\n\n @if (tagsInDropdown().length) {\n <ui-button\n class=\"view-more\"\n variant=\"text-inline\"\n [label]=\"('PROMPT.VIEW_MORE' | uiTranslate | async)!\"\n [ariaLabel]=\"('PROMPT.VIEW_MORE' | uiTranslate | async)!\"\n [size]=\"'medium'\"\n (click)=\"toggleDropdown()\"\n (keydown.enter)=\"focusTagDropdown()\"\n cdkOverlayOrigin\n #dropdownTrigger=\"cdkOverlayOrigin\"\n ></ui-button>\n }\n </div>\n\n <div class=\"flex-container\">\n <ui-button\n [variant]=\"'icon-button'\"\n [size]=\"'small'\"\n [ariaLabel]=\"'Scroll left button'\"\n [iconName]=\"'Arrow-chevron-left-in-line'\"\n [disabled]=\"tagsScrollContainer.scrollLeft === 0\"\n (click)=\"tagsScrollContainer.scrollBy({ left: -100, behavior: 'smooth' })\"\n ></ui-button>\n <ui-button\n [variant]=\"'icon-button'\"\n [size]=\"'small'\"\n [iconName]=\"'Arrow-chevron-right-in-line'\"\n [ariaLabel]=\"'Scroll right button'\"\n [disabled]=\"\n tagsScrollContainer.scrollLeft + tagsScrollContainer.clientWidth >= tagsScrollContainer.scrollWidth\n \"\n (click)=\"tagsScrollContainer.scrollBy({ left: 100, behavior: 'smooth' })\"\n ></ui-button>\n </div>\n </div>\n }\n\n @if (showSendButton()) {\n <ui-button\n class=\"send-button\"\n [variant]=\"'secondary'\"\n [iconName]=\"'Arrow-up-in-line'\"\n [tooltip]=\"('COMMON.SEND' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.SEND' | uiTranslate | async)!\"\n [tooltipPosition]=\"'above'\"\n [size]=\"'medium'\"\n [disabled]=\"!promptTextValue() && !promptFilesList().length\"\n (click)=\"sendPromptData()\"\n ></ui-button>\n }\n </div>\n </div>\n\n <!-- Dropdown for hidden tags -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"promptOrigin\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpened()\"\n [cdkConnectedOverlayPositions]=\"dropdownPositions\"\n [cdkConnectedOverlayWidth]=\"promptContainerRef?.offsetWidth || 0\"\n (overlayOutsideClick)=\"dropdownOutsideClick()\"\n >\n <div class=\"dropdown-container\" role=\"list\" #tagDropdown tabindex=\"0\">\n @for (tag of tagsInDropdown(); track tag) {\n <div\n class=\"dropdown-tag\"\n tabindex=\"0\"\n [attr.aria-label]=\"tag.label\"\n role=\"listitem\"\n (click)=\"selectTag(tag, $event)\"\n (keyup.enter)=\"selectTag(tag, $event)\"\n (keyup.space)=\"selectTag(tag, $event)\"\n >\n {{ tag.label }}\n </div>\n }\n </div>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { OverflowMenuComponent } from './overflow-menu.component';\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { EllipseTextDirective } from \"@testgorilla/tgo-ui/components/core\";\nimport { UiTranslatePipe } from \"@testgorilla/tgo-ui/components/core\";\n\n@NgModule({\n declarations: [OverflowMenuComponent],\n imports: [CommonModule, ButtonComponentModule, IconComponentModule, MatMenuModule, MatButtonModule, MatTooltipModule, EllipseTextDirective, UiTranslatePipe],\n exports: [OverflowMenuComponent],\n})\nexport class OverflowMenuComponentModule {}\n","import { NgModule } from '@angular/core';\nimport { PromptComponent } from './prompt.component';\nimport { FieldComponentModule } from '@testgorilla/tgo-ui/components/field';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { OverflowMenuComponentModule } from '../overflow-menu/overflow-menu.component.module';\nimport { TagComponentModule } from '@testgorilla/tgo-ui/components/tag';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { CardComponentModule } from '@testgorilla/tgo-ui/components/card';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n\n@NgModule({\n declarations: [PromptComponent],\n imports: [\n CommonModule,\n FieldComponentModule,\n ButtonComponentModule,\n OverflowMenuComponentModule,\n TagComponentModule,\n BadgeComponentModule,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n CardComponentModule,\n CdkTextareaAutosize,\n TooltipComponentModule,\n MatTooltip,\n UiTranslatePipe,\n ],\n exports: [PromptComponent],\n})\nexport class PromptModule {}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { SnackbarLink, SnackbarType, SnackbarVariant } from '../../components/snackbar/snackbar.model';\nimport { alertBarsUtil } from '../../utils/alert-bars.utils';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { LinkTargetType } from '../alert-banner/alert-banner.model';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'ui-snackbar',\n templateUrl: './snackbar.component.html',\n styleUrls: ['./snackbar.component.scss'],\n animations: [\n trigger('openClose', [\n transition(':enter', [\n style({ bottom: '-55px', opacity: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, bottom: '10px' })),\n ]),\n transition(':leave', [\n style({ bottom: '10px', opacity: 1 }),\n animate('0.2s ease-in', style({ bottom: '-55px', opacity: 0 })),\n ]),\n ]),\n ],\n standalone: false\n})\nexport class SnackbarComponent implements OnInit {\n /**\n * Background color of the button while in active state\n *\n * @type {SnackbarType}\n * @memberof SnackbarComponent\n */\n @Input() snackbarType: SnackbarType = 'success';\n\n /**\n * Snackbar message\n *\n * @memberof SnackbarComponent\n */\n @Input() message = '';\n\n /**\n * Snackbar message from html\n *\n * @memberof SnackbarComponent\n */\n @Input() set html(value: string) {\n if (value) {\n this.safeHtml = this.domSanitizer.bypassSecurityTrustHtml(value);\n }\n }\n\n /**\n * Set the time that the snackbar will be visible\n *\n * @memberof SnackbarComponent\n */\n @Input() seconds = 5;\n\n /**\n * Include dismmiss button\n *\n * @memberof SnackbarComponent\n */\n @Input() includeDismissButton = true;\n\n /**\n * Static or fixed position\n *\n * @memberof SnackbarComponent\n */\n @Input() fixed = true;\n\n /**\n * Link text that will appended at the end of message\n *\n * @memberof AlertBannerComponent\n */\n @Input() linkText? = '';\n\n /**\n * Link url\n *\n * @memberof AlertBannerComponent\n */\n @Input() linkUrl?: string;\n\n /**\n * Link target\n *\n * @type {@type {LinkTargetType}}\n * @memberof AlertBannerComponent\n */\n @Input() linkTarget?: LinkTargetType = '_blank';\n\n /**\n * The variant to be used\n *\n * @type {SnackbarVariant}\n * @memberof SnackbarComponent\n */\n @Input() variant: SnackbarVariant = 'desktop';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SnackbarComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Close button tooltip\n *\n * @type {string}\n * @memberof SnackbarComponent\n */\n @Input() closeButtonTooltip = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof SnackbarComponent\n */\n @Input() ariaDescribedby = '';\n\n iconName: IconName;\n showSnackbar = true;\n milisenconds: number;\n visible = false;\n timer?: number;\n timerStartedAt = 0;\n timerPausedAt = 0;\n position: string;\n safeHtml: SafeHtml;\n\n translationContext = 'SNACKBAR.';\n protected readonly maxCharacters = 70;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(MAT_SNACK_BAR_DATA)\n private data: {\n snackbarType: SnackbarType;\n message: string;\n link?: SnackbarLink;\n applicationTheme?: ApplicationTheme;\n html?: string;\n seconds?: number;\n },\n private snackbarRef: MatSnackBarRef<SnackbarComponent>,\n private domSanitizer: DomSanitizer\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n this.snackbarType = data.snackbarType ?? 'success';\n this.message = data.message ?? '';\n this.safeHtml = data.html ? this.domSanitizer.bypassSecurityTrustHtml(data.html) : '';\n this.linkText = data.link?.text ?? '';\n this.linkUrl = data.link?.url ?? '';\n this.seconds = data.seconds ?? 5;\n }\n\n ngOnInit(): void {\n this.milisenconds = this.seconds * 1000;\n this.iconName = alertBarsUtil.setIcon(this.snackbarType);\n this.show();\n this.position = alertBarsUtil.setPosition(this.fixed);\n }\n\n //Show snackbar\n show() {\n this.timerStartedAt = Date.now();\n this.visible = true;\n this.timer = window.setTimeout(() => this.hide(), this.milisenconds);\n }\n\n //Hide snackbar\n hide() {\n this.visible = false;\n this.timerPausedAt = 0;\n this.timerStartedAt = 0;\n clearTimeout(this.timer);\n this.timer = undefined;\n this.dismissSnackbar();\n }\n\n //Pause timer when mouse enter\n onMouseEnter() {\n this.visible = true;\n this.timerPausedAt = Date.now();\n clearTimeout(this.timer);\n }\n\n //Continue timer when mouse leave\n onMouseLeave() {\n const diff = this.timerPausedAt - this.timerStartedAt;\n if (diff <= 0) {\n return this.hide();\n }\n this.timer = window.setTimeout(() => this.hide(), this.milisenconds - diff);\n }\n\n //Hide snackbar when dismiss button is clicked\n dismissClick() {\n this.visible = false;\n this.dismissSnackbar();\n }\n\n onLinkClick(event: Event): void {\n event?.preventDefault();\n\n if (this.data.link?.action) {\n this.data.link?.action();\n } else if (this.data.link?.url) {\n window.open(this.data.link?.url, '_blank');\n }\n }\n\n private dismissSnackbar(): void {\n if (Object.keys(this.snackbarRef).length > 0) {\n this.snackbarRef.dismiss();\n }\n }\n}\n","<ng-container>\n <div\n [ngClass]=\"snackbarType + ' ' + position\"\n [@openClose]\n *ngIf=\"visible\"\n class=\"snackbar-container\"\n [attr.theme]=\"applicationTheme\"\n [class.mobile]=\"variant === 'mobile'\"\n [class.desktop]=\"variant === 'desktop'\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n data-testid=\"snackbar-wrapper\"\n [attr.data-test-snackbar-type]=\"snackbarType\"\n [attr.aria-describedby]=\"'describedby'\"\n role=\"alert\"\n [attr.aria-labelledby]=\"'labelledby'\"\n >\n <span style=\"position: absolute; left: -9999px\" id=\"labelledby\">{{ ('ALERT_BANNER.' + (snackbarType | uppercase)) | uiTranslate | async }}</span>\n <span style=\"position: absolute; left: -9999px\">{{ message }}\n <a *ngIf=\"!!linkText\" [target]=\"linkTarget\" [href]=\"linkUrl\" (click)=\"onLinkClick($event)\">{{ linkText }}</a>\n </span>\n <span [style.display]=\"'none'\" id=\"describedby\">{{ ariaDescribedby }}</span>\n <div\n aria-hidden=\"true\"\n class=\"snackbar-text\"\n [matTooltip]=\"message.length > maxCharacters ? message : ''\"\n data-testid=\"snackbar-content\"\n >\n <ui-icon *ngIf=\"applicationTheme === 'classic'\" [name]=\"iconName\" size=\"24\"></ui-icon>\n {{ message.length > maxCharacters ? (message | slice: 0:maxCharacters) + '..' : message }}\n <div *ngIf=\"safeHtml\" [innerHTML]=\"safeHtml\"></div>\n <a *ngIf=\"!!linkText\" [target]=\"linkTarget\" [href]=\"linkUrl\" (click)=\"onLinkClick($event)\">{{ linkText }}</a>\n </div>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme === 'classic'\"\n variant=\"text\"\n [label]=\"(translationContext + 'DISMISS' | uiTranslate | async)!\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n (buttonClickEvent)=\"dismissClick()\"\n data-testid=\"snackbar-dismiss-button\"\n ></ui-button>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme !== 'classic'\"\n [variant]=\"'icon-button'\"\n [applicationTheme]=\"'light'\"\n [iconName]=\"'Close-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"(closeButtonTooltip || ('COMMON.CLOSE' | uiTranslate | async))!\"\n (click)=\"dismissClick()\"\n data-testid=\"snackbar-dismiss-button\"\n ></ui-button>\n </div>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { SnackbarComponent } from './snackbar.component';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { SnackbarLink, SnackbarType } from './snackbar.model';\n\n@Injectable()\nexport class SnackbarService {\n constructor(private snackBar: MatSnackBar) {}\n\n error(message: string, applicationTheme?: ApplicationTheme, html?: string, link?: SnackbarLink, seconds?: number) {\n return this.show('error', message, applicationTheme, html, link, seconds);\n }\n\n success(message: string, applicationTheme?: ApplicationTheme, html?: string, link?: SnackbarLink, seconds?: number) {\n return this.show('success', message, applicationTheme, html, link, seconds);\n }\n\n info(message: string, applicationTheme?: ApplicationTheme, html?: string, link?: SnackbarLink, seconds?: number) {\n return this.show('info', message, applicationTheme, html, link, seconds);\n }\n\n warning(message: string, applicationTheme?: ApplicationTheme, html?: string, link?: SnackbarLink, seconds?: number) {\n return this.show('warning', message, applicationTheme, html, link, seconds);\n }\n\n show(\n snackbarType: SnackbarType,\n message: string,\n applicationTheme?: ApplicationTheme,\n html?: string,\n link?: SnackbarLink,\n seconds?: number\n ) {\n const componentRef = this.snackBar.openFromComponent(SnackbarComponent, {\n data: {\n snackbarType,\n message,\n link,\n html,\n seconds,\n },\n });\n if (applicationTheme) {\n componentRef.instance.applicationTheme = applicationTheme;\n }\n return componentRef;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SnackbarComponent } from './snackbar.component';\nimport { SnackbarService } from './snackbar.service';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [SnackbarComponent],\n imports: [CommonModule, ButtonComponentModule, IconComponentModule, UiTranslatePipe, MatSnackBarModule, MatTooltipModule],\n exports: [SnackbarComponent],\n providers: [SnackbarService],\n})\nexport class SnackbarComponentModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n// TODO: Check type (backend could return a number)\ntype DataPropertyGetterType = string;\n\n@Pipe({\n name: 'dataPropertyGetter',\n standalone: true,\n})\nexport class DataPropertyGetterPipe implements PipeTransform {\n transform(obj: object, keyName: string = '') {\n return this.getDeepVal(obj, keyName);\n }\n\n private getDeepVal(obj: any, path: string) {\n if (typeof obj === 'undefined' || obj === null) {\n return '';\n }\n const splittedPath = path.split(/[\\.\\[\\]\\\"\\']{1,2}/);\n for (let i = 0, l = splittedPath.length; i < l; i++) {\n if (splittedPath[i] === '') {\n continue;\n }\n obj = obj[splittedPath[i]];\n if (typeof obj === 'undefined' || obj === null) {\n return '';\n }\n }\n return obj;\n }\n}\n","import { Component, Inject, Input, Optional } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ConfirmDialogData } from './confirm-dialog.model';\n\n@Component({\n selector: 'ui-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n standalone: false\n})\nexport class ConfirmDialogComponent {\n confirmMessage: string | undefined;\n confirmButtonText: string | undefined;\n cancelButtonText: string | undefined;\n title: string | undefined;\n lang = LanguageService.defaultLanguage;\n confirmMessageHtml: SafeHtml | undefined;\n showCloseButton = false;\n showSecondaryButton = true;\n color: string | null;\n primaryButtonType: ButtonColor;\n secondaryButtonType: ButtonColor;\n primaryButtonIconName: IconName | undefined;\n primaryButtonDataTestId = 'confirm-dialog.confirm-button';\n secondaryButtonDataTestId = 'confirm-dialog.cancel-button';\n primaryButtonIconPosition: ButtonIconPosition;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\n @Inject(MAT_DIALOG_DATA) private data: ConfirmDialogData,\n protected domSanitizer: DomSanitizer\n ) {\n this.confirmMessage = data.message;\n this.confirmButtonText = data.confirmButtonText;\n this.cancelButtonText = data.cancelButtonText;\n this.title = data.title;\n this.lang = data.language ?? LanguageService.defaultLanguage;\n this.confirmMessageHtml = data.messageHtml\n ? this.domSanitizer.bypassSecurityTrustHtml(data.messageHtml)\n : undefined;\n this.showCloseButton = data.showCloseButton ?? false;\n this.showSecondaryButton = data.showSecondaryButton ?? true;\n this.color = data.color ?? null;\n this.primaryButtonType = data.primaryButtonType ?? 'primary';\n this.secondaryButtonType = data.secondaryButtonType ?? 'ghost';\n this.primaryButtonIconName = data.primaryButtonIconName ?? undefined;\n this.primaryButtonDataTestId = data.primaryButtonDataTestId ?? 'confirm-dialog.confirm-button';\n this.secondaryButtonDataTestId = data.secondaryButtonDataTestId ?? 'confirm-dialog.cancel-button';\n this.primaryButtonIconPosition = data.primaryButtonIconPosition ?? 'left';\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n onConfirm(): void {\n if (this.data.onConfirm) {\n this.data.onConfirm();\n }\n this.dialogRef.close(true);\n }\n}\n","<ng-container>\n <ui-dialog\n [title]=\"title ?? ('COMMON.CONFIRM' | uiTranslate | async)!\"\n [primaryButtonLabel]=\"confirmButtonText ?? ('COMMON.YES' | uiTranslate | async)!\"\n [secondaryButtonLabel]=\"\n showSecondaryButton ? cancelButtonText ?? ('COMMON.CANCEL' | uiTranslate | async)! : undefined\n \"\n (primaryButtonClickEvent)=\"onConfirm()\"\n (secondaryButtonClickEvent)=\"dialogRef.close(false)\"\n (closeEvent)=\"dialogRef.close(null)\"\n [primaryButtonType]=\"primaryButtonType\"\n [primaryButtonIconName]=\"primaryButtonIconName\"\n [secondaryButtonType]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [showCloseButton]=\"showCloseButton\"\n [companyColor]=\"color\"\n [primaryButtonDataTestId]=\"primaryButtonDataTestId\"\n [secondaryButtonDataTestId]=\"secondaryButtonDataTestId\"\n [primaryButtonIconPosition]=\"primaryButtonIconPosition\"\n >\n <div class=\"message\">{{ confirmMessage }}</div>\n @if (confirmMessageHtml) {\n <div class=\"message\" [innerHTML]=\"confirmMessageHtml\"></div>\n }\n </ui-dialog>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DialogComponentModule } from '../dialog/dialog.component.module';\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [ConfirmDialogComponent],\n exports: [ConfirmDialogComponent],\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: {} },\n { provide: MatDialogRef, useValue: {} },\n ],\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, DialogComponentModule, UiTranslatePipe]\n})\nexport class ConfirmDialogComponentModule {}\n","/**\n * Function for adjusting the lightness of a color based on different events (hover, pressed, disabled).\n * Accepts a hex color, transforms it to HSL, and based on color's L and event darkens or lightens it.\n * Used to manage different colors based on application configuration\n *\n * @param hexColor color in hex format\n * @param typeEvent interaction event\n * @param theme\n */\nexport const adjustLightness = (hexColor: string, typeEvent: 'hover' | 'pressed' | 'disabled', theme: 'new' | 'classic' = 'new'): string => {\n const hexRegex = /^#([0-9A-F]{3}){1,2}$/i;\n if (hexColor && !hexRegex.test(hexColor)) {\n throw new Error('Invalid HEX color format');\n }\n\n const hslColor = hexToHsl(hexColor);\n const lightness = hslColor.l * 100;\n\n if (theme === 'new') {\n if (lightness > 70 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness < 30 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 70 && lightness > 30 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n }\n } else {\n if (lightness > 70 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness < 30 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness > 70 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l - 20 / 100);\n } else if (lightness < 30 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l + 30 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l - 20 / 100);\n } else if (lightness > 70 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 30 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 50 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 20 / 100);\n }\n }\n\n return hslToHex(hslColor);\n};\n\n/**\n * Transforms hex color to HSL in object variation.\n * @param hexColor string value with hex color\n */\nexport const hexToHsl = (hexColor: string): { h: number; s: number; l: number } => {\n const rgbColor = parseInt(hexColor.slice(1), 16);\n const r = ((rgbColor >> 16) & 255) / 255;\n const g = ((rgbColor >> 8) & 255) / 255;\n const b = (rgbColor & 255) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h = 0;\n let s;\n const l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // grayscale\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h, s, l };\n};\n\n/**\n * Transforms HSL color, represented as an object and transforms it to hex string.\n * @param hslColor accepts the HSL color like an object.\n */\nexport const hslToHex = (hslColor: { h: number; s: number; l: number }): string => {\n const { h, s, l } = hslColor;\n\n const hueToRgb = (p: number, q: number, t: number): number => {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n const r = hueToRgb(p, q, h + 1 / 3);\n const g = hueToRgb(p, q, h);\n const b = hueToRgb(p, q, h - 1 / 3);\n\n const rgbColor = (Math.round(r * 255) << 16) | (Math.round(g * 255) << 8) | Math.round(b * 255);\n\n return `#${rgbColor.toString(16).padStart(6, '0')}`;\n};\n\n/**\n * Restricts the value to be within the range [0, 1].\n * @param value\n */\nconst clamp = (value: number): number => Math.min(Math.max(value, 0), 1);\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatepickerService {\n #useBrowserTimezone = false;\n\n set useBrowserTimezone(value: boolean) {\n this.#useBrowserTimezone = value;\n }\n\n get useBrowserTimezone(): boolean {\n return this.#useBrowserTimezone;\n }\n}\n","import { NativeDateAdapter } from '@angular/material/core';\nimport { inject, Injectable } from '@angular/core';\nimport { DatepickerService } from './datepicker.service';\nimport { formatDate } from '@angular/common';\n\nexport const UI_DATE_FORMATS = {\n parse: {\n dateInput: { day: 'numeric', month: 'numeric', year: 'numeric' },\n },\n display: {\n dateInput: 'input',\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n },\n};\n\n@Injectable()\nexport class UiDateAdapter extends NativeDateAdapter {\n #datepickerService = inject(DatepickerService);\n\n constructor() {\n super();\n }\n\n override format(date: Date): string {\n if (!this.#datepickerService.useBrowserTimezone) {\n return formatDate(date, 'MM/dd/yyyy', 'en-US');\n }\n\n const locale = navigator.language;\n const options: Partial<Intl.DateTimeFormatOptions> = {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n dateStyle: 'short',\n };\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n}\n","import { formatDate } from '@angular/common';\nimport { Directive, Injectable } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats, NativeDateAdapter } from '@angular/material/core';\n\n@Injectable()\nexport class CustomDateAdapter extends NativeDateAdapter {\n override format(date: Date): string {\n return formatDate(date, 'MM/yyyy', 'en-US');\n }\n}\n\nconst FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'MM/YYYY',\n },\n display: {\n dateInput: 'MM/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n\n@Directive({\n selector: '[appNoDateFormat]',\n providers: [\n {\n provide: DateAdapter,\n useClass: CustomDateAdapter,\n },\n {\n provide: MAT_DATE_FORMATS,\n useValue: FORMATS,\n },\n ],\n standalone: true,\n})\nexport class NoDateFormatDirective {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'hasValidationError',\n standalone: true,\n})\nexport class HasValidationErrorPipe implements PipeTransform {\n /**\n * List of the error types that are handled\n */\n private readonly errorTypes = ['maxlength', 'minlength', 'min', 'max', 'required', 'email'];\n\n /**\n * Checks if the error on the NgControl is in the list of handled error types\n * @param value\n */\n transform(value: Record<string, any> | null | undefined): boolean {\n return value ? !!Object.keys(value).filter(key => this.errorTypes.includes(key)).length : false;\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewEncapsulation,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl } from '@angular/forms';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { MatDatepicker } from '@angular/material/datepicker';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { adjustLightness } from '../../utils/color-contrast';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { UI_DATE_FORMATS, UiDateAdapter } from './date-adapter';\nimport { DatepickerService } from './datepicker.service';\n\n@Component({\n selector: 'ui-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: DateAdapter, useClass: UiDateAdapter },\n { provide: MAT_DATE_FORMATS, useValue: UI_DATE_FORMATS },\n ],\n standalone: false\n})\n// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\nexport class DatepickerComponent implements OnChanges, ControlValueAccessor, DoCheck, OnInit {\n @HostBinding() class = 'ui-datepicker';\n\n /**\n * Form field label\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() label? = '';\n\n /**\n * Input name attribute\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() fieldName?: string;\n\n /**\n * Input placeholder\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() placeholder? = '';\n\n /**\n * Input id\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() id? = '';\n\n /**\n * Input value\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() value?: Array<Date | null> | Date;\n\n _errors: SafeHtml[];\n /**\n * Input field errors\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() set errors(errors: string[]) {\n this._errors = errors?.filter(Boolean).map(error => this.sanitizer.bypassSecurityTrustHtml(error));\n this.errorsLength = this.setErrorsLength();\n }\n\n /**\n * Determines if input is date range\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() isRange: boolean;\n\n /**\n * Determines if on blur of calendar and no end date is selected, set the end date as the start date\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() setSingleDateRangeOnBlur: boolean;\n\n /**\n * Determines if inner errors should be shown\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() showInnerErrors: boolean;\n\n /**\n * Determines inner errors message\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() innerErrorsMessage: string;\n\n /**\n * Determines if input is disabled\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() disabled: boolean;\n\n /**\n * Input is required or not\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() required: boolean;\n\n /**\n * Hint text\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() hintMessage: string;\n\n /**\n * Input is update only on blur\n *\n * @type {Boolean}\n * @memberof DatepickerComponent\n */\n @Input() updateOnBlur = false;\n\n /**\n * Show reserved content below form field\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() showBottomContent = true;\n\n /**\n * Set full width DatepickerComponent\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() fullWidth = false;\n\n /**\n * Set min date for Datepicker\n *\n * @type {Date}\n * @memberof DatepickerComponent\n */\n @Input() minDate: Date | undefined;\n\n /**\n * Set max date for Datepicker\n *\n * @type {Date}\n * @memberof DatepickerComponent\n */\n @Input() maxDate: Date | undefined;\n\n /**\n * Show and pick date without day\n * @default false\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() monthPicker = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DatepickerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Hide in-build errors for Reactive Forms\n *\n * @type {number}\n * @memberof DatepickerComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof DatepickerComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * Prevent user input\n *\n * @type {boolean}\n * @memberof DatepickerComponent\n */\n @Input() preventUserInput = false;\n\n /**\n * Color of the option hover.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DatepickerComponent\n */\n @Input() companyColor = '';\n\n /**\n * Use browser timezone\n * @type boolean\n * @memberof DatepickerComponent\n */\n @Input() set browserTimezone(value: boolean) {\n this.datepickerService.useBrowserTimezone = value;\n }\n\n /**\n * @ignore\n */\n onChange = (_: any) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n /**\n * Event emitted when the value is change - when used outside of form\n *\n * @type {Date}\n * @memberof DatepickerComponent\n */\n @Output() changed = new EventEmitter<Date | Date[]>();\n\n range = new FormGroup({\n start: new FormControl<Date | null>(null),\n end: new FormControl<Date | null>(null),\n });\n\n errorsLength: boolean;\n protected translationContext = 'DATEPICKER.';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private cdr: ChangeDetectorRef,\n private sanitizer: DomSanitizer,\n @Optional() @Self() public ngControl: NgControl,\n private datepickerService: DatepickerService,\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n get hint(): string {\n if (this.hintMessage === undefined) {\n return this.isRange ? 'MM/DD/YYYY - MM/DD/YYYY' : this.monthPicker ? 'MM/YYYY' : 'MM/DD/YYYY';\n }\n\n return this.hintMessage;\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnInit() {\n document.body.setAttribute('theme', this.applicationTheme);\n this.setStyleVariable();\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnChanges(changes: SimpleChanges): void {\n if (this.isRange) {\n this.setRange();\n }\n if (changes['companyColor']) {\n this.setStyleVariable();\n }\n }\n\n // Set errors length for validation\n // Consider only those errors which are not empty\n setErrorsLength(): boolean {\n if (!!this._errors) {\n return this._errors.filter(err => !!err).length > 0 ? true : false;\n }\n return false;\n }\n\n onValueChange(value: Date | Date[]) {\n this.writeValue(value);\n this.errorsLength = this.setErrorsLength();\n if (!this.updateOnBlur) {\n this.onTouch();\n }\n this.onChange(value);\n this.changed.emit(value);\n }\n\n writeValue(value?: Date | Date[]): void {\n this.value = value;\n if (this.isRange) {\n this.setRange();\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n handleCloseRangePicker(): void {\n if (this.setSingleDateRangeOnBlur) {\n this.fillSingleDateRange(true);\n }\n }\n\n fillSingleDateRange(isStart: boolean): void {\n const { start, end } = this.range.controls;\n const sourceControl = isStart ? start : end;\n const targetControl = isStart ? end : start;\n\n if (sourceControl.value && !targetControl.value) {\n targetControl.setValue(sourceControl.value);\n this.dateRangeChange();\n }\n }\n\n dateRangeChange() {\n const start = this.range.controls.start.value!;\n const end = this.range.controls.end.value!;\n this.onValueChange([start ? new Date(start) : start, end ? new Date(end) : end] as Date[]);\n }\n\n setMonthAndYear(normalizedMonthAndYear: any, datepicker: MatDatepicker<Date>) {\n const ctrlValue = (this.value as Date) || new Date();\n\n ctrlValue.setMonth(normalizedMonthAndYear.getMonth());\n ctrlValue.setFullYear(normalizedMonthAndYear.getFullYear());\n\n datepicker.close();\n\n this.onValueChange(new Date(ctrlValue));\n }\n\n private setRange() {\n if (Array.isArray(this.value)) {\n const [start, end] = this.value;\n\n if (start && String(this.range.controls.start.value) !== String(start)) {\n this.range.controls.start.setValue(new Date(start));\n }\n\n if (end && String(this.range.controls.end.value) !== String(end)) {\n this.range.controls.end.setValue(new Date(end));\n }\n }\n\n if (!this.value) {\n this.range.controls.start.setValue(null);\n this.range.controls.end.setValue(null);\n }\n }\n\n onInput(event: Event) {\n const target = event.target as EventTarget & { value: string };\n const [month, year] = target.value.split('/');\n const date = new Date().getDate();\n const fullDateString = `${month}/${date}/${year}`;\n const fullDate = new Date(fullDateString);\n this.onValueChange(fullDate);\n }\n\n private setStyleVariable() {\n const hover = this.companyColor ? adjustLightness(this.companyColor, 'hover') : '#FFF2FC';\n document.body.style.setProperty('--datepicker-hover-color', hover);\n document.body.style.setProperty('--datepicker-selected-color', `${this.companyColor || '#D410AA'}`);\n }\n}\n","@if (monthPicker) {\n <mat-form-field\n appNoDateFormat\n appearance=\"outline\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) ? 'warn' : 'accent'\"\n [ngClass]=\"{ 'hide-bottom-content': !showBottomContent, 'full-width': fullWidth }\"\n >\n <mat-label *ngIf=\"label\">\n <ng-container [ngTemplateOutlet]=\"labelTpl\"></ng-container>\n </mat-label>\n\n <input\n matInput\n [id]=\"id!\"\n (blur)=\"onTouch()\"\n [placeholder]=\"placeholder!\"\n [matDatepicker]=\"dp\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"fieldName!\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [readonly]=\"preventUserInput\"\n (change)=\"onInput($event)\"\n (dateChange)=\"onValueChange($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"dp\">\n <ui-icon\n matDatepickerToggleIcon\n [applicationTheme]=\"applicationTheme\"\n name=\"Calendar\"\n size=\"24\"\n color=\"inherit\"\n ></ui-icon>\n </mat-datepicker-toggle>\n <mat-datepicker\n panelClass=\"month-picker\"\n #dp\n startView=\"multi-year\"\n (monthSelected)=\"setMonthAndYear($event, dp)\"\n ></mat-datepicker>\n\n <mat-hint class=\"info\" *ngIf=\"hint && !_errors && !(ngControl?.touched && (ngControl?.errors | hasValidationError))\"\n >{{ hint }}\n </mat-hint>\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.touched && (ngControl?.errors | hasValidationError))\">\n <ng-container [ngTemplateOutlet]=\"hintsTpl\"></ng-container>\n </mat-hint>\n </mat-form-field>\n} @else {\n @if (isRange) {\n <mat-form-field\n appearance=\"outline\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) ? 'warn' : 'accent'\"\n [ngClass]=\"{ 'hide-bottom-content': !showBottomContent, 'full-width': fullWidth }\"\n class=\"range-datepicker\"\n >\n <mat-label *ngIf=\"label\">\n <ng-container [ngTemplateOutlet]=\"labelTpl\"></ng-container>\n </mat-label>\n\n <mat-date-range-input [formGroup]=\"range\" [rangePicker]=\"rangePicker\" [min]=\"minDate\" [max]=\"maxDate\">\n <input\n matStartDate\n formControlName=\"start\"\n [placeholder]=\"translationContext + 'START_DATE' | uiTranslate | async\"\n (dateChange)=\"dateRangeChange()\"\n (blur)=\"setSingleDateRangeOnBlur && fillSingleDateRange(true)\"\n />\n <input\n matEndDate\n formControlName=\"end\"\n [placeholder]=\"translationContext + 'END_DATE' | uiTranslate | async\"\n (dateChange)=\"dateRangeChange()\"\n (blur)=\"setSingleDateRangeOnBlur && fillSingleDateRange(false)\"\n />\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"rangePicker\">\n <ui-icon\n matDatepickerToggleIcon\n [applicationTheme]=\"applicationTheme\"\n name=\"Calendar\"\n size=\"24\"\n color=\"inherit\"\n ></ui-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #rangePicker (closed)=\"handleCloseRangePicker()\"></mat-date-range-picker>\n\n <mat-hint\n class=\"info\"\n *ngIf=\"\n hint &&\n !_errors &&\n !(ngControl?.touched && (ngControl?.errors | hasValidationError)) &&\n !(range?.invalid && showInnerErrors)\n \"\n >{{ hint }}\n </mat-hint>\n <mat-hint\n class=\"error\"\n *ngIf=\"\n errorsLength ||\n (ngControl?.touched && (ngControl?.errors | hasValidationError)) ||\n (range?.invalid && showInnerErrors)\n \"\n >\n <ng-container [ngTemplateOutlet]=\"hintsTpl\"></ng-container>\n </mat-hint>\n </mat-form-field>\n } @else {\n <mat-form-field\n appearance=\"outline\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) ? 'warn' : 'accent'\"\n [ngClass]=\"{ 'hide-bottom-content': !showBottomContent, 'full-width': fullWidth }\"\n >\n <mat-label *ngIf=\"label\">\n <ng-container [ngTemplateOutlet]=\"labelTpl\"></ng-container>\n </mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n (blur)=\"onTouch()\"\n (dateChange)=\"onValueChange($event.value)\"\n [id]=\"id!\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"fieldName!\"\n [readonly]=\"preventUserInput\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\">\n <ui-icon\n matDatepickerToggleIcon\n [applicationTheme]=\"applicationTheme\"\n name=\"Calendar\"\n size=\"24\"\n color=\"inherit\"\n ></ui-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n\n <mat-hint\n class=\"info\"\n *ngIf=\"hint && !_errors && !(ngControl?.touched && (ngControl?.errors | hasValidationError))\"\n >{{ hint }}\n </mat-hint>\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.touched && (ngControl?.errors | hasValidationError))\">\n <ng-container [ngTemplateOutlet]=\"hintsTpl\"></ng-container>\n </mat-hint>\n </mat-form-field>\n }\n}\n\n<ng-template #labelTpl>{{ label }}<span *ngIf=\"required\"> *</span></ng-template>\n<ng-template #hintsTpl>\n @if (errorsLength) {\n <div class=\"errors\" *ngFor=\"let error of _errors\">\n <ui-icon [applicationTheme]=\"applicationTheme\" name=\"Error\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n }\n @if (ngControl && !hideBuiltInErrors) {\n <ui-validation-error [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\"></ui-validation-error>\n }\n @if (showInnerErrors) {\n @if (isRange) {\n <div class=\"errors\">\n <ui-icon [applicationTheme]=\"applicationTheme\" name=\"Error\"></ui-icon>\n <span [innerHTML]=\"innerErrorsMessage\"></span>\n </div>\n }\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DatepickerComponent } from './datepicker.component';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { NoDateFormatDirective } from './no-date-format.directive';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\n\n@NgModule({\n declarations: [DatepickerComponent],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n FormsModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n MatNativeDateModule,\n UiTranslatePipe,\n NoDateFormatDirective,\n HasValidationErrorPipe,\n ValidationErrorModule,\n ],\n exports: [DatepickerComponent],\n})\nexport class DatepickerComponentModule {}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ScaleComponentModule } from '@testgorilla/tgo-ui/components/scale';\nimport { ScaleItem } from './scale-table.model';\n\n@Component({\n selector: 'ui-scale-table',\n templateUrl: './scale-table.component.html',\n styleUrls: ['./scale-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [UiTranslatePipe, ScaleComponentModule, AsyncPipe, IconComponentModule, ButtonComponentModule],\n host: {\n '[style.--scale-count]': 'scaleCount()',\n }\n})\nexport class ScaleTableComponent {\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof ScaleTableComponent\n */\n public applicationTheme = input<ApplicationTheme>('light');\n\n /**\n *\n * Defines items with their text and it's values\n *\n * @type {ScaleTable}\n * @memberof ScaleTableComponent\n */\n public scaleItems = model.required<ScaleItem[]>();\n\n /**\n *\n * Defines description of scales\n *\n * @type {string[]}\n * @memberof ScaleTableComponent\n */\n public labels = input.required<string[]>();\n public hideBetterExperience = model(false);\n public scaleItemChange = output<{\n item: ScaleItem;\n label: string;\n }>();\n scaleCount = computed(() => this.labels().length);\n\n protected readonly translationContext = 'SCALE_TABLE.';\n\n public select(scaleItemIndex: number, scaleIndex: number): void {\n this.scaleItems.update(items => {\n items[scaleItemIndex].value = scaleIndex;\n this.scaleItemChange.emit({\n item: items[scaleItemIndex],\n label: this.labels()[scaleIndex],\n });\n return [...items];\n });\n }\n}\n","<div class=\"scale-table\">\n <div class=\"better-experience\" [class.hide]=\"hideBetterExperience()\">\n <ui-icon [size]=\"'24'\" [name]=\"'Device-rotate-in-line'\" class=\"mobile-landscape-icon\" />\n <p>{{ 'SCALE_TABLE.ROTATE_DEVICE' | uiTranslate | async }}</p>\n <ui-button\n iconName=\"Close\"\n variant=\"icon-button\"\n size=\"small\"\n [justIcon]=\"true\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"hideBetterExperience.set(true)\"\n />\n </div>\n <!-- Header -->\n <div tabindex=\"0\" [attr.aria-label]=\"'scale header'\" class=\"scale-table-header\">\n @for (label of labels(); track $index) {\n <div tabindex=\"0\" role=\"heading\" [attr.aria-label]=\"label + ' as ' + ($index + 1)\" class=\"scale-size\">\n {{ label }}\n </div>\n }\n </div>\n <!-- Scale Items -->\n @for (scale of scaleItems(); track scale.text) {\n <div class=\"scale-table-row\" tabindex=\"0\" role=\"radiogroup\" [attr.aria-label]=\"scale.text\">\n <div class=\"scale-text\">{{ scale.text }}</div>\n <ui-scale\n [selectedIndex]=\"scale.value ?? null\"\n [length]=\"scale.length ?? labels().length\"\n [applicationTheme]=\"applicationTheme()\"\n (selectedIndexChange)=\"select($index, $event)\"\n />\n </div>\n }\n</div>\n","import { inject, InjectionToken } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { map } from 'rxjs';\nimport { ScreenBreakpoints } from '../models/screen-breakpoints.model';\n\nexport const IS_MOBILE_TOKEN = new InjectionToken('Is mobile', {\n factory: () => {\n const breakpointObserver = inject(BreakpointObserver);\n return breakpointObserver.observe(`(max-width: ${ScreenBreakpoints.MOBILE}px)`).pipe(map(v => v.matches));\n },\n});\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { map } from 'rxjs';\r\nimport { ScreenBreakpoints } from '../models/screen-breakpoints.model';\r\n\r\nexport const IS_LARGE_TABLET_TOKEN = new InjectionToken('Is large tablet', {\r\n factory: () => {\r\n const breakpointObserver = inject(BreakpointObserver);\r\n return breakpointObserver.observe(`(max-width: ${ScreenBreakpoints.LARGE_TABLET}px)`).pipe(map(v => v.matches));\r\n },\r\n});\r\n","export enum IKeyboardEvent {\n ENTER = 'Enter',\n SPACE = ' ',\n ARROW_DOWN = 'ArrowDown',\n ARROW_UP = 'ArrowUp',\n ESCAPE = 'Escape',\n HOME = 'Home',\n END = 'End',\n PAGE_UP = 'PageUp',\n PAGE_DOWN = 'PageDown',\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output, signal,\n TemplateRef, ViewChild,\n} from '@angular/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { HtmlDescription, StepperPosition, StepperVariation } from '../stepper/stepper.model';\nimport { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { IKeyboardEvent } from \"../../models/keyboard-events.model\";\nimport { TooltipPositionType } from '@testgorilla/tgo-ui/components/tooltip';\n\n@Component({\n selector: 'ui-step',\n templateUrl: './step.component.html',\n styleUrls: ['./step.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class StepComponent implements AfterViewInit {\n /**\n * Input property for the label of the step.\n *\n * @memberof StepComponent\n */\n @Input() label: string;\n\n /**\n * Input property indicating whether the step has been visited.\n *\n * @memberof StepComponent\n */\n @Input() isVisited: boolean;\n\n /**\n * Input property indicating whether the form has been submitted.\n *\n * @memberof StepComponent\n */\n @Input() submitted: boolean;\n\n /**\n * Input property for the icon associated with the step.\n *\n * @memberof StepComponent\n */\n @Input() icon: IconName | undefined = '';\n\n /**\n * Input property for the index of the step.\n *\n * @memberof StepComponent\n */\n @Input() index: number;\n\n /**\n * Input property indicating whether the step is currently selected.\n *\n * @memberof StepComponent\n */\n @Input() selected: boolean;\n\n /**\n * Input property indicating whether the step is the last step in the stepper.\n *\n * @memberof StepComponent\n */\n @Input() isLast: boolean;\n\n /**\n * Input property indicating the selected index in the stepper.\n *\n * @memberof StepComponent\n */\n @Input() selectedIndex: number;\n\n /**\n * Input property indicating whether the step is disabled.\n *\n * @memberof StepComponent\n */\n @Input() disabled = false;\n\n /**\n * Input property indicating whether the previous step has been visited.\n *\n * @memberof StepComponent\n */\n @Input() prevStepIsVisited: boolean | undefined = false;\n\n /**\n * Input property indicating whether the component is in mobile mode.\n *\n * @memberof StepComponent\n */\n @Input() mobileMode = false;\n\n /**\n * Input property indicating whether the component is in large tablet mode.\n *\n * @memberof StepComponent\n */\n @Input() largeTabletMode: boolean | null = false;\n\n /**\n * Input property indicating whether the final icon should be displayed.\n *\n * @memberof StepComponent\n */\n @Input() finalIcon = false;\n\n /**\n * Input property indicating to display icon when step is selected.\n *\n * @memberof StepComponent\n */\n @Input() showIconWhenSelected = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof StepComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Defines the stepper position\n *\n * @type {StepperPosition}\n * @memberof StepComponent\n */\n @Input() position: StepperPosition;\n\n /**\n *\n * Step description\n *\n * @type {HtmlDescription[]}\n * @memberof StepComponent\n */\n @Input() htmlDescription: HtmlDescription[] = [];\n\n /**\n *\n * Sets bold font weight for label\n *\n * @type {boolean}\n * @memberof StepComponent\n */\n @Input() boldLabel = false;\n\n /**\n *\n * Template for the step description\n *\n * @type {TemplateRef}\n * @memberof StepComponent\n */\n @Input() descriptionTpl?: TemplateRef<any>;\n\n /**\n *\n * Tooltip for the step label\n *\n * @type {string}\n * @memberof StepComponent\n */\n @Input() labelTooltip?: string;\n\n /**\n *\n * Always show step icon instead of number\n *\n * @type {boolean}\n * @memberof StepComponent\n */\n @Input() alwaysShowIcon = false;\n\n /**\n *\n * Context for the step template\n *\n * @type {any}\n * @memberof StepComponent\n */\n @Input() context: any;\n\n /**\n * A string representing the step variant.\n * This attribute is used to indicate the variant that should be used.\n * @type {string}\n * @memberof StepComponent\n */\n @Input() stepVariant: StepperVariation = 'primary';\n\n /**\n * Event emitted when the step was clicked.\n * @type {number}\n * @memberof StepComponent\n */\n @Output() stepSelected = new EventEmitter<number>();\n\n @ViewChild('step') stepElement: ElementRef<HTMLElement>;\n\n protected readonly TooltipPositionType = TooltipPositionType;\n\n protected keyboardFocused = signal(false);\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private focusMonitor: FocusMonitor,\n private destroyRef: DestroyRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngAfterViewInit() {\n this.subscriberFocus();\n }\n\n protected get hasLastStepDefaultIcon(): boolean {\n return !this.showIconWhenSelected || (this.showIconWhenSelected && !this.selected);\n }\n\n protected onStepSelected(index: number): void {\n if (!this.disabled) {\n this.stepSelected.emit(index);\n }\n }\n\n protected subscriberFocus(): void {\n this.focusMonitor.monitor(this.stepElement.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin => this.keyboardFocused.set(origin === 'keyboard'));\n }\n\n onKeydown($event: KeyboardEvent): void {\n if ($event.key === IKeyboardEvent.ENTER || $event.key === IKeyboardEvent.SPACE) {\n this.onStepSelected(this.index);\n } else if ($event.key === IKeyboardEvent.ARROW_UP) {\n const prevIndex = this.index - 1;\n const prevElement = document.getElementById(`step-${prevIndex}`);\n\n if (!prevElement) {\n return;\n }\n this.focusMonitor.focusVia(prevElement, 'keyboard');\n } else if ($event.key === IKeyboardEvent.ARROW_DOWN) {\n const nextIndex = this.index + 1;\n const nextElement = document.getElementById(`step-${nextIndex}`);\n\n if (!nextElement) {\n return;\n }\n this.focusMonitor.focusVia(nextElement, 'keyboard');\n }\n }\n}\n","@if (!mobileMode) {\n <ui-tooltip [message]=\"(stepVariant === 'secondary') && largeTabletMode ? label : ''\" [position]=\"TooltipPositionType.BOTTOM\">\n <div\n class=\"step-container\"\n #step\n [tabIndex]=\"disabled? -1 : 0\"\n [ngClass]=\"{\n 'secondary-step-variant': stepVariant === 'secondary',\n 'visited-next': isVisited && index > selectedIndex,\n 'visited-prev': isVisited && index < selectedIndex,\n 'active': selected,\n 'last-step': finalIcon && hasLastStepDefaultIcon && !alwaysShowIcon,\n 'disabled': disabled,\n 'vertical': position === 'vertical',\n 'keyboard-focused': keyboardFocused()\n }\"\n [attr.theme]=\"applicationTheme\"\n (keydown.enter)=\"onStepSelected(index)\"\n (keydown.space)=\"$event.preventDefault();onStepSelected(index)\"\n (click)=\"onStepSelected(index)\"\n >\n <div class=\"step-icon\">\n @if (index && stepVariant === 'primary') {\n <div class=\"line\" [ngClass]=\"{ visited: prevStepIsVisited }\"></div>\n }\n\n <div class=\"icon-wrapper\" *ngIf=\"!finalIcon; else lastStep\">\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isVisited && !selected && !alwaysShowIcon\">\n <ui-icon\n size=\"24\"\n [name]=\"stepVariant ==='secondary' ? 'Check-small-filled' : 'Check'\"\n [color]=\"(isVisited && index < selectedIndex) || stepVariant ==='secondary' ? 'white' : applicationTheme === 'classic' ? 'petrol' : 'rebrand-black'\"\n ></ui-icon>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"(selected && !!icon) || alwaysShowIcon\">\n <ui-icon [size]=\"'24'\" [name]=\"icon!\" [color]=\"isLast && !selected ? 'rebrand-black' : 'white'\"></ui-icon>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n {{ index + 1 }}\n </ng-container>\n </ng-container>\n </div>\n\n <ng-template #lastStep>\n <img\n *ngIf=\"hasLastStepDefaultIcon && !alwaysShowIcon; else stepIcon\"\n [alt]=\"'step-finish-image'\"\n [attr.src]=\"applicationTheme === 'classic' ? '/images/step-finish.svg' : isVisited ? '/images/rebrand-last-step-icon-light.svg' : '/images/rebrand-last-step-icon-black.svg'\"\n >\n\n <ng-template #stepIcon>\n <div class=\"icon-wrapper\">\n <ui-icon *ngIf=\"icon || (icon && alwaysShowIcon); else stepIndex\" [size]=\"'24'\" [name]=\"icon\"\n [color]=\"'white'\"></ui-icon>\n <ng-template #stepIndex>\n {{ index + 1 }}\n </ng-template>\n </div>\n </ng-template>\n </ng-template>\n </div>\n\n <div class=\"steps-label\">\n @if (label) {\n <div\n class=\"step-label\"\n [ngClass]=\"{'step-bold-label': boldLabel}\"\n [matTooltip]=\"labelTooltip ?? ''\">\n {{ label }}\n </div>\n }\n\n <div class=\"step-description-container\">\n <div *ngFor=\"let description of htmlDescription\" class=\"step-description\">\n <div>{{ description.text }}</div>\n\n <ui-icon\n *ngIf=\"description.iconName\"\n [name]=\"description.iconName\"\n [size]=\"'24'\"\n [matTooltip]=\"description.iconTooltip ?? ''\"\n ></ui-icon>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"descriptionTpl\"\n [ngTemplateOutlet]=\"descriptionTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: context, label, isVisited, submitted, index, selected, isLast, selectedIndex, disabled, prevStepIsVisited, mobileMode, finalIcon, showIconWhenSelected, position }\"\n ></ng-container>\n </div>\n </div>\n </ui-tooltip>\n\n} @else {\n <div\n class=\"mobile-step-container\"\n #step\n [tabIndex]=\"disabled ? -1 : 0\"\n [ngClass]=\"{\n 'secondary-step-variant': stepVariant === 'secondary',\n 'active': selected,\n 'disabled': disabled,\n 'visited': isVisited,\n 'keyboard-focused': keyboardFocused()\n }\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onStepSelected(index)\"\n [attr.theme]=\"applicationTheme\"\n role=\"tab\"\n [attr.aria-selected]=\"selected\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n [attr.aria-controls]=\"index\"\n [id]=\"'step-'+ index\"\n >\n <div class=\"step\">\n <ng-container *ngIf=\"!finalIcon; else lastStep\">\n <div [ngSwitch]=\"true\" class=\"icon\">\n <ng-container *ngSwitchCase=\"isVisited && !selected\">\n <ui-icon [size]=\"'16'\" [name]=\"'Check'\" [color]=\"'white'\"></ui-icon>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"selected && !!icon\">\n <ui-icon [size]=\"'16'\" [name]=\"icon!\" [color]=\"'white'\"></ui-icon>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n {{ index + 1 }}\n </ng-container>\n </div>\n </ng-container>\n\n <ng-template #lastStep>\n <img *ngIf=\"hasLastStepDefaultIcon; else stepIcon\"\n [alt]=\"'step-finish-image'\"\n [width]=\"24\"\n [height]=\"24\"\n [attr.src]=\"applicationTheme === 'classic' ? '/images/step-finish.svg' : isVisited ? '/images/rebrand-last-step-icon-light.svg' : '/images/rebrand-last-step-icon-black.svg'\"\n >\n\n <ng-template #stepIcon>\n <div class=\"icon\">\n <ui-icon *ngIf=\"icon; else stepIndex\" [size]=\"'24'\" [name]=\"icon\" [color]=\"'white'\"></ui-icon>\n <ng-template #stepIndex>\n {{ index + 1 }}\n </ng-template>\n </div>\n </ng-template>\n </ng-template>\n <span class=\"label\">{{ label }}</span>\n </div>\n </div>\n}\n\n","import { Directive, ElementRef, HostListener, Input, OnChanges } from '@angular/core';\nimport { StepperPosition } from \"../components/stepper/stepper.model\";\n\nconst MARGINS = 36;\nconst PADDING = 16;\n\n/**\n * Directive is used to draw lines between steps\n */\n@Directive({\n selector: '[stepLineElement]',\n standalone: false\n})\nexport class StepLineElementDirective implements OnChanges {\n @Input() stepLineElement: HTMLElement;\n @Input() position: StepperPosition = 'horizontal';\n\n @HostListener('window:resize.out-zone', ['$event'])\n resize(): void {\n this.setSize();\n }\n\n constructor(private el: ElementRef) {}\n\n setSize(): void {\n if (this.position === 'horizontal') {\n this.el.nativeElement.style.width = `calc(100% + ${this.stepLineElement.getBoundingClientRect().width / 2 - PADDING}px)`;\n this.el.nativeElement.style.height = `0`;\n this.el.nativeElement.style.top = '45px';\n this.el.nativeElement.style.left = `-${this.stepLineElement.getBoundingClientRect().width / 2 - MARGINS}px`;\n } else {\n this.el.nativeElement.style.height = `calc(100% + ${this.stepLineElement.getBoundingClientRect().height / 2 - PADDING}px)`;\n this.el.nativeElement.style.width = '0';\n this.el.nativeElement.style.top = `-${this.stepLineElement.getBoundingClientRect().height / 2 - 30}px`;\n this.el.nativeElement.style.left = '34px';\n }\n }\n\n ngOnChanges(): void {\n queueMicrotask(() => {\n this.setSize();\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, DestroyRef, ElementRef,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output, signal, ViewChild,\n} from '@angular/core';\nimport { Step, StepperPosition, StepperVariation } from './stepper.model';\nimport { Observable } from 'rxjs';\nimport { IS_MOBILE_TOKEN } from '../../providers/is-mobile';\nimport { ApplicationTheme } from \"@testgorilla/tgo-ui/components/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { IS_LARGE_TABLET_TOKEN } from '../../providers/is-large-tablet';\n\n@Component({\n selector: 'ui-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class StepperComponent implements AfterViewInit {\n /**\n *\n * Auto selects first step as visited\n * Defaults to true\n *\n * @memberof StepperComponent\n */\n @Input('firstStepAutoSelect') set setFirstStepAutoSelect(value: boolean) {\n this.firstStepAutoSelect = value;\n if (!this.firstStepAutoSelect) {\n this.itemSteps = this.itemSteps.map((step, i) => ({\n ...step,\n isVisited: i === 0 && this.selectedIndex === -1 ? false : step.isVisited\n }));\n }\n };\n\n /**\n * Input property to set the steps for the stepper.\n * The first step will be marked as visited automatically.\n *\n * @memberof StepperComponent\n */\n @Input() set steps(itemSteps: Step[]) {\n this.itemSteps = itemSteps;\n if (itemSteps.length && this.firstStepAutoSelect) {\n const [first, ...other] = itemSteps;\n first.isVisited = true;\n this.itemSteps = [first, ...other];\n }\n\n }\n\n /**\n * Input property to set the selected index of the stepper.\n * Default value is 0.\n *\n * @memberof StepperComponent\n */\n @Input('selectedIndex') set setSelectedIndex(value: number) {\n this.selectedIndex = value;\n if (!this.firstStepAutoSelect) {\n this.itemSteps = this.itemSteps.map((step, i) => ({\n ...step,\n isVisited: i === 0 && this.selectedIndex === -1 ? false : step.isVisited\n }));\n }\n }\n\n /**\n * Input property indicating whether the final icon should be displayed.\n * Default value is false.\n *\n * @memberof StepperComponent\n */\n @Input() lastStepFinalIcon = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof StepperComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof StepperComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * Defines the stepper position\n *\n * @type {StepperPosition}\n * @memberof StepperComponent\n */\n @Input() position: StepperPosition = 'horizontal';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof StepperComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * A string representing the stepper variant.\n * This attribute is used to indicate the variant that should be used.\n * @type {string}\n * @memberof StepperComponent\n */\n @Input() stepperVariant: StepperVariation = 'primary';\n\n @Output() selectionChange = new EventEmitter<{ selectedIndex: number; previousIndex: number; step: Step }>();\n\n private isOpened = false;\n private firstStepAutoSelect = true;\n protected itemSteps: Step[] = [];\n protected progressValue = 0;\n protected translationContext = 'STEPPER.';\n protected selectedIndex = 0;\n\n get isOpen(): boolean {\n return this.isOpened;\n }\n\n set isOpen(value: boolean) {\n this.isOpened = value;\n }\n\n protected keyboardFocused = signal(false);\n\n @ViewChild('stepper') stepperElement: ElementRef<HTMLElement>;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(IS_MOBILE_TOKEN) protected readonly isMobile$: Observable<boolean>,\n @Inject(IS_LARGE_TABLET_TOKEN) protected readonly isLargeTablet$: Observable<boolean>,\n protected focusMonitor: FocusMonitor,\n protected destroyRef: DestroyRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngAfterViewInit(): void {\n this.subscriberFocus();\n }\n\n protected onSelect(changedIndex: number, step: Step): void {\n if (!step.isVisited && this.selectedIndex !== changedIndex) {\n step.isVisited = true;\n }\n this.selectionChange.emit({ selectedIndex: changedIndex, previousIndex: this.selectedIndex, step });\n\n this.selectedIndex = changedIndex;\n this.onCloseStepList();\n }\n\n protected showStepsToggle(): void {\n this.isOpen = !this.isOpen;\n\n setTimeout(() => {\n this.selectedStepFocus();\n })\n }\n\n protected onCloseStepList(): void {\n this.isOpen = false;\n }\n\n protected subscriberFocus(): void {\n if (!this.stepperElement) {\n return;\n }\n\n this.focusMonitor.monitor(this.stepperElement.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin => this.keyboardFocused.set(origin === 'keyboard'));\n }\n\n private selectedStepFocus(): void {\n const selectedElement = document.getElementById('step-' + this.selectedIndex);\n\n if (this.keyboardFocused() && this.isOpen && selectedElement) {\n this.focusMonitor.focusVia(selectedElement, 'keyboard');\n }\n }\n}\n","<ng-container>\n <div style=\"position: absolute; left: -99999px\" [attr.aria-live]=\"'polite'\">\n <span>\n {{ itemSteps[selectedIndex]?.label ?? '' }}\n {{\n translationContext + 'SELECTED_OF'\n | uiTranslate: { selected: (selectedIndex ?? 0) + 1, total: itemSteps?.length ?? 0 }\n | async\n }}\n {{\n itemSteps[selectedIndex]?.isVisited &&\n itemSteps.length <= (selectedIndex ?? 0) + 1 && itemSteps[selectedIndex + 1]?.isVisited\n ? (translationContext + 'COMPLETED' | uiTranslate | async)\n : (translationContext + 'INCOMPLETE' | uiTranslate | async)\n }}\n </span>\n </div>\n\n <div\n *ngIf=\"(position === 'horizontal' && !(isMobile$ | async)) || position === 'vertical'; else mobile\"\n class=\"stepper-wrapper\"\n role=\"tablist\"\n [ngClass]=\"[position, stepperVariant === 'secondary' ? 'secondary-variant' : '']\"\n [attr.theme]=\"applicationTheme\"\n >\n <ng-container *ngFor=\"let step of itemSteps; index as i; last as isLast\">\n <div class=\"step\" #stepElement>\n <ui-step\n [label]=\"step.label\"\n [isVisited]=\"step.isVisited!\"\n [icon]=\"step.iconName\"\n [index]=\"i\"\n [selected]=\"i === selectedIndex\"\n [selectedIndex]=\"selectedIndex\"\n [isLast]=\"isLast\"\n [disabled]=\"step.disabled ?? (i > selectedIndex + 1 && !step.isVisited)\"\n [prevStepIsVisited]=\"itemSteps[i - 1]?.isVisited && step.isVisited\"\n [finalIcon]=\"isLast ? lastStepFinalIcon : false\"\n [showIconWhenSelected]=\"!!step.showIconWhenSelected\"\n (stepSelected)=\"onSelect($event, step)\"\n [applicationTheme]=\"applicationTheme\"\n role=\"tab\"\n [attr.aria-controls]=\"'step-panel-' + i\"\n [attr.aria-selected]=\"i === selectedIndex\"\n [attr.aria-label]=\"step.label\"\n [attr.tabindex]=\"(step.disabled ?? (i > selectedIndex + 1 && !step.isVisited)) ? -1 : 0\"\n [htmlDescription]=\"step.htmlDescription ?? []\"\n [boldLabel]=\"!!step.boldLabel\"\n [position]=\"position\"\n [descriptionTpl]=\"step.descriptionTpl\"\n [labelTooltip]=\"step.labelTooltip\"\n [alwaysShowIcon]=\"!!step.alwaysShowIcon\"\n [context]=\"step.context\"\n [stepVariant]=\"stepperVariant\"\n [largeTabletMode]=\"isLargeTablet$ | async\"\n ></ui-step>\n </div>\n\n @if (!isLast && stepperVariant === 'primary') {\n <div class=\"separator-line\" [ngClass]=\"{ visited: step.isVisited && !!itemSteps[i + 1]?.isVisited }\">\n <div [stepLineElement]=\"stepElement\" [position]=\"position\" class=\"line\"></div>\n </div>\n }\n\n @if (!isLast && stepperVariant === 'secondary') {\n <div class=\"separator-arrow\">\n <ui-icon class=\"separator-icon\" name=\"Arrow-chevron-right-in-line\" size=\"24\" color=\"gray\"></ui-icon>\n </div>\n }\n </ng-container>\n </div>\n\n <ng-template #mobile>\n <div class=\"mobile-stepper-wrapper\">\n <div\n class=\"stepper\"\n [tabIndex]=\"0\"\n #stepper\n [ngClass]=\"{ 'keyboard-focused': keyboardFocused() }\"\n (keydown.enter)=\"showStepsToggle()\"\n (keydown.space)=\"showStepsToggle()\"\n [attr.aria-expanded]=\"isOpen\"\n >\n <div class=\"progress-step\" [tabindex]=\"-1\" [attr.aria-hidden]=\"true\">\n <ui-radial-progress\n [applicationTheme]=\"applicationTheme\"\n [value]=\"selectedIndex + 1\"\n [total]=\"itemSteps.length\"\n ></ui-radial-progress>\n </div>\n\n <div class=\"step-info\">\n <div class=\"current-step\">\n <span>{{ selectedIndex + 1 }}/{{ itemSteps.length }} </span>\n <span>{{ itemSteps[selectedIndex].label }}</span>\n </div>\n\n <div class=\"next-step\">\n <span *ngIf=\"itemSteps.length !== selectedIndex + 1; else finalStep\"\n >{{ ('COMMON.NEXT' | uiTranslate | async) + ':' }} {{ itemSteps[selectedIndex + 1].label }}</span\n >\n <ng-template #finalStep>\n <span>{{ translationContext + 'FINAL_STEP' | uiTranslate | async }}</span>\n </ng-template>\n </div>\n </div>\n\n <div class=\"open-steps\" (click)=\"showStepsToggle()\" [ngClass]=\"{ opened: isOpen }\">\n <ui-icon\n data-testid=\"ui-stepper-icon\"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [name]=\"applicationTheme === 'classic' ? 'Arrow_down' : 'Arrow-chevron-down-in-line'\"\n ></ui-icon>\n </div>\n </div>\n\n <div *ngIf=\"isOpen\">\n <div class=\"step-list\">\n <div class=\"step\" *ngFor=\"let step of itemSteps; index as i; last as isLast\">\n <ui-step\n [label]=\"step.label\"\n [isVisited]=\"step.isVisited!\"\n [icon]=\"step.iconName\"\n [index]=\"i\"\n [selected]=\"i === selectedIndex\"\n [selectedIndex]=\"selectedIndex\"\n [isLast]=\"isLast\"\n [disabled]=\"step.disabled ?? (i > selectedIndex + 1 && !step.isVisited)\"\n [mobileMode]=\"true\"\n [finalIcon]=\"isLast ? lastStepFinalIcon : false\"\n [showIconWhenSelected]=\"!!step.showIconWhenSelected\"\n (stepSelected)=\"onSelect($event, step)\"\n [applicationTheme]=\"applicationTheme\"\n [attr.aria-label]=\"ariaLabel + '--' + step.label\"\n [stepVariant]=\"stepperVariant\"\n ></ui-step>\n </div>\n </div>\n <div class=\"overlay\" (click)=\"onCloseStepList()\"></div>\n </div>\n </div>\n </ng-template>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { StepComponent } from './step.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\n\n@NgModule({\n declarations: [StepComponent],\n imports: [CommonModule, IconComponentModule, MatTooltipModule, TooltipComponentModule],\n exports: [StepComponent],\n})\nexport class StepComponentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { StepperComponent } from './stepper.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { StepComponentModule } from '../step/step.component.module';\nimport { StepLineElementDirective } from '../../directives/step-line-element.directive';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { RadialProgressComponentModule } from '@testgorilla/tgo-ui/components/radial-progress';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [StepperComponent, StepLineElementDirective],\n imports: [\n CommonModule,\n IconComponentModule,\n StepComponentModule,\n MatProgressSpinnerModule,\n RadialProgressComponentModule,\n UiTranslatePipe,\n MatInputModule,\n ],\n exports: [StepperComponent],\n})\nexport class StepperComponentModule {}\n","import { TemplateRef, Type } from '@angular/core';\n\nexport interface TableConfig<T = any> {\n columns: TableColumn<T>[];\n pagination?: Pagination;\n title?: string;\n width?: number;\n sort?: Sort;\n hidePagination?: boolean;\n noDataRowTpl?: TemplateRef<any>;\n sortable?: boolean;\n}\n\nexport interface TableConfigWithPagination<T> extends TableConfig<T> {\n pagination?: Pagination;\n}\n\nexport interface TableColumn<T = any> {\n title?: string;\n key: string;\n allowMultiline?: boolean;\n bold?: boolean;\n showTooltip?: boolean;\n tooltip?: string;\n allowSort?: boolean;\n isSticky?: boolean;\n headerCellTemplate?: TemplateRef<any>;\n rowCellTemplate?: TemplateRef<any>;\n rowCellTemplateClick?: () => any;\n sortHeader?: string;\n hidden?: boolean;\n order?: number;\n fontSize?: '12px' | '14px';\n field?: string;\n type?: ColumnType;\n function?: (v: T) => string;\n renderer?: (v: T) => ComponentRenderer | string;\n styles?: ColumnStyles;\n sortStart?: SortDirection;\n uniqueId?: string;\n}\n\nexport interface Pagination {\n itemsPerPageOptions: number[];\n itemsPerPage: number;\n currentPage: number;\n totalItems: number;\n}\n\nexport type TableData = Record<string, any>[];\n\nexport interface ColumnEllipse {\n index: number;\n showTooltip: boolean;\n}\n\nexport interface Sort {\n active: string;\n direction: SortDirection;\n defaultSortStart?: SortDirection;\n}\n\nexport type SortDirection = 'asc' | 'desc' | '';\n\nexport interface TableDetailColumn<T, TDetail> {\n columnDefs: TableColumn<TDetail>[];\n setDetailRowData: (params: DetailRowDataParams<T, TDetail>) => void;\n}\n\nexport interface DetailRowDataParams<T, TDetail> {\n data: T;\n\n setDetailDataSource(rowData: TDetail[]): void;\n}\n\nexport enum ColumnType {\n FIELD = 'field',\n FUNCTION = 'function',\n RENDERER = 'renderer',\n}\n\nexport interface ComponentRenderer {\n component: Type<any>;\n inputs?: any;\n outputs?: { [key: string]: any };\n}\n\nexport interface ColumnStyles {\n alignment?: ColumnAlignment;\n width?: string;\n 'min-width'?: string;\n padding?: string;\n}\n\nexport enum ColumnAlignment {\n LEFT = 'left',\n RIGHT = 'right',\n CENTER = 'center',\n}\n\nexport enum ColumnTypeEnum {\n FIELD = 'field',\n FUNCTION = 'function',\n RENDERER = 'renderer',\n}\n\nexport enum ColumnAlignmentEnum {\n LEFT = 'left',\n RIGHT = 'right',\n CENTER = 'center',\n}\n\nexport type DataSource = {\n [key: string]: any;\n};\n\nexport type ScrollSettings = { scrollEnd: boolean; horizontalScroll: boolean; scrollStart: boolean };\n","import { TableColumn } from '../components/table/table.model';\n\n/**\n * Sorting table columns by order value if set.\n * The rest columns keep the same ordering and displayed after the sorted ones.\n */\nexport const sortByOrder = <T>(columns: TableColumn<T>[]): TableColumn<T>[] => {\n const withOrderColumns = columns.filter(v => v.order);\n const withoutOrderColumns = columns.filter(v => !v.order);\n\n if (!withOrderColumns.length) {\n return columns;\n }\n\n if (withoutOrderColumns.length) {\n const sortedColumns = Array(columns.length);\n withOrderColumns.forEach(column => (sortedColumns[column.order! - 1] = column));\n withoutOrderColumns.forEach(column => {\n const emptyIndex = sortedColumns.findIndex(v => !v);\n sortedColumns[emptyIndex] = column;\n });\n return sortedColumns;\n } else {\n const sortedOrderedColumns = withOrderColumns.sort((a, b) => (a.order || 0) - (b.order || 0));\n\n return [...sortedOrderedColumns, ...withoutOrderColumns];\n }\n};\n","import { ComponentRef, Directive, EventEmitter, Input, OnDestroy, Type, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\ninterface IComponentRenderer {\n component: Type<any>;\n inputs?: any;\n outputs?: { [key: string]: any };\n}\n\n@Directive({\n selector: '[dynamicComponent]',\n standalone: true,\n})\nexport class DynamicComponentDirective implements OnDestroy {\n private subscription = new Subscription();\n private compRef: ComponentRef<any>;\n\n @Input() set dynamicComponent(componentRenderer: IComponentRenderer) {\n if (componentRenderer.component) {\n this.compRef = this.vcr.createComponent(componentRenderer.component);\n\n if (componentRenderer.inputs) {\n Object.keys(componentRenderer.inputs).map(\n inputName => (this.compRef.instance[inputName] = componentRenderer.inputs[inputName])\n );\n }\n\n if (componentRenderer.outputs) {\n Object.keys(componentRenderer.outputs).map(output => {\n this.subscription.add(\n (this.compRef.instance[output] as EventEmitter<any>).subscribe(componentRenderer.outputs?.[output])\n );\n });\n }\n }\n }\n\n constructor(private vcr: ViewContainerRef) {}\n\n ngOnDestroy() {\n if (this.compRef) {\n this.compRef.destroy();\n }\n this.subscription.unsubscribe();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sentencecase',\n standalone: false\n})\nexport class SentenceCasePipe implements PipeTransform {\n transform(value: string | undefined): string {\n if (!value) {\n return '';\n }\n return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {\n ColumnEllipse,\n ColumnType,\n ComponentRenderer,\n DataSource,\n Pagination,\n ScrollSettings,\n TableColumn,\n TableConfig,\n TableConfigWithPagination,\n TableData,\n TableDetailColumn,\n} from './table.model';\nimport { PageEvent } from '@angular/material/paginator';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { sortByOrder } from '../../utils/table.utils';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Sort } from '@angular/material/sort';\nimport { BehaviorSubject, fromEvent, Observable } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IS_MOBILE_TOKEN } from '../../providers/is-mobile';\n\n@Component({\n selector: 'ui-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('expandDetail', [\n state('collapsed, void', style({ height: '0px' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n standalone: false\n})\nexport class TableComponent<T extends DataSource, TDetail extends DataSource> implements OnChanges, AfterViewInit {\n /**\n * Table configuration\n *\n * @type {TableConfig}\n * @memberof TableComponent\n */\n @Input({ required: true }) config: TableConfigWithPagination<T>;\n\n /**\n * Input property for providing the table data.\n *\n * @type {TableData}\n * @memberof TableComponent\n */\n @Input() data: TableData;\n\n /**\n * Input property indicating whether the table is in a loading state.\n *\n * @type {boolean}\n * @memberof TableComponent\n * @default false\n */\n @Input() loading = false;\n\n /**\n *\n * Defines the application theme\n * @type {ApplicationTheme}\n * @memberof TableComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Data structure to select which columns should be rendered and their capabilities\n *\n * @type {TableDetailColumn}\n * @memberof TableComponent\n */\n @Input() tableDetailColumns: TableDetailColumn<T, TDetail>;\n @Input() tableDetails = false;\n\n /**\n * Disable border radius for table\n *\n * @type {boolean}\n * @memberof TableComponent\n */\n @Input() disableBorderRadius = false;\n\n /**\n * Condensed table\n *\n * @type {boolean}\n * @memberof TableComponent\n */\n @Input() isCondensed = false;\n\n /**\n * Sticky header\n *\n * @type {boolean}\n * @memberof TableComponent\n */\n @Input() stickyHeader = false;\n\n /**\n * Max height\n *\n * @type {string}\n * @memberof TableComponent\n */\n @Input() maxHeight = '576px';\n\n @Output() onRowClickEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() onDetailRowClickEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() paginatorChange = new EventEmitter<PageEvent>();\n @Output() sortChange = new EventEmitter<Sort>();\n\n @ViewChild('table') table: ElementRef;\n\n protected tableData: TableData;\n protected sourceData: TableData;\n protected columnsTooltipState: ColumnEllipse[] = [];\n protected tableConfig: TableConfigWithPagination<T>;\n protected displayedColumns: string[] = [];\n protected columnsDetailToDisplay: string[] = [];\n protected skeletonStyleConfig = {\n background: '#F6F6F6',\n 'border-radius': '4px',\n height: '24px',\n };\n protected dataSourceDetail = new MatTableDataSource<any>([]);\n protected elementDetail: any;\n protected readonly DataType = ColumnType;\n protected scrollSettings$ = new BehaviorSubject<ScrollSettings>({\n scrollEnd: false,\n horizontalScroll: false,\n scrollStart: false,\n });\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private destroyRef: DestroyRef,\n @Inject(IS_MOBILE_TOKEN) protected readonly isMobile$: Observable<boolean>\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n this.setTableConfig(this.config);\n this.setTableData(this.data);\n\n if (this.applicationTheme !== 'classic') {\n this.skeletonStyleConfig.background = '#F4F4F4';\n }\n document.body.setAttribute('theme', this.applicationTheme);\n\n if (this.tableDetailColumns) {\n const filteredColumns = this.tableDetailColumns.columnDefs.filter(column => !column.hidden);\n this.columnsDetailToDisplay = filteredColumns.length\n ? filteredColumns.map((tableColumn: TableColumn<TDetail>) => tableColumn.title!)\n : [];\n }\n\n if (this.tableConfig?.sortable && this.tableConfig?.sort) {\n this.onSortChange(this.tableConfig.sort as Sort, false);\n }\n }\n\n ngAfterViewInit() {\n this.hasTableScroll();\n fromEvent(this.table.nativeElement, 'scroll')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.hasTableScroll());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config'] && changes['config'].currentValue) {\n const config = changes['config'].currentValue as TableConfig<T>;\n this.setTableConfig(config);\n }\n if (changes['data']?.currentValue) {\n this.setTableData(changes['data'].currentValue as TableData);\n }\n }\n\n hasTableScroll(): void {\n const table = this.table.nativeElement;\n const horizontalScroll = table.scrollWidth > table.clientWidth;\n const scrollEnd = table.scrollLeft + table.clientWidth >= table.scrollWidth;\n this.scrollSettings$.next({\n scrollStart: !table.scrollLeft,\n scrollEnd,\n horizontalScroll,\n });\n }\n\n callRenderer([rendererFn, element]: [(v: T) => ComponentRenderer | string, T]): any {\n if (rendererFn) {\n return rendererFn(element);\n }\n }\n\n protected onPaginatorChange(event: PageEvent): void {\n this.paginatorChange.emit(event);\n }\n\n protected onChangeColumnSize(columnIndex: number, showTooltip: boolean): void {\n this.columnsTooltipState = this.columnsTooltipState.map(column => {\n if (column.index === columnIndex) {\n column.showTooltip = showTooltip;\n }\n return column;\n });\n }\n\n protected onSortChange(sortState: Sort, emitEvent = true): void {\n if (emitEvent) {\n this.sortChange.emit(sortState);\n }\n\n if (this.tableConfig?.sortable) {\n this.tableData = [\n ...this.tableData.sort((a, b) => {\n const isAsc = sortState.direction === 'asc';\n const aVal = a[sortState.active];\n const bVal = b[sortState.active];\n return (aVal < bVal ? -1 : 1) * (isAsc ? 1 : -1);\n }),\n ];\n\n if (!sortState.direction) {\n this.tableData = [...this.sourceData];\n }\n }\n }\n\n protected onRowClick(rowParams: any, rowIndex: number): void {\n this.onRowClickEvent.emit({ ...rowParams, index: rowIndex });\n }\n\n protected onDetailRowClick(rowParams: any): void {\n this.onDetailRowClickEvent.emit(rowParams);\n }\n\n protected toggleRow(element: T): void {\n if (this.tableDetails) {\n this.elementDetail = this.elementDetail === element ? null : element;\n if (this.elementDetail) {\n this.tableDetailColumns.setDetailRowData({\n data: element,\n setDetailDataSource: this.setTableDetailDataSource.bind(this),\n });\n }\n }\n }\n\n private setTableDetailDataSource(rowData: TDetail[]): void {\n this.dataSourceDetail = new MatTableDataSource<any>(rowData);\n }\n\n private setTableConfig(config: TableConfig<T>): void {\n config.pagination = config?.pagination ?? this.defaultPaginationConfig;\n\n this.tableConfig = config as TableConfigWithPagination<T>;\n\n this.columnsTooltipState = config.columns.map((column, index) => ({\n index,\n showTooltip: column.showTooltip ?? false,\n }));\n this.displayedColumns = sortByOrder<T>(config.columns.filter(column => !column.hidden)).map(\n column => column.uniqueId ?? column.key\n );\n }\n\n private setTableData(data: TableData): void {\n this.sourceData = data;\n this.tableData = data;\n }\n\n private defaultPaginationConfig: Pagination = {\n currentPage: 0,\n itemsPerPage: 10,\n itemsPerPageOptions: [10, 25, 50],\n totalItems: 20,\n };\n\n trackColumnUniqueId = (index: number, column: TableColumn<T>): string => column.uniqueId ?? column.key;\n}\n","<div #tableContainer class=\"table-container\"\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\n [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\n {{ tableConfig.title | sentencecase }}\n <ng-content select=\"[title-actions]\"></ng-content>\n </div>\n <div\n #table\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\n class=\"table-wrapper\"\n [class.sticky-header]=\"stickyHeader\"\n [style.--table-max-height]=\"maxHeight\">\n <table\n [tabIndex]=\"0\"\n class=\"main-table\"\n [class.condensed]=\"isCondensed\"\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n multiTemplateDataRows\n >\n\n <ng-container\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element, rowIndex); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element, rowIndex); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element, rowIndex); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element, rowIndex); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\n <table\n mat-table\n [dataSource]=\"dataSourceDetail\"\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\n >\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\n [matColumnDef]=\"tableColumn.title ?? ''\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n {{ tableColumn.title | uppercase }}\n </th>\n\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\n </table>\n </div>\n </td>\n </ng-container>\n\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\n <div class=\"align-wrapper\">\n <ng-container [ngSwitch]=\"tableColumn.type\">\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\n {{ tableColumn.function?.(element) }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\n <ng-template\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: stickyHeader\" [class.is-title-present]=\"tableConfig.title\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\n (click)=\"toggleRow(row)\">\n </tr>\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\n </ng-container>\n\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\n <tr *matNoDataRow>\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n\n <ui-paginator\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n *ngIf=\"!i && tableDetails\"\n variant=\"icon-button\"\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\n ></ui-button>\n</ng-template>\n\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\n <div class=\"header-section\">\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}\n </span>\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\n ></ui-icon>\n </div>\n</ng-template>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableComponent } from './table.component';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SkeletonComponent } from '@testgorilla/tgo-ui/components/skeleton';\nimport { PaginatorComponentModule } from '@testgorilla/tgo-ui/components/paginator';\nimport { EllipseTextDirective } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { MatSortModule } from '@angular/material/sort';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SentenceCasePipe } from './sentence-case.pipe';\nimport { DataPropertyGetterPipe } from '../../pipes/data-property-getter';\nimport { DynamicComponentDirective } from '../../directives/dynamic-component.directive';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\n\n@NgModule({\n declarations: [TableComponent, SentenceCasePipe],\n imports: [\n CommonModule,\n MatTableModule,\n MatTooltipModule,\n SkeletonComponent,\n PaginatorComponentModule,\n ButtonComponentModule,\n MatSortModule,\n IconComponentModule,\n EllipseTextDirective,\n DynamicComponentDirective,\n DataPropertyGetterPipe,\n MemoizeFuncPipe,\n ],\n exports: [TableComponent],\n})\nexport class TableComponentModule {}\n","import { booleanAttribute, Component, EventEmitter, HostBinding, Inject, Input, Optional, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IS_MOBILE_TOKEN } from '../../providers/is-mobile';\n\n@Component({\n selector: 'ui-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss'],\n standalone: false\n})\nexport class PageHeaderComponent {\n /**\n * Flag to determine whether the \"Back\" button should be displayed.\n * @default true\n * @memberof PageHeaderComponent\n */\n @Input({ transform: booleanAttribute }) showBackButton = true;\n\n /**\n * Back button tooltip for mobile variation\n * @property tooltip\n * @memberof PageHeaderComponent\n */\n @Input() tooltip = 'COMMON.BACK';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof PageHeaderComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Event triggered when the \"Back\" button is clicked.\n * @memberof PageHeaderComponent\n */\n @Output() back = new EventEmitter<void>();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(IS_MOBILE_TOKEN) protected readonly isMobile$: Observable<boolean>\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n protected onBack(): void {\n this.back.emit();\n }\n}\n","<ng-container>\n <div class=\"page-header-container\">\n <div class=\"page-header-content\">\n @if (!(isMobile$ | async)) {\n @if (showBackButton) {\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onBack()\"\n [ariaLabel]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n [variant]=\"'ghost'\"\n [justIcon]=\"true\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-in-line'\"\n ></ui-button>\n }\n }\n @else {\n <ui-button\n [applicationTheme]=\"applicationTheme\" class=\"mobile-back-btn\" [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n [variant]=\"'icon-button'\"\n [ariaLabel]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onBack()\"\n [justIcon]=\"true\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-in-line'\"\n ></ui-button>\n }\n\n <div class=\"main-content\" [ngClass]=\"{ 'remove-margin': !showBackButton }\">\n <ng-content select=\"[content]\"></ng-content>\n </div>\n\n <div class=\"right-side\">\n <ng-content select=\"[right-side]\"></ng-content>\n </div>\n </div>\n </div>\n\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageHeaderComponent } from './page-header.component';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [PageHeaderComponent],\n imports: [CommonModule, ButtonComponentModule, UiTranslatePipe],\n exports: [PageHeaderComponent],\n})\nexport class PageHeaderModule {}\n","import {\n booleanAttribute,\n Component,\n EventEmitter,\n HostBinding,\n Inject, input,\n Input,\n Optional,\n Output,\n signal,\n ViewChild\n} from '@angular/core';\nimport { Tab, TabsType } from './tabs.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IS_MOBILE_TOKEN } from '../../providers/is-mobile';\nimport { Observable } from 'rxjs';\nimport { MatTab, MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';\nimport { ENTER, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\n\n@Component({\n selector: 'ui-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n standalone: false\n})\nexport class TabsComponent {\n /**\n * Color of the Tabs.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof TabsComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = '#46A997';\n /**\n * Type the Tabs.\n * Defaults underlined.\n *\n * @type {TabsType}\n * @memberof TabsComponent\n */\n @Input() type: TabsType = 'underlined';\n\n /**\n * Animation duration when switching tabs\n *\n * @type {number}\n * @memberof TabsComponent\n */\n @Input() animationDuration = 300;\n\n /**\n * Sets the padding for content and header\n *\n * @type {number}\n * @memberof TabsComponent\n */\n @HostBinding('style.--header-content-padding')\n @Input({ transform: (value: number): string => value + 'px' })\n headerContentPadding = '32px';\n\n /**\n * Sets the dynamic height of the tab\n * @type {boolean}\n * @memberof TabsComponent\n */\n @Input({ transform: booleanAttribute }) dynamicHeight = true;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof TabsComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n isLoading = input(false);\n\n @Output() selectedTabIndex = new EventEmitter<number>();\n @Output() selectedTab = new EventEmitter<Tab>();\n\n @ViewChild('tabGroup', { static: true }) tabGroup: MatTabGroup;\n\n protected tabs: Tab[] = [];\n readonly tabIndex = signal(0);\n protected tabIndexMap: Record<string, number> = {};\n\n // Counter for default ordering when order is not specified\n private insertionCounter: number = 0;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(IS_MOBILE_TOKEN) protected readonly isMobile$: Observable<boolean>\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n const tabHeader = (this.tabGroup as any)._tabHeader;\n tabHeader._handleKeydown = async (event: KeyboardEvent) => {\n if (hasModifierKey(event)) {\n return;\n }\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n const tabLabel = (event.target as HTMLElement).innerText;\n const currentTab = this.tabs[this.tabIndex()];\n const nextTab = this.tabs.find(tab => tab.tabLabel === tabLabel);\n\n if (!nextTab) {\n return;\n }\n\n const canLeave = (await currentTab.canLeave?.({ currentTab, nextTab })) ?? true;\n if (currentTab.tabName !== nextTab.tabName && canLeave) {\n const nextTabIndex = this.tabIndexMap[nextTab.tabName];\n tabHeader.focusIndex = nextTabIndex;\n this.tabGroup.selectedIndex = nextTabIndex;\n }\n break;\n default:\n tabHeader._keyManager.onKeydown(event);\n }\n };\n\n (this.tabGroup as any)._handleClick = async (tab: MatTab, tabHeader: any, index: number) => {\n const currentIndex = this.tabGroup.selectedIndex;\n if (tab.disabled || currentIndex === undefined || index === currentIndex) {\n return;\n }\n const currentTab = this.tabs[this.tabIndex()];\n const nextTab = this.tabs[index];\n const canLeave = (await currentTab.canLeave?.({ currentTab, nextTab })) ?? true;\n if (this.tabGroup.selectedIndex != index && canLeave) {\n tabHeader.focusIndex = index;\n this.tabGroup.selectedIndex = index;\n }\n };\n });\n }\n\n addTab(tab: Tab): void {\n // If no explicit order is provided, use the insertion counter\n if (tab.order === undefined) {\n tab.order = this.insertionCounter++;\n }\n\n // Add the tab and sort the tabs array\n this.tabs.push(tab);\n this.sortTabs();\n\n // Update the index map\n this.updateTabIndexMap();\n }\n\n private sortTabs(): void {\n // Sort by the order property (lowest first)\n this.tabs.sort((a, b) => {\n const orderA = a.order ?? Infinity;\n const orderB = b.order ?? Infinity;\n return orderA - orderB;\n });\n }\n\n private updateTabIndexMap(): void {\n // Update the index map after sorting\n this.tabs.forEach((tab, index) => {\n this.tabIndexMap[tab.tabName] = index;\n });\n }\n\n onTabChange(ev: MatTabChangeEvent): void {\n const selectedTab = this.tabs[ev.index];\n this.tabIndex.set(this.tabIndexMap[selectedTab.tabName]);\n this.selectedTabIndex.emit(ev.index);\n this.selectedTab.emit(selectedTab);\n }\n\n selectTab(tabName: string): void {\n const index = this.tabIndexMap[tabName];\n if (index !== undefined) {\n this.tabIndex.set(index);\n this.selectedTabIndex.emit(index);\n this.selectedTab.emit(this.tabs[index]);\n }\n }\n\n indexOf(tabName: string): number {\n return this.tabIndexMap[tabName] ?? -1;\n }\n\n trackByTabName(index: number, tab: Tab): string {\n return tab.tabName;\n }\n\n removeTab(tabName: string): void {\n const index = this.tabIndexMap[tabName];\n if (index !== undefined) {\n this.tabs.splice(index, 1);\n delete this.tabIndexMap[tabName];\n this.updateTabIndexMap();\n }\n }\n\n updateTab(tabName: string, tab: Partial<Omit<Tab, 'tabName'>>): void {\n const index = this.tabIndexMap[tabName];\n if (index !== undefined) {\n this.tabs[index] = { ...this.tabs[index], ...tab };\n\n // Re-sort if the order changed\n if (tab.order !== undefined) {\n this.sortTabs();\n this.updateTabIndexMap();\n }\n }\n }\n}\n","<mat-tab-group\n #tabGroup\n headerPosition=\"above\"\n class=\"tabs-container\"\n [ngClass]=\"'tabs-type-' + ((isMobile$ | async) ? 'underlined' : type)\"\n [class.tabs-container-loading]=\"isLoading()\"\n [attr.theme]=\"applicationTheme\"\n [dynamicHeight]=\"dynamicHeight\"\n [selectedIndex]=\"tabIndex()\"\n [animationDuration]=\"animationDuration\"\n (selectedTabChange)=\"onTabChange($event)\"\n role=\"tablist\"\n>\n <mat-tab\n *ngFor=\"let tab of tabs; trackBy: trackByTabName; let i = index\"\n [disabled]=\"tab.disabled ?? false\"\n [attr.aria-label]=\"tab?.ariaLabel\"\n >\n <ng-template mat-tab-label>\n <a\n data-test-role=\"tab-link\"\n [attr.data-testid]=\"tab.tabName\"\n class=\"tab-name\"\n [href]=\"tab?.linkUrl ? tab.linkUrl : '#'\"\n (click)=\"$event.preventDefault()\"\n [attr.aria-selected]=\"i === tabIndex()\"\n [attr.aria-label]=\"tab.tabLabel + (i === tabIndex() ? ', ' + ('TABS.SELECTED' | uiTranslate | async) : '')\"\n role=\"tab\"\n >\n @if (isLoading()) {\n <ui-skeleton [count]=\"1\"\n [theme]=\"tab.skeletonTheme ?? {}\"\n [isAiTheme]=\"!!tab.isSkeletonAiTheme\"\n ></ui-skeleton>\n } @else {\n <ui-icon\n color=\"rebrand-black\"\n [size]=\"'24'\"\n [tabindex]=\"1\"\n class=\"left-icon\"\n [name]=\"tab.iconLeft!\"\n *ngIf=\"tab?.iconLeft\"\n ></ui-icon>\n <span class=\"label\">{{ tab.tabLabel }}</span>\n <ui-icon\n color=\"rebrand-black\"\n [size]=\"'24'\"\n class=\"right-icon\"\n [name]=\"tab.iconRight!\"\n *ngIf=\"tab?.iconRight\"\n ></ui-icon>\n }\n </a>\n </ng-template>\n <div role=\"tabpanel\" [attr.id]=\"'tabpanel-' + i\" [attr.aria-labelledby]=\"'tab-' + i\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\n </div>\n </mat-tab>\n</mat-tab-group>\n","import { booleanAttribute, DestroyRef, Directive, effect, inject, input, OnInit, TemplateRef } from '@angular/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { TabsComponent } from './tabs.component';\nimport { Tab } from './tabs.model';\nimport { NgxSkeletonLoaderConfigTheme } from 'ngx-skeleton-loader';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[uiTab]',\n})\nexport class TabDirective implements OnInit {\n tabLabel = input.required<string>();\n tabName = input.required<string>();\n iconLeft = input<IconName>();\n iconRight = input<IconName>();\n disabled = input<boolean, string>(false, { transform: booleanAttribute });\n canLeave = input<(ctx?: { currentTab: Tab; nextTab: Tab }) => boolean | Promise<boolean>>();\n linkUrl = input<string>();\n order = input<number>();\n skeletonTheme = input<NgxSkeletonLoaderConfigTheme>();\n isSkeletonAiTheme = input<boolean>();\n\n private tabsComponent = inject(TabsComponent);\n private template = inject(TemplateRef);\n\n private syncProps = effect(() => {\n this.tabsComponent.updateTab(this.tabName(), {\n tabLabel: this.tabLabel(),\n iconLeft: this.iconLeft(),\n iconRight: this.iconRight(),\n disabled: this.disabled(),\n canLeave: this.canLeave(),\n linkUrl: this.linkUrl(),\n order: this.order(),\n skeletonTheme: this.skeletonTheme(),\n isSkeletonAiTheme: this.isSkeletonAiTheme(),\n });\n });\n\n private cleanup = inject(DestroyRef).onDestroy(() => {\n this.tabsComponent.removeTab(this.tabName());\n });\n\n ngOnInit(): void {\n this.addTab();\n }\n\n private addTab(): void {\n this.tabsComponent.addTab({\n tabLabel: this.tabLabel(),\n tabName: this.tabName(),\n iconLeft: this.iconLeft(),\n iconRight: this.iconRight(),\n disabled: this.disabled(),\n contentTemplateRef: this.template,\n canLeave: this.canLeave(),\n linkUrl: this.linkUrl(),\n order: this.order(),\n skeletonTheme: this.skeletonTheme(),\n isSkeletonAiTheme: this.isSkeletonAiTheme(),\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TabsComponent } from './tabs.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { TabDirective } from './tab.directive';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { SkeletonComponent } from '@testgorilla/tgo-ui/components/skeleton';\n\n@NgModule({\n declarations: [TabsComponent],\n imports: [TabDirective, CommonModule, MatTabsModule, IconComponentModule, UiTranslatePipe, SkeletonComponent],\n exports: [TabsComponent, TabDirective],\n})\nexport class TabsComponentModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ui-password-criteria',\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PasswordComponent implements ControlValueAccessor {\n\n /**\n * Show criteria for password. Defaults true\n *\n * @type {boolean}\n * @memberof PasswordComponent\n */\n @Input() showCriteria = true;\n\n /**\n * Password is required or not\n *\n * @type {boolean}\n * @memberof PasswordComponent\n */\n @Input() required = false;\n\n @Output() passwordChange = new EventEmitter<string>();\n\n @Output() allCriteriaPassed = new EventEmitter<boolean>();\n\n @ViewChild('requiredCriteria') requiredCriteria: ElementRef<HTMLElement>;\n\n protected formControl = new FormControl('', Validators.required);\n protected criteriaPassed: { [key: string]: boolean } = {};\n protected showError: boolean;\n protected progressValue: number;\n protected criteria: { translateKey: string; key: string }[] = [\n { translateKey: 'PASSWORD.LOWERCASE', key: 'hasLowercase' },\n { translateKey: 'PASSWORD.UPPERCASE', key: 'hasUppercase' },\n { translateKey: 'PASSWORD.NUMBER', key: 'hasNumber' },\n { translateKey: 'PASSWORD.SPECIAL_CHARACTER', key: 'hasSpecialChar' },\n { translateKey: 'PASSWORD.CHARACTERS', key: 'hasMinLength' },\n ];\n\n constructor(\n private readonly destroyRef: DestroyRef,\n ) {\n this.formControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.checkCriteria();\n });\n }\n\n checkCriteria(): void {\n const password = this.formControl.value ?? '';\n this.criteriaPassed = {\n hasLowercase: /^(?=.*?[a-z])/.test(password),\n hasUppercase: /^(?=.*?[A-Z])/.test(password),\n hasNumber: /^(?=.*?[0-9])/.test(password),\n hasSpecialChar: /^(?=.*?[\" !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~])/.test(password),\n hasMinLength: password.length >= 12,\n };\n\n const passedCount = this.countPassed();\n this.progressValue = Math.min(Math.max(passedCount * (100 / Object.keys(this.criteriaPassed).length), 1), 100);\n this.passwordChange.emit(password);\n this.allCriteriaPassed.emit(passedCount === Object.keys(this.criteriaPassed).length);\n this.onChange(password);\n }\n\n countPassed(): number {\n let count = 0;\n for (const key in this.criteriaPassed) {\n if (this.criteriaPassed.hasOwnProperty(key) && this.criteriaPassed[key]) {\n count++;\n }\n }\n return count;\n }\n onChange = (v: any) => {};\n onTouch = () => {};\n\n writeValue(obj: any): void {\n this.formControl.setValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n get allRequirementsMet(): boolean {\n return this.countPassed() === Object.keys(this.criteriaPassed).length && !!this.countPassed();\n }\n}\n","<div class=\"password-criteria-container\">\n\n <ui-field [applicationTheme]=\"'dark'\"\n [formControl]=\"formControl\"\n [ariaLabel]=\"requiredCriteria?.nativeElement?.innerText ?? ''\"\n [type]=\"'password'\"\n [placeholder]=\"('PASSWORD.PASSWORD_PLACEHOLDER' | uiTranslate | async) + (required ? ' *' : '')\"\n (keydown.enter)=\"showError = true\"\n (focusout)=\"showError = true\"\n ></ui-field>\n\n <div class=\"criteria-container\" *ngIf=\"showCriteria\" #requiredCriteria>\n\n <div class=\"progress\">\n <ui-progress-bar [progress]=\"progressValue === 1 ? 0 : progressValue\" [applicationTheme]=\"'dark'\"></ui-progress-bar>\n </div>\n\n <span *ngIf=\"allRequirementsMet\" style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">{{ 'FIELD.ALL_PASSWORD_REQ_PASSED' | uiTranslate | async }}</span>\n\n <div\n *ngFor=\"let criterion of criteria\"\n class=\"criterion\"\n [attr.aria-live]=\"!allRequirementsMet ? 'polite' : ''\"\n [ngClass]=\"{ 'passed': criteriaPassed[criterion.key], error: !criteriaPassed[criterion.key] && showError }\"\n >\n <ui-icon [size]=\"'24'\"\n [color]=\"'rebrand-black'\"\n [name]=\"!criteriaPassed[criterion.key] && showError ? 'Info-in-line' : 'Check-round-in-line'\"\n applicationTheme=\"dark\"\n ></ui-icon>\n <span>{{ criterion.translateKey | uiTranslate | async }}</span>\n <span style=\"position: absolute; left: -9999px\">{{ (criteriaPassed[criterion.key] ? ('COMMON.PASSED') : ('COMMON.FAILED')) | uiTranslate | async }}</span>\n </div>\n </div>\n\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PasswordComponent } from './password.component';\nimport { FieldComponentModule } from '@testgorilla/tgo-ui/components/field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [PasswordComponent],\n exports: [PasswordComponent],\n imports: [\n CommonModule,\n FieldComponentModule,\n ReactiveFormsModule,\n IconComponentModule,\n ProgressBarComponentModule,\n UiTranslatePipe,\n ],\n})\nexport class PasswordComponentModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'joinStrings',\n standalone: false\n})\nexport class JoinStringsPipe implements PipeTransform {\n transform(value: string[], separator?: string): string {\n return value.filter(Boolean).join(separator ? separator : ' - ');\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NgControl,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatInput } from '@angular/material/input';\nimport { MatSelect } from '@angular/material/select';\nimport { parsePhoneNumber } from 'libphonenumber-js';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n delay,\n filter,\n first,\n map,\n Observable,\n startWith,\n Subject,\n take,\n tap,\n} from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { UICountry } from './phone-input.model';\n\n@Component({\n selector: 'ui-phone-input',\n templateUrl: './phone-input.component.html',\n styleUrls: ['./phone-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\n useValue: { overlayPanelClass: 'phone-number-autocomplete' },\n },\n ],\n standalone: false\n})\nexport class PhoneInputComponent implements OnInit, OnDestroy, ControlValueAccessor, DoCheck {\n /**\n * Phone number\n *\n * @type {string}\n * @memberof PhoneInputComponent\n */\n @Input()\n set value(value: string) {\n this.initialValue = this.initialValue || value;\n try {\n const parsed = parsePhoneNumber(value);\n const formatted = parsed.formatInternational();\n this.selectedCountry = this.getCountryByAlpha2Code(parsed.country!) || this.selectedCountry;\n this.form.patchValue({ phone_number: formatted.replace(this.selectedCountry.callingCode, '') });\n } catch (err) {\n if (value?.length <= 4) {\n this.selectedCountry = this.getCountryByCallingCode(value) || this.selectedCountry;\n }\n this.form.patchValue({ phone_number: value?.replace(this.selectedCountry?.callingCode, '') });\n }\n this.stateChanges.next();\n }\n\n /**\n * Country list for select\n *\n * @type {UICountry[]}\n * @memberof PhoneInputComponent\n */\n @Input() set countryList(countryList: UICountry[]) {\n this.loadCountries$.next(countryList);\n this.selectedCountry = this.selectedCountry ?? countryList[0];\n }\n\n /**\n * Placeholder input\n *\n * @type {text}\n * @memberof PhoneInputComponent\n */\n @Input()\n set placeholder(value: string) {\n this.internalPlaceholder = value;\n this.stateChanges.next();\n }\n\n /**\n * Determines if input is disabled\n *\n * @type {boolean}\n * @memberof PhoneInputComponent\n */\n @HostBinding('attr.disabled')\n @Input()\n disabled: boolean;\n\n /**\n * Input is required or not\n *\n * @type {boolean}\n * @memberof PhoneInputComponent\n */\n @Input() required: boolean;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof PhoneInputComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Indicator of the phone input width\n * @property fullWidth\n * @type {boolean}\n * @memberof PhoneInputComponent\n */\n @Input() fullWidth = false;\n\n _errors: SafeHtml[];\n /**\n * Input field errors\n *\n * @type {string}\n * @memberof PhoneInputComponent\n */\n @Input() set errors(errors: string[]) {\n if (errors) {\n this._errors = errors?.filter(Boolean).map(error => this.sanitizer.bypassSecurityTrustHtml(error));\n this.errorsLength = this.setErrorsLength();\n }\n }\n\n /**\n * Hide in build errors for Reactive Forms\n *\n * @type {number}\n * @memberof PhoneInputComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof PhoneInputComponent\n */\n @Input() hideLabelInErrors = false;\n\n static nextId = 0;\n\n private countries = new BehaviorSubject<UICountry[]>([]);\n protected countries$ = this.countries.asObservable();\n form: UntypedFormGroup = this.fb.group({\n phone_number: new UntypedFormControl(),\n });\n protected controlType = 'phone-number';\n protected userAriaDescribedBy?: string;\n protected loadCountries$ = new BehaviorSubject<UICountry[]>([]);\n protected countryCode = new BehaviorSubject<string>('US');\n protected stateChanges = new Subject<void>();\n protected focused: boolean;\n protected selectFilterCtrl = new UntypedFormControl('');\n protected errorsLength: boolean;\n protected readonly countryFlagSrc = 'assets/svg-country-flags/';\n\n @ViewChild(MatInput, { read: ElementRef, static: true })\n public input: ElementRef<HTMLElement>;\n @ViewChild(MatSelect, { read: ElementRef, static: true })\n public select: ElementRef<HTMLElement>;\n\n @HostBinding()\n id = `phone-number${PhoneInputComponent.nextId++}`;\n\n @HostBinding('class.floated')\n get shouldLabelFloat(): boolean {\n return true;\n }\n\n @HostBinding('attr.aria-describedby') describedBy = '';\n\n get empty(): boolean {\n return !!this.form.value;\n }\n\n get errorState(): boolean {\n return this.errorMatcher.isErrorState(this.ngControl.control as UntypedFormControl, null);\n }\n\n get value(): string {\n return this.getNumberWithCountryCode();\n }\n\n get placeholder() {\n return this.internalPlaceholder;\n }\n\n private initialValue: string;\n private readonly DEFAULT_COUNTRY_CODE = 'US';\n private internalPlaceholder: string;\n protected selectedCountry: UICountry;\n private unsubscribeAll$ = new Subject<void>();\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private errorMatcher: ErrorStateMatcher,\n private fb: UntypedFormBuilder,\n private focusMonitor: FocusMonitor,\n private ref: ChangeDetectorRef,\n private sanitizer: DomSanitizer,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.ref.markForCheck();\n }\n }\n\n ngOnInit(): void {\n this.loadCountries();\n this.preSelectCountry();\n this.subscribeToFocusEvents();\n }\n\n setErrorsLength(): boolean {\n if (!!this._errors) {\n return this._errors.filter(err => !!err).length > 0;\n }\n return false;\n }\n\n setDescribedByIds(ids: string[]): void {\n this.userAriaDescribedBy = ids.join(' ');\n }\n\n onChange: (value: string) => void;\n onTouch: () => void;\n\n writeValue(phoneNumber: string): void {\n if (phoneNumber) {\n this.value = phoneNumber;\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n this.disabled = isDisabled;\n this.stateChanges.next();\n this.ref.markForCheck();\n }\n\n ngOnDestroy(): void {\n this.focusMonitor.stopMonitoring(this.input);\n this.focusMonitor.stopMonitoring(this.select);\n this.stateChanges.complete();\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n onOptionsSelected(value: UICountry) {\n this.setCountry(value);\n }\n\n onInput(value: string) {\n this.value = (this.selectedCountry?.callingCode ?? '') + value;\n this.onChange(this.value);\n }\n\n filteredCountryTrackByMethod(index: number, el: UICountry): string {\n return el.alpha2Code;\n }\n\n private setCountry(country: UICountry | null): void {\n if (country) {\n this.selectedCountry = country;\n }\n this.value = this.getNumberWithCountryCode();\n this.onChange(this.value);\n }\n\n private getNumberWithCountryCode() {\n const nationalNumber = this.form.value?.phone_number as string;\n return nationalNumber ? (this.selectedCountry?.callingCode ?? '') + nationalNumber : '';\n }\n\n private subscribeToFocusEvents() {\n const selectAndInputFocus$ = combineLatest([\n this.focusMonitor.monitor(this.select),\n this.focusMonitor.monitor(this.input),\n ]).pipe(takeUntil(this.unsubscribeAll$), debounceTime(10));\n\n selectAndInputFocus$.subscribe(([selectFocus, inputFocus]) => {\n this.focused = !!(selectFocus || inputFocus);\n this.stateChanges.next();\n });\n\n selectAndInputFocus$.pipe(take(1)).subscribe(() => {\n this.onTouch();\n });\n }\n\n private preSelectCountry() {\n this.setDisabledState(true);\n combineLatest([\n this.countries$.pipe(\n filter(countries => countries.length > 0),\n first()\n ),\n this.countryCode,\n ])\n .pipe(\n map(([countries, selectedCountry]) => {\n if (!this.initialValue) {\n const country =\n this.getCountryByAlpha2Code(selectedCountry) || this.getCountryByAlpha2Code(this.DEFAULT_COUNTRY_CODE);\n this.setCountry(country as UICountry);\n } else {\n this.value = this.initialValue;\n }\n\n this.setDisabledState(false);\n this.ref.markForCheck();\n })\n )\n .subscribe();\n }\n\n private getCountryByAlpha2Code(alpha2Code: string) {\n return this.countries.value.find(country => country.alpha2Code === alpha2Code);\n }\n\n private getCountryByCallingCode(callingCode: string) {\n return this.countries.value.find(country => country.callingCode === callingCode);\n }\n\n private loadCountries(): void {\n const searchText$: Observable<string> = this.selectFilterCtrl.valueChanges.pipe(debounceTime(100), startWith(''));\n\n combineLatest([this.loadCountries$, searchText$])\n .pipe(\n takeUntil(this.unsubscribeAll$),\n tap(([countries, searchText]) => {\n const searchTextLowerCase = searchText.toLowerCase();\n const filteredCountries = countries\n .filter(\n option =>\n option.name.toLowerCase().includes(searchTextLowerCase) ||\n option.alpha2Code.toLowerCase().includes(searchTextLowerCase) ||\n option.callingCode.toLowerCase().includes(searchTextLowerCase)\n )\n .sort((optionA, optionB) => (optionB.name.startsWith(searchText) ? 1 : -1));\n this.countries.next(filteredCountries);\n }),\n delay(1),\n tap(() => {\n const countryFound = this.getCountryByAlpha2Code(this.selectedCountry?.alpha2Code);\n this.selectedCountry = countryFound || this.selectedCountry;\n this.ref.markForCheck();\n })\n )\n .subscribe();\n }\n\n disableClick(ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n trackByFn = (index: number, value: any) => value.changingThisBreaksApplicationSecurity;\n}\n","<mat-form-field\n [formGroup]=\"form\"\n appearance=\"outline\"\n [color]=\"(errorsLength || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [ngClass]=\"{ disabled: form.disabled || disabled, 'full-width': fullWidth }\"\n>\n <mat-label>{{ 'COMMON.PHONE_NUMBER' | uiTranslate | async }} <span *ngIf=\"required\">*</span></mat-label>\n\n <div matPrefix class=\"country\">\n <button class=\"selected-flag\" matPrefix *ngIf=\"selectedCountry\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + selectedCountry?.alpha2Code?.toLowerCase() + '.svg'\"\n [alt]=\"'Country flag ' + selectedCountry?.alpha2Code?.toLowerCase()\">\n </button>\n <mat-select\n #select\n (selectionChange)=\"onOptionsSelected($event.value)\"\n [value]=\"selectedCountry\"\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'phone-number-select' + ' ' + applicationTheme\"\n [ngClass]=\"{ opened: select.panelOpen }\"\n >\n <mat-select-trigger>{{ selectedCountry?.callingCode }}</mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search\n [formControl]=\"selectFilterCtrl\"\n ngDefaultControl\n placeholderLabel=\"\"\n noEntriesFoundLabel=\"\"\n >\n <ui-icon ngxMatSelectSearchClear size=\"24\" [name]=\"'Close-in-line'\"></ui-icon>\n </ngx-mat-select-search>\n </mat-option>\n <mat-option *ngFor=\"let country of countries$ | async; trackBy: filteredCountryTrackByMethod\" [value]=\"country\">\n <div class=\"country-option\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + country?.alpha2Code?.toLowerCase()! + '.svg'\"\n [alt]=\"'Country flag ' + country?.alpha2Code?.toLowerCase()!\">\n <small>{{ $any([country?.name, '(' + country?.callingCode + ')']) | joinStrings : ' ' }}</small>\n </div>\n </mat-option>\n </mat-select>\n </div>\n\n <input\n (input)=\"onInput(form.get('phone_number')!.value)\"\n formControlName=\"phone_number\"\n (click)=\"disableClick($event)\"\n [ngStyle]=\"{ opacity: disabled ? 0.5 : 1 }\"\n [required]=\"required\"\n matInput\n type=\"text\"\n />\n\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : ('COMMON.PHONE_NUMBER' | uiTranslate | async)\"></ui-validation-error>\n\n </mat-hint>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PhoneInputComponent } from './phone-input.component';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { JoinStringsPipe } from './join-strings.pipe';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SpinnerComponentModule } from '@testgorilla/tgo-ui/components/spinner';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\nimport { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';\n\n@NgModule({\n declarations: [PhoneInputComponent, JoinStringsPipe],\n exports: [PhoneInputComponent],\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n ReactiveFormsModule,\n MatSelectModule,\n MatIconModule,\n MatInputModule,\n NgxMatSelectSearchModule,\n IconComponentModule,\n SpinnerComponentModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n ],\n})\nexport class PhoneInputComponentModule {}\n","import { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\n@Component({\n selector: 'ui-password-strength',\n templateUrl: './password-strength.component.html',\n styleUrls: ['./password-strength.component.scss'],\n standalone: false\n})\nexport class PasswordStrengthComponent {\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof PasswordStrengthComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * The password that needs to be checked\n * @property password\n * @type {string}\n * @memberof PasswordStrengthComponent\n */\n @Input() set password(value: string) {\n this._password = value;\n this.checkCriteria(this._password);\n }\n\n /**\n * Event that outputs validation check result\n * @property validationCheck\n * @type {boolean}\n * @memberof PasswordStrengthComponent\n */\n @Output() validationCheck = new EventEmitter<boolean>();\n\n protected progressValue: number;\n protected criteriaPassed: { [key: string]: boolean } = {};\n private _password = '';\n protected criteria: { translateKey: string; key: string }[] = [\n { translateKey: 'PASSWORD.LOWERCASE', key: 'hasLowercase' },\n { translateKey: 'PASSWORD.UPPERCASE', key: 'hasUppercase' },\n { translateKey: 'PASSWORD.NUMBER', key: 'hasNumber' },\n { translateKey: 'PASSWORD.SPECIAL_CHARACTER', key: 'hasSpecialChar' },\n { translateKey: 'PASSWORD.CHARACTERS', key: 'hasMinLength' },\n ];\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n ) {\n if (this.defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n checkCriteria(password: string): void {\n this.criteriaPassed = {\n hasLowercase: /^(?=.*?[a-z])/.test(password),\n hasUppercase: /^(?=.*?[A-Z])/.test(password),\n hasNumber: /^(?=.*?[0-9])/.test(password),\n hasSpecialChar: /^(?=.*?[\" !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~])/.test(password),\n hasMinLength: password.length >= 12,\n };\n\n const passedCount = this.countPassed();\n this.progressValue = Math.min(Math.max(passedCount * (100 / Object.keys(this.criteriaPassed).length), 1), 100);\n this.validationCheck.emit(passedCount === Object.keys(this.criteriaPassed).length);\n }\n\n private countPassed(): number {\n let count = 0;\n for (const key in this.criteriaPassed) {\n if (this.criteriaPassed.hasOwnProperty(key) && this.criteriaPassed[key]) {\n count++;\n }\n }\n return count;\n }\n\n get infoIcon(): IconName {\n return this.applicationTheme === 'classic' ? 'Info' : 'Info-in-line';\n }\n\n get checkIcon(): IconName {\n return this.applicationTheme === 'classic' ? 'Round-check' : 'Check-round-in-line';\n }\n}\n","<div class=\"criteria-container\">\n\n <div class=\"progress\">\n <ui-progress-bar [progress]=\"progressValue === 1 ? 0 : progressValue\" [applicationTheme]=\"applicationTheme\"></ui-progress-bar>\n </div>\n\n <div\n *ngFor=\"let criterion of criteria\"\n class=\"criterion\"\n [ngClass]=\"{ 'passed': criteriaPassed[criterion.key], error: !criteriaPassed[criterion.key] }\"\n >\n <ui-icon [size]=\"'24'\"\n [color]=\"'rebrand-black'\"\n [name]=\"!criteriaPassed[criterion.key] ? infoIcon : checkIcon\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-icon>\n <span>{{ criterion.translateKey | uiTranslate | async }}</span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PasswordStrengthComponent } from './password-strength.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [PasswordStrengthComponent],\n imports: [CommonModule, IconComponentModule, ProgressBarComponentModule, UiTranslatePipe],\n exports: [PasswordStrengthComponent],\n})\nexport class PasswordStrengthComponentModule {}\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { MultiInputValue } from './multi-input.model';\n\nexport const requiredMultiInput = (control: AbstractControl<MultiInputValue>): ValidationErrors | null => {\n const controlValue = control.value;\n\n const hasRequired = control.hasValidator(Validators.required);\n\n if (hasRequired && controlValue) {\n const anyFalsy = Object.values(controlValue).some(v => !v);\n if (anyFalsy) {\n return { required: true };\n }\n }\n return null;\n};\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable @typescript-eslint/unbound-method */\nimport {\n booleanAttribute,\n Component,\n effect,\n EventEmitter,\n HostBinding,\n input,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n NgControl,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { MultiInputValue } from './multi-input.model';\nimport { requiredMultiInput } from './required-multi-input.validator';\n\n@Component({\n selector: 'ui-multi-input',\n templateUrl: './multi-input.component.html',\n styleUrl: './multi-input.component.scss',\n standalone: false\n})\nexport class MultiInputComponent implements ControlValueAccessor, OnInit {\n /**\n *\n * @description List of items to be displayed in the dropdown list\n * @type {Record<string, string | null | number>[]}\n * @memberof MultiInputComponent\n */\n itemsList = input.required<Record<string, string | null | number>[]>();\n\n /**\n *\n * @description The field to be displayed in the dropdown\n * @type {string}\n * @memberof MultiInputComponent\n */\n itemTextField = input.required<string>();\n\n /**\n *\n * @description The value to be displayed in the droddown\n * @type {string}\n * @memberof MultiInputComponent\n */\n itemValueField = input.required<string>();\n\n /**\n *\n * @description The Value of the multi input\n * @type {MultiInputValue}\n * @memberof MultiInputComponent\n */\n value = input<MultiInputValue>();\n\n /**\n *\n * @description Disables the multi input\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n *\n * @description Defines if the multi input is required\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n required = input(false, { transform: booleanAttribute });\n\n /**\n *\n * @description Defines the label of the multi input\n * @type {string}\n * @memberof MultiInputComponent\n */\n label = input('');\n\n /**\n *\n * @description Defines the placeholder of the multi input\n * @type {string}\n * @memberof MultiInputComponent\n */\n placeholder = input('');\n\n /**\n *\n * @description Allow decimal values in the multi input\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n allowDecimal = input(true, { transform: booleanAttribute });\n\n /**\n *\n * @description Allow negative values in the multi input\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n allowNegative = input(true, { transform: booleanAttribute });\n\n /**\n *\n * @description The errors of the multi input\n * @type {string[]}\n * @memberof MultiInputComponent\n */\n errors = input<string[]>([]);\n\n /**\n *\n * @description Hide built in errors for Reactive Forms\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n hideBuiltInErrors = input(false, { transform: booleanAttribute });\n\n /**\n *\n * @description Hide label in errors\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n hideLabelInErrors = input(false, { transform: booleanAttribute });\n\n /**\n *\n * @description The maximum characters allowed in the multi input\n * @type {number}\n * @memberof MultiInputComponent\n */\n maxCharacters = input(0);\n\n /**\n *\n * @description The validators to apply to input field\n * @type {Validators[]}\n * @memberof MultiInputComponent\n */\n validators = input<ValidatorFn[]>([]);\n\n /**\n *\n * @description The width of the multi input\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n @HostBinding('class.full-width')\n @Input()\n fullWidth: boolean = false;\n\n @Output() valueChange = new EventEmitter<MultiInputValue>();\n\n @HostBinding() class = 'ui-multi-input';\n\n /**\n * @description Indicates that custom errors are provided via content projection.\n * When true, the built-in error hints will be hidden.\n * @type {boolean}\n * @memberof MultiInputComponent\n */\n hasCustomErrors = input(false, { transform: booleanAttribute });\n\n /**\n * @ignore\n */\n onChange = (_: any): void => {};\n\n /**\n * @ignore\n */\n onTouch = (): void => {};\n\n protected readonly multiInputForm = this.fb.group<MultiInputValue>({\n value: null,\n });\n\n constructor(\n @Optional() @Self() protected ngControl: NgControl,\n private readonly fb: FormBuilder\n ) {\n effect(() => {\n this.updateDisableState(this.disabled());\n });\n\n effect(() => {\n const maxCharacters = this.maxCharacters();\n if (maxCharacters) {\n this.inputControl?.addValidators(Validators.maxLength(maxCharacters));\n this.inputControl?.updateValueAndValidity({ emitEvent: false });\n }\n });\n\n effect(() => {\n const inputValidators = this.validators();\n if (inputValidators?.length) {\n this.inputControl?.addValidators(inputValidators);\n this.inputControl?.updateValueAndValidity({ emitEvent: false });\n }\n });\n\n effect(() => {\n const value = this.value();\n // skip in the context of angular Forms\n if (!this.ngControl) {\n this.addDropdownControl();\n this.patchForm(value);\n }\n });\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.multiInputForm.valueChanges.pipe(takeUntilDestroyed()).subscribe(formValue => {\n this.valueChanged(formValue as MultiInputValue);\n });\n }\n\n ngOnInit(): void {\n this.addDropdownControl();\n if (this.ngControl) {\n this.ngControl.control?.addValidators(requiredMultiInput);\n }\n }\n\n writeValue(value: MultiInputValue): void {\n this.addDropdownControl();\n this.patchForm(value);\n }\n\n patchForm(value: MultiInputValue | undefined) {\n if (value) {\n this.multiInputForm.patchValue(value, { emitEvent: false });\n } else {\n this.multiInputForm.reset(undefined, { emitEvent: false });\n }\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.updateDisableState(isDisabled);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n protected valueChanged(value: MultiInputValue): void {\n this.valueChange.emit(value);\n this.onChange(value);\n }\n\n protected get dropdownControl(): AbstractControl<unknown> {\n return this.multiInputForm.controls[this.itemValueField()];\n }\n\n protected get inputControl(): AbstractControl<unknown> {\n return this.multiInputForm.controls.value;\n }\n\n protected markAsTouched(): void {\n this.onTouch();\n }\n\n protected addDropdownControl(): void {\n if (!this.multiInputForm.value[this.itemValueField()]) {\n this.multiInputForm.addControl(this.itemValueField(), new FormControl(null), { emitEvent: false });\n this.updateDisableState(this.disabled());\n }\n }\n\n protected get controlHasError(): boolean {\n if (this.ngControl) {\n return !!(this.ngControl.errors && this.ngControl.touched);\n } else {\n return this.errors()?.length > 0;\n }\n }\n\n protected getValueLength(): number {\n return this.inputControl?.value?.toString().length || 0;\n }\n\n private updateDisableState(state: boolean): void {\n if (state) {\n this.multiInputForm.disable({ emitEvent: false });\n } else {\n this.multiInputForm.enable({ emitEvent: false });\n }\n }\n}\n","<div [formGroup]=\"multiInputForm\">\n <div class=\"controls-wrapper\">\n <ui-dropdown\n [hasError]=\"controlHasError\"\n [formControlName]=\"itemValueField()\"\n [valueList]=\"itemsList()\"\n [textField]=\"itemTextField()\"\n [valueField]=\"itemValueField()\"\n [showBottomContent]=\"false\"\n [allowClear]=\"false\"\n (closed)=\"markAsTouched()\"\n ></ui-dropdown>\n\n <ui-field\n [hasError]=\"controlHasError\"\n formControlName=\"value\"\n [label]=\"label()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [hideBuiltInErrors]=\"true\"\n [showBottomContent]=\"false\"\n [allowOnlyDigits]=\"true\"\n [fullWidth]=\"fullWidth\"\n [allowNegative]=\"allowNegative()\"\n (focusout)=\"markAsTouched()\"\n ></ui-field>\n </div>\n\n @if (!hasCustomErrors()) {\n <mat-hint class=\"info\" *ngIf=\"!controlHasError && maxCharacters() && !errors()?.length\"\n >{{ getValueLength() }} / {{ maxCharacters() }}</mat-hint\n >\n\n @if (errors()?.length || (ngControl?.errors | hasValidationError)) {\n <mat-hint class=\"error\">\n @for (error of errors(); track error) {\n <ui-icon name=\"Error-in-line\"></ui-icon>{{ error }}\n }\n @if ((ngControl?.errors | hasValidationError) && !hideBuiltInErrors()) {\n <ui-validation-error\n [touchedOn]=\"!controlHasError\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors() ? null : label()\"\n ></ui-validation-error>\n }\n </mat-hint>\n }\n }\n <ng-content select=\"[custom-errors]\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MultiInputComponent } from './multi-input.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { DividerComponentModule } from '@testgorilla/tgo-ui/components/divider';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { DropdownComponentModule } from '@testgorilla/tgo-ui/components/dropdown';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DigitsOnlyDirective, HasValidationErrorPipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\nimport { FieldComponentModule } from '@testgorilla/tgo-ui/components/field';\n\n\n\n@NgModule({\n declarations: [MultiInputComponent],\n imports: [\n CommonModule,\n MatInputModule,\n MatSelectModule,\n DividerComponentModule,\n IconComponentModule,\n DropdownComponentModule,\n ReactiveFormsModule,\n DigitsOnlyDirective,\n HasValidationErrorPipe,\n ValidationErrorModule,\n FieldComponentModule,\n ],\n exports: [MultiInputComponent],\n})\nexport class MultiInputComponentModule { }\n","import { InjectionToken } from '@angular/core';\n\nexport const SIDE_PANEL_DATA = new InjectionToken<unknown>('SIDE_PANEL_DATA');\n","/* eslint-disable no-underscore-dangle */\nimport { InjectionToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type SidePanelPosition = 'left' | 'right';\n\nexport enum SidePanelAnimationState {\n Open = 'open',\n Closed = 'closed',\n ClosedRight = 'closedRight',\n ClosedLeft = 'closedLeft',\n}\n\nexport type SidePanelSize = 'small' | 'large';\n\nexport class SidePanelConfig {\n title: string;\n position: SidePanelPosition;\n showBackButton: boolean;\n data?: unknown;\n showCloseButton?: boolean;\n showHeader?: boolean;\n panelClass?: string;\n size?: SidePanelSize;\n}\n\nexport const defaultSidePanelConfig: SidePanelConfig = {\n position: 'right',\n showBackButton: false,\n title: '',\n data: undefined,\n showHeader: true,\n showCloseButton: true,\n size: 'small',\n};\n\nexport const SIDE_PANEL_CONFIG = new InjectionToken<SidePanelConfig>('SIDE_PANEL_CONFIG', {\n providedIn: 'root',\n factory: () => defaultSidePanelConfig,\n});\n\n/**\n * Reference to a side panel opened via the SidePanelService.\n * Similar to MatDialogRef from Angular Material.\n */\nexport class SidePanelRef<T = any, R = any> {\n private readonly _afterClosed = new Subject<T | undefined>();\n\n /**\n * Instance of the component loaded into the side panel.\n * Will be undefined if a TemplateRef was used instead of a component.\n */\n componentInstance?: R;\n\n /**\n * Observable that emits when the side panel is closed.\n * Emits the result passed to the close method, or undefined if no result was provided.\n */\n afterClosed(): Observable<T | undefined> {\n return this._afterClosed.asObservable();\n }\n\n /**\n * Closes the side panel with an optional result.\n * @param result Optional data to be emitted via afterClosed()\n */\n close(result?: T): void {\n // This will be overridden by the service\n }\n\n /** @internal */\n _emitClose(result?: T): void {\n this._afterClosed.next(result);\n this._afterClosed.complete();\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SidePanelAnimationState } from './side-panel.model';\n\nexport const sidePanelAnimationDuration = 150;\n\nexport const sidePanelAnimation = [\n trigger('slideInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ transform: 'translateX(0)' })),\n state(`${SidePanelAnimationState.ClosedRight}`, style({ transform: 'translateX(100%)' })),\n state(`${SidePanelAnimationState.ClosedLeft}`, style({ transform: 'translateX(-100%)' })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedRight}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedLeft}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n\nexport const backdropAnimation = [\n trigger('fadeInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ opacity: 0.25 })),\n state(`${SidePanelAnimationState.Closed}`, style({ opacity: 0 })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.Closed}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { SIDE_PANEL_DATA } from './side-panel-data-injection-token';\nimport { SidePanelComponent } from './side-panel.component';\nimport { SIDE_PANEL_CONFIG, SidePanelConfig, SidePanelPosition, SidePanelRef } from './side-panel.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SidePanelService {\n private SidePanelComponentRef?: ComponentRef<SidePanelComponent>;\n private contentComponentRef?: ComponentRef<any>;\n private embeddedViewRef?: EmbeddedViewRef<any>;\n private currentSidePanelRef?: SidePanelRef<any>;\n private defaultSidePanelConfig: SidePanelConfig = inject(SIDE_PANEL_CONFIG);\n private injector = inject(EnvironmentInjector);\n private appRef = inject(ApplicationRef);\n\n constructor() {}\n\n open<T = any, R = any>(\n content: Type<R> | TemplateRef<any>,\n config: Partial<SidePanelConfig>,\n parentInjector?: Injector\n ): SidePanelRef<T, R> {\n const panelConfig: SidePanelConfig = { ...this.defaultSidePanelConfig, ...config };\n\n const sidePanelRef = new SidePanelRef<T, R>();\n this.currentSidePanelRef = sidePanelRef;\n\n sidePanelRef.close = (result?: T) => {\n this.close(result);\n };\n\n if (!this.SidePanelComponentRef) {\n const injector = this.createSidePanelInjector(panelConfig, parentInjector);\n const SidePanelComponentRef = this.createSidePanelComponent(panelConfig.position, injector);\n this.SidePanelComponentRef = SidePanelComponentRef;\n }\n\n if (content instanceof TemplateRef) {\n this.loadTemplate(content);\n } else {\n this.loadComponent(content, sidePanelRef);\n }\n\n this.SidePanelComponentRef.instance.open();\n\n return sidePanelRef;\n }\n\n close<T = any>(result?: T): void {\n if (this.SidePanelComponentRef) {\n this.SidePanelComponentRef.instance.close(result);\n }\n }\n\n destroyComponent<T = any>(result?: T): void {\n if (this.currentSidePanelRef) {\n this.currentSidePanelRef._emitClose(result);\n this.currentSidePanelRef = undefined;\n }\n\n if (this.SidePanelComponentRef) {\n this.appRef.detachView(this.SidePanelComponentRef.hostView);\n this.SidePanelComponentRef.destroy();\n this.SidePanelComponentRef = undefined;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.destroy();\n this.contentComponentRef = undefined;\n }\n }\n\n private createSidePanelInjector(config: SidePanelConfig, parentInjector?: Injector): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: SidePanelConfig, useValue: config },\n { provide: SIDE_PANEL_DATA, useValue: config.data },\n ],\n });\n }\n\n private createSidePanelComponent(position: SidePanelPosition, injector: Injector): ComponentRef<SidePanelComponent> {\n const sidePanelComponentRef = createComponent(SidePanelComponent, {\n environmentInjector: this.injector,\n elementInjector: injector,\n });\n\n this.appRef.attachView(sidePanelComponentRef.hostView);\n\n const sidePanelEl = (sidePanelComponentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n sidePanelEl.querySelector('.side-panel')?.classList.add(position);\n\n document.body.appendChild(sidePanelEl);\n\n return sidePanelComponentRef;\n }\n\n private loadComponent<R = any>(component: Type<R>, sidePanelRef: SidePanelRef<any, R>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.contentComponentRef = viewContainerRef().createComponent(component);\n // Set the component instance on the SidePanelRef\n sidePanelRef.componentInstance = this.contentComponentRef.instance as R;\n }\n }\n\n private loadTemplate(template: TemplateRef<any>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.embeddedViewRef = viewContainerRef().createEmbeddedView(template);\n }\n }\n}\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\nimport { backdropAnimation, sidePanelAnimation, sidePanelAnimationDuration } from './side-panel.animations';\nimport { SidePanelAnimationState, SidePanelConfig, SidePanelPosition, SidePanelSize } from './side-panel.model';\nimport { SidePanelService } from './side-panel.service';\n\n@Component({\n selector: 'ui-side-panel',\n templateUrl: './side-panel.component.html',\n styleUrls: ['./side-panel.component.scss'],\n animations: [sidePanelAnimation, backdropAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TooltipComponentModule, ButtonComponentModule, UiTranslatePipe, AsyncPipe, NgClass]\n})\nexport class SidePanelComponent {\n sidePanelPosition = signal<SidePanelPosition>('right');\n\n sidePanelContainer = viewChild.required('sidePanelContainer', { read: ViewContainerRef });\n sidePanel = viewChild.required<ElementRef<HTMLDivElement>>('sidePanel');\n backdrop = viewChild.required<ElementRef<HTMLDivElement>>('sidePanelBackdrop');\n language = LanguageService.defaultLanguage;\n isOpen = signal<boolean>(false);\n size = signal<SidePanelSize | undefined>(undefined);\n isSmall = computed(() => this.size() === 'small');\n isLarge = computed(() => this.size() === 'large');\n\n animation = computed(() => {\n if (this.isOpen()) {\n return SidePanelAnimationState.Open;\n }\n\n return this.sidePanelPosition() === 'left'\n ? SidePanelAnimationState.ClosedLeft\n : SidePanelAnimationState.ClosedRight;\n });\n\n private sidePanelService = inject(SidePanelService);\n public sidePanelConfig = inject(SidePanelConfig);\n\n constructor() {\n const { position, size } = this.sidePanelConfig;\n this.sidePanelPosition.set(position);\n this.size.set(size);\n }\n\n open(): void {\n setTimeout(() => {\n this.isOpen.set(true);\n });\n }\n\n close(result?: any): void {\n this.isOpen.set(false);\n setTimeout(() => {\n this.sidePanelService.destroyComponent(result);\n }, sidePanelAnimationDuration);\n }\n}\n","<div class=\"side-panel-backdrop\" #sidePanelBackdrop (click)=\"close()\" [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (sidePanelConfig.showBackButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title\">{{ sidePanelConfig.title }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n","export type SpiderChartSize = 'large' | 'small';\n// These are the sizes of the canvas, not the chart itself. It includes 40px of padding on all sides.\nexport const SmallSpiderChartSize: number = 200;\nexport const LargeSpiderChartSize: number = 280;\nexport type SpiderChartData = {\n labels: string[];\n labelDescription: string[];\n plotData: [PlotData, PlotData] | [PlotData]; // Current implementation supports max 2 datasets.\n};\nexport type PlotData = {\n databaseLabel: string;\n data: number[];\n};\n","import { Component, ElementRef, Input, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { LargeSpiderChartSize, SmallSpiderChartSize, SpiderChartData, SpiderChartSize } from './spider-chart.model';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { Chart, ChartData, ChartOptions } from 'chart.js';\nimport { Color } from '../../models/colors.model';\nimport { BaseChartDirective } from 'ng2-charts';\n\n@Component({\n selector: 'ui-spider-chart',\n templateUrl: './spider-chart.component.html',\n styleUrls: ['./spider-chart.component.scss'],\n standalone: false\n})\nexport class SpiderChartComponent implements OnInit {\n /**\n * The size of the spider chart.\n * @type {SpiderChartSize}\n * @memberof SpiderChartComponent\n */\n @Input() size: SpiderChartSize = 'large';\n\n /**\n * The data to be used for the spider chart.\n * @type {SpiderChartData}\n * @memberof SpiderChartComponent\n */\n @Input() spiderChartData: SpiderChartData;\n\n /**\n * The step size for the spider chart.\n * @type {number}\n * @memberof SpiderChartComponent\n */\n @Input() stepSize: number = 20;\n\n /**\n * The aria label for the spider chart.\n * @type {string}\n * @memberof SpiderChartComponent\n */\n @Input() ariaLabel: string = 'Radar chart. Press tab to navigate through the chart.';\n\n /**\n * Whether the spider chart is loading.\n * @type {boolean}\n * @memberof SpiderChartComponent\n */\n @Input() loading: boolean = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SpinnerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n @ViewChild(BaseChartDirective) chart: BaseChartDirective;\n @ViewChildren('labelContainer') labelContainers: QueryList<ElementRef>;\n @ViewChildren('fakeDataPoints') fakeDataPoints: QueryList<ElementRef>;\n @ViewChildren('fakeDataPointsSecondary') fakeDataPointsSecondary: QueryList<ElementRef>;\n @ViewChildren('legendItem') legendItems: QueryList<ElementRef>;\n\n radarChartData: ChartData<'radar'> = {\n labels: [],\n datasets: [],\n };\n radarChartOptions: ChartOptions<'radar'>;\n labelPositions: { [key: string]: { x: number; y: number } } = {};\n labelPositionsVisible: boolean = false;\n focusedLabelIndex: number = 0;\n focusedFakeDataPointIndex: number = 0;\n loadingChartData: ChartData<'radar'> = {\n labels: [1, 2, 3, 4, 5, 6],\n datasets: [],\n };\n loadingChartOptions: ChartOptions<'radar'> = {\n responsive: true,\n layout: {\n padding: {\n left: 40,\n right: 40,\n top: 40,\n bottom: 40,\n },\n },\n scales: {\n r: {\n angleLines: {\n display: true,\n color: Color.GRAYSCALE_30,\n },\n grid: {\n color: () => Color.GRAYSCALE_30,\n },\n pointLabels: {\n display: false,\n },\n suggestedMin: 0,\n suggestedMax: 100,\n ticks: {\n stepSize: this.stepSize,\n display: false,\n },\n },\n },\n };\n protected readonly translationContext = 'CHARTS.SPIDER.';\n\n ngOnInit(): void {\n if (!this.loading) {\n this.handleInputErrors();\n this.setChartData();\n this.setChartOptions();\n }\n }\n\n private handleInputErrors() {\n if (!this.spiderChartData.labels || this.spiderChartData.labels.length === 0) {\n throw new Error('The \"labels\" input is required and cannot be empty.');\n }\n if (!this.spiderChartData.labelDescription || this.spiderChartData.labelDescription.length === 0) {\n throw new Error('The \"labelDescription\" input is required and cannot be empty.');\n }\n if (\n this.spiderChartData.labelDescription &&\n this.spiderChartData.labelDescription.length !== this.spiderChartData.labels.length\n ) {\n throw new Error('The \"labelDescription\" input must have the same length as \"labels\".');\n }\n if (!this.spiderChartData.plotData[0].databaseLabel) {\n throw new Error('The \"plotData.databaseLabel\" input is required.');\n }\n if (!this.spiderChartData.plotData[0].data || this.spiderChartData.plotData[0].data.length === 0) {\n throw new Error('The \"plotData.data\" input is required and cannot be empty.');\n }\n if (this.spiderChartData.plotData[0].data.length !== this.spiderChartData.labels.length) {\n throw new Error('The \"plotData.data\" input must have the same length as \"labels\".');\n }\n if (\n this.spiderChartData.plotData.length === 2 &&\n this.spiderChartData.labels.length > 0 &&\n this.spiderChartData.plotData[1].data &&\n this.spiderChartData.plotData[1].data.length !== this.spiderChartData.labels.length\n ) {\n throw new Error('The \"plotData.data\" input must have the same length as \"labels\".');\n }\n }\n\n private setChartData() {\n const datasets = [];\n datasets.push({\n label: this.spiderChartData.plotData[0].databaseLabel,\n data: this.spiderChartData.plotData[0].data,\n fill: true,\n backgroundColor: 'rgba(212, 16, 170, 0.2)',\n borderColor: Color.BRAND_50,\n pointBackgroundColor: Color.BRAND_50,\n pointBorderColor: Color.TGO_WHITE,\n pointHoverBackgroundColor: Color.TGO_WHITE,\n pointHoverBorderColor: Color.BRAND_50,\n });\n if (this.spiderChartData.plotData.length === 2) {\n datasets.push({\n label: this.spiderChartData.plotData[1].databaseLabel,\n data: this.spiderChartData.plotData[1].data,\n fill: false,\n borderColor: Color.BLACK,\n borderDash: [5, 5],\n borderWidth: 1,\n pointBackgroundColor: Color.BLACK,\n pointBorderColor: Color.TGO_WHITE,\n pointHoverBackgroundColor: Color.TGO_WHITE,\n pointHoverBorderColor: Color.BLACK,\n });\n }\n this.radarChartData = {\n labels: this.spiderChartData.labels,\n datasets: datasets,\n };\n }\n\n private setChartOptions() {\n this.radarChartOptions = {\n responsive: true,\n elements: {\n line: {\n borderWidth: 3,\n },\n },\n layout: {\n padding: {\n left: 40,\n right: 40,\n top: 40,\n bottom: 40,\n },\n },\n scales: {\n r: {\n angleLines: {\n display: true,\n color: Color.BLACK,\n },\n grid: {\n color: context => {\n if (context.tick.value === 100) {\n return Color.BLACK;\n }\n return Color.GRAYSCALE_30;\n },\n },\n pointLabels: {\n color: 'black',\n font: {\n family: 'Arial',\n size: 14,\n },\n display: false,\n },\n suggestedMin: 0,\n suggestedMax: 100,\n ticks: {\n stepSize: this.stepSize,\n display: false,\n },\n },\n },\n plugins: {\n legend: {\n display: false,\n },\n },\n };\n }\n\n ngAfterViewInit(): void {\n if (this.chart?.chart && !this.loading) {\n this.logCornerCoordinates(this.chart.chart);\n }\n }\n\n private logCornerCoordinates(chart: Chart) {\n const scale = chart.scales['r'] as any;\n const canvasWidth = this.size === 'large' ? LargeSpiderChartSize : SmallSpiderChartSize;\n const canvasHeight = this.size === 'large' ? LargeSpiderChartSize : SmallSpiderChartSize;\n\n // Loop through the labels and calculate the percentage coordinates\n this.spiderChartData.labels.forEach((label, index) => {\n const position = scale.getPointPositionForValue(index, scale.max);\n\n // Calculate percentage values relative to the canvas size\n const xPercent = (position.x / canvasWidth) * 100;\n const yPercent = ((canvasHeight - position.y) / canvasHeight) * 100; // Inverting the Y-axis\n\n this.labelPositions[label] = { x: Number(xPercent.toFixed(2)), y: Number(yPercent.toFixed(2)) };\n });\n this.labelPositionsVisible = true;\n }\n\n getCenteredLabelBottomPosition(label: string, height: number) {\n const position = this.labelPositions[label];\n const padding = 7;\n if (position.x > 50 || position.x < 50) {\n return `calc(${position.y}% - ${height / 2}px)`;\n } else if (position.y < 50) {\n return `calc(${position.y}% - ${height}px - ${padding}px)`;\n } else {\n return `calc(${position.y}% + ${padding}px)`;\n }\n }\n\n getCenteredLabelLeftPosition(label: string, width: number) {\n const position = this.labelPositions[label];\n const padding = 15;\n if (position.x === 50) {\n return `calc(${position.x}% - ${width / 2}px)`;\n } else if (position.x < 50) {\n return `calc(${position.x}% - ${width}px - ${padding}px)`;\n } else {\n return `calc(${position.x}% + ${padding}px)`;\n }\n }\n\n onLabelKeyDown(event: KeyboardEvent, index: number) {\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n this.focusNextLabel(index);\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n this.focusPreviousLabel(index);\n }\n }\n\n private focusNextLabel(index: number) {\n const nextIndex = index + 1;\n if (nextIndex < this.labelContainers.length) {\n this.labelContainers.get(nextIndex)?.nativeElement.focus();\n } else {\n this.labelContainers.first?.nativeElement.focus();\n }\n this.focusedLabelIndex = nextIndex;\n }\n\n private focusPreviousLabel(index: number) {\n const previousIndex = index - 1;\n if (previousIndex >= 0) {\n this.labelContainers.get(previousIndex)?.nativeElement.focus();\n } else {\n this.labelContainers.last?.nativeElement.focus();\n }\n this.focusedLabelIndex = previousIndex;\n }\n\n onLegendItemKeyDown(event: KeyboardEvent, index: number) {\n if (event.key === 'Enter') {\n this.toggleDatasetVisibility(index);\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n this.focusNextLegendItem(index);\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n this.focusPreviousLegendItem(index);\n }\n }\n\n private focusNextLegendItem(index: number) {\n const nextIndex = index + 1;\n if (nextIndex < this.legendItems.length) {\n this.legendItems.get(nextIndex)?.nativeElement.focus();\n } else {\n this.legendItems.first?.nativeElement.focus();\n }\n }\n\n private focusPreviousLegendItem(index: number) {\n const previousIndex = index - 1;\n if (previousIndex >= 0) {\n this.legendItems.get(previousIndex)?.nativeElement.focus();\n } else {\n this.legendItems.last?.nativeElement.focus();\n }\n }\n\n onFakeDataPointsKeyDown(event: KeyboardEvent, index: number, isSecondary: boolean = false) {\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n this.focusNextFakeDataPoint(index, isSecondary);\n this.showTooltipForDataPoint(index + 1 > this.spiderChartData.labels.length ? 0 : index + 1, isSecondary);\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n this.focusPreviousFakeDataPoint(index, isSecondary);\n this.showTooltipForDataPoint(index - 1 < 0 ? this.spiderChartData.labels.length - 1 : index - 1, isSecondary);\n } else if (event.key === 'Tab') {\n this.resetActiveElement();\n }\n }\n\n private focusNextFakeDataPoint(index: number, isSecondary: boolean = false) {\n const nextIndex = index + 1;\n if (nextIndex < this.fakeDataPoints.length) {\n const fakeDataPoints = isSecondary ? this.fakeDataPointsSecondary : this.fakeDataPoints;\n fakeDataPoints.get(nextIndex)?.nativeElement.focus();\n } else {\n const fakeDataPoints = isSecondary ? this.fakeDataPointsSecondary : this.fakeDataPoints;\n fakeDataPoints.first?.nativeElement.focus();\n }\n if (!isSecondary) {\n this.focusedFakeDataPointIndex = nextIndex;\n }\n }\n\n private focusPreviousFakeDataPoint(index: number, isSecondary: boolean = false) {\n const previousIndex = index - 1;\n if (previousIndex >= 0) {\n const fakeDataPoints = isSecondary ? this.fakeDataPointsSecondary : this.fakeDataPoints;\n fakeDataPoints.get(previousIndex)?.nativeElement.focus();\n } else {\n const fakeDataPoints = isSecondary ? this.fakeDataPointsSecondary : this.fakeDataPoints;\n fakeDataPoints.last?.nativeElement.focus();\n }\n if (!isSecondary) {\n this.focusedFakeDataPointIndex = previousIndex;\n }\n }\n\n showTooltipForDataPoint(index: number, isSecondary: boolean = false) {\n const chartInstance = this.chart?.chart;\n if (!chartInstance) return;\n const activeElement = [{ datasetIndex: isSecondary ? 1 : 0, index }];\n const meta = chartInstance.getDatasetMeta(isSecondary ? 1 : 0);\n const dataPoint = meta.data[index];\n const eventPosition = {\n x: dataPoint.x,\n y: dataPoint.y,\n };\n if (!isSecondary) {\n this.focusedFakeDataPointIndex = index;\n }\n\n chartInstance.tooltip?.setActiveElements(activeElement, eventPosition);\n\n chartInstance.update();\n }\n\n private resetActiveElement() {\n const chartInstance = this.chart?.chart;\n if (!chartInstance) return;\n\n // Clear the active elements to hide the tooltip\n chartInstance.tooltip?.setActiveElements([], { x: 0, y: 0 });\n\n chartInstance.update();\n }\n\n toggleDatasetVisibility(datasetIndex: number) {\n const chartInstance = this.chart?.chart;\n if (!chartInstance) return;\n\n const dataset = chartInstance.data.datasets[datasetIndex];\n dataset.hidden = !dataset.hidden;\n chartInstance.update();\n }\n\n isDatasetVisible(datasetIndex: number) {\n const chartInstance = this.chart?.chart;\n if (!chartInstance) return;\n return !chartInstance.data.datasets[datasetIndex].hidden;\n }\n\n getFirstLine(label: string): string {\n const words = label.split(' ');\n let firstLine = '';\n for (const word of words) {\n if ((firstLine + word).length <= 20) {\n firstLine += (firstLine ? ' ' : '') + word;\n } else {\n break;\n }\n }\n return firstLine;\n }\n\n getSecondLine(label: string): string {\n const firstLine = this.getFirstLine(label);\n return label.substring(firstLine.length).trim();\n }\n}\n","<div class=\"spider-chart-container\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabel\">\n <div class=\"spacing-container\"\n [ngClass]=\"{'small-spacing': radarChartData.labels && radarChartData.labels.length % 2 === 1 && !loading}\">\n <div class=\"chart-container\"\n [style.width]=\"size === 'large' ? '280px' : '200px'\"\n [style.height]=\"size === 'large' ? '280px' : '200px'\">\n @if (!loading) {\n <canvas\n baseChart\n [data]=\"radarChartData\"\n [options]=\"radarChartOptions\"\n type=\"radar\"\n class=\"chart\"\n >\n </canvas>\n } @else {\n <canvas\n baseChart\n [data]=\"loadingChartData\"\n [options]=\"loadingChartOptions\"\n type=\"radar\"\n class=\"chart\"\n >\n </canvas>\n <ui-spinner></ui-spinner>\n }\n\n @if (labelPositionsVisible) {\n <div class=\"overlay-container\">\n @for (label of spiderChartData.labels; track label) {\n <div class=\"label-container\" #labelContainer\n [matTooltip]=\"spiderChartData.labelDescription[$index]\"\n [tabindex]=\"$index === 0 ? '0' : '-1'\"\n (keydown)=\"onLabelKeyDown($event, $index)\"\n [attr.aria-label]=\"spiderChartData.labelDescription[$index]\"\n [style.left]=\"getCenteredLabelLeftPosition(label, labelContainer.offsetWidth)\"\n [style.bottom]=\"getCenteredLabelBottomPosition(label, labelContainer.offsetHeight)\">\n @if (!(label.length > 20 && size === 'large' && spiderChartData.labels.length < 9)) {\n <div class=\"label\" [style.max-width]=\"size === 'large' ? '135px' : '100px'\">\n {{ label }}\n </div>\n } @else {\n <div>\n <div class=\"label\" [style.max-width]=\"size === 'large' ? '135px' : '100px'\">{{ label | memoizeFunc : getFirstLine }}</div>\n <div class=\"label\" [style.max-width]=\"size === 'large' ? '135px' : '100px'\">{{ label | memoizeFunc : getSecondLine : this }}</div>\n </div>\n }\n <span class=\"value\">{{ spiderChartData.plotData[0].data[$index] }}</span>\n </div>\n <span class=\"fake-data-points\" #fakeDataPoints\n [tabindex]=\"focusedLabelIndex === $index ? '0' : '-1'\"\n (focus)=\"$index === focusedLabelIndex ? showTooltipForDataPoint($index) : null\"\n (keydown)=\"onFakeDataPointsKeyDown($event, $index)\">\n </span>\n @if (radarChartData.datasets.length > 1) {\n <span class=\"fake-data-points-secondary\" #fakeDataPointsSecondary\n [tabindex]=\"focusedFakeDataPointIndex === $index ? '0' : '-1'\"\n (focus)=\"$index === focusedFakeDataPointIndex ? showTooltipForDataPoint($index, true) : null\"\n (keydown)=\"onFakeDataPointsKeyDown($event, $index, true)\">\n </span>\n }\n }\n </div>\n }\n </div>\n </div>\n @if (radarChartData.datasets.length > 0) {\n <div class=\"legend-container\">\n @for (dataset of radarChartData.datasets; track dataset.label) {\n <div class=\"legend-item\"\n (click)=\"toggleDatasetVisibility($index)\"\n [tabindex]=\"$index === 0 ? '0' : '-1'\"\n role=\"button\"\n [attr.aria-pressed]=\"isDatasetVisible($index) ? false : true\"\n [attr.aria-label]=\"isDatasetVisible($index) ?\n ((translationContext + 'DATASET_VISIBLE') | uiTranslate : { dataset: dataset.label } | async) :\n ((translationContext + 'DATASET_HIDDEN') | uiTranslate : { dataset: dataset.label } | async)\"\n (keydown)=\"onLegendItemKeyDown($event, $index)\"\n #legendItem>\n <span class=\"legend-line\" [ngClass]=\"{'solid-line': $index === 0, 'dashed-line': $index === 1}\"></span>\n <span class=\"legend-label\" [style.text-decoration]=\"isDatasetVisible($index) ? 'none' : 'line-through'\">\n {{ dataset.label }}\n </span>\n </div>\n }\n </div>\n }\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { SpiderChartComponent } from './spider-chart.component';\nimport { NgChartsModule } from 'ng2-charts';\nimport { Chart, registerables } from 'chart.js';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { SpinnerComponentModule } from '@testgorilla/tgo-ui/components/spinner';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\n\nChart.register(...registerables);\n\n@NgModule({\n declarations: [SpiderChartComponent],\n exports: [SpiderChartComponent],\n imports: [\n NgClass,\n UiTranslatePipe,\n NgChartsModule,\n MatTooltipModule,\n UiTranslatePipe,\n MemoizeFuncPipe,\n SpinnerComponentModule,\n CommonModule,\n ],\n})\nexport class SpiderChartComponentModule {}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n ModelSignal,\n Optional,\n computed,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IKeyboardEvent } from '../../models/keyboard-events.model';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { Language } from '@testgorilla/tgo-ui/components/core';\nimport { LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DividerComponentModule } from '@testgorilla/tgo-ui/components/divider';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\nimport { RadioButtonComponentModule } from '@testgorilla/tgo-ui/components/radio-button';\nimport type { ChecklistItem } from './checklist.model';\n\n@Component({\n selector: 'ui-checklist',\n imports: [\n ProgressBarComponentModule,\n RadioButtonComponentModule,\n IconComponentModule,\n ButtonComponentModule,\n DividerComponentModule,\n UiTranslatePipe,\n AsyncPipe,\n ],\n templateUrl: './checklist.component.html',\n styleUrl: './checklist.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChecklistComponent {\n private readonly domSanitizer = inject(DomSanitizer);\n /**\n * Label for the checklist\n * @type {string}\n * @memberof ChecklistComponent\n */\n label = input('');\n\n /**\n * Sub title/Description for the checklist\n * @type {string}\n * @memberof ChecklistComponent\n */\n description = input(null, {\n transform: (value: string) => this.domSanitizer.bypassSecurityTrustHtml(value),\n });\n\n /**\n * Items for the checklist\n * @type {ModelSignal<ChecklistItem[]>}\n * @memberof ChecklistComponent\n */\n items = model<ChecklistItem[]>([]);\n\n /**\n * Application theme\n * @type {ApplicationTheme}\n * @memberof ChecklistComponent\n */\n applicationTheme = input<ApplicationTheme | undefined>(undefined);\n readonly theme = computed(() => this.applicationTheme() ?? this.defaultAppTheme);\n\n /**\n * Confirm button label\n * @type {string}\n * @memberof ChecklistComponent\n */\n footerButtonLabel = input<string | undefined>(undefined);\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ChecklistComponent\n */\n ariaLabel = input<string | undefined>(undefined);\n\n /**\n * The language to be used\n * @property language\n * @type {Language}\n * @memberof ChecklistComponent\n */\n language = input(LanguageService.defaultLanguage);\n\n /**\n * A boolean property that determines whether the checklist items should be automatically checked.\n *\n * @type {boolean}\n */\n autocheck = input(true);\n\n /**\n * Event emitter that triggers when the footer button is clicked.\n * Emits a void event.\n */\n footerButtonClicked = output<void>();\n\n /**\n * An output event emitter that signifies the completion of a task or process.\n * This event does not carry any payload.\n */\n readonly completed = output<void>();\n\n /**\n * Represents the currently selected item in the checklist.\n * This is an instance of the `ChecklistItem` supports two-way binding.\n */\n selectedItem = model<ChecklistItem>();\n\n readonly currentIndex = computed(() => {\n const items = this.items();\n const selectedItem = this.selectedItem();\n return selectedItem ? items.indexOf(selectedItem) : -1;\n });\n\n protected progress = computed(() => {\n const items = this.items();\n const total = items.length;\n const checked = items.filter(item => item.checked).length;\n const progressValue = Number(((checked / total) * 100).toFixed(0));\n if (progressValue === 100) {\n this.completed.emit();\n }\n return progressValue;\n });\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {}\n\n selectItem(item: ChecklistItem) {\n if ((item.checked || item.disabled || this.selectedItem() === item) && !item.reselect) {\n return;\n }\n if (this.autocheck()) {\n item.checked = item?.reselect ? !item.checked : true;\n this.items.set([...this.items()]);\n }\n this.selectedItem.set(item);\n }\n\n keydownHandler($event: KeyboardEvent, item: ChecklistItem) {\n if (IKeyboardEvent.SPACE === $event.key || IKeyboardEvent.ENTER === $event.key) {\n $event.preventDefault();\n this.selectItem(item);\n }\n }\n\n next() {\n const currentIndex = this.currentIndex();\n if (currentIndex < this.items().length - 1) {\n this.selectItem(this.items()[currentIndex + 1]);\n }\n }\n\n prev() {\n const currentIndex = this.currentIndex();\n if (currentIndex > 0) {\n this.selectItem(this.items()[currentIndex - 1]);\n }\n }\n\n footerButtonClick(event: Event) {\n event.preventDefault();\n this.footerButtonClicked.emit();\n }\n}\n","@if (label()) {\n <h4 [attr.aria-label]=\"ariaLabel() ?? label()\">{{ label() }}</h4>\n}\n@if (description()) {\n <div aria-label=\"description\" class=\"description\" [innerHTML]=\"description()\"></div>\n}\n\n<ui-progress-bar [showPercentage]=\"true\" [progress]=\"progress()\"></ui-progress-bar>\n\n<div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ 'COMMON.PROGRESS' | uiTranslate: { progress: progress() } | async }}\n</div>\n\n<ui-divider size=\"small\" companyColor=\"#d3d3d3\"> </ui-divider>\n\n<div class=\"checklist-container\" data-testid=\"checklist-container\">\n @for (item of items(); track item.value + item.checked; let i = $index) {\n <div\n data-testid=\"checklist-item\"\n class=\"checklist-item\"\n [class.disabled]=\"item.disabled\"\n [class.checked]=\"item.checked\"\n [class.active]=\"item === selectedItem() && !autocheck()\"\n [attr.aria-labelledby]=\"'item-' + item.value\"\n [tabindex]=\"item?.disabled ? -1 : 0\"\n (click)=\"selectItem(item)\"\n (keydown)=\"keydownHandler($event, item)\"\n >\n <div class=\"content\">\n <ui-icon\n [name]=\"item.checked ? 'Check-in-line' : 'Circle-in-line'\"\n [filled]=\"item.checked\"\n class=\"checked\"\n [applicationTheme]=\"theme()\"\n [size]=\"'16'\"\n [color]=\"item.checked ? 'white' : item.disabled ? '#919191' : 'dark'\"\n ></ui-icon>\n <div class=\"label-and-description\">\n <span [id]=\"'item-' + item.value\" class=\"label\">{{ item.label }}</span>\n @if (item.description) {\n <span class=\"item-description\">{{ item.description }}</span>\n }\n </div>\n </div>\n\n @if (item.hasLink && !item.disabled) {\n <div class=\"navigation\">\n <ui-icon\n [tabindex]=\"-1\"\n class=\"link\"\n [name]=\"'Arrow-chevron-right-filled'\"\n [applicationTheme]=\"theme()\"\n [size]=\"'24'\"\n color=\"rebrand-black\"\n ></ui-icon>\n </div>\n }\n </div>\n }\n</div>\n@if (footerButtonLabel()) {\n <div class=\"action-btn\">\n <ui-button\n data-testid=\"checklist-footer-button\"\n [label]=\"footerButtonLabel()!\"\n [variant]=\"'link'\"\n [companyColor]=\"'#000'\"\n (buttonClickEvent)=\"footerButtonClick($event)\"\n ></ui-button>\n </div>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DividerComponentModule } from '@testgorilla/tgo-ui/components/divider';\nimport { EllipseTextDirective } from \"@testgorilla/tgo-ui/components/core\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\n\n@Component({\n selector: 'ui-media-card',\n imports: [\n DividerComponentModule,\n ButtonComponentModule,\n EllipseTextDirective,\n MatTooltipModule\n ],\n templateUrl: './media-card.component.html',\n styleUrl: './media-card.component.scss'\n})\nexport class MediaCardComponent {\n /**\n * The title of the card\n * @type {string}\n * @memberof MediaCardComponent\n */\n @Input({ required: true }) title: string;\n /**\n * The description of the card\n * @type {string}\n * @memberof MediaCardComponent\n */\n @Input({ required: true }) description: string;\n /**\n * The image of the card\n * @type {string}\n * @memberof MediaCardComponent\n */\n @Input({ required: true }) image: string;\n /**\n * The label of the button\n * @type {string}\n * @memberof MediaCardComponent\n */\n @Input({ required: true }) buttonLabel = '';\n @Output() buttonClick = new EventEmitter<void>();\n protected showTitleTooltip = false;\n}\n","<img [attr.src]=\"image\" alt=\"card image\">\n\n<div class=\"media-card-content\">\n <div class=\"media-card-title\" [isMultiline]=\"true\" [matTooltip]=\"showTitleTooltip ? title : ''\" uiEllipseText (onChangeTextState)=\"showTitleTooltip = $event\">\n {{ title }}\n </div>\n\n <div class=\"media-card-description\">\n {{ description }}\n </div>\n</div>\n\n<ui-divider [size]=\"'small'\"></ui-divider>\n\n<div class=\"media-card-action\">\n <ui-button [variant]=\"'ghost'\" [label]=\"buttonLabel\" (buttonClickEvent)=\"buttonClick.emit()\"></ui-button>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { Chart, ChartData, ChartOptions, TooltipOptions } from 'chart.js';\nimport { Color } from '../../models/colors.model';\nimport { _DeepPartialObject } from 'chart.js/dist/types/utils';\nimport gaussian from 'gaussian';\n\nenum PercentileThreshold {\n LOWEST = 20,\n LOWER = 40,\n AVERAGE = 60,\n HIGHER = 80,\n HIGHEST = 100,\n}\n\nexport type LegendPosition = 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n\n@Component({\n selector: 'ui-gaussian-chart',\n templateUrl: './gaussian-chart.component.html',\n styleUrls: ['./gaussian-chart.component.scss'],\n standalone: false\n})\nexport class GaussianChartComponent implements OnInit {\n /**\n * The candidate score to be displayed on the chart.\n * @type {number}\n * @memberof GaussianChartComponent\n */\n @Input() score!: number;\n\n /**\n * The best candidate score to be displayed on the chart.\n * @type {number}\n * @memberof GaussianChartComponent\n */\n @Input() bestCandidateScore!: number;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof SpinnerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Controls the position of the legend relative to the chart.\n * @type {LegendPosition}\n * @memberof GaussianChartComponent\n */\n @Input() legendPosition: LegendPosition = 'bottom-start';\n\n readonly minXValue = -3;\n readonly maxXValue = 3;\n readonly minYValue = 0;\n readonly stepSize = 0.1;\n readonly pointsToSkip = 2;\n readonly actualMinXvalue = this.minXValue + this.pointsToSkip * this.stepSize;\n readonly actualMaxXvalue = this.maxXValue - this.pointsToSkip * this.stepSize;\n readonly normalContainerPadding = 50; //in px\n readonly bestScoreThreshold = 92;\n readonly bestScoreSpacingRight = '4px';\n readonly bestScoreSpacingLeft = '-39px';\n\n PercentileThreshold = PercentileThreshold;\n chart: Chart;\n gaussianDistribution: gaussian.Gaussian;\n activeBucket: PercentileThreshold;\n overlayXValue: number;\n overlayYValue: number;\n overlayXBestScoreValue: number;\n overlayYBestScoreValue: number;\n maxYValue: number;\n\n gaussianChartData: ChartData<'line'> = {\n labels: [],\n datasets: [],\n };\n gaussianChartOptions: ChartOptions<'line'>;\n protected readonly translationContext = 'CHARTS.GAUSSIAN_CHART.';\n\n ngOnInit(): void {\n if (this.score === undefined || this.score === null) {\n throw new Error('Input \"score\" is required for GaussianChartComponent.');\n }\n if (this.bestCandidateScore === undefined || this.bestCandidateScore === null) {\n throw new Error('Input \"bestCandidateScore\" is required for GaussianChartComponent.');\n }\n this.setActiveBucket();\n this.gaussianDistribution = gaussian(0, 1);\n this.maxYValue = this.gaussianDistribution.pdf(0);\n this.setOverlayValues();\n this.setOverlayValuesForBestScore();\n this.setChartData();\n this.setChartOptions();\n }\n\n private setChartData() {\n const xValues: number[] = [];\n const yValues: number[] = [];\n const labels = this.generateLabels(this.minXValue, this.maxXValue, this.stepSize);\n\n for (let x = this.minXValue; x < this.maxXValue + this.stepSize; x = Number((x + this.stepSize).toFixed(2))) {\n xValues.push(x);\n yValues.push(this.gaussianDistribution.pdf(x));\n }\n\n this.gaussianChartData = {\n labels,\n datasets: this.generateDataset(yValues),\n };\n }\n\n private setChartOptions() {\n this.gaussianChartOptions = {\n responsive: true,\n maintainAspectRatio: false,\n scales: this.getScale(),\n plugins: {\n // To be used only for dev purpose\n // tooltip: this.getTooltip(),\n // Comment the below line if you enable the call for tooltip\n tooltip: {\n enabled: false,\n },\n legend: {\n display: false,\n },\n },\n };\n }\n\n private getTooltip(): _DeepPartialObject<TooltipOptions<'line'>> {\n return {\n intersect: false,\n mode: 'nearest',\n displayColors: false,\n callbacks: {\n label: tooltipItem => {\n const value = (this.gaussianDistribution.cdf(parseFloat(tooltipItem.label)) * 100).toFixed(2);\n return `${value}%`;\n },\n title: () => '', // Disable the default title\n },\n };\n }\n\n private getScale(): {\n x: { display: boolean; grid: { display: boolean } };\n y: { display: boolean; grid: { display: boolean } };\n } {\n return {\n x: {\n display: false,\n grid: {\n display: false, // Disable grid lines for x-axis\n },\n },\n y: {\n display: false,\n grid: {\n display: false, // Disable grid lines for y-axis\n },\n },\n };\n }\n\n private generateDataset(\n yValues: number[]\n ): { data: any[]; label: string; borderColor: Color; borderWidth: number; pointRadius: number; fill: boolean }[] {\n return [\n {\n data: [...yValues.slice(0, this.pointsToSkip), ...Array(yValues.length - this.pointsToSkip).fill(null)],\n label: '',\n borderColor: this.activeBucket === PercentileThreshold.LOWEST ? Color.ACCENT_20 : Color.TGO_WHITE,\n borderWidth: 2,\n pointRadius: 0,\n fill: false,\n },\n {\n data: [\n ...Array(this.pointsToSkip).fill(null),\n ...yValues.slice(this.pointsToSkip, yValues.length - this.pointsToSkip),\n ...Array(this.pointsToSkip).fill(null),\n ],\n label: '',\n borderColor: Color.BLACK,\n borderWidth: 2,\n pointRadius: 0,\n fill: false,\n },\n {\n data: [\n ...Array(yValues.length - this.pointsToSkip).fill(null),\n ...yValues.slice(yValues.length - this.pointsToSkip, yValues.length),\n ],\n label: '',\n borderColor: this.activeBucket === PercentileThreshold.HIGHEST ? Color.ACCENT_20 : Color.TGO_WHITE,\n borderWidth: 2,\n pointRadius: 0,\n fill: false,\n },\n ];\n }\n\n private generateLabels(min: number, max: number, step: number): string[] {\n const labels = [];\n for (let x = min; x < max + step; x = Number((x + step).toFixed(2))) {\n labels.push(x.toFixed(1));\n }\n return labels;\n }\n\n private setActiveBucket(): void {\n if (this.score < PercentileThreshold.LOWEST) {\n this.activeBucket = PercentileThreshold.LOWEST;\n } else if (this.score >= PercentileThreshold.LOWEST && this.score < PercentileThreshold.LOWER) {\n this.activeBucket = PercentileThreshold.LOWER;\n } else if (this.score >= PercentileThreshold.LOWER && this.score < PercentileThreshold.AVERAGE) {\n this.activeBucket = PercentileThreshold.AVERAGE;\n } else if (this.score >= PercentileThreshold.AVERAGE && this.score < PercentileThreshold.HIGHER) {\n this.activeBucket = PercentileThreshold.HIGHER;\n } else if (this.score >= PercentileThreshold.HIGHER) {\n this.activeBucket = PercentileThreshold.HIGHEST;\n }\n }\n\n // For more context: https://testgorilla.atlassian.net/wiki/spaces/SR/pages/1813905736/Percentiles+curve+FE+implementation\n private setOverlayValues(): void {\n const { overlayXValue, overlayYValue } = this.calculateOverlayValues(this.score);\n this.overlayXValue = overlayXValue;\n this.overlayYValue = overlayYValue;\n }\n\n private setOverlayValuesForBestScore(): void {\n const { overlayXValue, overlayYValue } = this.calculateOverlayValues(this.bestCandidateScore);\n this.overlayXBestScoreValue = overlayXValue;\n this.overlayYBestScoreValue = overlayYValue;\n }\n\n private calculateOverlayValues(score: number): { overlayXValue: number; overlayYValue: number } {\n const xValue = this.mapRange(score, 0, 100, this.minXValue, this.maxXValue);\n const yValue = this.gaussianDistribution.pdf(xValue);\n let overlayXValue = score;\n let overlayYValue = this.mapRange(yValue, this.minYValue, this.maxYValue, 0, 100);\n\n if (xValue <= this.actualMinXvalue || xValue >= this.actualMaxXvalue) {\n const xValueExtreme = xValue <= this.actualMinXvalue ? this.actualMinXvalue : this.actualMaxXvalue;\n const yValueExtreme = this.gaussianDistribution.pdf(xValueExtreme);\n overlayXValue = this.mapRange(xValueExtreme, this.minXValue, this.maxXValue, 0, 100);\n overlayYValue = this.mapRange(yValueExtreme, this.minYValue, this.maxYValue, 0, 100);\n }\n\n return { overlayXValue, overlayYValue };\n }\n\n private mapRange(value: number, inMin: number, inMax: number, outMin: number, outMax: number): number {\n return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n }\n\n getCalcPosition([percentage, pixels, operation = 'add']: [number, number, 'add' | 'subtract']): string {\n const operator = operation === 'add' ? '+' : '-';\n return `calc(${percentage}% ${operator} ${pixels}px)`;\n }\n\n getBestScoreContentPosition(bestScore: number): string {\n return bestScore < this.bestScoreThreshold ? this.bestScoreSpacingRight : this.bestScoreSpacingLeft;\n }\n\n getScoreTranslationKey(score: number): string {\n if (score < PercentileThreshold.LOWEST) {\n return 'PERCENTILE_LABEL_TYPES.WELL_BELOW_AVERAGE';\n } else if (score >= PercentileThreshold.LOWEST && score < PercentileThreshold.LOWER) {\n return 'PERCENTILE_LABEL_TYPES.BELOW_AVERAGE';\n } else if (score >= PercentileThreshold.LOWER && score < PercentileThreshold.AVERAGE) {\n return 'PERCENTILE_LABEL_TYPES.AVERAGE';\n } else if (score >= PercentileThreshold.AVERAGE && score < PercentileThreshold.HIGHER) {\n return 'PERCENTILE_LABEL_TYPES.ABOVE_AVERAGE';\n } else {\n return 'PERCENTILE_LABEL_TYPES.WELL_ABOVE_AVERAGE';\n }\n }\n}\n","<div\n class=\"chart-section\"\n *ngIf=\"score\"\n [attr.aria-label]=\"\n translationContext + 'ARIA_LABEL'\n | uiTranslate\n : {\n score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async,\n }\n | async\n \"\n tabindex=\"0\"\n>\n <!-- Legend positioned at top -->\n @if (legendPosition === 'top-start' || legendPosition === 'top-end') {\n <ng-container [ngTemplateOutlet]=\"legendTemplate\"></ng-container>\n }\n\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart [data]=\"gaussianChartData\" [options]=\"gaussianChartOptions\" type=\"line\" class=\"chart\">\n </canvas>\n <div\n class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc: getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc: getCalcPosition\"\n >\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{ score }}</span>\n </div>\n </div>\n <div\n class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc: getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\"\n >\n <div\n class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc: getBestScoreContentPosition : this\"\n >\n <ui-icon name=\"Trophy\"></ui-icon>\n {{ bestCandidateScore }}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST' | uiTranslate | async }}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <!-- Legend positioned at bottom -->\n @if (legendPosition === 'bottom-start' || legendPosition === 'bottom-end') {\n <ng-container [ngTemplateOutlet]=\"legendTemplate\"></ng-container>\n }\n</div>\n\n<!-- Reusable legend template -->\n<ng-template #legendTemplate>\n <div class=\"legend-container\" [ngClass]=\"'legend-' + legendPosition\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\" color=\"gray\"></ui-icon>\n {{ translationContext + 'CANDIDATE_SCORE' | uiTranslate | async }}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\" color=\"gray\"></ui-icon>\n {{ translationContext + 'HIGHEST_SCORE' | uiTranslate | async }}\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { GaussianChartComponent } from './gaussian-chart.component';\nimport { NgChartsModule } from 'ng2-charts';\nimport { Chart, registerables } from 'chart.js';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\n\nChart.register(...registerables);\n\n@NgModule({\n declarations: [GaussianChartComponent],\n exports: [GaussianChartComponent],\n imports: [\n NgClass,\n UiTranslatePipe,\n NgChartsModule,\n MatTooltipModule,\n CommonModule,\n IconComponentModule,\n MemoizeFuncPipe,\n ],\n})\nexport class GaussianChartComponentModule {}\n","import { ChangeDetectionStrategy, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport {\n SkillAreaData,\n SkillAreaGroup,\n SkillAreaGroupTypes,\n SkillAreaSpiderChartData,\n} from '../../models/universal-skills-report.model';\nimport { UniversalSkillsService } from '../../services/universal-skills.service';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { forkJoin, take } from 'rxjs';\n\n@Component({\n selector: 'ui-universal-skills-spider-charts',\n templateUrl: './universal-skills-spider-charts.component.html',\n styleUrls: ['./universal-skills-spider-charts.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class UniversalSkillsSpiderChartsComponent implements OnInit {\n /**\n * Defines the application theme\n * @property applicationTheme\n * @type {ApplicationTheme}\n * @memberof UniversalSkillsSpiderChartsComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * The list of items to be used\n * @property items\n * @type {SkillAreaData[]}\n * @memberof UniversalSkillsReportComponent\n */\n @Input() skillAreaDataList: SkillAreaData[];\n\n /**\n * Defines if the component is loading\n * @property loading\n * @type {boolean}\n * @memberof UniversalSkillsSpiderChartsComponent\n */\n @Input() loading: boolean = false;\n\n /**\n * Defines the size of the spider chart\n * @property size\n * @type {'small' | 'large'}\n * @memberof UniversalSkillsSpiderChartsComponent\n */\n @Input() size: 'small' | 'large' = 'large';\n\n readonly translationContext = 'UNIVERSAL_SKILLS_REPORT.';\n\n skillAreaGroupMap: Record<SkillAreaGroupTypes, SkillAreaGroup>;\n skillAreaSpiderChartData: SkillAreaSpiderChartData[] = [];\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private universalSkillsService: UniversalSkillsService,\n private uiTranslatePipe: UiTranslatePipe\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit() {\n this.universalSkillsService.initializeSkillAreaGroupMap();\n this.universalSkillsService.prepareSkillAreaGroupMap(this.skillAreaDataList);\n this.skillAreaGroupMap = this.universalSkillsService.getSkillAreaGroupMap();\n this.prepareSpiderChartData();\n }\n\n prepareSpiderChartData(): void {\n this.skillAreaSpiderChartData = [];\n Object.values(this.skillAreaGroupMap).forEach(skillAreaGroup => {\n const labelObservables = skillAreaGroup.skillAreaList.map(skillArea =>\n this.uiTranslatePipe.transform(`${this.translationContext}SKILL_AREA_TYPES.${skillArea.skillAreaName}.TITLE`)\n );\n\n const labelDescriptionObservables = skillAreaGroup.skillAreaList.map(skillArea =>\n this.uiTranslatePipe.transform(\n `${this.translationContext}SKILL_AREA_TYPES.${skillArea.skillAreaName}.DESCRIPTION`\n )\n );\n\n const allObservables = [...labelObservables, ...labelDescriptionObservables];\n const translations: string[] = [];\n allObservables.forEach(observable => {\n observable.pipe(take(1)).subscribe(translation => {\n translations.push(translation);\n });\n });\n const labels = translations.slice(0, labelObservables.length);\n const labelDescriptions = translations.slice(labelObservables.length);\n\n this.skillAreaSpiderChartData.push({\n title: skillAreaGroup.title,\n description: skillAreaGroup.description,\n spiderChartData: {\n labels: labels,\n labelDescription: labelDescriptions,\n plotData:\n skillAreaGroup.skillAreaList?.[0]?.poolPercentileScoring !== undefined\n ? [\n {\n data: skillAreaGroup.skillAreaList.map(skillArea => skillArea.percentileScoring),\n databaseLabel: \"This candidate's score\",\n },\n {\n data: skillAreaGroup.skillAreaList.map(skillArea => skillArea.poolPercentileScoring ?? 0),\n databaseLabel: 'Average score of all candidates',\n },\n ]\n : [\n {\n data: skillAreaGroup.skillAreaList.map(skillArea => skillArea.percentileScoring),\n databaseLabel: \"This candidate's score\",\n },\n ],\n },\n });\n });\n }\n}\n","@for (spiderChartData of skillAreaSpiderChartData; track spiderChartData) {\n <ui-accordion class=\"universal-skills-spider-charts\" [label]=\"(spiderChartData.title | uiTranslate | async) || ''\" variant=\"filter\">\n <ui-spider-chart [spiderChartData]=\"spiderChartData.spiderChartData\" [loading]=\"loading\" [size]=\"size\"></ui-spider-chart>\n </ui-accordion>\n @if ($index < skillAreaSpiderChartData.length - 1) {\n <ui-divider class=\"universal-skills-spider-charts-divider\" size=\"small\"></ui-divider>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, KeyValuePipe } from '@angular/common';\nimport { UniversalSkillsSpiderChartsComponent } from './universal-skills-spider-charts.component';\nimport { AccordionComponentModule } from '../accordion/accordion.component.module';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\nimport { MemoizeFuncPipe } from '../../pipes/memoize-func.pipe';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { OrdinalSuffixPipe } from '../../pipes/ui-ordinal-suffix.pipe';\nimport { SpiderChartComponentModule } from '../spider-chart/spider-chart.module';\nimport { DividerComponentModule } from '@testgorilla/tgo-ui/components/divider';\n\n@NgModule({\n declarations: [UniversalSkillsSpiderChartsComponent],\n imports: [\n CommonModule,\n AccordionComponentModule,\n BadgeComponentModule,\n ProgressBarComponentModule,\n SpiderChartComponentModule,\n DividerComponentModule,\n MemoizeFuncPipe,\n UiTranslatePipe,\n OrdinalSuffixPipe,\n KeyValuePipe,\n ],\n providers: [UiTranslatePipe],\n exports: [UniversalSkillsSpiderChartsComponent],\n})\nexport class UniversalSkillsSpiderChartsComponentModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: false\n})\nexport class TruncatePipe implements PipeTransform {\n transform(input: any, length?: number, suffix?: string, preserve?: boolean): any {\n if (typeof input !== 'string') {\n return input;\n }\n\n length = length === undefined ? input.length : length;\n\n if (input.length <= length) {\n return input;\n }\n\n preserve = preserve || false;\n suffix = suffix || '';\n let index = length;\n\n if (preserve) {\n if (input.indexOf(' ', length) === -1) {\n index = input.length;\n } else {\n index = input.indexOf(' ', length);\n }\n }\n\n return input.substring(0, index) + suffix;\n }\n}\n","import {\n AfterViewInit,\n Component,\n input,\n signal,\n ViewChild,\n OnDestroy,\n computed,\n EventEmitter,\n Output,\n effect,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { BreadcrumbItem, BreadcrumbSize } from './breadcrumb.model';\nimport { ElementRef } from '@angular/core';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { OverflowMenuButtonsType } from '../overflow-menu/overflow-menu.model';\n\n@Component({\n selector: 'ui-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BreadcrumbComponent implements AfterViewInit, OnDestroy {\n size = input<BreadcrumbSize>('large');\n items = input<BreadcrumbItem[]>([]);\n applicationTheme = input<ApplicationTheme>('light');\n includeBackButton = input<boolean>(false);\n isLoading = input<boolean>(false);\n numberOfLoadingItems = input<number>(3);\n maxItemLength = input<number>(18);\n @Output() selectItem: EventEmitter<string> = new EventEmitter<string>();\n @Output() backButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n loadingItems = computed(() => Array(this.numberOfLoadingItems()));\n isOverflowing = signal<boolean>(false);\n visibleItems = signal<BreadcrumbItem[]>([]);\n overflowItems = signal<BreadcrumbItem[]>([]);\n overflowButtonItems = computed<OverflowMenuButtonsType[]>(() =>\n this.overflowItems().map(item => ({\n label: item.label,\n value: item.value,\n }))\n );\n shouldTruncateLastItem = signal<boolean>(false);\n\n @ViewChild('breadcrumbContainer') breadcrumbContainer!: ElementRef<HTMLElement>;\n\n private resizeObserver?: ResizeObserver;\n private itemsInOverflow = 0;\n private previousLoadingState?: boolean;\n\n constructor() {\n // React to items changes and recalculate overflow\n effect(() => {\n this.items();\n this.itemsInOverflow = 0;\n if (this.breadcrumbContainer?.nativeElement) {\n // Wait for DOM to render new items before calculating overflow\n setTimeout(() => this.calculateItemDistribution(), 0);\n }\n });\n\n // React to loading state changes and setup ResizeObserver when loading changes from true to false\n effect(() => {\n const currentLoadingState = this.isLoading();\n\n if (this.previousLoadingState === true && currentLoadingState === false) {\n this.setupResizeObserver();\n }\n\n this.previousLoadingState = currentLoadingState;\n });\n }\n\n ngAfterViewInit() {\n this.calculateItemDistribution();\n this.setupResizeObserver();\n }\n\n ngOnDestroy() {\n this.resizeObserver?.disconnect();\n }\n\n private calculateItemDistribution() {\n if (!this.breadcrumbContainer?.nativeElement || this.items().length === 0) {\n this.resetToAllVisible();\n return;\n }\n\n const element = this.breadcrumbContainer.nativeElement;\n const hasHorizontalOverflow = element.scrollWidth > element.clientWidth;\n\n if (hasHorizontalOverflow) {\n this.handleOverflow();\n } else if (this.itemsInOverflow > 0) {\n // Check if we can bring items back from overflow\n this.tryReduceOverflow();\n } else {\n this.resetToAllVisible();\n }\n }\n\n private handleOverflow() {\n this.itemsInOverflow = Math.min(this.itemsInOverflow + 1, this.items().length - 1);\n\n this.updateItemArrays();\n this.isOverflowing.set(true);\n\n // Wait for DOM to render the updated template after hiding items\n // We need to measure dimensions AFTER the DOM has been updated with the new visible items\n setTimeout(() => {\n if (this.breadcrumbContainer?.nativeElement) {\n const element = this.breadcrumbContainer.nativeElement;\n const stillOverflowing = element.scrollWidth > element.clientWidth;\n\n if (stillOverflowing && this.itemsInOverflow < this.items().length - 1) {\n this.handleOverflow();\n } else if (stillOverflowing && this.itemsInOverflow === this.items().length - 1) {\n this.shouldTruncateLastItem.set(true);\n }\n }\n }, 0);\n }\n\n private tryReduceOverflow() {\n const testItemsInOverflow = this.itemsInOverflow - 1;\n\n if (testItemsInOverflow >= 0) {\n const testVisibleItems = this.items().slice(testItemsInOverflow);\n const testOverflowItems = testItemsInOverflow > 0 ? this.items().slice(0, testItemsInOverflow) : [];\n\n this.visibleItems.set(testVisibleItems);\n this.overflowItems.set(testOverflowItems);\n\n // Always reset truncation when trying to reduce overflow\n this.shouldTruncateLastItem.set(false);\n\n // Wait for DOM to render with test configuration before measuring\n setTimeout(() => {\n if (this.breadcrumbContainer?.nativeElement) {\n const element = this.breadcrumbContainer.nativeElement;\n const hasOverflow = element.scrollWidth > element.clientWidth;\n\n if (!hasOverflow) {\n // It fits! Update the counter\n this.itemsInOverflow = testItemsInOverflow;\n this.isOverflowing.set(this.itemsInOverflow > 0);\n\n // Try to reduce more if there are still items in overflow\n if (this.itemsInOverflow > 0) {\n // Schedule next reduction attempt after current render cycle\n setTimeout(() => this.tryReduceOverflow(), 0);\n }\n } else {\n // Doesn't fit, revert to previous state\n this.updateItemArrays();\n\n // Wait for DOM to render reverted state before checking truncation\n setTimeout(() => {\n if (this.breadcrumbContainer?.nativeElement) {\n const containerElement = this.breadcrumbContainer.nativeElement;\n const stillOverflowing = containerElement.scrollWidth > containerElement.clientWidth;\n\n if (stillOverflowing && this.itemsInOverflow === this.items().length - 1) {\n this.shouldTruncateLastItem.set(true);\n }\n }\n }, 0);\n }\n }\n }, 0);\n } else {\n // testItemsInOverflow < 0, means we're trying to show all items\n this.resetToAllVisible();\n\n // Wait for DOM to render all items before measuring overflow\n setTimeout(() => {\n if (this.breadcrumbContainer?.nativeElement) {\n const element = this.breadcrumbContainer.nativeElement;\n const hasOverflow = element.scrollWidth > element.clientWidth;\n\n if (hasOverflow) {\n // Still overflows with all items, need to go back to overflow state\n this.itemsInOverflow = 1; // Start with minimal overflow\n this.handleOverflow();\n }\n }\n }, 0);\n }\n }\n\n private updateItemArrays() {\n if (this.itemsInOverflow > 0) {\n this.overflowItems.set(this.items().slice(0, this.itemsInOverflow));\n this.visibleItems.set(this.items().slice(this.itemsInOverflow));\n } else {\n this.resetToAllVisible();\n }\n }\n\n private resetToAllVisible() {\n this.visibleItems.set(this.items());\n this.overflowItems.set([]);\n this.isOverflowing.set(false);\n this.shouldTruncateLastItem.set(false);\n this.itemsInOverflow = 0;\n }\n\n private setupResizeObserver() {\n if (!this.breadcrumbContainer?.nativeElement) {\n return;\n }\n\n this.resizeObserver = new ResizeObserver(() => {\n this.calculateItemDistribution();\n });\n\n this.resizeObserver.observe(this.breadcrumbContainer.nativeElement);\n }\n}\n","@if (!isLoading()) {\n <div class=\"breadcrumb\" [attr.theme]=\"applicationTheme()\" #breadcrumbContainer [class]=\"'breadcrumb-' + size()\">\n @if (includeBackButton()) {\n <ui-button\n [variant]=\"'icon-button'\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (buttonClickEvent)=\"backButtonClickEvent.emit($event)\"\n ></ui-button>\n }\n @if (isOverflowing()) {\n <ui-overflow-menu\n [applicationTheme]=\"applicationTheme()\"\n [contentTemplateRef]=\"overflowMenu\"\n [buttons]=\"overflowButtonItems()\"\n [matTooltip]=\"('COMMON.OPTIONS' | uiTranslate | async)!\"\n [matTooltipClass]=\"applicationTheme()\"\n [isDynamicMenu]=\"true\"\n (selectItem)=\"selectItem.emit($event)\"\n class=\"breadcrumb-overflow-menu\"\n ></ui-overflow-menu>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n @for (item of visibleItems(); track item.value) {\n @if (!$last) {\n <span\n class=\"breadcrumb-item\"\n tabindex=\"0\"\n [matTooltip]=\"item.label.length > maxItemLength() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [attr.aria-label]=\"item.label\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label | truncate: maxItemLength() : '...' }}\n </span>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n } @else {\n <strong\n class=\"breadcrumb-item-active\"\n tabindex=\"0\"\n [matTooltip]=\"shouldTruncateLastItem() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [class.breadcrumb-item-active-truncated]=\"shouldTruncateLastItem()\"\n [attr.aria-label]=\"item.label\"\n [attr.aria-current]=\"'page'\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label }}\n </strong>\n }\n }\n </div>\n} @else {\n <div class=\"breadcrumb\">\n @for (i of loadingItems(); track $index) {\n <ui-skeleton count=\"1\" [theme]=\"{ width: '160px', margin: '10px 0 0' }\"></ui-skeleton>\n @if ($index !== numberOfLoadingItems() - 1) {\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n }\n </div>\n}\n<ng-template #overflowMenu>\n <div class=\"breadcrumb-item breadcrumb-overflow\" [class]=\"'breadcrumb-' + size()\">...</div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { OverflowMenuComponentModule } from '../overflow-menu/overflow-menu.component.module';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { SkeletonComponent } from '@testgorilla/tgo-ui/components/skeleton';\nimport { TruncatePipe } from '../../pipes/truncate.pipe';\n\n@NgModule({\n declarations: [BreadcrumbComponent, TruncatePipe],\n imports: [\n CommonModule,\n IconComponentModule,\n MatTooltipModule,\n OverflowMenuComponentModule,\n ButtonComponentModule,\n SkeletonComponent,\n UiTranslatePipe,\n ],\n providers: [TruncatePipe],\n exports: [BreadcrumbComponent],\n})\nexport class BreadcrumbComponentModule {}\n","/* eslint-disable */\n\n/* Components */\n// Universal skills report\nexport * from './components/universal-skills-report/universal-skills-report.component';\nexport * from './components/universal-skills-report/universal-skills-report.component.module';\nexport * from './models/universal-skills-report.model';\n// Alert Banner\nexport * from './components/alert-banner/alert-banner.component';\nexport * from './components/alert-banner/alert-banner.component.module';\n//AI Feedback\nexport * from './components/ai-feedback/ai-feedback.component';\nexport * from './components/ai-feedback/ai-feedback.model';\nexport * from './components/ai-feedback/ai-feedback.module';\n// Button - moved to @testgorilla/tgo-ui/components/button\n// Card - moved to @testgorilla/tgo-ui/components/card\n// Selectable Card\nexport * from './components/selectable-card/selectable-card.component';\nexport * from './components/selectable-card/selectable-card.component.module';\n// Checkbox - moved to @testgorilla/tgo-ui/components/checkbox\n// Dialog\nexport * from './components/dialog/dialog.component';\nexport * from './components/dialog/dialog.component.module';\nexport * from './components/dialog/dialog.model';\nexport * from './components/dialog/dialog.service';\n// Media Dialog\nexport * from './components/media-dialog/media-dialog.component';\nexport * from './components/media-dialog/media-dialog.model';\n// Donut Chart\nexport * from './components/donut-chart/donut-chart.component';\nexport * from './components/donut-chart/donut-chart.component.module';\n// Elevation shadow - moved to @testgorilla/tgo-ui/components/elevation-shadow\n// Field - moved to @testgorilla/tgo-ui/components/field\n// Inline Field - moved to @testgorilla/tgo-ui/components/inline-field\n// File upload\nexport * from './components/file-upload/file-upload.component';\nexport * from './components/file-upload/file-upload.component.module';\n// Icon - moved to @testgorilla/tgo-ui/components/icon\n// Icon + label\nexport * from './components/icon-label/icon-label.component';\nexport * from './components/icon-label/icon-label.component.module';\n// Logo - moved to @testgorilla/tgo-ui/components/logo\n// Navbar\nexport * from './components/navbar/navbar.component';\nexport * from './components/navbar/navbar.component.module';\nexport * from './components/navbar/navbar.model';\n// Deprecated Paginator\nexport * from './components/deprecated-paginator/deprecated-paginator.component';\nexport * from './components/deprecated-paginator/deprecated-paginator.component.module';\n// Progress bar - moved to @testgorilla/tgo-ui/components/progress-bar\n//Prompt\nexport * from './components/prompt/prompt.component';\nexport * from './components/prompt/prompt.module';\nexport * from './components/prompt/prompt.model';\n// Radio button - moved to @testgorilla/tgo-ui/components/radio-button\n// Snackbar\nexport * from './components/snackbar/snackbar.component';\nexport * from './components/snackbar/snackbar.component.module';\nexport * from './components/snackbar/snackbar.model';\nexport * from './components/snackbar/snackbar.service';\n// Data Property Getter Pipe\nexport * from './pipes/data-property-getter';\n// Tag - moved to @testgorilla/tgo-ui/components/tag\n// Tooltip - moved to @testgorilla/tgo-ui/components/tooltip\n// Dropdown - moved to @testgorilla/tgo-ui/components/dropdown\n// Spinner - moved to @testgorilla/tgo-ui/components/spinner\n// Confirm Dialog\nexport * from './components/confirm-dialog/confirm-dialog.component';\nexport * from './components/confirm-dialog/confirm-dialog.component.module';\nexport * from './components/confirm-dialog/confirm-dialog.model';\n// Datepicker\nexport * from './components/datepicker/datepicker.component';\nexport * from './components/datepicker/datepicker.component.module';\n// Rating - moved to @testgorilla/tgo-ui/components/rating\n// Scale - moved to @testgorilla/tgo-ui/components/scale\n// Scale Table\nexport * from './components/scale-table/scale-table.component';\nexport * from './components/scale-table/scale-table.model';\n// Toggle - moved to @testgorilla/tgo-ui/components/toggle\n// Avatar - moved to @testgorilla/tgo-ui/components/avatar\n// Stepper\nexport * from './components/stepper/stepper.component';\nexport * from './components/stepper/stepper.component.module';\n// Step\nexport * from './components/step/step.component';\nexport * from './components/step/step.component.module';\n// Input Autocomplete - moved to @testgorilla/tgo-ui/components/autocomplete\n// Badge - moved to @testgorilla/tgo-ui/components/badge\n// Radial Progress - moved to @testgorilla/tgo-ui/components/radial-progress\n// Empty State - moved to @testgorilla/tgo-ui/components/empty-state\n// Table\nexport * from './components/table/table.component';\nexport * from './components/table/table.component.module';\nexport * from './components/table/table.model';\n// Paginator - moved to @testgorilla/tgo-ui/components/paginator\n// Side Sheet\nexport * from './components/side-sheet/side-sheet.component';\nexport * from './components/side-sheet/side-sheet.component.module';\nexport * from './components/side-sheet/side-sheet.model';\nexport * from './components/side-sheet/side-sheet.service';\n// Slider - moved to @testgorilla/tgo-ui/components/slider\n// Segmented Bar - moved to @testgorilla/tgo-ui/components/segmented-bar\n// Page Header\nexport * from './components/page-header/page-header.component';\nexport * from './components/page-header/page-header.component.module';\n// Accordion\nexport * from './components/accordion/accordion.component';\nexport * from './components/accordion/accordion.component.module';\nexport * from './components/accordion/accordion.model';\n// Tabs\nexport * from './components/tabs/tab.directive';\nexport * from './components/tabs/tabs.component';\nexport * from './components/tabs/tabs.component.module';\nexport * from './components/tabs/tabs.model';\n// Language - moved to @testgorilla/tgo-ui/components/core\n//Overflow Menu\nexport * from './components/overflow-menu/overflow-menu.component';\nexport * from './components/overflow-menu/overflow-menu.model';\nexport * from './components/overflow-menu/overflow-menu.component.module';\n//Application Theme - moved to @testgorilla/tgo-ui/components/core\n// Segmented Button - moved to @testgorilla/tgo-ui/components/segmented-button\n// Password Criteria\nexport * from './components/password-criteria/password.component';\nexport * from './components/password-criteria/password.component.module';\n// Phone Input\nexport * from './components/phone-input/phone-input.component';\nexport * from './components/phone-input/phone-input.component.module';\nexport * from './components/phone-input/phone-input.model';\n// Colors\nexport * from './models/colors.model';\n// Password Strength\nexport * from './components/password-strength/password-strength.component';\nexport * from './components/password-strength/password-strength.component.module';\n// Icons service - moved to @testgorilla/tgo-ui/components/icon\n// Is Mobile Token\nexport * from './providers/is-mobile';\n// Multi input\nexport * from './components/multi-input/multi-input.component';\nexport * from './components/multi-input/multi-input.component.module';\nexport * from './components/multi-input/multi-input.model';\n// Validation Error - moved to @testgorilla/tgo-ui/components/validation-error\n// Side panel\nexport * from './components/side-panel/side-panel-data-injection-token';\nexport * from './components/side-panel/side-panel.component';\nexport * from './components/side-panel/side-panel.model';\nexport * from './components/side-panel/side-panel.service';\n// Spider Chart\nexport * from './components/spider-chart/spider-chart.component';\nexport * from './components/spider-chart/spider-chart.model';\nexport * from './components/spider-chart/spider-chart.module';\n// Checklist\nexport * from './components/checklist/checklist.component';\nexport * from './components/checklist/checklist.model';\n// Media card\nexport * from './components/media-card/media-card.component';\n// Gaussian Chart\nexport * from './components/gaussian-chart/gaussian-chart.component';\nexport * from './components/gaussian-chart/gaussian-chart.module';\n// Universal Skills Spider Charts\nexport * from './components/universal-skills-spider-charts/universal-skills-spider-charts.component';\nexport * from './components/universal-skills-spider-charts/universal-skills-spider-charts.component.module';\nexport * from './services/universal-skills.service';\n// Memoize\nexport * from './pipes/memoize-func.pipe';\n// Filter Button - moved to @testgorilla/tgo-ui/components/filter-button\n// Breadcrumb\nexport * from './components/breadcrumb/breadcrumb.component';\nexport * from './components/breadcrumb/breadcrumb.component.module';\nexport * from './components/breadcrumb/breadcrumb.model';\n// Shared Directives - moved to @testgorilla/tgo-ui/components/core\n// Shared Pipes - moved to @testgorilla/tgo-ui/components/core\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UniversalSkillsService","i2","i3.AccordionComponent","i4","i6.MemoizeFuncPipe","i7","i8.OrdinalSuffixPipe","i1","i3","i5","i5.DialogComponent","i6","i4.DragDropDirective","i1.SideSheetService","i2.SideSheetService","i8","i9","i10","i11.SideSheetComponent","i12","i13.MobileNavbarSideSheetComponent","i14","i15","i4.OverflowMenuComponent","i3.DialogComponent","i3.DatepickerService","i9.NoDateFormatDirective","i11","i12.HasValidationErrorPipe","i4.StepComponent","i6.StepLineElementDirective","i10.DynamicComponentDirective","i11.DataPropertyGetterPipe","i12.MemoizeFuncPipe","i13.SentenceCasePipe","i13.HasValidationErrorPipe","i14.JoinStringsPipe","HasValidationErrorPipe","i4.SpiderChartComponent","i3.OverflowMenuComponent","i8.TruncatePipe"],"mappings":"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"}
|