@mxtommy/kip 3.9.0-beta.2 → 3.9.0-beta.21
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/.github/copilot-instructions.md +1 -1
- package/.github/instructions/angular.instructions.md +46 -0
- package/README.md +49 -12
- package/package.json +2 -4
- package/public/3rdpartylicenses.txt +77 -77
- package/public/app-help.component.css.map +7 -0
- package/public/app.component.css.map +7 -0
- package/public/assets/help-docs/configuration.md +4 -4
- package/public/assets/help-docs/dashboards.md +4 -2
- package/public/assets/svg/icons.svg +1 -1
- package/public/boolean-control-config.component.css.map +7 -0
- package/public/boolean-multicontrol-options.component.css.map +7 -0
- package/public/chunk-3EWIS24B.js +5237 -0
- package/public/chunk-3EWIS24B.js.map +1 -0
- package/public/chunk-3VR3EA35.js +1022 -0
- package/public/chunk-3VR3EA35.js.map +1 -0
- package/public/chunk-63ILPRXC.js +2091 -0
- package/public/chunk-63ILPRXC.js.map +1 -0
- package/public/chunk-65ZWQBS6.js +3102 -0
- package/public/chunk-65ZWQBS6.js.map +1 -0
- package/public/chunk-B3LKEWZP.js +4950 -0
- package/public/chunk-B3LKEWZP.js.map +1 -0
- package/public/chunk-BIBIW64D.js +16773 -0
- package/public/chunk-BIBIW64D.js.map +1 -0
- package/public/chunk-BM53SC5N.js +77 -0
- package/public/chunk-BM53SC5N.js.map +7 -0
- package/public/chunk-D7ILNFDM.js +3059 -0
- package/public/chunk-D7ILNFDM.js.map +1 -0
- package/public/chunk-E24UNLSJ.js +2228 -0
- package/public/chunk-E24UNLSJ.js.map +1 -0
- package/public/chunk-J42S2ELC.js +5927 -0
- package/public/chunk-J42S2ELC.js.map +1 -0
- package/public/chunk-KC22A6VH.js +17 -0
- package/public/chunk-KC22A6VH.js.map +7 -0
- package/public/chunk-MCEJWZB2.js +116 -0
- package/public/chunk-MCEJWZB2.js.map +1 -0
- package/public/chunk-NBF6SE6O.js +89 -0
- package/public/chunk-NBF6SE6O.js.map +7 -0
- package/public/chunk-QC7VGVAR.js +343 -0
- package/public/chunk-QC7VGVAR.js.map +7 -0
- package/public/chunk-SDOP6T56.js +42377 -0
- package/public/chunk-SDOP6T56.js.map +1 -0
- package/public/chunk-U2DCSTRY.js +159 -0
- package/public/chunk-U2DCSTRY.js.map +7 -0
- package/public/chunk-UHVNAEXC.js +4752 -0
- package/public/chunk-UHVNAEXC.js.map +1 -0
- package/public/chunk-UQYTD5AC.js +2723 -0
- package/public/chunk-UQYTD5AC.js.map +1 -0
- package/public/chunk-XSABJ5NZ.js +272 -0
- package/public/chunk-XSABJ5NZ.js.map +7 -0
- package/public/chunk-Y6N6O2IP.js +19852 -0
- package/public/chunk-Y6N6O2IP.js.map +1 -0
- package/public/chunk-YGJLBLOX.js +2708 -0
- package/public/chunk-YGJLBLOX.js.map +1 -0
- package/public/chunk-YT33DHC3.js +591 -0
- package/public/chunk-YT33DHC3.js.map +7 -0
- package/public/chunk-YZXYVP72.js +4934 -0
- package/public/chunk-YZXYVP72.js.map +1 -0
- package/public/chunk-ZEHRDSTB.js +13727 -0
- package/public/chunk-ZEHRDSTB.js.map +1 -0
- package/public/config.component.css.map +7 -0
- package/public/dashboard-scroller.component.css.map +7 -0
- package/public/dashboard.component.css.map +7 -0
- package/public/dashboards-editor.component.css.map +7 -0
- package/public/data-inspector-row.component.css.map +7 -0
- package/public/data-inspector.component.css.map +7 -0
- package/public/dataset-chart-options.component.css.map +7 -0
- package/public/datasets.component.css.map +7 -0
- package/public/dialog-confirmation.component.css.map +7 -0
- package/public/dialog-dashboard-page-editor.component.css.map +7 -0
- package/public/dialog-frame.component.css.map +7 -0
- package/public/dialog-name.component.css.map +7 -0
- package/public/display-chart-options.component.css.map +7 -0
- package/public/display.component.css.map +7 -0
- package/public/gauge-steel.component.css.map +7 -0
- package/public/home.component.css.map +7 -0
- package/public/index.html +19 -17
- package/public/main.js +36423 -0
- package/public/main.js.map +1 -0
- package/public/menu-actions.component.css.map +7 -0
- package/public/menu-notifications.component.css.map +7 -0
- package/public/minichart.component.css.map +7 -0
- package/public/modal-user-credential.component.css.map +7 -0
- package/public/modal-widget-config.component.css.map +7 -0
- package/public/notification-badge.component.css.map +7 -0
- package/public/page-header.component.css.map +7 -0
- package/public/path-control-config.component.css.map +7 -0
- package/public/paths-options.component.css.map +7 -0
- package/public/polyfills.js +4422 -0
- package/public/polyfills.js.map +1 -0
- package/public/select-autopilot.component.css.map +7 -0
- package/public/select-icon.component.css.map +7 -0
- package/public/settings.component.css.map +7 -0
- package/public/signalk.component.css.map +7 -0
- package/public/styles.css +1651 -0
- package/public/styles.css.map +7 -0
- package/public/svg-autopilot.component.css.map +7 -0
- package/public/svg-racesteer.component.css.map +7 -0
- package/public/svg-simple-linear-gauge.component.css.map +7 -0
- package/public/svg-windsteer.component.css.map +7 -0
- package/public/tile-large-icon.component.css.map +7 -0
- package/public/units.component.css.map +7 -0
- package/public/upgrade-config.component.css.map +7 -0
- package/public/widget-autopilot.component.css.map +7 -0
- package/public/widget-boolean-switch.component.css.map +7 -0
- package/public/widget-datetime.component.css.map +7 -0
- package/public/widget-freeboardsk.component.css.map +7 -0
- package/public/widget-gauge-ng-compass.component.css.map +7 -0
- package/public/widget-gauge-ng-linear.component.css.map +7 -0
- package/public/widget-gauge-ng-radial.component.css.map +7 -0
- package/public/widget-gauge-steel.component.css.map +7 -0
- package/public/widget-horizon.component.css.map +7 -0
- package/public/widget-host.component.css.map +7 -0
- package/public/widget-iframe.component.css.map +7 -0
- package/public/widget-label.component.css.map +7 -0
- package/public/widget-list-card.component.css.map +7 -0
- package/public/widget-numeric.component.css.map +7 -0
- package/public/widget-position.component.css.map +7 -0
- package/public/widget-race-timer.component.css.map +7 -0
- package/public/widget-racer-line.component.css.map +7 -0
- package/public/widget-racer-timer.component.css.map +7 -0
- package/public/widget-simple-linear.component.css.map +7 -0
- package/public/widget-slider.component.css.map +7 -0
- package/public/widget-text.component.css.map +7 -0
- package/public/widget-title.component.css.map +7 -0
- package/public/widget-tutorial.component.css.map +7 -0
- package/public/widgets-list.component.css.map +7 -0
- package/public/assets/hammer.min.js +0 -7
- package/public/chunk-2YVW3TBK.js +0 -2
- package/public/chunk-35L7BBBD.js +0 -15
- package/public/chunk-3LEMFOCV.js +0 -3
- package/public/chunk-3LJAKLLW.js +0 -1
- package/public/chunk-4JJLPUET.js +0 -60
- package/public/chunk-CBUY7NMR.js +0 -2
- package/public/chunk-CQXWGD3T.js +0 -2
- package/public/chunk-EUFDL4TJ.js +0 -6
- package/public/chunk-FBFTGVZ6.js +0 -1
- package/public/chunk-HCXH72CD.js +0 -5
- package/public/chunk-JY3WVS7C.js +0 -2
- package/public/chunk-KTDDP73O.js +0 -2
- package/public/chunk-NMEZOCU2.js +0 -1
- package/public/chunk-NS2FPVWM.js +0 -4
- package/public/chunk-OSYHJB4F.js +0 -11
- package/public/chunk-PKNLASTF.js +0 -4
- package/public/chunk-Q2Y75POI.js +0 -1
- package/public/chunk-RRTCHHRC.js +0 -3
- package/public/chunk-TA4GACKT.js +0 -4
- package/public/chunk-TXPLRBW5.js +0 -2
- package/public/chunk-VHFBF47T.js +0 -1
- package/public/chunk-VYUMZVH2.js +0 -2
- package/public/chunk-XRGAX4LS.js +0 -2
- package/public/chunk-YNJRIFUM.js +0 -1
- package/public/chunk-ZBCOJLI4.js +0 -6
- package/public/main-XM5EHMUE.js +0 -50
- package/public/polyfills-KH22MU6U.js +0 -2
- package/public/styles-RECKN66R.css +0 -1
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP-ILKS6RVC.woff2 → KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ-MJ3CERJ6.woff2 → KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP-UW3XWY7P.woff2 → KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP-U3JTBV4H.woff2 → KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP-36ULTGLY.woff2 → KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP-5NJLO2HW.woff2 → KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP-2EL65J2O.woff2 → KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP-XWLWMQVU.woff2 → KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ-PWGJWDFE.woff2 → KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP-ITB7NUJC.woff2 → KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP-32PLHKPQ.woff2 → KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP-QPSNQEDD.woff2 → KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP-JKBSJZY3.woff2 → KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP-OG5AHRIX.woff2 → KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz-PPTELUJT.woff2 → KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4mxKKTU1Kg-SNGEW7FX.woff2 → KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz-DRL4U32S.woff2 → KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu72xKKTU1Kvnz-PRJ7OQMU.woff2 → KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz-HW6RMPJ3.woff2 → KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz-KZD6JQRT.woff2 → KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz-Z72STTMG.woff2 → KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-CN2J7AYH.woff2 → flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["node_modules/@angular/material/fesm2022/pseudo-checkbox-AUVlNJs_.mjs","node_modules/@angular/material/fesm2022/option-CEIjUDzj.mjs","node_modules/@angular/cdk/fesm2022/unique-selection-dispatcher-Cewa_Eg3.mjs","node_modules/@angular/cdk/fesm2022/dispose-view-repeater-strategy-Cvpav0PR.mjs","node_modules/@angular/cdk/fesm2022/selection-model-BCgC8uEN.mjs","node_modules/@angular/material/fesm2022/pseudo-checkbox-module-BymSaWBn.mjs","node_modules/@angular/material/fesm2022/index-ZUoC96yG.mjs","node_modules/@angular/material/fesm2022/module-CZcVPeGQ.mjs","node_modules/@angular/material/fesm2022/internal-form-field-D5iFxU6d.mjs","node_modules/@angular/material/fesm2022/date-formats-K6TQue-Y.mjs","node_modules/@angular/material/fesm2022/core.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { _ as _animationsDisabled } from './animation-ChQ1vjiF.mjs';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\nclass MatPseudoCheckbox {\n _animationsDisabled = _animationsDisabled();\n /** Display state of the checkbox. */\n state = 'unchecked';\n /** Whether the checkbox is disabled. */\n disabled = false;\n /**\n * Appearance of the pseudo checkbox. Default appearance of 'full' renders a checkmark/mixedmark\n * indicator inside a square box. 'minimal' appearance only renders the checkmark/mixedmark.\n */\n appearance = 'full';\n constructor() {}\n static ɵfac = function MatPseudoCheckbox_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatPseudoCheckbox)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatPseudoCheckbox,\n selectors: [[\"mat-pseudo-checkbox\"]],\n hostAttrs: [1, \"mat-pseudo-checkbox\"],\n hostVars: 12,\n hostBindings: function MatPseudoCheckbox_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-pseudo-checkbox-indeterminate\", ctx.state === \"indeterminate\")(\"mat-pseudo-checkbox-checked\", ctx.state === \"checked\")(\"mat-pseudo-checkbox-disabled\", ctx.disabled)(\"mat-pseudo-checkbox-minimal\", ctx.appearance === \"minimal\")(\"mat-pseudo-checkbox-full\", ctx.appearance === \"full\")(\"_mat-animation-noopable\", ctx._animationsDisabled);\n }\n },\n inputs: {\n state: \"state\",\n disabled: \"disabled\",\n appearance: \"appearance\"\n },\n decls: 0,\n vars: 0,\n template: function MatPseudoCheckbox_Template(rf, ctx) {},\n styles: [\".mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\\\"\\\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatPseudoCheckbox, [{\n type: Component,\n args: [{\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'mat-pseudo-checkbox',\n template: '',\n host: {\n 'class': 'mat-pseudo-checkbox',\n '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n '[class.mat-pseudo-checkbox-minimal]': 'appearance === \"minimal\"',\n '[class.mat-pseudo-checkbox-full]': 'appearance === \"full\"',\n '[class._mat-animation-noopable]': '_animationsDisabled'\n },\n styles: [\".mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\\\"\\\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\\n\"]\n }]\n }], () => [], {\n state: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }],\n appearance: [{\n type: Input\n }]\n });\n})();\nexport { MatPseudoCheckbox as M };\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ElementRef, ChangeDetectorRef, signal, EventEmitter, isSignal, Output, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { M as MatRipple } from './ripple-BMyyyLz2.mjs';\nimport { M as MatPseudoCheckbox } from './pseudo-checkbox-AUVlNJs_.mjs';\nimport { _ as _StructuralStylesLoader } from './structural-styles-CObeNzjn.mjs';\nimport { _CdkPrivateStyleLoader, _VisuallyHiddenLoader } from '@angular/cdk/private';\n\n/**\n * Injection token used to provide the parent component to options.\n */\nconst _c0 = [\"*\", [[\"mat-option\"], [\"ng-container\"]]];\nconst _c1 = [\"*\", \"mat-option, ng-container\"];\nconst _c2 = [\"text\"];\nconst _c3 = [[[\"mat-icon\"]], \"*\"];\nconst _c4 = [\"mat-icon\", \"*\"];\nfunction MatOption_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"mat-pseudo-checkbox\", 1);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"disabled\", ctx_r0.disabled)(\"state\", ctx_r0.selected ? \"checked\" : \"unchecked\");\n }\n}\nfunction MatOption_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"mat-pseudo-checkbox\", 3);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n }\n}\nfunction MatOption_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\"(\", ctx_r0.group.label, \")\");\n }\n}\nconst MAT_OPTION_PARENT_COMPONENT = new InjectionToken('MAT_OPTION_PARENT_COMPONENT');\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n// when the text will be read out so sometimes it comes in too late or never if the user\n// navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n// won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n// doesn't read out the text at all. Furthermore, on\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nconst MAT_OPTGROUP = new InjectionToken('MatOptgroup');\n/**\n * Component that is used to group instances of `mat-option`.\n */\nclass MatOptgroup {\n /** Label for the option group. */\n label;\n /** whether the option group is disabled. */\n disabled = false;\n /** Unique id for the underlying label. */\n _labelId = inject(_IdGenerator).getId('mat-optgroup-label-');\n /** Whether the group is in inert a11y mode. */\n _inert;\n constructor() {\n const parent = inject(MAT_OPTION_PARENT_COMPONENT, {\n optional: true\n });\n this._inert = parent?.inertGroups ?? false;\n }\n static ɵfac = function MatOptgroup_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatOptgroup)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatOptgroup,\n selectors: [[\"mat-optgroup\"]],\n hostAttrs: [1, \"mat-mdc-optgroup\"],\n hostVars: 3,\n hostBindings: function MatOptgroup_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx._inert ? null : \"group\")(\"aria-disabled\", ctx._inert ? null : ctx.disabled.toString())(\"aria-labelledby\", ctx._inert ? null : ctx._labelId);\n }\n },\n inputs: {\n label: \"label\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute]\n },\n exportAs: [\"matOptgroup\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_OPTGROUP,\n useExisting: MatOptgroup\n }])],\n ngContentSelectors: _c1,\n decls: 5,\n vars: 4,\n consts: [[\"role\", \"presentation\", 1, \"mat-mdc-optgroup-label\", 3, \"id\"], [1, \"mdc-list-item__primary-text\"]],\n template: function MatOptgroup_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c0);\n i0.ɵɵdomElementStart(0, \"span\", 0)(1, \"span\", 1);\n i0.ɵɵtext(2);\n i0.ɵɵprojection(3);\n i0.ɵɵdomElementEnd()();\n i0.ɵɵprojection(4, 1);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-list-item--disabled\", ctx.disabled);\n i0.ɵɵdomProperty(\"id\", ctx._labelId);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\"\", ctx.label, \" \");\n }\n },\n styles: [\".mat-mdc-optgroup{color:var(--mat-optgroup-label-text-color, var(--mat-sys-on-surface-variant));font-family:var(--mat-optgroup-label-text-font, var(--mat-sys-title-small-font));line-height:var(--mat-optgroup-label-text-line-height, var(--mat-sys-title-small-line-height));font-size:var(--mat-optgroup-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-optgroup-label-text-tracking, var(--mat-sys-title-small-tracking));font-weight:var(--mat-optgroup-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;outline:none}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;white-space:normal;color:inherit}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatOptgroup, [{\n type: Component,\n args: [{\n selector: 'mat-optgroup',\n exportAs: 'matOptgroup',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-mdc-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId'\n },\n providers: [{\n provide: MAT_OPTGROUP,\n useExisting: MatOptgroup\n }],\n template: \"<span\\n class=\\\"mat-mdc-optgroup-label\\\"\\n role=\\\"presentation\\\"\\n [class.mdc-list-item--disabled]=\\\"disabled\\\"\\n [id]=\\\"_labelId\\\">\\n <span class=\\\"mdc-list-item__primary-text\\\">{{ label }} <ng-content></ng-content></span>\\n</span>\\n\\n<ng-content select=\\\"mat-option, ng-container\\\"></ng-content>\\n\",\n styles: [\".mat-mdc-optgroup{color:var(--mat-optgroup-label-text-color, var(--mat-sys-on-surface-variant));font-family:var(--mat-optgroup-label-text-font, var(--mat-sys-title-small-font));line-height:var(--mat-optgroup-label-text-line-height, var(--mat-sys-title-small-line-height));font-size:var(--mat-optgroup-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-optgroup-label-text-tracking, var(--mat-sys-title-small-tracking));font-weight:var(--mat-optgroup-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;outline:none}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;white-space:normal;color:inherit}\\n\"]\n }]\n }], () => [], {\n label: [{\n type: Input\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }]\n });\n})();\n\n/** Event object emitted by MatOption when selected or deselected. */\nclass MatOptionSelectionChange {\n source;\n isUserInput;\n constructor(/** Reference to the option that emitted the event. */\n source, /** Whether the change in the option's value was a result of a user action. */\n isUserInput = false) {\n this.source = source;\n this.isUserInput = isUserInput;\n }\n}\n/**\n * Single option inside of a `<mat-select>` element.\n */\nclass MatOption {\n _element = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _parent = inject(MAT_OPTION_PARENT_COMPONENT, {\n optional: true\n });\n group = inject(MAT_OPTGROUP, {\n optional: true\n });\n _signalDisableRipple = false;\n _selected = false;\n _active = false;\n _mostRecentViewValue = '';\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() {\n return this._parent && this._parent.multiple;\n }\n /** Whether or not the option is currently selected. */\n get selected() {\n return this._selected;\n }\n /** The form value of the option. */\n value;\n /** The unique ID of the option. */\n id = inject(_IdGenerator).getId('mat-option-');\n /** Whether the option is disabled. */\n get disabled() {\n return this.group && this.group.disabled || this._disabled();\n }\n set disabled(value) {\n this._disabled.set(value);\n }\n _disabled = signal(false);\n /** Whether ripples for the option are disabled. */\n get disableRipple() {\n return this._signalDisableRipple ? this._parent.disableRipple() : !!this._parent?.disableRipple;\n }\n /** Whether to display checkmark for single-selection. */\n get hideSingleSelectionIndicator() {\n return !!(this._parent && this._parent.hideSingleSelectionIndicator);\n }\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n onSelectionChange = new EventEmitter();\n /** Element containing the option's text. */\n _text;\n /** Emits when the state of the option changes and any parents have to be notified. */\n _stateChanges = new Subject();\n constructor() {\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_StructuralStylesLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n this._signalDisableRipple = !!this._parent && isSignal(this._parent.disableRipple);\n }\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active() {\n return this._active;\n }\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue() {\n // TODO(kara): Add input property alternative for node envs.\n return (this._text?.nativeElement.textContent || '').trim();\n }\n /** Selects the option. */\n select(emitEvent = true) {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n /** Deselects the option. */\n deselect(emitEvent = true) {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n /** Sets focus onto this option. */\n focus(_origin, options) {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles() {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles() {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n return this.viewValue;\n }\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction() {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n /** Returns the correct tabindex for the option depending on disabled state. */\n // This method is only used by `MatLegacyOption`. Keeping it here to avoid breaking the types.\n // That's because `MatLegacyOption` use `MatOption` type in a few places such as\n // `MatOptionSelectionChange`. It is safe to delete this when `MatLegacyOption` is deleted.\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Gets the host DOM element. */\n _getHostElement() {\n return this._element.nativeElement;\n }\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n if (viewValue !== this._mostRecentViewValue) {\n if (this._mostRecentViewValue) {\n this._stateChanges.next();\n }\n this._mostRecentViewValue = viewValue;\n }\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n /** Emits the selection change event. */\n _emitSelectionChangeEvent(isUserInput = false) {\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n }\n static ɵfac = function MatOption_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatOption)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatOption,\n selectors: [[\"mat-option\"]],\n viewQuery: function MatOption_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._text = _t.first);\n }\n },\n hostAttrs: [\"role\", \"option\", 1, \"mat-mdc-option\", \"mdc-list-item\"],\n hostVars: 11,\n hostBindings: function MatOption_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function MatOption_click_HostBindingHandler() {\n return ctx._selectViaInteraction();\n })(\"keydown\", function MatOption_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵdomProperty(\"id\", ctx.id);\n i0.ɵɵattribute(\"aria-selected\", ctx.selected)(\"aria-disabled\", ctx.disabled.toString());\n i0.ɵɵclassProp(\"mdc-list-item--selected\", ctx.selected)(\"mat-mdc-option-multiple\", ctx.multiple)(\"mat-mdc-option-active\", ctx.active)(\"mdc-list-item--disabled\", ctx.disabled);\n }\n },\n inputs: {\n value: \"value\",\n id: \"id\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute]\n },\n outputs: {\n onSelectionChange: \"onSelectionChange\"\n },\n exportAs: [\"matOption\"],\n ngContentSelectors: _c4,\n decls: 8,\n vars: 5,\n consts: [[\"text\", \"\"], [\"aria-hidden\", \"true\", 1, \"mat-mdc-option-pseudo-checkbox\", 3, \"disabled\", \"state\"], [1, \"mdc-list-item__primary-text\"], [\"state\", \"checked\", \"aria-hidden\", \"true\", \"appearance\", \"minimal\", 1, \"mat-mdc-option-pseudo-checkbox\", 3, \"disabled\"], [1, \"cdk-visually-hidden\"], [\"aria-hidden\", \"true\", \"mat-ripple\", \"\", 1, \"mat-mdc-option-ripple\", \"mat-focus-indicator\", 3, \"matRippleTrigger\", \"matRippleDisabled\"]],\n template: function MatOption_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c3);\n i0.ɵɵconditionalCreate(0, MatOption_Conditional_0_Template, 1, 2, \"mat-pseudo-checkbox\", 1);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 2, 0);\n i0.ɵɵprojection(4, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵconditionalCreate(5, MatOption_Conditional_5_Template, 1, 1, \"mat-pseudo-checkbox\", 3);\n i0.ɵɵconditionalCreate(6, MatOption_Conditional_6_Template, 2, 1, \"span\", 4);\n i0.ɵɵelement(7, \"div\", 5);\n }\n if (rf & 2) {\n i0.ɵɵconditional(ctx.multiple ? 0 : -1);\n i0.ɵɵadvance(5);\n i0.ɵɵconditional(!ctx.multiple && ctx.selected && !ctx.hideSingleSelectionIndicator ? 5 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.group && ctx.group._inert ? 6 : -1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"matRippleTrigger\", ctx._getHostElement())(\"matRippleDisabled\", ctx.disabled || ctx.disableRipple);\n }\n },\n dependencies: [MatPseudoCheckbox, MatRipple],\n styles: [\".mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color, var(--mat-sys-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}@media(forced-colors: active){.mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{right:auto;left:16px}}.mat-mdc-option-multiple{--mat-list-list-item-selected-container-color: var(--mat-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-focus-indicator::before{content:\\\"\\\"}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatOption, [{\n type: Component,\n args: [{\n selector: 'mat-option',\n exportAs: 'matOption',\n host: {\n 'role': 'option',\n '[class.mdc-list-item--selected]': 'selected',\n '[class.mat-mdc-option-multiple]': 'multiple',\n '[class.mat-mdc-option-active]': 'active',\n '[class.mdc-list-item--disabled]': 'disabled',\n '[id]': 'id',\n // Set aria-selected to false for non-selected items and true for selected items. Conform to\n // [WAI ARIA Listbox authoring practices guide](\n // https://www.w3.org/WAI/ARIA/apg/patterns/listbox/), \"If any options are selected, each\n // selected option has either aria-selected or aria-checked set to true. All options that are\n // selectable but not selected have either aria-selected or aria-checked set to false.\" Align\n // aria-selected implementation of Chips and List components.\n //\n // Set `aria-selected=\"false\"` on not-selected listbox options to fix VoiceOver announcing\n // every option as \"selected\" (#21491).\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-mdc-option mdc-list-item'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatPseudoCheckbox, MatRipple],\n template: \"<!-- Set aria-hidden=\\\"true\\\" to this DOM node and other decorative nodes in this file. This might\\n be contributing to issue where sometimes VoiceOver focuses on a TextNode in the a11y tree instead\\n of the Option node (#23202). Most assistive technology will generally ignore non-role,\\n non-text-content elements. Adding aria-hidden seems to make VoiceOver behave more consistently. -->\\n@if (multiple) {\\n <mat-pseudo-checkbox\\n class=\\\"mat-mdc-option-pseudo-checkbox\\\"\\n [disabled]=\\\"disabled\\\"\\n [state]=\\\"selected ? 'checked' : 'unchecked'\\\"\\n aria-hidden=\\\"true\\\"></mat-pseudo-checkbox>\\n}\\n\\n<ng-content select=\\\"mat-icon\\\"></ng-content>\\n\\n<span class=\\\"mdc-list-item__primary-text\\\" #text><ng-content></ng-content></span>\\n\\n<!-- Render checkmark at the end for single-selection. -->\\n@if (!multiple && selected && !hideSingleSelectionIndicator) {\\n <mat-pseudo-checkbox\\n class=\\\"mat-mdc-option-pseudo-checkbox\\\"\\n [disabled]=\\\"disabled\\\"\\n state=\\\"checked\\\"\\n aria-hidden=\\\"true\\\"\\n appearance=\\\"minimal\\\"></mat-pseudo-checkbox>\\n}\\n\\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\\n@if (group && group._inert) {\\n <span class=\\\"cdk-visually-hidden\\\">({{ group.label }})</span>\\n}\\n\\n<div class=\\\"mat-mdc-option-ripple mat-focus-indicator\\\" aria-hidden=\\\"true\\\" mat-ripple\\n [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"disabled || disableRipple\\\">\\n</div>\\n\",\n styles: [\".mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color, var(--mat-sys-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}@media(forced-colors: active){.mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{right:auto;left:16px}}.mat-mdc-option-multiple{--mat-list-list-item-selected-container-color: var(--mat-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-focus-indicator::before{content:\\\"\\\"}\\n\"]\n }]\n }], () => [], {\n value: [{\n type: Input\n }],\n id: [{\n type: Input\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n onSelectionChange: [{\n type: Output\n }],\n _text: [{\n type: ViewChild,\n args: ['text', {\n static: true\n }]\n }]\n });\n})();\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nfunction _countGroupLabelsBeforeOption(optionIndex, options, optionGroups) {\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n return groupCounter;\n }\n return 0;\n}\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nfunction _getOptionScrollPosition(optionOffset, optionHeight, currentScrollPosition, panelHeight) {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n return currentScrollPosition;\n}\nexport { MatOption as M, _countGroupLabelsBeforeOption as _, MatOptgroup as a, _getOptionScrollPosition as b, MAT_OPTION_PARENT_COMPONENT as c, MAT_OPTGROUP as d, MatOptionSelectionChange as e };\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n _listeners = [];\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter(registered => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n static ɵfac = function UniqueSelectionDispatcher_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || UniqueSelectionDispatcher)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UniqueSelectionDispatcher,\n factory: UniqueSelectionDispatcher.ɵfac,\n providedIn: 'root'\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UniqueSelectionDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nexport { UniqueSelectionDispatcher as U };\n","import { a as _ViewRepeaterOperation } from './recycle-view-repeater-strategy-SfuyU210.mjs';\n\n/**\n * A repeater that destroys views when they are removed from a\n * `ViewContainerRef`. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = _ViewRepeaterOperation.INSERTED;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = _ViewRepeaterOperation.REMOVED;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = _ViewRepeaterOperation.MOVED;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() { }\n}\n\nexport { _DisposeViewRepeaterStrategy as _ };\n\n","import { Subject } from 'rxjs';\n\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n _multiple;\n _emitChanges;\n compareWith;\n /** Currently-selected values. */\n _selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n _deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n _selectedToEmit = [];\n /** Cache for the array value of the selected items. */\n _selected;\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n /** Event emitted when the value has changed. */\n changed = new Subject();\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true, compareWith) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n this.compareWith = compareWith;\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /**\n * Selects a value or an array of values.\n * @param values The values to select\n * @return Whether the selection changed as a result of this call\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Deselects a value or an array of values.\n * @param values The values to deselect\n * @return Whether the selection changed as a result of this call\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Sets the selected values\n * @param values The new selected values\n * @return Whether the selection changed as a result of this call\n */\n setSelection(...values) {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values.map(value => this._getConcreteValue(value)));\n values.forEach(value => this._markSelected(value));\n oldValues\n .filter(value => !newSelectedSet.has(this._getConcreteValue(value, newSelectedSet)))\n .forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Toggles a value between selected and deselected.\n * @param value The value to toggle\n * @return Whether the selection changed as a result of this call\n */\n toggle(value) {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n * @param flushEvent Whether to flush the changes in an event.\n * If false, the changes to the selection will be flushed along with the next event.\n * @return Whether the selection changed as a result of this call\n */\n clear(flushEvent = true) {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(this._getConcreteValue(value));\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n value = this._getConcreteValue(value);\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n value = this._getConcreteValue(value);\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n /** Whether there are queued up change to be emitted. */\n _hasQueuedChanges() {\n return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n }\n /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */\n _getConcreteValue(inputValue, selection) {\n if (!this.compareWith) {\n return inputValue;\n }\n else {\n selection = selection ?? this._selection;\n for (let selectedValue of selection) {\n if (this.compareWith(inputValue, selectedValue)) {\n return selectedValue;\n }\n }\n return inputValue;\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\nexport { SelectionModel as S, getMultipleValuesInSingleSelectionError as g };\n\n","import * as i0 from '@angular/core';\nimport { NgModule } from '@angular/core';\nimport { M as MatPseudoCheckbox } from './pseudo-checkbox-AUVlNJs_.mjs';\nimport { M as MatCommonModule } from './common-module-cKSwHniA.mjs';\nclass MatPseudoCheckboxModule {\n static ɵfac = function MatPseudoCheckboxModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatPseudoCheckboxModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatPseudoCheckboxModule,\n imports: [MatCommonModule, MatPseudoCheckbox],\n exports: [MatPseudoCheckbox]\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatPseudoCheckboxModule, [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatPseudoCheckbox],\n exports: [MatPseudoCheckbox]\n }]\n }], null, null);\n})();\nexport { MatPseudoCheckboxModule as M };\n","import * as i0 from '@angular/core';\nimport { NgModule } from '@angular/core';\nimport { M as MatRippleModule } from './index-BRImSAOu.mjs';\nimport { M as MatCommonModule } from './common-module-cKSwHniA.mjs';\nimport { M as MatOption, a as MatOptgroup } from './option-CEIjUDzj.mjs';\nimport { M as MatPseudoCheckboxModule } from './pseudo-checkbox-module-BymSaWBn.mjs';\nclass MatOptionModule {\n static ɵfac = function MatOptionModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatOptionModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatOptionModule,\n imports: [MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, MatOption, MatOptgroup],\n exports: [MatOption, MatOptgroup]\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, MatOption]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatOptionModule, [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, MatOption, MatOptgroup],\n exports: [MatOption, MatOptgroup]\n }]\n }], null, null);\n})();\nexport { MatOptionModule as M };\n","import { createRepositionScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, Injector, ChangeDetectorRef, ElementRef, Renderer2, signal, EventEmitter, HostAttributeToken, booleanAttribute, numberAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ContentChild, Input, ViewChild, Output, Directive, NgModule } from '@angular/core';\nimport { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { _IdGenerator, LiveAnnouncer, removeAriaReferencedId, addAriaReferencedId, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { hasModifierKey, ENTER, SPACE, A, ESCAPE, DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { NgControl, Validators, NgForm, FormGroupDirective } from '@angular/forms';\nimport { Subject, defer, merge } from 'rxjs';\nimport { startWith, switchMap, filter, map, takeUntil, take } from 'rxjs/operators';\nimport { NgClass } from '@angular/common';\nimport { h as MAT_FORM_FIELD, k as MatFormFieldControl } from './form-field-C_dE1cl0.mjs';\nimport { _ as _animationsDisabled } from './animation-ChQ1vjiF.mjs';\nimport { _ as _countGroupLabelsBeforeOption, b as _getOptionScrollPosition, c as MAT_OPTION_PARENT_COMPONENT, M as MatOption, d as MAT_OPTGROUP } from './option-CEIjUDzj.mjs';\nimport { E as ErrorStateMatcher } from './error-options-DCNQlTOA.mjs';\nimport { _ as _ErrorStateTracker } from './error-state-Dtb1IHM-.mjs';\nimport { M as MatOptionModule } from './index-ZUoC96yG.mjs';\nimport { M as MatCommonModule } from './common-module-cKSwHniA.mjs';\nimport { M as MatFormFieldModule } from './module-ko3UutPV.mjs';\n\n// Note that these have been copied over verbatim from\n// `material/select` so that we don't have to expose them publicly.\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nconst _c0 = [\"trigger\"];\nconst _c1 = [\"panel\"];\nconst _c2 = [[[\"mat-select-trigger\"]], \"*\"];\nconst _c3 = [\"mat-select-trigger\", \"*\"];\nfunction MatSelect_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.placeholder);\n }\n}\nfunction MatSelect_Conditional_5_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n }\n}\nfunction MatSelect_Conditional_5_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 11);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.triggerValue);\n }\n}\nfunction MatSelect_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵconditionalCreate(1, MatSelect_Conditional_5_Conditional_1_Template, 1, 0)(2, MatSelect_Conditional_5_Conditional_2_Template, 2, 1, \"span\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.customTrigger ? 1 : 2);\n }\n}\nfunction MatSelect_ng_template_10_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 12, 1);\n i0.ɵɵlistener(\"keydown\", function MatSelect_ng_template_10_Template_div_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._handleKeydown($event));\n });\n i0.ɵɵprojection(2, 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(i0.ɵɵinterpolate1(\"mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open \", ctx_r1._getPanelTheme()));\n i0.ɵɵclassProp(\"mat-select-panel-animations-enabled\", !ctx_r1._animationsDisabled);\n i0.ɵɵproperty(\"ngClass\", ctx_r1.panelClass);\n i0.ɵɵattribute(\"id\", ctx_r1.id + \"-panel\")(\"aria-multiselectable\", ctx_r1.multiple)(\"aria-label\", ctx_r1.ariaLabel || null)(\"aria-labelledby\", ctx_r1._getPanelAriaLabelledby());\n }\n}\nfunction getMatSelectDynamicMultipleError() {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nfunction getMatSelectNonArrayValueError() {\n return Error('Value must be an array in multiple-selection mode.');\n}\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nfunction getMatSelectNonFunctionValueError() {\n return Error('`compareWith` must be a function.');\n}\n\n/** Injection token that determines the scroll handling while a select is open. */\nconst MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n }\n});\n/**\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nfunction MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(_overlay) {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n}\n/** Injection token that can be used to provide the default options the select module. */\nconst MAT_SELECT_CONFIG = new InjectionToken('MAT_SELECT_CONFIG');\n/**\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nconst MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n/**\n * Injection token that can be used to reference instances of `MatSelectTrigger`. It serves as\n * alternative token to the actual `MatSelectTrigger` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SELECT_TRIGGER = new InjectionToken('MatSelectTrigger');\n/** Change event object that is emitted when the select value has changed. */\nclass MatSelectChange {\n source;\n value;\n constructor(/** Reference to the select that emitted the change event. */\n source, /** Current value of the select that emitted the event. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\nclass MatSelect {\n _viewportRuler = inject(ViewportRuler);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n _dir = inject(Directionality, {\n optional: true\n });\n _idGenerator = inject(_IdGenerator);\n _renderer = inject(Renderer2);\n _parentFormField = inject(MAT_FORM_FIELD, {\n optional: true\n });\n ngControl = inject(NgControl, {\n self: true,\n optional: true\n });\n _liveAnnouncer = inject(LiveAnnouncer);\n _defaultOptions = inject(MAT_SELECT_CONFIG, {\n optional: true\n });\n _animationsDisabled = _animationsDisabled();\n _initialized = new Subject();\n _cleanupDetach;\n /** All of the defined select options. */\n options;\n // TODO(crisbeto): this is only necessary for the non-MDC select, but it's technically a\n // public API so we have to keep it. It should be deprecated and removed eventually.\n /** All of the defined groups of options. */\n optionGroups;\n /** User-supplied override of the trigger element. */\n customTrigger;\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n _positions = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }, {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'mat-mdc-select-panel-above'\n }, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'mat-mdc-select-panel-above'\n }];\n /** Scrolls a particular option into the view. */\n _scrollOptionIntoView(index) {\n const option = this.options.toArray()[index];\n if (option) {\n const panel = this.panel.nativeElement;\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\n const element = option._getHostElement();\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, panel.scrollTop, panel.offsetHeight);\n }\n }\n }\n /** Called when the panel has been opened and the overlay has settled on its final position. */\n _positioningSettled() {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\n /** Creates a change event object that should be emitted by the select. */\n _getChangeEvent(value) {\n return new MatSelectChange(this, value);\n }\n /** Factory function used to create a scroll strategy for this select. */\n _scrollStrategyFactory = inject(MAT_SELECT_SCROLL_STRATEGY);\n /** Whether or not the overlay panel is open. */\n _panelOpen = false;\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n _compareWith = (o1, o2) => o1 === o2;\n /** Unique id for this input. */\n _uid = this._idGenerator.getId('mat-select-');\n /** Current `aria-labelledby` value for the select trigger. */\n _triggerAriaLabelledBy = null;\n /**\n * Keeps track of the previous form control assigned to the select.\n * Used to detect if it has changed.\n */\n _previousControl;\n /** Emits whenever the component is destroyed. */\n _destroy = new Subject();\n /** Tracks the error state of the select. */\n _errorStateTracker;\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n stateChanges = new Subject();\n /**\n * Disable the automatic labeling to avoid issues like #27241.\n * @docs-private\n */\n disableAutomaticLabeling = true;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n userAriaDescribedBy;\n /** Deals with the selection logic. */\n _selectionModel;\n /** Manages keyboard events for options in the panel. */\n _keyManager;\n /** Ideal origin for the overlay panel. */\n _preferredOverlayOrigin;\n /** Width of the overlay panel. */\n _overlayWidth;\n /** `View -> model callback called when value changes` */\n _onChange = () => {};\n /** `View -> model callback called when select has been touched` */\n _onTouched = () => {};\n /** ID for the DOM node containing the select's value. */\n _valueId = this._idGenerator.getId('mat-select-value-');\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n _scrollStrategy;\n _overlayPanelClass = this._defaultOptions?.overlayPanelClass || '';\n /** Whether the select is focused. */\n get focused() {\n return this._focused || this._panelOpen;\n }\n _focused = false;\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mat-select';\n /** Trigger that opens the select. */\n trigger;\n /** Panel containing the select options. */\n panel;\n /** Overlay pane containing the options. */\n _overlayDir;\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n panelClass;\n /** Whether the select is disabled. */\n disabled = false;\n /** Whether ripples in the select are disabled. */\n get disableRipple() {\n return this._disableRipple();\n }\n set disableRipple(value) {\n this._disableRipple.set(value);\n }\n _disableRipple = signal(false);\n /** Tab index of the select. */\n tabIndex = 0;\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = value;\n this._syncParentProperties();\n }\n _hideSingleSelectionIndicator = this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n /** Placeholder to be shown if no value has been selected. */\n get placeholder() {\n return this._placeholder;\n }\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n _placeholder;\n /** Whether the component is required. */\n get required() {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value) {\n this._required = value;\n this.stateChanges.next();\n }\n _required;\n /** Whether the user should be allowed to select multiple options. */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n if (this._selectionModel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = value;\n }\n _multiple = false;\n /** Whether to center the active option over the trigger. */\n disableOptionCentering = this._defaultOptions?.disableOptionCentering ?? false;\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonFunctionValueError();\n }\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n /** Value of the select control. */\n get value() {\n return this._value;\n }\n set value(newValue) {\n const hasAssigned = this._assignValue(newValue);\n if (hasAssigned) {\n this._onChange(newValue);\n }\n }\n _value;\n /** Aria label of the select. */\n ariaLabel = '';\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n ariaLabelledby;\n /** Object used to control when error messages are shown. */\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value) {\n this._errorStateTracker.matcher = value;\n }\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n typeaheadDebounceInterval;\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n sortComparator;\n /** Unique id of the element. */\n get id() {\n return this._id;\n }\n set id(value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n _id;\n /** Whether the select is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value) {\n this._errorStateTracker.errorState = value;\n }\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n panelWidth = this._defaultOptions && typeof this._defaultOptions.panelWidth !== 'undefined' ? this._defaultOptions.panelWidth : 'auto';\n /**\n * By default selecting an option with a `null` or `undefined` value will reset the select's\n * value. Enable this option if the reset behavior doesn't match your requirements and instead\n * the nullable options should become selected. The value of this input can be controlled app-wide\n * using the `MAT_SELECT_CONFIG` injection token.\n */\n canSelectNullableOptions = this._defaultOptions?.canSelectNullableOptions ?? false;\n /** Combined stream of all of the child options' change events. */\n optionSelectionChanges = defer(() => {\n const options = this.options;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));\n });\n /** Event emitted when the select panel has been toggled. */\n openedChange = new EventEmitter();\n /** Event emitted when the select has been opened. */\n _openedStream = this.openedChange.pipe(filter(o => o), map(() => {}));\n /** Event emitted when the select has been closed. */\n _closedStream = this.openedChange.pipe(filter(o => !o), map(() => {}));\n /** Event emitted when the selected value has been changed by the user. */\n selectionChange = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n valueChange = new EventEmitter();\n constructor() {\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const parentForm = inject(NgForm, {\n optional: true\n });\n const parentFormGroup = inject(FormGroupDirective, {\n optional: true\n });\n const tabIndex = inject(new HostAttributeToken('tabindex'), {\n optional: true\n });\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n // Note that we only want to set this when the defaults pass it in, otherwise it should\n // stay as `undefined` so that it falls back to the default in the key manager.\n if (this._defaultOptions?.typeaheadDebounceInterval != null) {\n this.typeaheadDebounceInterval = this._defaultOptions.typeaheadDebounceInterval;\n }\n this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, this.ngControl, parentFormGroup, parentForm, this.stateChanges);\n this._scrollStrategy = this._scrollStrategyFactory();\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple);\n this.stateChanges.next();\n this._viewportRuler.change().pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n ngAfterContentInit() {\n this._initialized.next();\n this._initialized.complete();\n this._initKeyManager();\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n ngDoCheck() {\n const newAriaLabelledby = this._getTriggerAriaLabelledby();\n const ngControl = this.ngControl;\n // We have to manage setting the `aria-labelledby` ourselves, because part of its value\n // is computed as a result of a content query which can cause this binding to trigger a\n // \"changed after checked\" error.\n if (newAriaLabelledby !== this._triggerAriaLabelledBy) {\n const element = this._elementRef.nativeElement;\n this._triggerAriaLabelledBy = newAriaLabelledby;\n if (newAriaLabelledby) {\n element.setAttribute('aria-labelledby', newAriaLabelledby);\n } else {\n element.removeAttribute('aria-labelledby');\n }\n }\n if (ngControl) {\n // The disabled state might go out of sync if the form group is swapped out. See #17860.\n if (this._previousControl !== ngControl.control) {\n if (this._previousControl !== undefined && ngControl.disabled !== null && ngControl.disabled !== this.disabled) {\n this.disabled = ngControl.disabled;\n }\n this._previousControl = ngControl.control;\n }\n this.updateErrorState();\n }\n }\n ngOnChanges(changes) {\n // Updating the disabled state is handled by the input, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled'] || changes['userAriaDescribedBy']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this.typeaheadDebounceInterval);\n }\n }\n ngOnDestroy() {\n this._cleanupDetach?.();\n this._keyManager?.destroy();\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n this._clearFromModal();\n }\n /** Toggles the overlay panel open or closed. */\n toggle() {\n this.panelOpen ? this.close() : this.open();\n }\n /** Opens the overlay panel. */\n open() {\n if (!this._canOpen()) {\n return;\n }\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField.getConnectedOverlayOrigin();\n }\n this._cleanupDetach?.();\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._applyModalPanelOwnership();\n this._panelOpen = true;\n this._overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n this._overlayDir.attachOverlay();\n this._keyManager.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n // Required for the MDC form field to pick up when the overlay has been opened.\n this.stateChanges.next();\n // Simulate the animation event before we moved away from `@angular/animations`.\n Promise.resolve().then(() => this.openedChange.emit(true));\n }\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n _trackedModal = null;\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n const panelId = `${this.id}-panel`;\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n /** Clears the reference to the listbox overlay element from the modal it was added to. */\n _clearFromModal() {\n if (!this._trackedModal) {\n // Most commonly, the autocomplete trigger is not used inside a modal.\n return;\n }\n const panelId = `${this.id}-panel`;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n /** Closes the overlay panel and focuses the host element. */\n close() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._exitAndDetach();\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n // Required for the MDC form field to pick up when the overlay has been closed.\n this.stateChanges.next();\n // Simulate the animation event before we moved away from `@angular/animations`.\n Promise.resolve().then(() => this.openedChange.emit(false));\n }\n }\n /** Triggers the exit animation and detaches the overlay at the end. */\n _exitAndDetach() {\n if (this._animationsDisabled || !this.panel) {\n this._detachOverlay();\n return;\n }\n this._cleanupDetach?.();\n this._cleanupDetach = () => {\n cleanupEvent();\n clearTimeout(exitFallbackTimer);\n this._cleanupDetach = undefined;\n };\n const panel = this.panel.nativeElement;\n const cleanupEvent = this._renderer.listen(panel, 'animationend', event => {\n if (event.animationName === '_mat-select-exit') {\n this._cleanupDetach?.();\n this._detachOverlay();\n }\n });\n // Since closing the overlay depends on the animation, we have a fallback in case the panel\n // doesn't animate. This can happen in some internal tests that do `* {animation: none}`.\n const exitFallbackTimer = setTimeout(() => {\n this._cleanupDetach?.();\n this._detachOverlay();\n }, 200);\n panel.classList.add('mat-select-panel-exit');\n }\n /** Detaches the current overlay directive. */\n _detachOverlay() {\n this._overlayDir.detachOverlay();\n // Some of the overlay detachment logic depends on change detection.\n // Mark for check to ensure that things get picked up in a timely manner.\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value) {\n this._assignValue(value);\n }\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n /** Whether or not the overlay panel is open. */\n get panelOpen() {\n return this._panelOpen;\n }\n /** The currently selected option. */\n get selected() {\n return this.multiple ? this._selectionModel?.selected || [] : this._selectionModel?.selected[0];\n }\n /** The value displayed in the trigger. */\n get triggerValue() {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map(option => option.viewValue);\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n return this._selectionModel.selected[0].viewValue;\n }\n /** Refreshes the error state of the select. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n /** Whether the element is in RTL mode. */\n _isRtl() {\n return this._dir ? this._dir.value === 'rtl' : false;\n }\n /** Handles all keydown events on the select. */\n _handleKeydown(event) {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n /** Handles keyboard events while the select is closed. */\n _handleClosedKeydown(event) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native <select>\n if (!manager.isTyping() && isOpenKey && !hasModifierKey(event) || (this.multiple || event.altKey) && isArrowKey) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n } else if (!this.multiple) {\n const previouslySelectedOption = this.selected;\n manager.onKeydown(event);\n const selectedOption = this.selected;\n // Since the value has changed, we need to announce it ourselves.\n if (selectedOption && previouslySelectedOption !== selectedOption) {\n // We set a duration on the live announcement, because we want the live element to be\n // cleared after a while so that users can't navigate to it using the arrow keys.\n this._liveAnnouncer.announce(selectedOption.viewValue, 10000);\n }\n }\n }\n /** Handles keyboard events when the selected is open. */\n _handleOpenKeydown(event) {\n const manager = this._keyManager;\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const isTyping = manager.isTyping();\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n } else if (!isTyping && (keyCode === ENTER || keyCode === SPACE) && manager.activeItem && !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem && manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n /** Handles keyboard events coming from the overlay. */\n _handleOverlayKeydown(event) {\n // TODO(crisbeto): prior to #30363 this was being handled inside the overlay directive, but we\n // need control over the animation timing so we do it manually. We should remove the `keydown`\n // listener from `.mat-mdc-select-panel` and handle all the events here. That may cause\n // further test breakages so it's left for a follow-up.\n if (event.keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n this.close();\n }\n }\n _onFocus() {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n _onBlur() {\n this._focused = false;\n this._keyManager?.cancelTypeahead();\n if (!this.disabled && !this.panelOpen) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n /** Returns the theme to be used on the panel. */\n _getPanelTheme() {\n return this._parentFormField ? `mat-${this._parentFormField.color}` : '';\n }\n /** Whether the select has a value. */\n get empty() {\n return !this._selectionModel || this._selectionModel.isEmpty();\n }\n _initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value = this.ngControl.value;\n }\n this._setSelectionByValue(this._value);\n this.stateChanges.next();\n });\n }\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n _setSelectionByValue(value) {\n this.options.forEach(option => option.setInactiveStyles());\n this._selectionModel.clear();\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonArrayValueError();\n }\n value.forEach(currentValue => this._selectOptionByValue(currentValue));\n this._sortValues();\n } else {\n const correspondingOption = this._selectOptionByValue(value);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.updateActiveItem(correspondingOption);\n } else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n _selectOptionByValue(value) {\n const correspondingOption = this.options.find(option => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n try {\n // Treat null as a special reset value.\n return (option.value != null || this.canSelectNullableOptions) && this._compareWith(option.value, value);\n } catch (error) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n return correspondingOption;\n }\n /** Assigns a specific value to the select. Returns whether the value has changed. */\n _assignValue(newValue) {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this._value || this._multiple && Array.isArray(newValue)) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n this._value = newValue;\n return true;\n }\n return false;\n }\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n _skipPredicate = option => {\n if (this.panelOpen) {\n // Support keyboard focusing disabled options in an ARIA listbox.\n return false;\n }\n // When the panel is closed, skip over disabled options. Support options via the UP/DOWN arrow\n // keys on a closed select. ARIA listbox interaction pattern is less relevant when the panel is\n // closed.\n return option.disabled;\n };\n /** Gets how wide the overlay panel should be. */\n _getOverlayWidth(preferredOrigin) {\n if (this.panelWidth === 'auto') {\n const refToMeasure = preferredOrigin instanceof CdkOverlayOrigin ? preferredOrigin.elementRef : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n return this.panelWidth === null ? '' : this.panelWidth;\n }\n /** Syncs the parent state with the individual options. */\n _syncParentProperties() {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr').withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(['shiftKey']).skipPredicate(this._skipPredicate);\n this._keyManager.tabOut.subscribe(() => {\n if (this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n }\n });\n this._keyManager.change.subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n /** Drops current option subscriptions and IDs and resets from scratch. */\n _resetOptions() {\n const changedOrDestroyed = merge(this.options.changes, this._destroy);\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n if (event.isUserInput && !this.multiple && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n merge(...this.options.map(option => option._stateChanges)).pipe(takeUntil(changedOrDestroyed)).subscribe(() => {\n // `_stateChanges` can fire as a result of a change in the label's DOM value which may\n // be the result of an expression changing. We have to use `detectChanges` in order\n // to avoid \"changed after checked\" errors (see #14793).\n this._changeDetectorRef.detectChanges();\n this.stateChanges.next();\n });\n }\n /** Invoked when an option is clicked. */\n _onSelect(option, isUserInput) {\n const wasSelected = this._selectionModel.isSelected(option);\n if (!this.canSelectNullableOptions && option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n }\n /** Sorts the selected values in the selected based on their order in the panel. */\n _sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n this._selectionModel.sort((a, b) => {\n return this.sortComparator ? this.sortComparator(a, b, options) : options.indexOf(a) - options.indexOf(b);\n });\n this.stateChanges.next();\n }\n }\n /** Emits change event to set the model value. */\n _propagateChanges(fallbackValue) {\n let valueToEmit;\n if (this.multiple) {\n valueToEmit = this.selected.map(option => option.value);\n } else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(this._getChangeEvent(valueToEmit));\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first *enabled* option.\n */\n _highlightCorrectOption() {\n if (this._keyManager) {\n if (this.empty) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options.length; index++) {\n const option = this.options.get(index);\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n /** Whether the panel is allowed to open. */\n _canOpen() {\n return !this._panelOpen && !this.disabled && this.options?.length > 0 && !!this._overlayDir;\n }\n /** Focuses the select element. */\n focus(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Gets the aria-labelledby for the select panel. */\n _getPanelAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n const labelId = this._parentFormField?.getLabelId() || null;\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant() {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n return null;\n }\n /** Gets the aria-labelledby of the select component trigger. */\n _getTriggerAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n let value = this._parentFormField?.getLabelId() || '';\n if (this.ariaLabelledby) {\n value += ' ' + this.ariaLabelledby;\n }\n // The value should not be used for the trigger's aria-labelledby,\n // but this currently \"breaks\" accessibility tests since they complain\n // there is no aria-labelledby. This is because they are not setting an\n // appropriate label on the form field or select.\n // TODO: remove this conditional after fixing clients by ensuring their\n // selects have a label applied.\n if (!value) {\n value = this._valueId;\n }\n return value;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds() {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n return existingDescribedBy?.split(' ') || [];\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n this.open();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n // Since the panel doesn't overlap the trigger, we\n // want the label to only float when there's a value.\n return this.panelOpen || !this.empty || this.focused && !!this.placeholder;\n }\n static ɵfac = function MatSelect_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelect)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSelect,\n selectors: [[\"mat-select\"]],\n contentQueries: function MatSelect_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MAT_SELECT_TRIGGER, 5);\n i0.ɵɵcontentQuery(dirIndex, MatOption, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customTrigger = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.options = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n }\n },\n viewQuery: function MatSelect_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n i0.ɵɵviewQuery(CdkConnectedOverlay, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.trigger = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._overlayDir = _t.first);\n }\n },\n hostAttrs: [\"role\", \"combobox\", \"aria-haspopup\", \"listbox\", 1, \"mat-mdc-select\"],\n hostVars: 19,\n hostBindings: function MatSelect_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function MatSelect_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n })(\"focus\", function MatSelect_focus_HostBindingHandler() {\n return ctx._onFocus();\n })(\"blur\", function MatSelect_blur_HostBindingHandler() {\n return ctx._onBlur();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.id)(\"tabindex\", ctx.disabled ? -1 : ctx.tabIndex)(\"aria-controls\", ctx.panelOpen ? ctx.id + \"-panel\" : null)(\"aria-expanded\", ctx.panelOpen)(\"aria-label\", ctx.ariaLabel || null)(\"aria-required\", ctx.required.toString())(\"aria-disabled\", ctx.disabled.toString())(\"aria-invalid\", ctx.errorState)(\"aria-activedescendant\", ctx._getAriaActiveDescendant());\n i0.ɵɵclassProp(\"mat-mdc-select-disabled\", ctx.disabled)(\"mat-mdc-select-invalid\", ctx.errorState)(\"mat-mdc-select-required\", ctx.required)(\"mat-mdc-select-empty\", ctx.empty)(\"mat-mdc-select-multiple\", ctx.multiple);\n }\n },\n inputs: {\n userAriaDescribedBy: [0, \"aria-describedby\", \"userAriaDescribedBy\"],\n panelClass: \"panelClass\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n tabIndex: [2, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)],\n hideSingleSelectionIndicator: [2, \"hideSingleSelectionIndicator\", \"hideSingleSelectionIndicator\", booleanAttribute],\n placeholder: \"placeholder\",\n required: [2, \"required\", \"required\", booleanAttribute],\n multiple: [2, \"multiple\", \"multiple\", booleanAttribute],\n disableOptionCentering: [2, \"disableOptionCentering\", \"disableOptionCentering\", booleanAttribute],\n compareWith: \"compareWith\",\n value: \"value\",\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n errorStateMatcher: \"errorStateMatcher\",\n typeaheadDebounceInterval: [2, \"typeaheadDebounceInterval\", \"typeaheadDebounceInterval\", numberAttribute],\n sortComparator: \"sortComparator\",\n id: \"id\",\n panelWidth: \"panelWidth\",\n canSelectNullableOptions: [2, \"canSelectNullableOptions\", \"canSelectNullableOptions\", booleanAttribute]\n },\n outputs: {\n openedChange: \"openedChange\",\n _openedStream: \"opened\",\n _closedStream: \"closed\",\n selectionChange: \"selectionChange\",\n valueChange: \"valueChange\"\n },\n exportAs: [\"matSelect\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MatFormFieldControl,\n useExisting: MatSelect\n }, {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatSelect\n }]), i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c3,\n decls: 11,\n vars: 9,\n consts: [[\"fallbackOverlayOrigin\", \"cdkOverlayOrigin\", \"trigger\", \"\"], [\"panel\", \"\"], [\"cdk-overlay-origin\", \"\", 1, \"mat-mdc-select-trigger\", 3, \"click\"], [1, \"mat-mdc-select-value\"], [1, \"mat-mdc-select-placeholder\", \"mat-mdc-select-min-line\"], [1, \"mat-mdc-select-value-text\"], [1, \"mat-mdc-select-arrow-wrapper\"], [1, \"mat-mdc-select-arrow\"], [\"viewBox\", \"0 0 24 24\", \"width\", \"24px\", \"height\", \"24px\", \"focusable\", \"false\", \"aria-hidden\", \"true\"], [\"d\", \"M7 10l5 5 5-5z\"], [\"cdk-connected-overlay\", \"\", \"cdkConnectedOverlayLockPosition\", \"\", \"cdkConnectedOverlayHasBackdrop\", \"\", \"cdkConnectedOverlayBackdropClass\", \"cdk-overlay-transparent-backdrop\", 3, \"detach\", \"backdropClick\", \"overlayKeydown\", \"cdkConnectedOverlayDisableClose\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayWidth\", \"cdkConnectedOverlayFlexibleDimensions\"], [1, \"mat-mdc-select-min-line\"], [\"role\", \"listbox\", \"tabindex\", \"-1\", 3, \"keydown\", \"ngClass\"]],\n template: function MatSelect_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef(_c2);\n i0.ɵɵelementStart(0, \"div\", 2, 0);\n i0.ɵɵlistener(\"click\", function MatSelect_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.open());\n });\n i0.ɵɵelementStart(3, \"div\", 3);\n i0.ɵɵconditionalCreate(4, MatSelect_Conditional_4_Template, 2, 1, \"span\", 4)(5, MatSelect_Conditional_5_Template, 3, 1, \"span\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 6)(7, \"div\", 7);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(8, \"svg\", 8);\n i0.ɵɵelement(9, \"path\", 9);\n i0.ɵɵelementEnd()()()();\n i0.ɵɵtemplate(10, MatSelect_ng_template_10_Template, 3, 10, \"ng-template\", 10);\n i0.ɵɵlistener(\"detach\", function MatSelect_Template_ng_template_detach_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.close());\n })(\"backdropClick\", function MatSelect_Template_ng_template_backdropClick_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.close());\n })(\"overlayKeydown\", function MatSelect_Template_ng_template_overlayKeydown_10_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handleOverlayKeydown($event));\n });\n }\n if (rf & 2) {\n const fallbackOverlayOrigin_r4 = i0.ɵɵreference(1);\n i0.ɵɵadvance(3);\n i0.ɵɵattribute(\"id\", ctx._valueId);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.empty ? 4 : 5);\n i0.ɵɵadvance(6);\n i0.ɵɵproperty(\"cdkConnectedOverlayDisableClose\", true)(\"cdkConnectedOverlayPanelClass\", ctx._overlayPanelClass)(\"cdkConnectedOverlayScrollStrategy\", ctx._scrollStrategy)(\"cdkConnectedOverlayOrigin\", ctx._preferredOverlayOrigin || fallbackOverlayOrigin_r4)(\"cdkConnectedOverlayPositions\", ctx._positions)(\"cdkConnectedOverlayWidth\", ctx._overlayWidth)(\"cdkConnectedOverlayFlexibleDimensions\", true);\n }\n },\n dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, NgClass],\n styles: [\"@keyframes _mat-select-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}@keyframes _mat-select-exit{from{opacity:1}to{opacity:0}}.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:relative;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-select-panel-animations-enabled{animation:_mat-select-enter 120ms cubic-bezier(0, 0, 0.2, 1)}.mat-select-panel-animations-enabled.mat-select-panel-exit{animation:_mat-select-exit 100ms linear}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field:not(.mat-form-field-animations-enabled) .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSelect, [{\n type: Component,\n args: [{\n selector: 'mat-select',\n exportAs: 'matSelect',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'combobox',\n 'aria-haspopup': 'listbox',\n 'class': 'mat-mdc-select',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.mat-mdc-select-disabled]': 'disabled',\n '[class.mat-mdc-select-invalid]': 'errorState',\n '[class.mat-mdc-select-required]': 'required',\n '[class.mat-mdc-select-empty]': 'empty',\n '[class.mat-mdc-select-multiple]': 'multiple',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()'\n },\n providers: [{\n provide: MatFormFieldControl,\n useExisting: MatSelect\n }, {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatSelect\n }],\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, NgClass],\n template: \"<div cdk-overlay-origin\\n class=\\\"mat-mdc-select-trigger\\\"\\n (click)=\\\"open()\\\"\\n #fallbackOverlayOrigin=\\\"cdkOverlayOrigin\\\"\\n #trigger>\\n\\n <div class=\\\"mat-mdc-select-value\\\" [attr.id]=\\\"_valueId\\\">\\n @if (empty) {\\n <span class=\\\"mat-mdc-select-placeholder mat-mdc-select-min-line\\\">{{placeholder}}</span>\\n } @else {\\n <span class=\\\"mat-mdc-select-value-text\\\">\\n @if (customTrigger) {\\n <ng-content select=\\\"mat-select-trigger\\\"></ng-content>\\n } @else {\\n <span class=\\\"mat-mdc-select-min-line\\\">{{triggerValue}}</span>\\n }\\n </span>\\n }\\n </div>\\n\\n <div class=\\\"mat-mdc-select-arrow-wrapper\\\">\\n <div class=\\\"mat-mdc-select-arrow\\\">\\n <!-- Use an inline SVG, because it works better than a CSS triangle in high contrast mode. -->\\n <svg viewBox=\\\"0 0 24 24\\\" width=\\\"24px\\\" height=\\\"24px\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\">\\n <path d=\\\"M7 10l5 5 5-5z\\\"/>\\n </svg>\\n </div>\\n </div>\\n</div>\\n\\n<ng-template\\n cdk-connected-overlay\\n cdkConnectedOverlayLockPosition\\n cdkConnectedOverlayHasBackdrop\\n cdkConnectedOverlayBackdropClass=\\\"cdk-overlay-transparent-backdrop\\\"\\n [cdkConnectedOverlayDisableClose]=\\\"true\\\"\\n [cdkConnectedOverlayPanelClass]=\\\"_overlayPanelClass\\\"\\n [cdkConnectedOverlayScrollStrategy]=\\\"_scrollStrategy\\\"\\n [cdkConnectedOverlayOrigin]=\\\"_preferredOverlayOrigin || fallbackOverlayOrigin\\\"\\n [cdkConnectedOverlayPositions]=\\\"_positions\\\"\\n [cdkConnectedOverlayWidth]=\\\"_overlayWidth\\\"\\n [cdkConnectedOverlayFlexibleDimensions]=\\\"true\\\"\\n (detach)=\\\"close()\\\"\\n (backdropClick)=\\\"close()\\\"\\n (overlayKeydown)=\\\"_handleOverlayKeydown($event)\\\">\\n <div\\n #panel\\n role=\\\"listbox\\\"\\n tabindex=\\\"-1\\\"\\n class=\\\"mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open {{ _getPanelTheme() }}\\\"\\n [class.mat-select-panel-animations-enabled]=\\\"!_animationsDisabled\\\"\\n [attr.id]=\\\"id + '-panel'\\\"\\n [attr.aria-multiselectable]=\\\"multiple\\\"\\n [attr.aria-label]=\\\"ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"_getPanelAriaLabelledby()\\\"\\n [ngClass]=\\\"panelClass\\\"\\n (keydown)=\\\"_handleKeydown($event)\\\">\\n <ng-content></ng-content>\\n </div>\\n</ng-template>\\n\",\n styles: [\"@keyframes _mat-select-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}@keyframes _mat-select-exit{from{opacity:1}to{opacity:0}}.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:relative;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-select-panel-animations-enabled{animation:_mat-select-enter 120ms cubic-bezier(0, 0, 0.2, 1)}.mat-select-panel-animations-enabled.mat-select-panel-exit{animation:_mat-select-exit 100ms linear}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field:not(.mat-form-field-animations-enabled) .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}\\n\"]\n }]\n }], () => [], {\n options: [{\n type: ContentChildren,\n args: [MatOption, {\n descendants: true\n }]\n }],\n optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, {\n descendants: true\n }]\n }],\n customTrigger: [{\n type: ContentChild,\n args: [MAT_SELECT_TRIGGER]\n }],\n userAriaDescribedBy: [{\n type: Input,\n args: ['aria-describedby']\n }],\n trigger: [{\n type: ViewChild,\n args: ['trigger']\n }],\n panel: [{\n type: ViewChild,\n args: ['panel']\n }],\n _overlayDir: [{\n type: ViewChild,\n args: [CdkConnectedOverlay]\n }],\n panelClass: [{\n type: Input\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n disableRipple: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n tabIndex: [{\n type: Input,\n args: [{\n transform: value => value == null ? 0 : numberAttribute(value)\n }]\n }],\n hideSingleSelectionIndicator: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n placeholder: [{\n type: Input\n }],\n required: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n multiple: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n disableOptionCentering: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n compareWith: [{\n type: Input\n }],\n value: [{\n type: Input\n }],\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n errorStateMatcher: [{\n type: Input\n }],\n typeaheadDebounceInterval: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n sortComparator: [{\n type: Input\n }],\n id: [{\n type: Input\n }],\n panelWidth: [{\n type: Input\n }],\n canSelectNullableOptions: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n openedChange: [{\n type: Output\n }],\n _openedStream: [{\n type: Output,\n args: ['opened']\n }],\n _closedStream: [{\n type: Output,\n args: ['closed']\n }],\n selectionChange: [{\n type: Output\n }],\n valueChange: [{\n type: Output\n }]\n });\n})();\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nclass MatSelectTrigger {\n static ɵfac = function MatSelectTrigger_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelectTrigger)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSelectTrigger,\n selectors: [[\"mat-select-trigger\"]],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_SELECT_TRIGGER,\n useExisting: MatSelectTrigger\n }])]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSelectTrigger, [{\n type: Directive,\n args: [{\n selector: 'mat-select-trigger',\n providers: [{\n provide: MAT_SELECT_TRIGGER,\n useExisting: MatSelectTrigger\n }]\n }]\n }], null, null);\n})();\nclass MatSelectModule {\n static ɵfac = function MatSelectModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelectModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSelectModule,\n imports: [OverlayModule, MatOptionModule, MatCommonModule, MatSelect, MatSelectTrigger],\n exports: [CdkScrollableModule, MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule, MatCommonModule]\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER],\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CdkScrollableModule, MatFormFieldModule, MatOptionModule, MatCommonModule]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSelectModule, [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, MatOptionModule, MatCommonModule, MatSelect, MatSelectTrigger],\n exports: [CdkScrollableModule, MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule, MatCommonModule],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]\n }]\n }], null, null);\n})();\nexport { MatSelectModule as M, MAT_SELECT_SCROLL_STRATEGY as a, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY as b, MAT_SELECT_CONFIG as c, MAT_SELECT_SCROLL_STRATEGY_PROVIDER as d, MAT_SELECT_TRIGGER as e, MatSelectChange as f, MatSelect as g, MatSelectTrigger as h };\n","import * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\n\n/**\n * Internal shared component used as a container in form field controls.\n * Not to be confused with `mat-form-field` which MDC calls a \"text field\".\n * @docs-private\n */\nconst _c0 = [\"mat-internal-form-field\", \"\"];\nconst _c1 = [\"*\"];\nclass _MatInternalFormField {\n /** Position of the label relative to the content. */\n labelPosition;\n static ɵfac = function _MatInternalFormField_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _MatInternalFormField)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: _MatInternalFormField,\n selectors: [[\"div\", \"mat-internal-form-field\", \"\"]],\n hostAttrs: [1, \"mdc-form-field\", \"mat-internal-form-field\"],\n hostVars: 2,\n hostBindings: function _MatInternalFormField_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-form-field--align-end\", ctx.labelPosition === \"before\");\n }\n },\n inputs: {\n labelPosition: \"labelPosition\"\n },\n attrs: _c0,\n ngContentSelectors: _c1,\n decls: 1,\n vars: 0,\n template: function _MatInternalFormField_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n styles: [\".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(_MatInternalFormField, [{\n type: Component,\n args: [{\n selector: 'div[mat-internal-form-field]',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mdc-form-field mat-internal-form-field',\n '[class.mdc-form-field--align-end]': 'labelPosition === \"before\"'\n },\n styles: [\".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\\n\"]\n }]\n }], null, {\n labelPosition: [{\n type: Input,\n args: [{\n required: true\n }]\n }]\n });\n})();\nexport { _MatInternalFormField as _ };\n","import { InjectionToken, inject, LOCALE_ID } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nconst MAT_DATE_LOCALE = new InjectionToken('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n/**\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nfunction MAT_DATE_LOCALE_FACTORY() {\n return inject(LOCALE_ID);\n}\nconst NOT_IMPLEMENTED = 'Method not implemented';\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nclass DateAdapter {\n /** The locale to use for all dates. */\n locale;\n _localeChanges = new Subject();\n /** A stream that emits when the locale changes. */\n localeChanges = this._localeChanges;\n /**\n * Sets the time of one date to the time of another.\n * @param target Date whose time will be set.\n * @param hours New hours to set on the date object.\n * @param minutes New minutes to set on the date object.\n * @param seconds New seconds to set on the date object.\n */\n setTime(target, hours, minutes, seconds) {\n throw new Error(NOT_IMPLEMENTED);\n }\n /**\n * Gets the hours component of the given date.\n * @param date The date to extract the hours from.\n */\n getHours(date) {\n throw new Error(NOT_IMPLEMENTED);\n }\n /**\n * Gets the minutes component of the given date.\n * @param date The date to extract the minutes from.\n */\n getMinutes(date) {\n throw new Error(NOT_IMPLEMENTED);\n }\n /**\n * Gets the seconds component of the given date.\n * @param date The date to extract the seconds from.\n */\n getSeconds(date) {\n throw new Error(NOT_IMPLEMENTED);\n }\n /**\n * Parses a date with a specific time from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n */\n parseTime(value, parseFormat) {\n throw new Error(NOT_IMPLEMENTED);\n }\n /**\n * Adds an amount of seconds to the specified date.\n * @param date Date to which to add the seconds.\n * @param amount Amount of seconds to add to the date.\n */\n addSeconds(date, amount) {\n throw new Error(NOT_IMPLEMENTED);\n }\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj) {\n return this.isDateInstance(obj) && this.isValid(obj) ? obj : null;\n }\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value) {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale) {\n this.locale = locale;\n this._localeChanges.next();\n }\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first, second) {\n return (this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second));\n }\n /**\n * Compares the time values of two dates.\n * @param first First date to compare.\n * @param second Second date to compare.\n * @returns 0 if the times are equal, a number less than 0 if the first time is earlier,\n * a number greater than 0 if the first time is later.\n */\n compareTime(first, second) {\n return (this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second));\n }\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first, second) {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n /**\n * Checks if the times of two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the times of the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameTime(first, second) {\n if (first && second) {\n const firstValid = this.isValid(first);\n const secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareTime(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date, min, max) {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n\nconst MAT_DATE_FORMATS = new InjectionToken('mat-date-formats');\n\nexport { DateAdapter as D, MAT_DATE_LOCALE as M, MAT_DATE_FORMATS as a, MAT_DATE_LOCALE_FACTORY as b };\n\n","export { _ as _MatInternalFormField } from './internal-form-field-D5iFxU6d.mjs';\nimport * as i0 from '@angular/core';\nimport { Version, inject, Injectable, NgModule } from '@angular/core';\nexport { A as AnimationCurves, b as AnimationDurations, M as MATERIAL_ANIMATIONS, _ as _animationsDisabled, a as _getAnimationsState } from './animation-ChQ1vjiF.mjs';\nexport { a as MATERIAL_SANITY_CHECKS, M as MatCommonModule } from './common-module-cKSwHniA.mjs';\nexport { _ as _ErrorStateTracker } from './error-state-Dtb1IHM-.mjs';\nimport { D as DateAdapter, M as MAT_DATE_LOCALE, a as MAT_DATE_FORMATS } from './date-formats-K6TQue-Y.mjs';\nexport { b as MAT_DATE_LOCALE_FACTORY } from './date-formats-K6TQue-Y.mjs';\nexport { E as ErrorStateMatcher, S as ShowOnDirtyErrorStateMatcher } from './error-options-DCNQlTOA.mjs';\nexport { _ as _StructuralStylesLoader } from './structural-styles-CObeNzjn.mjs';\nexport { M as MatLine, a as MatLineModule, s as setLines } from './line-Bz5f9Cyx.mjs';\nexport { d as MAT_OPTGROUP, c as MAT_OPTION_PARENT_COMPONENT, a as MatOptgroup, M as MatOption, e as MatOptionSelectionChange, _ as _countGroupLabelsBeforeOption, b as _getOptionScrollPosition } from './option-CEIjUDzj.mjs';\nexport { M as MatOptionModule } from './index-ZUoC96yG.mjs';\nexport { M as MatRippleLoader } from './ripple-loader-wNDzC_j6.mjs';\nexport { a as MAT_RIPPLE_GLOBAL_OPTIONS, M as MatRipple, c as RippleRef, R as RippleRenderer, b as RippleState, d as defaultRippleAnimationConfig } from './ripple-BMyyyLz2.mjs';\nexport { M as MatRippleModule } from './index-BRImSAOu.mjs';\nexport { M as MatPseudoCheckbox } from './pseudo-checkbox-AUVlNJs_.mjs';\nexport { M as MatPseudoCheckboxModule } from './pseudo-checkbox-module-BymSaWBn.mjs';\nimport '@angular/cdk/layout';\nimport '@angular/cdk/a11y';\nimport '@angular/cdk/bidi';\nimport 'rxjs';\nimport 'rxjs/operators';\nimport '@angular/cdk/keycodes';\nimport '@angular/cdk/private';\nimport '@angular/cdk/platform';\nimport '@angular/cdk/coercion';\n\n/** Current version of Angular Material. */\nconst VERSION = new Version('20.1.6');\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings with an out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n/**\n * Matches a time string. Supported formats:\n * - {{hours}}:{{minutes}}\n * - {{hours}}:{{minutes}}:{{seconds}}\n * - {{hours}}:{{minutes}} AM/PM\n * - {{hours}}:{{minutes}}:{{seconds}} AM/PM\n * - {{hours}}.{{minutes}}\n * - {{hours}}.{{minutes}}.{{seconds}}\n * - {{hours}}.{{minutes}} AM/PM\n * - {{hours}}.{{minutes}}.{{seconds}} AM/PM\n */\nconst TIME_REGEX = /^(\\d?\\d)[:.](\\d?\\d)(?:[:.](\\d?\\d))?\\s*(AM|PM)?$/i;\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\nclass NativeDateAdapter extends DateAdapter {\n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\n useUtcForDisplay = false;\n /** The injected locale. */\n _matDateLocale = inject(MAT_DATE_LOCALE, {\n optional: true\n });\n constructor() {\n super();\n const matDateLocale = inject(MAT_DATE_LOCALE, {\n optional: true\n });\n if (matDateLocale !== undefined) {\n this._matDateLocale = matDateLocale;\n }\n super.setLocale(this._matDateLocale);\n }\n getYear(date) {\n return date.getFullYear();\n }\n getMonth(date) {\n return date.getMonth();\n }\n getDate(date) {\n return date.getDate();\n }\n getDayOfWeek(date) {\n return date.getDay();\n }\n getMonthNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n month: style,\n timeZone: 'utc'\n });\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n getDateNames() {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n day: 'numeric',\n timeZone: 'utc'\n });\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getDayOfWeekNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n weekday: style,\n timeZone: 'utc'\n });\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getYearName(date) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n year: 'numeric',\n timeZone: 'utc'\n });\n return this._format(dtf, date);\n }\n getFirstDayOfWeek() {\n // At the time of writing `Intl.Locale` isn't available\n // in the internal types so we need to cast to `any`.\n if (typeof Intl !== 'undefined' && Intl.Locale) {\n const locale = new Intl.Locale(this.locale);\n // Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.\n // Note that this isn't supported in all browsers so we need to null check it.\n const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay ?? 0;\n // `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,\n // whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.\n return firstDay === 7 ? 0 : firstDay;\n }\n // Default to Sunday if the browser doesn't provide the week information.\n return 0;\n }\n getNumDaysInMonth(date) {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value, parseFormat) {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n const dtf = new Intl.DateTimeFormat(this.locale, {\n ...displayFormat,\n timeZone: 'utc'\n });\n return this._format(dtf, date);\n }\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n addCalendarMonths(date, months) {\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n return newDate;\n }\n addCalendarDays(date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n toIso8601(date) {\n return [date.getUTCFullYear(), this._2digit(date.getUTCMonth() + 1), this._2digit(date.getUTCDate())].join('-');\n }\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value) {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return obj instanceof Date;\n }\n isValid(date) {\n return !isNaN(date.getTime());\n }\n invalid() {\n return new Date(NaN);\n }\n setTime(target, hours, minutes, seconds) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!inRange(hours, 0, 23)) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n if (!inRange(minutes, 0, 59)) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n if (!inRange(seconds, 0, 59)) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n const clone = this.clone(target);\n clone.setHours(hours, minutes, seconds, 0);\n return clone;\n }\n getHours(date) {\n return date.getHours();\n }\n getMinutes(date) {\n return date.getMinutes();\n }\n getSeconds(date) {\n return date.getSeconds();\n }\n parseTime(userValue, parseFormat) {\n if (typeof userValue !== 'string') {\n return userValue instanceof Date ? new Date(userValue.getTime()) : null;\n }\n const value = userValue.trim();\n if (value.length === 0) {\n return null;\n }\n // Attempt to parse the value directly.\n let result = this._parseTimeString(value);\n // Some locales add extra characters around the time, but are otherwise parseable\n // (e.g. `00:05 ч.` in bg-BG). Try replacing all non-number and non-colon characters.\n if (result === null) {\n const withoutExtras = value.replace(/[^0-9:(AM|PM)]/gi, '').trim();\n if (withoutExtras.length > 0) {\n result = this._parseTimeString(withoutExtras);\n }\n }\n return result || this.invalid();\n }\n addSeconds(date, amount) {\n return new Date(date.getTime() + amount * 1000);\n }\n /** Creates a date but allows the month and date to overflow. */\n _createDateWithOverflow(year, month, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n _2digit(n) {\n return ('00' + n).slice(-2);\n }\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n _format(dtf, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n /**\n * Attempts to parse a time string into a date object. Returns null if it cannot be parsed.\n * @param value Time string to parse.\n */\n _parseTimeString(value) {\n // Note: we can technically rely on the browser for the time parsing by generating\n // an ISO string and appending the string to the end of it. We don't do it, because\n // browsers aren't consistent in what they support. Some examples:\n // - Safari doesn't support AM/PM.\n // - Firefox produces a valid date object if the time string has overflows (e.g. 12:75) while\n // other browsers produce an invalid date.\n // - Safari doesn't allow padded numbers.\n const parsed = value.toUpperCase().match(TIME_REGEX);\n if (parsed) {\n let hours = parseInt(parsed[1]);\n const minutes = parseInt(parsed[2]);\n let seconds = parsed[3] == null ? undefined : parseInt(parsed[3]);\n const amPm = parsed[4];\n if (hours === 12) {\n hours = amPm === 'AM' ? 0 : hours;\n } else if (amPm === 'PM') {\n hours += 12;\n }\n if (inRange(hours, 0, 23) && inRange(minutes, 0, 59) && (seconds == null || inRange(seconds, 0, 59))) {\n return this.setTime(this.today(), hours, minutes, seconds || 0);\n }\n }\n return null;\n }\n static ɵfac = function NativeDateAdapter_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NativeDateAdapter)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NativeDateAdapter,\n factory: NativeDateAdapter.ɵfac\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NativeDateAdapter, [{\n type: Injectable\n }], () => [], null);\n})();\n/** Checks whether a number is within a certain range. */\nfunction inRange(value, min, max) {\n return !isNaN(value) && value >= min && value <= max;\n}\nconst MAT_NATIVE_DATE_FORMATS = {\n parse: {\n dateInput: null,\n timeInput: null\n },\n display: {\n dateInput: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n },\n timeInput: {\n hour: 'numeric',\n minute: 'numeric'\n },\n monthYearLabel: {\n year: 'numeric',\n month: 'short'\n },\n dateA11yLabel: {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n },\n monthYearA11yLabel: {\n year: 'numeric',\n month: 'long'\n },\n timeOptionLabel: {\n hour: 'numeric',\n minute: 'numeric'\n }\n }\n};\nclass NativeDateModule {\n static ɵfac = function NativeDateModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NativeDateModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NativeDateModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: DateAdapter,\n useClass: NativeDateAdapter\n }]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NativeDateModule, [{\n type: NgModule,\n args: [{\n providers: [{\n provide: DateAdapter,\n useClass: NativeDateAdapter\n }]\n }]\n }], null, null);\n})();\nclass MatNativeDateModule {\n static ɵfac = function MatNativeDateModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatNativeDateModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatNativeDateModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [provideNativeDateAdapter()]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatNativeDateModule, [{\n type: NgModule,\n args: [{\n providers: [provideNativeDateAdapter()]\n }]\n }], null, null);\n})();\nfunction provideNativeDateAdapter(formats = MAT_NATIVE_DATE_FORMATS) {\n return [{\n provide: DateAdapter,\n useClass: NativeDateAdapter\n }, {\n provide: MAT_DATE_FORMATS,\n useValue: formats\n }];\n}\nexport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_NATIVE_DATE_FORMATS, MatNativeDateModule, NativeDateAdapter, NativeDateModule, VERSION, provideNativeDateAdapter };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAM,oBAAN,MAAM,mBAAkB;AAAA,EACtB,sBAAsB,oBAAoB;AAAA;AAAA,EAE1C,QAAQ;AAAA;AAAA,EAER,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,EAKX,aAAa;AAAA,EACb,cAAc;AAAA,EAAC;AAAA,EACf,OAAO,YAAO,SAAS,0BAA0B,mBAAmB;AAClE,WAAO,KAAK,qBAAqB,oBAAmB;AAAA,EACtD;AAAA,EACA,OAAO,YAAsB,gBAAG,4BAAkB;AAAA,IAChD,MAAM;AAAA,IACN,WAAW,CAAC,CAAC,qBAAqB,CAAC;AAAA,IACnC,WAAW,CAAC,GAAG,qBAAqB;AAAA,IACpC,UAAU;AAAA,IACV,cAAc,SAAS,+BAA+B,IAAI,KAAK;AAC7D,UAAI,KAAK,GAAG;AACV,QAAG,sBAAY,qCAAqC,IAAI,UAAU,eAAe,EAAE,+BAA+B,IAAI,UAAU,SAAS,EAAE,gCAAgC,IAAI,QAAQ,EAAE,+BAA+B,IAAI,eAAe,SAAS,EAAE,4BAA4B,IAAI,eAAe,MAAM,EAAE,2BAA2B,IAAI,mBAAmB;AAAA,MACjW;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,IACA,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU,SAAS,2BAA2B,IAAI,KAAK;AAAA,IAAC;AAAA,IACxD,QAAQ,CAAC,+xGAAiyG;AAAA,IAC1yG,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,mBAAmB,CAAC;AAAA,IAC1F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,eAAe,kBAAkB;AAAA,MACjC,iBAAiB,wBAAwB;AAAA,MACzC,UAAU;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,6CAA6C;AAAA,QAC7C,uCAAuC;AAAA,QACvC,wCAAwC;AAAA,QACxC,uCAAuC;AAAA,QACvC,oCAAoC;AAAA,QACpC,mCAAmC;AAAA,MACrC;AAAA,MACA,QAAQ,CAAC,+xGAAiyG;AAAA,IAC5yG,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC,GAAG;AAAA,IACZ,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;;;ACxEH,IAAM,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,cAAc,CAAC,CAAC;AACpD,IAAM,MAAM,CAAC,KAAK,0BAA0B;AAC5C,IAAM,MAAM,CAAC,MAAM;AACnB,IAAM,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG;AAChC,IAAM,MAAM,CAAC,YAAY,GAAG;AAC5B,SAAS,iCAAiC,IAAI,KAAK;AACjD,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,uBAAuB,CAAC;AAAA,EAC1C;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,YAAY,OAAO,QAAQ,EAAE,SAAS,OAAO,WAAW,YAAY,WAAW;AAAA,EAC/F;AACF;AACA,SAAS,iCAAiC,IAAI,KAAK;AACjD,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,uBAAuB,CAAC;AAAA,EAC1C;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,YAAY,OAAO,QAAQ;AAAA,EAC3C;AACF;AACA,SAAS,iCAAiC,IAAI,KAAK;AACjD,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,QAAQ,CAAC;AAC9B,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,6BAAmB,KAAK,OAAO,MAAM,OAAO,GAAG;AAAA,EACpD;AACF;AACA,IAAM,8BAA8B,IAAI,eAAe,6BAA6B;AA0BpF,IAAM,eAAe,IAAI,eAAe,aAAa;AAIrD,IAAM,cAAN,MAAM,aAAY;AAAA;AAAA,EAEhB;AAAA;AAAA,EAEA,WAAW;AAAA;AAAA,EAEX,WAAW,OAAO,YAAY,EAAE,MAAM,qBAAqB;AAAA;AAAA,EAE3D;AAAA,EACA,cAAc;AACZ,UAAM,SAAS,OAAO,6BAA6B;AAAA,MACjD,UAAU;AAAA,IACZ,CAAC;AACD,SAAK,SAAS,QAAQ,eAAe;AAAA,EACvC;AAAA,EACA,OAAO,YAAO,SAAS,oBAAoB,mBAAmB;AAC5D,WAAO,KAAK,qBAAqB,cAAa;AAAA,EAChD;AAAA,EACA,OAAO,YAAsB,gBAAG,4BAAkB;AAAA,IAChD,MAAM;AAAA,IACN,WAAW,CAAC,CAAC,cAAc,CAAC;AAAA,IAC5B,WAAW,CAAC,GAAG,kBAAkB;AAAA,IACjC,UAAU;AAAA,IACV,cAAc,SAAS,yBAAyB,IAAI,KAAK;AACvD,UAAI,KAAK,GAAG;AACV,QAAG,sBAAY,QAAQ,IAAI,SAAS,OAAO,OAAO,EAAE,iBAAiB,IAAI,SAAS,OAAO,IAAI,SAAS,SAAS,CAAC,EAAE,mBAAmB,IAAI,SAAS,OAAO,IAAI,QAAQ;AAAA,MACvK;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,UAAU,CAAC,GAAG,YAAY,YAAY,gBAAgB;AAAA,IACxD;AAAA,IACA,UAAU,CAAC,aAAa;AAAA,IACxB,UAAU,CAAI,6BAAmB,CAAC;AAAA,MAChC,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC,CAAC,CAAC;AAAA,IACH,oBAAoB;AAAA,IACpB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ,CAAC,CAAC,QAAQ,gBAAgB,GAAG,0BAA0B,GAAG,IAAI,GAAG,CAAC,GAAG,6BAA6B,CAAC;AAAA,IAC3G,UAAU,SAAS,qBAAqB,IAAI,KAAK;AAC/C,UAAI,KAAK,GAAG;AACV,QAAG,0BAAgB,GAAG;AACtB,QAAG,4BAAkB,GAAG,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC;AAC/C,QAAG,iBAAO,CAAC;AACX,QAAG,uBAAa,CAAC;AACjB,QAAG,0BAAgB,EAAE;AACrB,QAAG,uBAAa,GAAG,CAAC;AAAA,MACtB;AACA,UAAI,KAAK,GAAG;AACV,QAAG,sBAAY,2BAA2B,IAAI,QAAQ;AACtD,QAAG,wBAAc,MAAM,IAAI,QAAQ;AACnC,QAAG,oBAAU,CAAC;AACd,QAAG,6BAAmB,IAAI,IAAI,OAAO,GAAG;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,29BAA29B;AAAA,IACp+B,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,aAAa,CAAC;AAAA,IACpF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA,MACV,eAAe,kBAAkB;AAAA,MACjC,iBAAiB,wBAAwB;AAAA,MACzC,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,eAAe;AAAA,QACf,wBAAwB;AAAA,QACxB,0BAA0B;AAAA,MAC5B;AAAA,MACA,WAAW,CAAC;AAAA,QACV,SAAS;AAAA,QACT,aAAa;AAAA,MACf,CAAC;AAAA,MACD,UAAU;AAAA,MACV,QAAQ,CAAC,29BAA29B;AAAA,IACt+B,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC,GAAG;AAAA,IACZ,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAGH,IAAM,2BAAN,MAA+B;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,YACA,QACA,cAAc,OAAO;AACnB,SAAK,SAAS;AACd,SAAK,cAAc;AAAA,EACrB;AACF;AAIA,IAAM,YAAN,MAAM,WAAU;AAAA,EACd,WAAW,OAAO,UAAU;AAAA,EAC5B,qBAAqB,OAAO,iBAAiB;AAAA,EAC7C,UAAU,OAAO,6BAA6B;AAAA,IAC5C,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,QAAQ,OAAO,cAAc;AAAA,IAC3B,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,uBAAuB;AAAA,EACvB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,uBAAuB;AAAA;AAAA,EAEvB,IAAI,WAAW;AACb,WAAO,KAAK,WAAW,KAAK,QAAQ;AAAA,EACtC;AAAA;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA,KAAK,OAAO,YAAY,EAAE,MAAM,aAAa;AAAA;AAAA,EAE7C,IAAI,WAAW;AACb,WAAO,KAAK,SAAS,KAAK,MAAM,YAAY,KAAK,UAAU;AAAA,EAC7D;AAAA,EACA,IAAI,SAAS,OAAO;AAClB,SAAK,UAAU,IAAI,KAAK;AAAA,EAC1B;AAAA,EACA,YAAY,OAAO,KAAK;AAAA;AAAA,EAExB,IAAI,gBAAgB;AAClB,WAAO,KAAK,uBAAuB,KAAK,QAAQ,cAAc,IAAI,CAAC,CAAC,KAAK,SAAS;AAAA,EACpF;AAAA;AAAA,EAEA,IAAI,+BAA+B;AACjC,WAAO,CAAC,EAAE,KAAK,WAAW,KAAK,QAAQ;AAAA,EACzC;AAAA;AAAA;AAAA,EAGA,oBAAoB,IAAI,aAAa;AAAA;AAAA,EAErC;AAAA;AAAA,EAEA,gBAAgB,IAAI,QAAQ;AAAA,EAC5B,cAAc;AACZ,UAAM,cAAc,OAAO,sBAAsB;AACjD,gBAAY,KAAK,uBAAuB;AACxC,gBAAY,KAAK,qBAAqB;AACtC,SAAK,uBAAuB,CAAC,CAAC,KAAK,WAAW,SAAS,KAAK,QAAQ,aAAa;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,YAAY;AAEd,YAAQ,KAAK,OAAO,cAAc,eAAe,IAAI,KAAK;AAAA,EAC5D;AAAA;AAAA,EAEA,OAAO,YAAY,MAAM;AACvB,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,YAAY;AACjB,WAAK,mBAAmB,aAAa;AACrC,UAAI,WAAW;AACb,aAAK,0BAA0B;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAEA,SAAS,YAAY,MAAM;AACzB,QAAI,KAAK,WAAW;AAClB,WAAK,YAAY;AACjB,WAAK,mBAAmB,aAAa;AACrC,UAAI,WAAW;AACb,aAAK,0BAA0B;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAEA,MAAM,SAAS,SAAS;AAGtB,UAAM,UAAU,KAAK,gBAAgB;AACrC,QAAI,OAAO,QAAQ,UAAU,YAAY;AACvC,cAAQ,MAAM,OAAO;AAAA,IACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB;AAChB,QAAI,CAAC,KAAK,SAAS;AACjB,WAAK,UAAU;AACf,WAAK,mBAAmB,aAAa;AAAA,IACvC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB;AAClB,QAAI,KAAK,SAAS;AAChB,WAAK,UAAU;AACf,WAAK,mBAAmB,aAAa;AAAA,IACvC;AAAA,EACF;AAAA;AAAA,EAEA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAEA,eAAe,OAAO;AACpB,SAAK,MAAM,YAAY,SAAS,MAAM,YAAY,UAAU,CAAC,eAAe,KAAK,GAAG;AAClF,WAAK,sBAAsB;AAE3B,YAAM,eAAe;AAAA,IACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,wBAAwB;AACtB,QAAI,CAAC,KAAK,UAAU;AAClB,WAAK,YAAY,KAAK,WAAW,CAAC,KAAK,YAAY;AACnD,WAAK,mBAAmB,aAAa;AACrC,WAAK,0BAA0B,IAAI;AAAA,IACrC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe;AACb,WAAO,KAAK,WAAW,OAAO;AAAA,EAChC;AAAA;AAAA,EAEA,kBAAkB;AAChB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EACA,qBAAqB;AAMnB,QAAI,KAAK,WAAW;AAClB,YAAM,YAAY,KAAK;AACvB,UAAI,cAAc,KAAK,sBAAsB;AAC3C,YAAI,KAAK,sBAAsB;AAC7B,eAAK,cAAc,KAAK;AAAA,QAC1B;AACA,aAAK,uBAAuB;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AACZ,SAAK,cAAc,SAAS;AAAA,EAC9B;AAAA;AAAA,EAEA,0BAA0B,cAAc,OAAO;AAC7C,SAAK,kBAAkB,KAAK,IAAI,yBAAyB,MAAM,WAAW,CAAC;AAAA,EAC7E;AAAA,EACA,OAAO,YAAO,SAAS,kBAAkB,mBAAmB;AAC1D,WAAO,KAAK,qBAAqB,YAAW;AAAA,EAC9C;AAAA,EACA,OAAO,YAAsB,gBAAG,4BAAkB;AAAA,IAChD,MAAM;AAAA,IACN,WAAW,CAAC,CAAC,YAAY,CAAC;AAAA,IAC1B,WAAW,SAAS,gBAAgB,IAAI,KAAK;AAC3C,UAAI,KAAK,GAAG;AACV,QAAG,sBAAY,KAAK,CAAC;AAAA,MACvB;AACA,UAAI,KAAK,GAAG;AACV,YAAI;AACJ,QAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,QAAQ,GAAG;AAAA,MAC9D;AAAA,IACF;AAAA,IACA,WAAW,CAAC,QAAQ,UAAU,GAAG,kBAAkB,eAAe;AAAA,IAClE,UAAU;AAAA,IACV,cAAc,SAAS,uBAAuB,IAAI,KAAK;AACrD,UAAI,KAAK,GAAG;AACV,QAAG,qBAAW,SAAS,SAAS,qCAAqC;AACnE,iBAAO,IAAI,sBAAsB;AAAA,QACnC,CAAC,EAAE,WAAW,SAAS,qCAAqC,QAAQ;AAClE,iBAAO,IAAI,eAAe,MAAM;AAAA,QAClC,CAAC;AAAA,MACH;AACA,UAAI,KAAK,GAAG;AACV,QAAG,wBAAc,MAAM,IAAI,EAAE;AAC7B,QAAG,sBAAY,iBAAiB,IAAI,QAAQ,EAAE,iBAAiB,IAAI,SAAS,SAAS,CAAC;AACtF,QAAG,sBAAY,2BAA2B,IAAI,QAAQ,EAAE,2BAA2B,IAAI,QAAQ,EAAE,yBAAyB,IAAI,MAAM,EAAE,2BAA2B,IAAI,QAAQ;AAAA,MAC/K;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,UAAU,CAAC,GAAG,YAAY,YAAY,gBAAgB;AAAA,IACxD;AAAA,IACA,SAAS;AAAA,MACP,mBAAmB;AAAA,IACrB;AAAA,IACA,UAAU,CAAC,WAAW;AAAA,IACtB,oBAAoB;AAAA,IACpB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,eAAe,QAAQ,GAAG,kCAAkC,GAAG,YAAY,OAAO,GAAG,CAAC,GAAG,6BAA6B,GAAG,CAAC,SAAS,WAAW,eAAe,QAAQ,cAAc,WAAW,GAAG,kCAAkC,GAAG,UAAU,GAAG,CAAC,GAAG,qBAAqB,GAAG,CAAC,eAAe,QAAQ,cAAc,IAAI,GAAG,yBAAyB,uBAAuB,GAAG,oBAAoB,mBAAmB,CAAC;AAAA,IAC/a,UAAU,SAAS,mBAAmB,IAAI,KAAK;AAC7C,UAAI,KAAK,GAAG;AACV,QAAG,0BAAgB,GAAG;AACtB,QAAG,8BAAoB,GAAG,kCAAkC,GAAG,GAAG,uBAAuB,CAAC;AAC1F,QAAG,uBAAa,CAAC;AACjB,QAAG,yBAAe,GAAG,QAAQ,GAAG,CAAC;AACjC,QAAG,uBAAa,GAAG,CAAC;AACpB,QAAG,uBAAa;AAChB,QAAG,8BAAoB,GAAG,kCAAkC,GAAG,GAAG,uBAAuB,CAAC;AAC1F,QAAG,8BAAoB,GAAG,kCAAkC,GAAG,GAAG,QAAQ,CAAC;AAC3E,QAAG,oBAAU,GAAG,OAAO,CAAC;AAAA,MAC1B;AACA,UAAI,KAAK,GAAG;AACV,QAAG,wBAAc,IAAI,WAAW,IAAI,EAAE;AACtC,QAAG,oBAAU,CAAC;AACd,QAAG,wBAAc,CAAC,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,+BAA+B,IAAI,EAAE;AAC5F,QAAG,oBAAU;AACb,QAAG,wBAAc,IAAI,SAAS,IAAI,MAAM,SAAS,IAAI,EAAE;AACvD,QAAG,oBAAU;AACb,QAAG,qBAAW,oBAAoB,IAAI,gBAAgB,CAAC,EAAE,qBAAqB,IAAI,YAAY,IAAI,aAAa;AAAA,MACjH;AAAA,IACF;AAAA,IACA,cAAc,CAAC,mBAAmB,SAAS;AAAA,IAC3C,QAAQ,CAAC,8uHAAkvH;AAAA,IAC3vH,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,WAAW,CAAC;AAAA,IAClF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,QAAQ;AAAA,QACR,mCAAmC;AAAA,QACnC,mCAAmC;AAAA,QACnC,iCAAiC;AAAA,QACjC,mCAAmC;AAAA,QACnC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUR,wBAAwB;AAAA,QACxB,wBAAwB;AAAA,QACxB,WAAW;AAAA,QACX,aAAa;AAAA,QACb,SAAS;AAAA,MACX;AAAA,MACA,eAAe,kBAAkB;AAAA,MACjC,iBAAiB,wBAAwB;AAAA,MACzC,SAAS,CAAC,mBAAmB,SAAS;AAAA,MACtC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MACV,QAAQ,CAAC,8uHAAkvH;AAAA,IAC7vH,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC,GAAG;AAAA,IACZ,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MACH,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,MACN,MAAM,CAAC,QAAQ;AAAA,QACb,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAQH,SAAS,8BAA8B,aAAa,SAAS,cAAc;AACzE,MAAI,aAAa,QAAQ;AACvB,QAAI,eAAe,QAAQ,QAAQ;AACnC,QAAI,SAAS,aAAa,QAAQ;AAClC,QAAI,eAAe;AACnB,aAAS,IAAI,GAAG,IAAI,cAAc,GAAG,KAAK;AACxC,UAAI,aAAa,CAAC,EAAE,SAAS,aAAa,CAAC,EAAE,UAAU,OAAO,YAAY,GAAG;AAC3E;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AASA,SAAS,yBAAyB,cAAc,cAAc,uBAAuB,aAAa;AAChG,MAAI,eAAe,uBAAuB;AACxC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,eAAe,wBAAwB,aAAa;AACrE,WAAO,KAAK,IAAI,GAAG,eAAe,cAAc,YAAY;AAAA,EAC9D;AACA,SAAO;AACT;;;AC1gBA,IAAM,4BAAN,MAAM,2BAA0B;AAAA,EAC9B,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMd,OAAO,IAAI,MAAM;AACf,aAAS,YAAY,KAAK,YAAY;AACpC,eAAS,IAAI,IAAI;AAAA,IACnB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,UAAU;AACf,SAAK,WAAW,KAAK,QAAQ;AAC7B,WAAO,MAAM;AACX,WAAK,aAAa,KAAK,WAAW,OAAO,gBAAc;AACrD,eAAO,aAAa;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,cAAc;AACZ,SAAK,aAAa,CAAC;AAAA,EACrB;AAAA,EACA,OAAO,YAAO,SAAS,kCAAkC,mBAAmB;AAC1E,WAAO,KAAK,qBAAqB,4BAA2B;AAAA,EAC9D;AAAA,EACA,OAAO,aAAuB,gBAAG,6BAAmB;AAAA,IAClD,OAAO;AAAA,IACP,SAAS,2BAA0B;AAAA,IACnC,YAAY;AAAA,EACd,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,2BAA2B,CAAC;AAAA,IAClG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;;;AC5CH,IAAM,+BAAN,MAAmC;AAAA,EAC/B,aAAa,SAAS,kBAAkB,oBAAoB,mBAAmB,iBAAiB;AAC5F,YAAQ,iBAAiB,CAAC,QAAQ,uBAAuB,iBAAiB;AACtE,UAAI;AACJ,UAAI;AACJ,UAAI,OAAO,iBAAiB,MAAM;AAC9B,cAAM,gBAAgB,mBAAmB,QAAQ,uBAAuB,YAAY;AACpF,eAAO,iBAAiB,mBAAmB,cAAc,aAAa,cAAc,SAAS,cAAc,KAAK;AAChH,oBAAY,uBAAuB;AAAA,MACvC,WACS,gBAAgB,MAAM;AAC3B,yBAAiB,OAAO,qBAAqB;AAC7C,oBAAY,uBAAuB;AAAA,MACvC,OACK;AACD,eAAO,iBAAiB,IAAI,qBAAqB;AACjD,yBAAiB,KAAK,MAAM,YAAY;AACxC,oBAAY,uBAAuB;AAAA,MACvC;AACA,UAAI,iBAAiB;AACjB,wBAAgB;AAAA,UACZ,SAAS,MAAM;AAAA,UACf;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AAAA,EAAE;AACf;;;ACnCA,IAAM,iBAAN,MAAqB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA,aAAa,oBAAI,IAAI;AAAA;AAAA,EAErB,oBAAoB,CAAC;AAAA;AAAA,EAErB,kBAAkB,CAAC;AAAA;AAAA,EAEnB;AAAA;AAAA,EAEA,IAAI,WAAW;AACX,QAAI,CAAC,KAAK,WAAW;AACjB,WAAK,YAAY,MAAM,KAAK,KAAK,WAAW,OAAO,CAAC;AAAA,IACxD;AACA,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAEA,UAAU,IAAI,QAAQ;AAAA,EACtB,YAAY,YAAY,OAAO,yBAAyB,eAAe,MAAM,aAAa;AACtF,SAAK,YAAY;AACjB,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,QAAI,2BAA2B,wBAAwB,QAAQ;AAC3D,UAAI,WAAW;AACX,gCAAwB,QAAQ,WAAS,KAAK,cAAc,KAAK,CAAC;AAAA,MACtE,OACK;AACD,aAAK,cAAc,wBAAwB,CAAC,CAAC;AAAA,MACjD;AAEA,WAAK,gBAAgB,SAAS;AAAA,IAClC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,QAAQ;AACd,SAAK,uBAAuB,MAAM;AAClC,WAAO,QAAQ,WAAS,KAAK,cAAc,KAAK,CAAC;AACjD,UAAM,UAAU,KAAK,kBAAkB;AACvC,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,QAAQ;AAChB,SAAK,uBAAuB,MAAM;AAClC,WAAO,QAAQ,WAAS,KAAK,gBAAgB,KAAK,CAAC;AACnD,UAAM,UAAU,KAAK,kBAAkB;AACvC,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB,QAAQ;AACpB,SAAK,uBAAuB,MAAM;AAClC,UAAM,YAAY,KAAK;AACvB,UAAM,iBAAiB,IAAI,IAAI,OAAO,IAAI,WAAS,KAAK,kBAAkB,KAAK,CAAC,CAAC;AACjF,WAAO,QAAQ,WAAS,KAAK,cAAc,KAAK,CAAC;AACjD,cACK,OAAO,WAAS,CAAC,eAAe,IAAI,KAAK,kBAAkB,OAAO,cAAc,CAAC,CAAC,EAClF,QAAQ,WAAS,KAAK,gBAAgB,KAAK,CAAC;AACjD,UAAM,UAAU,KAAK,kBAAkB;AACvC,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,OAAO;AACV,WAAO,KAAK,WAAW,KAAK,IAAI,KAAK,SAAS,KAAK,IAAI,KAAK,OAAO,KAAK;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,MAAM;AACrB,SAAK,WAAW;AAChB,UAAM,UAAU,KAAK,kBAAkB;AACvC,QAAI,YAAY;AACZ,WAAK,iBAAiB;AAAA,IAC1B;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,OAAO;AACd,WAAO,KAAK,WAAW,IAAI,KAAK,kBAAkB,KAAK,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU;AACN,WAAO,KAAK,WAAW,SAAS;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACP,WAAO,CAAC,KAAK,QAAQ;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,KAAK,WAAW;AACZ,QAAI,KAAK,aAAa,KAAK,UAAU;AACjC,WAAK,UAAU,KAAK,SAAS;AAAA,IACjC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAIA,sBAAsB;AAClB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAEA,mBAAmB;AAEf,SAAK,YAAY;AACjB,QAAI,KAAK,gBAAgB,UAAU,KAAK,kBAAkB,QAAQ;AAC9D,WAAK,QAAQ,KAAK;AAAA,QACd,QAAQ;AAAA,QACR,OAAO,KAAK;AAAA,QACZ,SAAS,KAAK;AAAA,MAClB,CAAC;AACD,WAAK,oBAAoB,CAAC;AAC1B,WAAK,kBAAkB,CAAC;AAAA,IAC5B;AAAA,EACJ;AAAA;AAAA,EAEA,cAAc,OAAO;AACjB,YAAQ,KAAK,kBAAkB,KAAK;AACpC,QAAI,CAAC,KAAK,WAAW,KAAK,GAAG;AACzB,UAAI,CAAC,KAAK,WAAW;AACjB,aAAK,WAAW;AAAA,MACpB;AACA,UAAI,CAAC,KAAK,WAAW,KAAK,GAAG;AACzB,aAAK,WAAW,IAAI,KAAK;AAAA,MAC7B;AACA,UAAI,KAAK,cAAc;AACnB,aAAK,gBAAgB,KAAK,KAAK;AAAA,MACnC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAEA,gBAAgB,OAAO;AACnB,YAAQ,KAAK,kBAAkB,KAAK;AACpC,QAAI,KAAK,WAAW,KAAK,GAAG;AACxB,WAAK,WAAW,OAAO,KAAK;AAC5B,UAAI,KAAK,cAAc;AACnB,aAAK,kBAAkB,KAAK,KAAK;AAAA,MACrC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAEA,aAAa;AACT,QAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,WAAK,WAAW,QAAQ,WAAS,KAAK,gBAAgB,KAAK,CAAC;AAAA,IAChE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB,QAAQ;AAC3B,QAAI,OAAO,SAAS,KAAK,CAAC,KAAK,cAAc,OAAO,cAAc,eAAe,YAAY;AACzF,YAAM,wCAAwC;AAAA,IAClD;AAAA,EACJ;AAAA;AAAA,EAEA,oBAAoB;AAChB,WAAO,CAAC,EAAE,KAAK,kBAAkB,UAAU,KAAK,gBAAgB;AAAA,EACpE;AAAA;AAAA,EAEA,kBAAkB,YAAY,WAAW;AACrC,QAAI,CAAC,KAAK,aAAa;AACnB,aAAO;AAAA,IACX,OACK;AACD,kBAAY,aAAa,KAAK;AAC9B,eAAS,iBAAiB,WAAW;AACjC,YAAI,KAAK,YAAY,YAAY,aAAa,GAAG;AAC7C,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;AAMA,SAAS,0CAA0C;AAC/C,SAAO,MAAM,yEAAyE;AAC1F;;;ACrNA,IAAM,0BAAN,MAAM,yBAAwB;AAAA,EAC5B,OAAO,YAAO,SAAS,gCAAgC,mBAAmB;AACxE,WAAO,KAAK,qBAAqB,0BAAyB;AAAA,EAC5D;AAAA,EACA,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,MAAM;AAAA,IACN,SAAS,CAAC,iBAAiB,iBAAiB;AAAA,IAC5C,SAAS,CAAC,iBAAiB;AAAA,EAC7B,CAAC;AAAA,EACD,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,SAAS,CAAC,eAAe;AAAA,EAC3B,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,yBAAyB,CAAC;AAAA,IAChG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,SAAS,CAAC,iBAAiB,iBAAiB;AAAA,MAC5C,SAAS,CAAC,iBAAiB;AAAA,IAC7B,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;;;ACnBH,IAAM,kBAAN,MAAM,iBAAgB;AAAA,EACpB,OAAO,YAAO,SAAS,wBAAwB,mBAAmB;AAChE,WAAO,KAAK,qBAAqB,kBAAiB;AAAA,EACpD;AAAA,EACA,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,MAAM;AAAA,IACN,SAAS,CAAC,iBAAiB,iBAAiB,yBAAyB,WAAW,WAAW;AAAA,IAC3F,SAAS,CAAC,WAAW,WAAW;AAAA,EAClC,CAAC;AAAA,EACD,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,SAAS,CAAC,iBAAiB,iBAAiB,yBAAyB,SAAS;AAAA,EAChF,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,iBAAiB,CAAC;AAAA,IACxF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,SAAS,CAAC,iBAAiB,iBAAiB,yBAAyB,WAAW,WAAW;AAAA,MAC3F,SAAS,CAAC,WAAW,WAAW;AAAA,IAClC,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;;;ACCH,IAAMA,OAAM,CAAC,SAAS;AACtB,IAAMC,OAAM,CAAC,OAAO;AACpB,IAAMC,OAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,GAAG;AAC1C,IAAMC,OAAM,CAAC,sBAAsB,GAAG;AACtC,SAAS,iCAAiC,IAAI,KAAK;AACjD,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,QAAQ,CAAC;AAC9B,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,4BAAkB,OAAO,WAAW;AAAA,EACzC;AACF;AACA,SAAS,+CAA+C,IAAI,KAAK;AAC/D,MAAI,KAAK,GAAG;AACV,IAAG,uBAAa,CAAC;AAAA,EACnB;AACF;AACA,SAAS,+CAA+C,IAAI,KAAK;AAC/D,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,QAAQ,EAAE;AAC/B,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU;AACb,IAAG,4BAAkB,OAAO,YAAY;AAAA,EAC1C;AACF;AACA,SAAS,iCAAiC,IAAI,KAAK;AACjD,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,QAAQ,CAAC;AAC9B,IAAG,8BAAoB,GAAG,gDAAgD,GAAG,CAAC,EAAE,GAAG,gDAAgD,GAAG,GAAG,QAAQ,EAAE;AACnJ,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,wBAAc,OAAO,gBAAgB,IAAI,CAAC;AAAA,EAC/C;AACF;AACA,SAAS,kCAAkC,IAAI,KAAK;AAClD,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,OAAO,IAAI,CAAC;AACjC,IAAG,qBAAW,WAAW,SAAS,yDAAyD,QAAQ;AACjG,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,eAAe,MAAM,CAAC;AAAA,IACrD,CAAC;AACD,IAAG,uBAAa,GAAG,CAAC;AACpB,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAc,yBAAe,iEAAiE,OAAO,eAAe,CAAC,CAAC;AACzH,IAAG,sBAAY,uCAAuC,CAAC,OAAO,mBAAmB;AACjF,IAAG,qBAAW,WAAW,OAAO,UAAU;AAC1C,IAAG,sBAAY,MAAM,OAAO,KAAK,QAAQ,EAAE,wBAAwB,OAAO,QAAQ,EAAE,cAAc,OAAO,aAAa,IAAI,EAAE,mBAAmB,OAAO,wBAAwB,CAAC;AAAA,EACjL;AACF;AACA,SAAS,mCAAmC;AAC1C,SAAO,MAAM,+DAA+D;AAC9E;AAOA,SAAS,iCAAiC;AACxC,SAAO,MAAM,oDAAoD;AACnE;AAMA,SAAS,oCAAoC;AAC3C,SAAO,MAAM,mCAAmC;AAClD;AAGA,IAAM,6BAA6B,IAAI,eAAe,8BAA8B;AAAA,EAClF,YAAY;AAAA,EACZ,SAAS,MAAM;AACb,UAAM,WAAW,OAAO,QAAQ;AAChC,WAAO,MAAM,+BAA+B,QAAQ;AAAA,EACtD;AACF,CAAC;AAMD,SAAS,4CAA4C,UAAU;AAC7D,QAAM,WAAW,OAAO,QAAQ;AAChC,SAAO,MAAM,+BAA+B,QAAQ;AACtD;AAEA,IAAM,oBAAoB,IAAI,eAAe,mBAAmB;AAMhE,IAAM,sCAAsC;AAAA,EAC1C,SAAS;AAAA,EACT,MAAM,CAAC;AAAA,EACP,YAAY;AACd;AAMA,IAAM,qBAAqB,IAAI,eAAe,kBAAkB;AAEhE,IAAM,kBAAN,MAAsB;AAAA,EACpB;AAAA,EACA;AAAA,EACA,YACA,QACA,OAAO;AACL,SAAK,SAAS;AACd,SAAK,QAAQ;AAAA,EACf;AACF;AACA,IAAM,YAAN,MAAM,WAAU;AAAA,EACd,iBAAiB,OAAO,aAAa;AAAA,EACrC,qBAAqB,OAAO,iBAAiB;AAAA,EAC7C,cAAc,OAAO,UAAU;AAAA,EAC/B,OAAO,OAAO,gBAAgB;AAAA,IAC5B,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,eAAe,OAAO,YAAY;AAAA,EAClC,YAAY,OAAO,SAAS;AAAA,EAC5B,mBAAmB,OAAO,gBAAgB;AAAA,IACxC,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,YAAY,OAAO,WAAW;AAAA,IAC5B,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,iBAAiB,OAAO,aAAa;AAAA,EACrC,kBAAkB,OAAO,mBAAmB;AAAA,IAC1C,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,sBAAsB,oBAAoB;AAAA,EAC1C,eAAe,IAAI,QAAQ;AAAA,EAC3B;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,CAAC;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACZ,GAAG;AAAA,IACD,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACZ,GAAG;AAAA,IACD,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,EACd,GAAG;AAAA,IACD,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,EACd,CAAC;AAAA;AAAA,EAED,sBAAsB,OAAO;AAC3B,UAAM,SAAS,KAAK,QAAQ,QAAQ,EAAE,KAAK;AAC3C,QAAI,QAAQ;AACV,YAAM,QAAQ,KAAK,MAAM;AACzB,YAAM,aAAa,8BAA8B,OAAO,KAAK,SAAS,KAAK,YAAY;AACvF,YAAM,UAAU,OAAO,gBAAgB;AACvC,UAAI,UAAU,KAAK,eAAe,GAAG;AAInC,cAAM,YAAY;AAAA,MACpB,OAAO;AACL,cAAM,YAAY,yBAAyB,QAAQ,WAAW,QAAQ,cAAc,MAAM,WAAW,MAAM,YAAY;AAAA,MACzH;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAEA,sBAAsB;AACpB,SAAK,sBAAsB,KAAK,YAAY,mBAAmB,CAAC;AAAA,EAClE;AAAA;AAAA,EAEA,gBAAgB,OAAO;AACrB,WAAO,IAAI,gBAAgB,MAAM,KAAK;AAAA,EACxC;AAAA;AAAA,EAEA,yBAAyB,OAAO,0BAA0B;AAAA;AAAA,EAE1D,aAAa;AAAA;AAAA,EAEb,eAAe,CAAC,IAAI,OAAO,OAAO;AAAA;AAAA,EAElC,OAAO,KAAK,aAAa,MAAM,aAAa;AAAA;AAAA,EAE5C,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKzB;AAAA;AAAA,EAEA,WAAW,IAAI,QAAQ;AAAA;AAAA,EAEvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,IAAI,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAK3B,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,EAK3B;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA,YAAY,MAAM;AAAA,EAAC;AAAA;AAAA,EAEnB,aAAa,MAAM;AAAA,EAAC;AAAA;AAAA,EAEpB,WAAW,KAAK,aAAa,MAAM,mBAAmB;AAAA;AAAA,EAEtD;AAAA,EACA,qBAAqB,KAAK,iBAAiB,qBAAqB;AAAA;AAAA,EAEhE,IAAI,UAAU;AACZ,WAAO,KAAK,YAAY,KAAK;AAAA,EAC/B;AAAA,EACA,WAAW;AAAA;AAAA,EAEX,cAAc;AAAA;AAAA,EAEd;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA,WAAW;AAAA;AAAA,EAEX,IAAI,gBAAgB;AAClB,WAAO,KAAK,eAAe;AAAA,EAC7B;AAAA,EACA,IAAI,cAAc,OAAO;AACvB,SAAK,eAAe,IAAI,KAAK;AAAA,EAC/B;AAAA,EACA,iBAAiB,OAAO,KAAK;AAAA;AAAA,EAE7B,WAAW;AAAA;AAAA,EAEX,IAAI,+BAA+B;AACjC,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,6BAA6B,OAAO;AACtC,SAAK,gCAAgC;AACrC,SAAK,sBAAsB;AAAA,EAC7B;AAAA,EACA,gCAAgC,KAAK,iBAAiB,gCAAgC;AAAA;AAAA,EAEtF,IAAI,cAAc;AAChB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,YAAY,OAAO;AACrB,SAAK,eAAe;AACpB,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA,EACA;AAAA;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK,aAAa,KAAK,WAAW,SAAS,aAAa,WAAW,QAAQ,KAAK;AAAA,EACzF;AAAA,EACA,IAAI,SAAS,OAAO;AAClB,SAAK,YAAY;AACjB,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA,EACA;AAAA;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,SAAS,OAAO;AAClB,QAAI,KAAK,oBAAoB,OAAO,cAAc,eAAe,YAAY;AAC3E,YAAM,iCAAiC;AAAA,IACzC;AACA,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,YAAY;AAAA;AAAA,EAEZ,yBAAyB,KAAK,iBAAiB,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzE,IAAI,cAAc;AAChB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,YAAY,IAAI;AAClB,QAAI,OAAO,OAAO,eAAe,OAAO,cAAc,eAAe,YAAY;AAC/E,YAAM,kCAAkC;AAAA,IAC1C;AACA,SAAK,eAAe;AACpB,QAAI,KAAK,iBAAiB;AAExB,WAAK,qBAAqB;AAAA,IAC5B;AAAA,EACF;AAAA;AAAA,EAEA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,UAAU;AAClB,UAAM,cAAc,KAAK,aAAa,QAAQ;AAC9C,QAAI,aAAa;AACf,WAAK,UAAU,QAAQ;AAAA,IACzB;AAAA,EACF;AAAA,EACA;AAAA;AAAA,EAEA,YAAY;AAAA;AAAA,EAEZ;AAAA;AAAA,EAEA,IAAI,oBAAoB;AACtB,WAAO,KAAK,mBAAmB;AAAA,EACjC;AAAA,EACA,IAAI,kBAAkB,OAAO;AAC3B,SAAK,mBAAmB,UAAU;AAAA,EACpC;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA,EAEA,IAAI,KAAK;AACP,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,GAAG,OAAO;AACZ,SAAK,MAAM,SAAS,KAAK;AACzB,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA,EACA;AAAA;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,KAAK,mBAAmB;AAAA,EACjC;AAAA,EACA,IAAI,WAAW,OAAO;AACpB,SAAK,mBAAmB,aAAa;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,KAAK,mBAAmB,OAAO,KAAK,gBAAgB,eAAe,cAAc,KAAK,gBAAgB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhI,2BAA2B,KAAK,iBAAiB,4BAA4B;AAAA;AAAA,EAE7E,yBAAyB,MAAM,MAAM;AACnC,UAAM,UAAU,KAAK;AACrB,QAAI,SAAS;AACX,aAAO,QAAQ,QAAQ,KAAK,UAAU,OAAO,GAAG,UAAU,MAAM,MAAM,GAAG,QAAQ,IAAI,YAAU,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAAA,IAC5H;AACA,WAAO,KAAK,aAAa,KAAK,UAAU,MAAM,KAAK,sBAAsB,CAAC;AAAA,EAC5E,CAAC;AAAA;AAAA,EAED,eAAe,IAAI,aAAa;AAAA;AAAA,EAEhC,gBAAgB,KAAK,aAAa,KAAK,OAAO,OAAK,CAAC,GAAG,IAAI,MAAM;AAAA,EAAC,CAAC,CAAC;AAAA;AAAA,EAEpE,gBAAgB,KAAK,aAAa,KAAK,OAAO,OAAK,CAAC,CAAC,GAAG,IAAI,MAAM;AAAA,EAAC,CAAC,CAAC;AAAA;AAAA,EAErE,kBAAkB,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnC,cAAc,IAAI,aAAa;AAAA,EAC/B,cAAc;AACZ,UAAM,2BAA2B,OAAO,iBAAiB;AACzD,UAAM,aAAa,OAAO,QAAQ;AAAA,MAChC,UAAU;AAAA,IACZ,CAAC;AACD,UAAM,kBAAkB,OAAO,oBAAoB;AAAA,MACjD,UAAU;AAAA,IACZ,CAAC;AACD,UAAM,WAAW,OAAO,IAAI,mBAAmB,UAAU,GAAG;AAAA,MAC1D,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,KAAK,WAAW;AAGlB,WAAK,UAAU,gBAAgB;AAAA,IACjC;AAGA,QAAI,KAAK,iBAAiB,6BAA6B,MAAM;AAC3D,WAAK,4BAA4B,KAAK,gBAAgB;AAAA,IACxD;AACA,SAAK,qBAAqB,IAAI,mBAAmB,0BAA0B,KAAK,WAAW,iBAAiB,YAAY,KAAK,YAAY;AACzI,SAAK,kBAAkB,KAAK,uBAAuB;AACnD,SAAK,WAAW,YAAY,OAAO,IAAI,SAAS,QAAQ,KAAK;AAE7D,SAAK,KAAK,KAAK;AAAA,EACjB;AAAA,EACA,WAAW;AACT,SAAK,kBAAkB,IAAI,eAAe,KAAK,QAAQ;AACvD,SAAK,aAAa,KAAK;AACvB,SAAK,eAAe,OAAO,EAAE,KAAK,UAAU,KAAK,QAAQ,CAAC,EAAE,UAAU,MAAM;AAC1E,UAAI,KAAK,WAAW;AAClB,aAAK,gBAAgB,KAAK,iBAAiB,KAAK,uBAAuB;AACvE,aAAK,mBAAmB,cAAc;AAAA,MACxC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,qBAAqB;AACnB,SAAK,aAAa,KAAK;AACvB,SAAK,aAAa,SAAS;AAC3B,SAAK,gBAAgB;AACrB,SAAK,gBAAgB,QAAQ,KAAK,UAAU,KAAK,QAAQ,CAAC,EAAE,UAAU,WAAS;AAC7E,YAAM,MAAM,QAAQ,YAAU,OAAO,OAAO,CAAC;AAC7C,YAAM,QAAQ,QAAQ,YAAU,OAAO,SAAS,CAAC;AAAA,IACnD,CAAC;AACD,SAAK,QAAQ,QAAQ,KAAK,UAAU,IAAI,GAAG,UAAU,KAAK,QAAQ,CAAC,EAAE,UAAU,MAAM;AACnF,WAAK,cAAc;AACnB,WAAK,qBAAqB;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,YAAY;AACV,UAAM,oBAAoB,KAAK,0BAA0B;AACzD,UAAM,YAAY,KAAK;AAIvB,QAAI,sBAAsB,KAAK,wBAAwB;AACrD,YAAM,UAAU,KAAK,YAAY;AACjC,WAAK,yBAAyB;AAC9B,UAAI,mBAAmB;AACrB,gBAAQ,aAAa,mBAAmB,iBAAiB;AAAA,MAC3D,OAAO;AACL,gBAAQ,gBAAgB,iBAAiB;AAAA,MAC3C;AAAA,IACF;AACA,QAAI,WAAW;AAEb,UAAI,KAAK,qBAAqB,UAAU,SAAS;AAC/C,YAAI,KAAK,qBAAqB,UAAa,UAAU,aAAa,QAAQ,UAAU,aAAa,KAAK,UAAU;AAC9G,eAAK,WAAW,UAAU;AAAA,QAC5B;AACA,aAAK,mBAAmB,UAAU;AAAA,MACpC;AACA,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,YAAY,SAAS;AAGnB,QAAI,QAAQ,UAAU,KAAK,QAAQ,qBAAqB,GAAG;AACzD,WAAK,aAAa,KAAK;AAAA,IACzB;AACA,QAAI,QAAQ,2BAA2B,KAAK,KAAK,aAAa;AAC5D,WAAK,YAAY,cAAc,KAAK,yBAAyB;AAAA,IAC/D;AAAA,EACF;AAAA,EACA,cAAc;AACZ,SAAK,iBAAiB;AACtB,SAAK,aAAa,QAAQ;AAC1B,SAAK,SAAS,KAAK;AACnB,SAAK,SAAS,SAAS;AACvB,SAAK,aAAa,SAAS;AAC3B,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA,EAEA,SAAS;AACP,SAAK,YAAY,KAAK,MAAM,IAAI,KAAK,KAAK;AAAA,EAC5C;AAAA;AAAA,EAEA,OAAO;AACL,QAAI,CAAC,KAAK,SAAS,GAAG;AACpB;AAAA,IACF;AAIA,QAAI,KAAK,kBAAkB;AACzB,WAAK,0BAA0B,KAAK,iBAAiB,0BAA0B;AAAA,IACjF;AACA,SAAK,iBAAiB;AACtB,SAAK,gBAAgB,KAAK,iBAAiB,KAAK,uBAAuB;AACvE,SAAK,0BAA0B;AAC/B,SAAK,aAAa;AAClB,SAAK,YAAY,eAAe,KAAK,KAAK,CAAC,CAAC,EAAE,UAAU,MAAM;AAC5D,WAAK,mBAAmB,cAAc;AACtC,WAAK,oBAAoB;AAAA,IAC3B,CAAC;AACD,SAAK,YAAY,cAAc;AAC/B,SAAK,YAAY,0BAA0B,IAAI;AAC/C,SAAK,wBAAwB;AAC7B,SAAK,mBAAmB,aAAa;AAErC,SAAK,aAAa,KAAK;AAEvB,YAAQ,QAAQ,EAAE,KAAK,MAAM,KAAK,aAAa,KAAK,IAAI,CAAC;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBhB,4BAA4B;AAO1B,UAAM,QAAQ,KAAK,YAAY,cAAc,QAAQ,mDAAmD;AACxG,QAAI,CAAC,OAAO;AAEV;AAAA,IACF;AACA,UAAM,UAAU,GAAG,KAAK,EAAE;AAC1B,QAAI,KAAK,eAAe;AACtB,6BAAuB,KAAK,eAAe,aAAa,OAAO;AAAA,IACjE;AACA,wBAAoB,OAAO,aAAa,OAAO;AAC/C,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA,EAEA,kBAAkB;AAChB,QAAI,CAAC,KAAK,eAAe;AAEvB;AAAA,IACF;AACA,UAAM,UAAU,GAAG,KAAK,EAAE;AAC1B,2BAAuB,KAAK,eAAe,aAAa,OAAO;AAC/D,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA,EAEA,QAAQ;AACN,QAAI,KAAK,YAAY;AACnB,WAAK,aAAa;AAClB,WAAK,eAAe;AACpB,WAAK,YAAY,0BAA0B,KAAK,OAAO,IAAI,QAAQ,KAAK;AACxE,WAAK,mBAAmB,aAAa;AACrC,WAAK,WAAW;AAEhB,WAAK,aAAa,KAAK;AAEvB,cAAQ,QAAQ,EAAE,KAAK,MAAM,KAAK,aAAa,KAAK,KAAK,CAAC;AAAA,IAC5D;AAAA,EACF;AAAA;AAAA,EAEA,iBAAiB;AACf,QAAI,KAAK,uBAAuB,CAAC,KAAK,OAAO;AAC3C,WAAK,eAAe;AACpB;AAAA,IACF;AACA,SAAK,iBAAiB;AACtB,SAAK,iBAAiB,MAAM;AAC1B,mBAAa;AACb,mBAAa,iBAAiB;AAC9B,WAAK,iBAAiB;AAAA,IACxB;AACA,UAAM,QAAQ,KAAK,MAAM;AACzB,UAAM,eAAe,KAAK,UAAU,OAAO,OAAO,gBAAgB,WAAS;AACzE,UAAI,MAAM,kBAAkB,oBAAoB;AAC9C,aAAK,iBAAiB;AACtB,aAAK,eAAe;AAAA,MACtB;AAAA,IACF,CAAC;AAGD,UAAM,oBAAoB,WAAW,MAAM;AACzC,WAAK,iBAAiB;AACtB,WAAK,eAAe;AAAA,IACtB,GAAG,GAAG;AACN,UAAM,UAAU,IAAI,uBAAuB;AAAA,EAC7C;AAAA;AAAA,EAEA,iBAAiB;AACf,SAAK,YAAY,cAAc;AAG/B,SAAK,mBAAmB,aAAa;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,OAAO;AAChB,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iBAAiB,IAAI;AACnB,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,kBAAkB,IAAI;AACpB,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,YAAY;AAC3B,SAAK,WAAW;AAChB,SAAK,mBAAmB,aAAa;AACrC,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA;AAAA,EAEA,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK,WAAW,KAAK,iBAAiB,YAAY,CAAC,IAAI,KAAK,iBAAiB,SAAS,CAAC;AAAA,EAChG;AAAA;AAAA,EAEA,IAAI,eAAe;AACjB,QAAI,KAAK,OAAO;AACd,aAAO;AAAA,IACT;AACA,QAAI,KAAK,WAAW;AAClB,YAAM,kBAAkB,KAAK,gBAAgB,SAAS,IAAI,YAAU,OAAO,SAAS;AACpF,UAAI,KAAK,OAAO,GAAG;AACjB,wBAAgB,QAAQ;AAAA,MAC1B;AAEA,aAAO,gBAAgB,KAAK,IAAI;AAAA,IAClC;AACA,WAAO,KAAK,gBAAgB,SAAS,CAAC,EAAE;AAAA,EAC1C;AAAA;AAAA,EAEA,mBAAmB;AACjB,SAAK,mBAAmB,iBAAiB;AAAA,EAC3C;AAAA;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,OAAO,KAAK,KAAK,UAAU,QAAQ;AAAA,EACjD;AAAA;AAAA,EAEA,eAAe,OAAO;AACpB,QAAI,CAAC,KAAK,UAAU;AAClB,WAAK,YAAY,KAAK,mBAAmB,KAAK,IAAI,KAAK,qBAAqB,KAAK;AAAA,IACnF;AAAA,EACF;AAAA;AAAA,EAEA,qBAAqB,OAAO;AAC1B,UAAM,UAAU,MAAM;AACtB,UAAM,aAAa,YAAY,cAAc,YAAY,YAAY,YAAY,cAAc,YAAY;AAC3G,UAAM,YAAY,YAAY,SAAS,YAAY;AACnD,UAAM,UAAU,KAAK;AAErB,QAAI,CAAC,QAAQ,SAAS,KAAK,aAAa,CAAC,eAAe,KAAK,MAAM,KAAK,YAAY,MAAM,WAAW,YAAY;AAC/G,YAAM,eAAe;AACrB,WAAK,KAAK;AAAA,IACZ,WAAW,CAAC,KAAK,UAAU;AACzB,YAAM,2BAA2B,KAAK;AACtC,cAAQ,UAAU,KAAK;AACvB,YAAM,iBAAiB,KAAK;AAE5B,UAAI,kBAAkB,6BAA6B,gBAAgB;AAGjE,aAAK,eAAe,SAAS,eAAe,WAAW,GAAK;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAEA,mBAAmB,OAAO;AACxB,UAAM,UAAU,KAAK;AACrB,UAAM,UAAU,MAAM;AACtB,UAAM,aAAa,YAAY,cAAc,YAAY;AACzD,UAAM,WAAW,QAAQ,SAAS;AAClC,QAAI,cAAc,MAAM,QAAQ;AAE9B,YAAM,eAAe;AACrB,WAAK,MAAM;AAAA,IAGb,WAAW,CAAC,aAAa,YAAY,SAAS,YAAY,UAAU,QAAQ,cAAc,CAAC,eAAe,KAAK,GAAG;AAChH,YAAM,eAAe;AACrB,cAAQ,WAAW,sBAAsB;AAAA,IAC3C,WAAW,CAAC,YAAY,KAAK,aAAa,YAAY,KAAK,MAAM,SAAS;AACxE,YAAM,eAAe;AACrB,YAAM,uBAAuB,KAAK,QAAQ,KAAK,SAAO,CAAC,IAAI,YAAY,CAAC,IAAI,QAAQ;AACpF,WAAK,QAAQ,QAAQ,YAAU;AAC7B,YAAI,CAAC,OAAO,UAAU;AACpB,iCAAuB,OAAO,OAAO,IAAI,OAAO,SAAS;AAAA,QAC3D;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,YAAM,yBAAyB,QAAQ;AACvC,cAAQ,UAAU,KAAK;AACvB,UAAI,KAAK,aAAa,cAAc,MAAM,YAAY,QAAQ,cAAc,QAAQ,oBAAoB,wBAAwB;AAC9H,gBAAQ,WAAW,sBAAsB;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAEA,sBAAsB,OAAO;AAK3B,QAAI,MAAM,YAAY,UAAU,CAAC,eAAe,KAAK,GAAG;AACtD,YAAM,eAAe;AACrB,WAAK,MAAM;AAAA,IACb;AAAA,EACF;AAAA,EACA,WAAW;AACT,QAAI,CAAC,KAAK,UAAU;AAClB,WAAK,WAAW;AAChB,WAAK,aAAa,KAAK;AAAA,IACzB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,SAAK,WAAW;AAChB,SAAK,aAAa,gBAAgB;AAClC,QAAI,CAAC,KAAK,YAAY,CAAC,KAAK,WAAW;AACrC,WAAK,WAAW;AAChB,WAAK,mBAAmB,aAAa;AACrC,WAAK,aAAa,KAAK;AAAA,IACzB;AAAA,EACF;AAAA;AAAA,EAEA,iBAAiB;AACf,WAAO,KAAK,mBAAmB,OAAO,KAAK,iBAAiB,KAAK,KAAK;AAAA,EACxE;AAAA;AAAA,EAEA,IAAI,QAAQ;AACV,WAAO,CAAC,KAAK,mBAAmB,KAAK,gBAAgB,QAAQ;AAAA,EAC/D;AAAA,EACA,uBAAuB;AAGrB,YAAQ,QAAQ,EAAE,KAAK,MAAM;AAC3B,UAAI,KAAK,WAAW;AAClB,aAAK,SAAS,KAAK,UAAU;AAAA,MAC/B;AACA,WAAK,qBAAqB,KAAK,MAAM;AACrC,WAAK,aAAa,KAAK;AAAA,IACzB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,OAAO;AAC1B,SAAK,QAAQ,QAAQ,YAAU,OAAO,kBAAkB,CAAC;AACzD,SAAK,gBAAgB,MAAM;AAC3B,QAAI,KAAK,YAAY,OAAO;AAC1B,UAAI,CAAC,MAAM,QAAQ,KAAK,MAAM,OAAO,cAAc,eAAe,YAAY;AAC5E,cAAM,+BAA+B;AAAA,MACvC;AACA,YAAM,QAAQ,kBAAgB,KAAK,qBAAqB,YAAY,CAAC;AACrE,WAAK,YAAY;AAAA,IACnB,OAAO;AACL,YAAM,sBAAsB,KAAK,qBAAqB,KAAK;AAG3D,UAAI,qBAAqB;AACvB,aAAK,YAAY,iBAAiB,mBAAmB;AAAA,MACvD,WAAW,CAAC,KAAK,WAAW;AAG1B,aAAK,YAAY,iBAAiB,EAAE;AAAA,MACtC;AAAA,IACF;AACA,SAAK,mBAAmB,aAAa;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,OAAO;AAC1B,UAAM,sBAAsB,KAAK,QAAQ,KAAK,YAAU;AAGtD,UAAI,KAAK,gBAAgB,WAAW,MAAM,GAAG;AAC3C,eAAO;AAAA,MACT;AACA,UAAI;AAEF,gBAAQ,OAAO,SAAS,QAAQ,KAAK,6BAA6B,KAAK,aAAa,OAAO,OAAO,KAAK;AAAA,MACzG,SAAS,OAAO;AACd,YAAI,OAAO,cAAc,eAAe,WAAW;AAEjD,kBAAQ,KAAK,KAAK;AAAA,QACpB;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,QAAI,qBAAqB;AACvB,WAAK,gBAAgB,OAAO,mBAAmB;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,aAAa,UAAU;AAErB,QAAI,aAAa,KAAK,UAAU,KAAK,aAAa,MAAM,QAAQ,QAAQ,GAAG;AACzE,UAAI,KAAK,SAAS;AAChB,aAAK,qBAAqB,QAAQ;AAAA,MACpC;AACA,WAAK,SAAS;AACd,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,iBAAiB,YAAU;AACzB,QAAI,KAAK,WAAW;AAElB,aAAO;AAAA,IACT;AAIA,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA,EAEA,iBAAiB,iBAAiB;AAChC,QAAI,KAAK,eAAe,QAAQ;AAC9B,YAAM,eAAe,2BAA2B,mBAAmB,gBAAgB,aAAa,mBAAmB,KAAK;AACxH,aAAO,aAAa,cAAc,sBAAsB,EAAE;AAAA,IAC5D;AACA,WAAO,KAAK,eAAe,OAAO,KAAK,KAAK;AAAA,EAC9C;AAAA;AAAA,EAEA,wBAAwB;AACtB,QAAI,KAAK,SAAS;AAChB,iBAAW,UAAU,KAAK,SAAS;AACjC,eAAO,mBAAmB,aAAa;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAEA,kBAAkB;AAChB,SAAK,cAAc,IAAI,2BAA2B,KAAK,OAAO,EAAE,cAAc,KAAK,yBAAyB,EAAE,wBAAwB,EAAE,0BAA0B,KAAK,OAAO,IAAI,QAAQ,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,wBAAwB,CAAC,UAAU,CAAC,EAAE,cAAc,KAAK,cAAc;AAC1S,SAAK,YAAY,OAAO,UAAU,MAAM;AACtC,UAAI,KAAK,WAAW;AAGlB,YAAI,CAAC,KAAK,YAAY,KAAK,YAAY,YAAY;AACjD,eAAK,YAAY,WAAW,sBAAsB;AAAA,QACpD;AAGA,aAAK,MAAM;AACX,aAAK,MAAM;AAAA,MACb;AAAA,IACF,CAAC;AACD,SAAK,YAAY,OAAO,UAAU,MAAM;AACtC,UAAI,KAAK,cAAc,KAAK,OAAO;AACjC,aAAK,sBAAsB,KAAK,YAAY,mBAAmB,CAAC;AAAA,MAClE,WAAW,CAAC,KAAK,cAAc,CAAC,KAAK,YAAY,KAAK,YAAY,YAAY;AAC5E,aAAK,YAAY,WAAW,sBAAsB;AAAA,MACpD;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA,EAEA,gBAAgB;AACd,UAAM,qBAAqB,MAAM,KAAK,QAAQ,SAAS,KAAK,QAAQ;AACpE,SAAK,uBAAuB,KAAK,UAAU,kBAAkB,CAAC,EAAE,UAAU,WAAS;AACjF,WAAK,UAAU,MAAM,QAAQ,MAAM,WAAW;AAC9C,UAAI,MAAM,eAAe,CAAC,KAAK,YAAY,KAAK,YAAY;AAC1D,aAAK,MAAM;AACX,aAAK,MAAM;AAAA,MACb;AAAA,IACF,CAAC;AAGD,UAAM,GAAG,KAAK,QAAQ,IAAI,YAAU,OAAO,aAAa,CAAC,EAAE,KAAK,UAAU,kBAAkB,CAAC,EAAE,UAAU,MAAM;AAI7G,WAAK,mBAAmB,cAAc;AACtC,WAAK,aAAa,KAAK;AAAA,IACzB,CAAC;AAAA,EACH;AAAA;AAAA,EAEA,UAAU,QAAQ,aAAa;AAC7B,UAAM,cAAc,KAAK,gBAAgB,WAAW,MAAM;AAC1D,QAAI,CAAC,KAAK,4BAA4B,OAAO,SAAS,QAAQ,CAAC,KAAK,WAAW;AAC7E,aAAO,SAAS;AAChB,WAAK,gBAAgB,MAAM;AAC3B,UAAI,KAAK,SAAS,MAAM;AACtB,aAAK,kBAAkB,OAAO,KAAK;AAAA,MACrC;AAAA,IACF,OAAO;AACL,UAAI,gBAAgB,OAAO,UAAU;AACnC,eAAO,WAAW,KAAK,gBAAgB,OAAO,MAAM,IAAI,KAAK,gBAAgB,SAAS,MAAM;AAAA,MAC9F;AACA,UAAI,aAAa;AACf,aAAK,YAAY,cAAc,MAAM;AAAA,MACvC;AACA,UAAI,KAAK,UAAU;AACjB,aAAK,YAAY;AACjB,YAAI,aAAa;AAKf,eAAK,MAAM;AAAA,QACb;AAAA,MACF;AAAA,IACF;AACA,QAAI,gBAAgB,KAAK,gBAAgB,WAAW,MAAM,GAAG;AAC3D,WAAK,kBAAkB;AAAA,IACzB;AACA,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA;AAAA,EAEA,cAAc;AACZ,QAAI,KAAK,UAAU;AACjB,YAAM,UAAU,KAAK,QAAQ,QAAQ;AACrC,WAAK,gBAAgB,KAAK,CAAC,GAAG,MAAM;AAClC,eAAO,KAAK,iBAAiB,KAAK,eAAe,GAAG,GAAG,OAAO,IAAI,QAAQ,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC;AAAA,MAC1G,CAAC;AACD,WAAK,aAAa,KAAK;AAAA,IACzB;AAAA,EACF;AAAA;AAAA,EAEA,kBAAkB,eAAe;AAC/B,QAAI;AACJ,QAAI,KAAK,UAAU;AACjB,oBAAc,KAAK,SAAS,IAAI,YAAU,OAAO,KAAK;AAAA,IACxD,OAAO;AACL,oBAAc,KAAK,WAAW,KAAK,SAAS,QAAQ;AAAA,IACtD;AACA,SAAK,SAAS;AACd,SAAK,YAAY,KAAK,WAAW;AACjC,SAAK,UAAU,WAAW;AAC1B,SAAK,gBAAgB,KAAK,KAAK,gBAAgB,WAAW,CAAC;AAC3D,SAAK,mBAAmB,aAAa;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,0BAA0B;AACxB,QAAI,KAAK,aAAa;AACpB,UAAI,KAAK,OAAO;AAId,YAAI,0BAA0B;AAC9B,iBAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,QAAQ,SAAS;AACxD,gBAAM,SAAS,KAAK,QAAQ,IAAI,KAAK;AACrC,cAAI,CAAC,OAAO,UAAU;AACpB,sCAA0B;AAC1B;AAAA,UACF;AAAA,QACF;AACA,aAAK,YAAY,cAAc,uBAAuB;AAAA,MACxD,OAAO;AACL,aAAK,YAAY,cAAc,KAAK,gBAAgB,SAAS,CAAC,CAAC;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAEA,WAAW;AACT,WAAO,CAAC,KAAK,cAAc,CAAC,KAAK,YAAY,KAAK,SAAS,SAAS,KAAK,CAAC,CAAC,KAAK;AAAA,EAClF;AAAA;AAAA,EAEA,MAAM,SAAS;AACb,SAAK,YAAY,cAAc,MAAM,OAAO;AAAA,EAC9C;AAAA;AAAA,EAEA,0BAA0B;AACxB,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,IACT;AACA,UAAM,UAAU,KAAK,kBAAkB,WAAW,KAAK;AACvD,UAAM,kBAAkB,UAAU,UAAU,MAAM;AAClD,WAAO,KAAK,iBAAiB,kBAAkB,KAAK,iBAAiB;AAAA,EACvE;AAAA;AAAA,EAEA,2BAA2B;AACzB,QAAI,KAAK,aAAa,KAAK,eAAe,KAAK,YAAY,YAAY;AACrE,aAAO,KAAK,YAAY,WAAW;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,4BAA4B;AAC1B,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,IACT;AACA,QAAI,QAAQ,KAAK,kBAAkB,WAAW,KAAK;AACnD,QAAI,KAAK,gBAAgB;AACvB,eAAS,MAAM,KAAK;AAAA,IACtB;AAOA,QAAI,CAAC,OAAO;AACV,cAAQ,KAAK;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,iBAAiB;AACnB,UAAM,UAAU,KAAK,YAAY;AACjC,UAAM,sBAAsB,QAAQ,aAAa,kBAAkB;AACnE,WAAO,qBAAqB,MAAM,GAAG,KAAK,CAAC;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,KAAK;AACrB,QAAI,IAAI,QAAQ;AACd,WAAK,YAAY,cAAc,aAAa,oBAAoB,IAAI,KAAK,GAAG,CAAC;AAAA,IAC/E,OAAO;AACL,WAAK,YAAY,cAAc,gBAAgB,kBAAkB;AAAA,IACnE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAmB;AACjB,SAAK,MAAM;AACX,SAAK,KAAK;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,mBAAmB;AAGrB,WAAO,KAAK,aAAa,CAAC,KAAK,SAAS,KAAK,WAAW,CAAC,CAAC,KAAK;AAAA,EACjE;AAAA,EACA,OAAO,YAAO,SAAS,kBAAkB,mBAAmB;AAC1D,WAAO,KAAK,qBAAqB,YAAW;AAAA,EAC9C;AAAA,EACA,OAAO,YAAsB,gBAAG,4BAAkB;AAAA,IAChD,MAAM;AAAA,IACN,WAAW,CAAC,CAAC,YAAY,CAAC;AAAA,IAC1B,gBAAgB,SAAS,yBAAyB,IAAI,KAAK,UAAU;AACnE,UAAI,KAAK,GAAG;AACV,QAAG,yBAAe,UAAU,oBAAoB,CAAC;AACjD,QAAG,yBAAe,UAAU,WAAW,CAAC;AACxC,QAAG,yBAAe,UAAU,cAAc,CAAC;AAAA,MAC7C;AACA,UAAI,KAAK,GAAG;AACV,YAAI;AACJ,QAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,gBAAgB,GAAG;AACpE,QAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,UAAU;AAC3D,QAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,eAAe;AAAA,MAClE;AAAA,IACF;AAAA,IACA,WAAW,SAAS,gBAAgB,IAAI,KAAK;AAC3C,UAAI,KAAK,GAAG;AACV,QAAG,sBAAYH,MAAK,CAAC;AACrB,QAAG,sBAAYC,MAAK,CAAC;AACrB,QAAG,sBAAY,qBAAqB,CAAC;AAAA,MACvC;AACA,UAAI,KAAK,GAAG;AACV,YAAI;AACJ,QAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,UAAU,GAAG;AAC9D,QAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,QAAQ,GAAG;AAC5D,QAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,cAAc,GAAG;AAAA,MACpE;AAAA,IACF;AAAA,IACA,WAAW,CAAC,QAAQ,YAAY,iBAAiB,WAAW,GAAG,gBAAgB;AAAA,IAC/E,UAAU;AAAA,IACV,cAAc,SAAS,uBAAuB,IAAI,KAAK;AACrD,UAAI,KAAK,GAAG;AACV,QAAG,qBAAW,WAAW,SAAS,qCAAqC,QAAQ;AAC7E,iBAAO,IAAI,eAAe,MAAM;AAAA,QAClC,CAAC,EAAE,SAAS,SAAS,qCAAqC;AACxD,iBAAO,IAAI,SAAS;AAAA,QACtB,CAAC,EAAE,QAAQ,SAAS,oCAAoC;AACtD,iBAAO,IAAI,QAAQ;AAAA,QACrB,CAAC;AAAA,MACH;AACA,UAAI,KAAK,GAAG;AACV,QAAG,sBAAY,MAAM,IAAI,EAAE,EAAE,YAAY,IAAI,WAAW,KAAK,IAAI,QAAQ,EAAE,iBAAiB,IAAI,YAAY,IAAI,KAAK,WAAW,IAAI,EAAE,iBAAiB,IAAI,SAAS,EAAE,cAAc,IAAI,aAAa,IAAI,EAAE,iBAAiB,IAAI,SAAS,SAAS,CAAC,EAAE,iBAAiB,IAAI,SAAS,SAAS,CAAC,EAAE,gBAAgB,IAAI,UAAU,EAAE,yBAAyB,IAAI,yBAAyB,CAAC;AACtX,QAAG,sBAAY,2BAA2B,IAAI,QAAQ,EAAE,0BAA0B,IAAI,UAAU,EAAE,2BAA2B,IAAI,QAAQ,EAAE,wBAAwB,IAAI,KAAK,EAAE,2BAA2B,IAAI,QAAQ;AAAA,MACvN;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,qBAAqB,CAAC,GAAG,oBAAoB,qBAAqB;AAAA,MAClE,YAAY;AAAA,MACZ,UAAU,CAAC,GAAG,YAAY,YAAY,gBAAgB;AAAA,MACtD,eAAe,CAAC,GAAG,iBAAiB,iBAAiB,gBAAgB;AAAA,MACrE,UAAU,CAAC,GAAG,YAAY,YAAY,WAAS,SAAS,OAAO,IAAI,gBAAgB,KAAK,CAAC;AAAA,MACzF,8BAA8B,CAAC,GAAG,gCAAgC,gCAAgC,gBAAgB;AAAA,MAClH,aAAa;AAAA,MACb,UAAU,CAAC,GAAG,YAAY,YAAY,gBAAgB;AAAA,MACtD,UAAU,CAAC,GAAG,YAAY,YAAY,gBAAgB;AAAA,MACtD,wBAAwB,CAAC,GAAG,0BAA0B,0BAA0B,gBAAgB;AAAA,MAChG,aAAa;AAAA,MACb,OAAO;AAAA,MACP,WAAW,CAAC,GAAG,cAAc,WAAW;AAAA,MACxC,gBAAgB,CAAC,GAAG,mBAAmB,gBAAgB;AAAA,MACvD,mBAAmB;AAAA,MACnB,2BAA2B,CAAC,GAAG,6BAA6B,6BAA6B,eAAe;AAAA,MACxG,gBAAgB;AAAA,MAChB,IAAI;AAAA,MACJ,YAAY;AAAA,MACZ,0BAA0B,CAAC,GAAG,4BAA4B,4BAA4B,gBAAgB;AAAA,IACxG;AAAA,IACA,SAAS;AAAA,MACP,cAAc;AAAA,MACd,eAAe;AAAA,MACf,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,aAAa;AAAA,IACf;AAAA,IACA,UAAU,CAAC,WAAW;AAAA,IACtB,UAAU,CAAI,6BAAmB,CAAC;AAAA,MAChC,SAAS;AAAA,MACT,aAAa;AAAA,IACf,GAAG;AAAA,MACD,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC,CAAC,GAAM,8BAAoB;AAAA,IAC5B,oBAAoBE;AAAA,IACpB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ,CAAC,CAAC,yBAAyB,oBAAoB,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,sBAAsB,IAAI,GAAG,0BAA0B,GAAG,OAAO,GAAG,CAAC,GAAG,sBAAsB,GAAG,CAAC,GAAG,8BAA8B,yBAAyB,GAAG,CAAC,GAAG,2BAA2B,GAAG,CAAC,GAAG,8BAA8B,GAAG,CAAC,GAAG,sBAAsB,GAAG,CAAC,WAAW,aAAa,SAAS,QAAQ,UAAU,QAAQ,aAAa,SAAS,eAAe,MAAM,GAAG,CAAC,KAAK,gBAAgB,GAAG,CAAC,yBAAyB,IAAI,mCAAmC,IAAI,kCAAkC,IAAI,oCAAoC,oCAAoC,GAAG,UAAU,iBAAiB,kBAAkB,mCAAmC,iCAAiC,qCAAqC,6BAA6B,gCAAgC,4BAA4B,uCAAuC,GAAG,CAAC,GAAG,yBAAyB,GAAG,CAAC,QAAQ,WAAW,YAAY,MAAM,GAAG,WAAW,SAAS,CAAC;AAAA,IAC1gC,UAAU,SAAS,mBAAmB,IAAI,KAAK;AAC7C,UAAI,KAAK,GAAG;AACV,cAAM,MAAS,2BAAiB;AAChC,QAAG,0BAAgBD,IAAG;AACtB,QAAG,yBAAe,GAAG,OAAO,GAAG,CAAC;AAChC,QAAG,qBAAW,SAAS,SAAS,0CAA0C;AACxE,UAAG,wBAAc,GAAG;AACpB,iBAAU,sBAAY,IAAI,KAAK,CAAC;AAAA,QAClC,CAAC;AACD,QAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,QAAG,8BAAoB,GAAG,kCAAkC,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,kCAAkC,GAAG,GAAG,QAAQ,CAAC;AACjI,QAAG,uBAAa;AAChB,QAAG,yBAAe,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC;AAC1C,QAAG,yBAAe;AAClB,QAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,QAAG,oBAAU,GAAG,QAAQ,CAAC;AACzB,QAAG,uBAAa,EAAE,EAAE,EAAE;AACtB,QAAG,qBAAW,IAAI,mCAAmC,GAAG,IAAI,eAAe,EAAE;AAC7E,QAAG,qBAAW,UAAU,SAAS,oDAAoD;AACnF,UAAG,wBAAc,GAAG;AACpB,iBAAU,sBAAY,IAAI,MAAM,CAAC;AAAA,QACnC,CAAC,EAAE,iBAAiB,SAAS,2DAA2D;AACtF,UAAG,wBAAc,GAAG;AACpB,iBAAU,sBAAY,IAAI,MAAM,CAAC;AAAA,QACnC,CAAC,EAAE,kBAAkB,SAAS,0DAA0D,QAAQ;AAC9F,UAAG,wBAAc,GAAG;AACpB,iBAAU,sBAAY,IAAI,sBAAsB,MAAM,CAAC;AAAA,QACzD,CAAC;AAAA,MACH;AACA,UAAI,KAAK,GAAG;AACV,cAAM,2BAA8B,sBAAY,CAAC;AACjD,QAAG,oBAAU,CAAC;AACd,QAAG,sBAAY,MAAM,IAAI,QAAQ;AACjC,QAAG,oBAAU;AACb,QAAG,wBAAc,IAAI,QAAQ,IAAI,CAAC;AAClC,QAAG,oBAAU,CAAC;AACd,QAAG,qBAAW,mCAAmC,IAAI,EAAE,iCAAiC,IAAI,kBAAkB,EAAE,qCAAqC,IAAI,eAAe,EAAE,6BAA6B,IAAI,2BAA2B,wBAAwB,EAAE,gCAAgC,IAAI,UAAU,EAAE,4BAA4B,IAAI,aAAa,EAAE,yCAAyC,IAAI;AAAA,MAC9Y;AAAA,IACF;AAAA,IACA,cAAc,CAAC,kBAAkB,qBAAqB,OAAO;AAAA,IAC7D,QAAQ,CAAC,65JAA+5J;AAAA,IACx6J,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,WAAW,CAAC;AAAA,IAClF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA,MACV,eAAe,kBAAkB;AAAA,MACjC,iBAAiB,wBAAwB;AAAA,MACzC,MAAM;AAAA,QACJ,QAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,aAAa;AAAA,QACb,mBAAmB;AAAA,QACnB,wBAAwB;AAAA,QACxB,wBAAwB;AAAA,QACxB,qBAAqB;AAAA,QACrB,wBAAwB;AAAA,QACxB,wBAAwB;AAAA,QACxB,uBAAuB;AAAA,QACvB,gCAAgC;AAAA,QAChC,mCAAmC;AAAA,QACnC,kCAAkC;AAAA,QAClC,mCAAmC;AAAA,QACnC,gCAAgC;AAAA,QAChC,mCAAmC;AAAA,QACnC,aAAa;AAAA,QACb,WAAW;AAAA,QACX,UAAU;AAAA,MACZ;AAAA,MACA,WAAW,CAAC;AAAA,QACV,SAAS;AAAA,QACT,aAAa;AAAA,MACf,GAAG;AAAA,QACD,SAAS;AAAA,QACT,aAAa;AAAA,MACf,CAAC;AAAA,MACD,SAAS,CAAC,kBAAkB,qBAAqB,OAAO;AAAA,MACxD,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MACV,QAAQ,CAAC,65JAA+5J;AAAA,IAC16J,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC,GAAG;AAAA,IACZ,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,QAChB,aAAa;AAAA,MACf,CAAC;AAAA,IACH,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,MACN,MAAM,CAAC,cAAc;AAAA,QACnB,aAAa;AAAA,MACf,CAAC;AAAA,IACH,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC,kBAAkB;AAAA,IAC3B,CAAC;AAAA,IACD,qBAAqB,CAAC;AAAA,MACpB,MAAM;AAAA,MACN,MAAM,CAAC,kBAAkB;AAAA,IAC3B,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,MACN,MAAM,CAAC,OAAO;AAAA,IAChB,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC,mBAAmB;AAAA,IAC5B,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW,WAAS,SAAS,OAAO,IAAI,gBAAgB,KAAK;AAAA,MAC/D,CAAC;AAAA,IACH,CAAC;AAAA,IACD,8BAA8B,CAAC;AAAA,MAC7B,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,wBAAwB,CAAC;AAAA,MACvB,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,MACN,MAAM,CAAC,YAAY;AAAA,IACrB,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,IAC1B,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,2BAA2B,CAAC;AAAA,MAC1B,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MACH,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,0BAA0B,CAAC;AAAA,MACzB,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,WAAW;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC,QAAQ;AAAA,IACjB,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC,QAAQ;AAAA,IACjB,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAIH,IAAM,mBAAN,MAAM,kBAAiB;AAAA,EACrB,OAAO,YAAO,SAAS,yBAAyB,mBAAmB;AACjE,WAAO,KAAK,qBAAqB,mBAAkB;AAAA,EACrD;AAAA,EACA,OAAO,YAAsB,gBAAG,4BAAkB;AAAA,IAChD,MAAM;AAAA,IACN,WAAW,CAAC,CAAC,oBAAoB,CAAC;AAAA,IAClC,UAAU,CAAI,6BAAmB,CAAC;AAAA,MAChC,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC,CAAC,CAAC;AAAA,EACL,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,kBAAkB,CAAC;AAAA,IACzF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,WAAW,CAAC;AAAA,QACV,SAAS;AAAA,QACT,aAAa;AAAA,MACf,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AACH,IAAM,kBAAN,MAAM,iBAAgB;AAAA,EACpB,OAAO,YAAO,SAAS,wBAAwB,mBAAmB;AAChE,WAAO,KAAK,qBAAqB,kBAAiB;AAAA,EACpD;AAAA,EACA,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,MAAM;AAAA,IACN,SAAS,CAAC,eAAe,iBAAiB,iBAAiB,WAAW,gBAAgB;AAAA,IACtF,SAAS,CAAC,qBAAqB,oBAAoB,WAAW,kBAAkB,iBAAiB,eAAe;AAAA,EAClH,CAAC;AAAA,EACD,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,WAAW,CAAC,mCAAmC;AAAA,IAC/C,SAAS,CAAC,eAAe,iBAAiB,iBAAiB,qBAAqB,oBAAoB,iBAAiB,eAAe;AAAA,EACtI,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,iBAAiB,CAAC;AAAA,IACxF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,SAAS,CAAC,eAAe,iBAAiB,iBAAiB,WAAW,gBAAgB;AAAA,MACtF,SAAS,CAAC,qBAAqB,oBAAoB,WAAW,kBAAkB,iBAAiB,eAAe;AAAA,MAChH,WAAW,CAAC,mCAAmC;AAAA,IACjD,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;;;AChgDH,IAAME,OAAM,CAAC,2BAA2B,EAAE;AAC1C,IAAMC,OAAM,CAAC,GAAG;AAChB,IAAM,wBAAN,MAAM,uBAAsB;AAAA;AAAA,EAE1B;AAAA,EACA,OAAO,YAAO,SAAS,8BAA8B,mBAAmB;AACtE,WAAO,KAAK,qBAAqB,wBAAuB;AAAA,EAC1D;AAAA,EACA,OAAO,YAAsB,gBAAG,4BAAkB;AAAA,IAChD,MAAM;AAAA,IACN,WAAW,CAAC,CAAC,OAAO,2BAA2B,EAAE,CAAC;AAAA,IAClD,WAAW,CAAC,GAAG,kBAAkB,yBAAyB;AAAA,IAC1D,UAAU;AAAA,IACV,cAAc,SAAS,mCAAmC,IAAI,KAAK;AACjE,UAAI,KAAK,GAAG;AACV,QAAG,sBAAY,6BAA6B,IAAI,kBAAkB,QAAQ;AAAA,MAC5E;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,eAAe;AAAA,IACjB;AAAA,IACA,OAAOD;AAAA,IACP,oBAAoBC;AAAA,IACpB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU,SAAS,+BAA+B,IAAI,KAAK;AACzD,UAAI,KAAK,GAAG;AACV,QAAG,0BAAgB;AACnB,QAAG,uBAAa,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,mmBAAmmB;AAAA,IAC5mB,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,uBAAuB,CAAC;AAAA,IAC9F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA,MACV,eAAe,kBAAkB;AAAA,MACjC,iBAAiB,wBAAwB;AAAA,MACzC,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,qCAAqC;AAAA,MACvC;AAAA,MACA,QAAQ,CAAC,mmBAAmmB;AAAA,IAC9mB,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,QACL,UAAU;AAAA,MACZ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,GAAG;;;AC9DH,IAAM,kBAAkB,IAAI,eAAe,mBAAmB;AAAA,EAC1D,YAAY;AAAA,EACZ,SAAS;AACb,CAAC;AAMD,SAAS,0BAA0B;AAC/B,SAAO,OAAO,SAAS;AAC3B;AACA,IAAM,kBAAkB;AAExB,IAAM,cAAN,MAAkB;AAAA;AAAA,EAEd;AAAA,EACA,iBAAiB,IAAI,QAAQ;AAAA;AAAA,EAE7B,gBAAgB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrB,QAAQ,QAAQ,OAAO,SAAS,SAAS;AACrC,UAAM,IAAI,MAAM,eAAe;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,MAAM;AACX,UAAM,IAAI,MAAM,eAAe;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,MAAM;AACb,UAAM,IAAI,MAAM,eAAe;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,MAAM;AACb,UAAM,IAAI,MAAM,eAAe;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,OAAO,aAAa;AAC1B,UAAM,IAAI,MAAM,eAAe;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,MAAM,QAAQ;AACrB,UAAM,IAAI,MAAM,eAAe;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,mBAAmB,KAAK;AACpB,WAAO,KAAK,eAAe,GAAG,KAAK,KAAK,QAAQ,GAAG,IAAI,MAAM;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,YAAY,OAAO;AACf,QAAI,SAAS,QAAS,KAAK,eAAe,KAAK,KAAK,KAAK,QAAQ,KAAK,GAAI;AACtE,aAAO;AAAA,IACX;AACA,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,QAAQ;AACd,SAAK,SAAS;AACd,SAAK,eAAe,KAAK;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,OAAO,QAAQ;AACvB,WAAQ,KAAK,QAAQ,KAAK,IAAI,KAAK,QAAQ,MAAM,KAC7C,KAAK,SAAS,KAAK,IAAI,KAAK,SAAS,MAAM,KAC3C,KAAK,QAAQ,KAAK,IAAI,KAAK,QAAQ,MAAM;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,OAAO,QAAQ;AACvB,WAAQ,KAAK,SAAS,KAAK,IAAI,KAAK,SAAS,MAAM,KAC/C,KAAK,WAAW,KAAK,IAAI,KAAK,WAAW,MAAM,KAC/C,KAAK,WAAW,KAAK,IAAI,KAAK,WAAW,MAAM;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,OAAO,QAAQ;AACpB,QAAI,SAAS,QAAQ;AACjB,UAAI,aAAa,KAAK,QAAQ,KAAK;AACnC,UAAI,cAAc,KAAK,QAAQ,MAAM;AACrC,UAAI,cAAc,aAAa;AAC3B,eAAO,CAAC,KAAK,YAAY,OAAO,MAAM;AAAA,MAC1C;AACA,aAAO,cAAc;AAAA,IACzB;AACA,WAAO,SAAS;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,OAAO,QAAQ;AACpB,QAAI,SAAS,QAAQ;AACjB,YAAM,aAAa,KAAK,QAAQ,KAAK;AACrC,YAAM,cAAc,KAAK,QAAQ,MAAM;AACvC,UAAI,cAAc,aAAa;AAC3B,eAAO,CAAC,KAAK,YAAY,OAAO,MAAM;AAAA,MAC1C;AACA,aAAO,cAAc;AAAA,IACzB;AACA,WAAO,SAAS;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU,MAAM,KAAK,KAAK;AACtB,QAAI,OAAO,KAAK,YAAY,MAAM,GAAG,IAAI,GAAG;AACxC,aAAO;AAAA,IACX;AACA,QAAI,OAAO,KAAK,YAAY,MAAM,GAAG,IAAI,GAAG;AACxC,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACJ;AAEA,IAAM,mBAAmB,IAAI,eAAe,kBAAkB;;;AC7J9D,IAAM,UAAU,IAAI,QAAQ,QAAQ;AAOpC,IAAM,iBAAiB;AAYvB,IAAM,aAAa;AAEnB,SAAS,MAAM,QAAQ,eAAe;AACpC,QAAM,cAAc,MAAM,MAAM;AAChC,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,gBAAY,CAAC,IAAI,cAAc,CAAC;AAAA,EAClC;AACA,SAAO;AACT;AAEA,IAAM,oBAAN,MAAM,2BAA0B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAK1C,mBAAmB;AAAA;AAAA,EAEnB,iBAAiB,OAAO,iBAAiB;AAAA,IACvC,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,cAAc;AACZ,UAAM;AACN,UAAM,gBAAgB,OAAO,iBAAiB;AAAA,MAC5C,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,kBAAkB,QAAW;AAC/B,WAAK,iBAAiB;AAAA,IACxB;AACA,UAAM,UAAU,KAAK,cAAc;AAAA,EACrC;AAAA,EACA,QAAQ,MAAM;AACZ,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EACA,SAAS,MAAM;AACb,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EACA,QAAQ,MAAM;AACZ,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EACA,aAAa,MAAM;AACjB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,cAAc,OAAO;AACnB,UAAM,MAAM,IAAI,KAAK,eAAe,KAAK,QAAQ;AAAA,MAC/C,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,CAAC;AACD,WAAO,MAAM,IAAI,OAAK,KAAK,QAAQ,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC;AAAA,EAC/D;AAAA,EACA,eAAe;AACb,UAAM,MAAM,IAAI,KAAK,eAAe,KAAK,QAAQ;AAAA,MAC/C,KAAK;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AACD,WAAO,MAAM,IAAI,OAAK,KAAK,QAAQ,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAAA,EACnE;AAAA,EACA,kBAAkB,OAAO;AACvB,UAAM,MAAM,IAAI,KAAK,eAAe,KAAK,QAAQ;AAAA,MAC/C,SAAS;AAAA,MACT,UAAU;AAAA,IACZ,CAAC;AACD,WAAO,MAAM,GAAG,OAAK,KAAK,QAAQ,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAAA,EAClE;AAAA,EACA,YAAY,MAAM;AAChB,UAAM,MAAM,IAAI,KAAK,eAAe,KAAK,QAAQ;AAAA,MAC/C,MAAM;AAAA,MACN,UAAU;AAAA,IACZ,CAAC;AACD,WAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,EAC/B;AAAA,EACA,oBAAoB;AAGlB,QAAI,OAAO,SAAS,eAAe,KAAK,QAAQ;AAC9C,YAAM,SAAS,IAAI,KAAK,OAAO,KAAK,MAAM;AAG1C,YAAM,YAAY,OAAO,cAAc,KAAK,OAAO,WAAW,YAAY;AAG1E,aAAO,aAAa,IAAI,IAAI;AAAA,IAC9B;AAEA,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB,MAAM;AACtB,WAAO,KAAK,QAAQ,KAAK,wBAAwB,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,GAAG,CAAC,CAAC;AAAA,EAClG;AAAA,EACA,MAAM,MAAM;AACV,WAAO,IAAI,KAAK,KAAK,QAAQ,CAAC;AAAA,EAChC;AAAA,EACA,WAAW,MAAM,OAAO,MAAM;AAC5B,QAAI,OAAO,cAAc,eAAe,WAAW;AAGjD,UAAI,QAAQ,KAAK,QAAQ,IAAI;AAC3B,cAAM,MAAM,wBAAwB,KAAK,4CAA4C;AAAA,MACvF;AACA,UAAI,OAAO,GAAG;AACZ,cAAM,MAAM,iBAAiB,IAAI,mCAAmC;AAAA,MACtE;AAAA,IACF;AACA,QAAI,SAAS,KAAK,wBAAwB,MAAM,OAAO,IAAI;AAE3D,QAAI,OAAO,SAAS,KAAK,UAAU,OAAO,cAAc,eAAe,YAAY;AACjF,YAAM,MAAM,iBAAiB,IAAI,2BAA2B,KAAK,IAAI;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,WAAO,oBAAI,KAAK;AAAA,EAClB;AAAA,EACA,MAAM,OAAO,aAAa;AAGxB,QAAI,OAAO,SAAS,UAAU;AAC5B,aAAO,IAAI,KAAK,KAAK;AAAA,IACvB;AACA,WAAO,QAAQ,IAAI,KAAK,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,EAC/C;AAAA,EACA,OAAO,MAAM,eAAe;AAC1B,QAAI,CAAC,KAAK,QAAQ,IAAI,GAAG;AACvB,YAAM,MAAM,gDAAgD;AAAA,IAC9D;AACA,UAAM,MAAM,IAAI,KAAK,eAAe,KAAK,QAAQ,iCAC5C,gBAD4C;AAAA,MAE/C,UAAU;AAAA,IACZ,EAAC;AACD,WAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,EAC/B;AAAA,EACA,iBAAiB,MAAM,OAAO;AAC5B,WAAO,KAAK,kBAAkB,MAAM,QAAQ,EAAE;AAAA,EAChD;AAAA,EACA,kBAAkB,MAAM,QAAQ;AAC9B,QAAI,UAAU,KAAK,wBAAwB,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC;AAK/G,QAAI,KAAK,SAAS,OAAO,OAAO,KAAK,SAAS,IAAI,IAAI,UAAU,KAAK,MAAM,IAAI;AAC7E,gBAAU,KAAK,wBAAwB,KAAK,QAAQ,OAAO,GAAG,KAAK,SAAS,OAAO,GAAG,CAAC;AAAA,IACzF;AACA,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB,MAAM,MAAM;AAC1B,WAAO,KAAK,wBAAwB,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,IAAI,IAAI,IAAI;AAAA,EACxG;AAAA,EACA,UAAU,MAAM;AACd,WAAO,CAAC,KAAK,eAAe,GAAG,KAAK,QAAQ,KAAK,YAAY,IAAI,CAAC,GAAG,KAAK,QAAQ,KAAK,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG;AAAA,EAChH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,OAAO;AACjB,QAAI,OAAO,UAAU,UAAU;AAC7B,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AAGA,UAAI,eAAe,KAAK,KAAK,GAAG;AAC9B,YAAI,OAAO,IAAI,KAAK,KAAK;AACzB,YAAI,KAAK,QAAQ,IAAI,GAAG;AACtB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO,MAAM,YAAY,KAAK;AAAA,EAChC;AAAA,EACA,eAAe,KAAK;AAClB,WAAO,eAAe;AAAA,EACxB;AAAA,EACA,QAAQ,MAAM;AACZ,WAAO,CAAC,MAAM,KAAK,QAAQ,CAAC;AAAA,EAC9B;AAAA,EACA,UAAU;AACR,WAAO,oBAAI,KAAK,GAAG;AAAA,EACrB;AAAA,EACA,QAAQ,QAAQ,OAAO,SAAS,SAAS;AACvC,QAAI,OAAO,cAAc,eAAe,WAAW;AACjD,UAAI,CAAC,QAAQ,OAAO,GAAG,EAAE,GAAG;AAC1B,cAAM,MAAM,kBAAkB,KAAK,0CAA0C;AAAA,MAC/E;AACA,UAAI,CAAC,QAAQ,SAAS,GAAG,EAAE,GAAG;AAC5B,cAAM,MAAM,oBAAoB,OAAO,4CAA4C;AAAA,MACrF;AACA,UAAI,CAAC,QAAQ,SAAS,GAAG,EAAE,GAAG;AAC5B,cAAM,MAAM,oBAAoB,OAAO,4CAA4C;AAAA,MACrF;AAAA,IACF;AACA,UAAM,QAAQ,KAAK,MAAM,MAAM;AAC/B,UAAM,SAAS,OAAO,SAAS,SAAS,CAAC;AACzC,WAAO;AAAA,EACT;AAAA,EACA,SAAS,MAAM;AACb,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EACA,WAAW,MAAM;AACf,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,WAAW,MAAM;AACf,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,UAAU,WAAW,aAAa;AAChC,QAAI,OAAO,cAAc,UAAU;AACjC,aAAO,qBAAqB,OAAO,IAAI,KAAK,UAAU,QAAQ,CAAC,IAAI;AAAA,IACrE;AACA,UAAM,QAAQ,UAAU,KAAK;AAC7B,QAAI,MAAM,WAAW,GAAG;AACtB,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,KAAK,iBAAiB,KAAK;AAGxC,QAAI,WAAW,MAAM;AACnB,YAAM,gBAAgB,MAAM,QAAQ,oBAAoB,EAAE,EAAE,KAAK;AACjE,UAAI,cAAc,SAAS,GAAG;AAC5B,iBAAS,KAAK,iBAAiB,aAAa;AAAA,MAC9C;AAAA,IACF;AACA,WAAO,UAAU,KAAK,QAAQ;AAAA,EAChC;AAAA,EACA,WAAW,MAAM,QAAQ;AACvB,WAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,SAAS,GAAI;AAAA,EAChD;AAAA;AAAA,EAEA,wBAAwB,MAAM,OAAO,MAAM;AAGzC,UAAM,IAAI,oBAAI,KAAK;AACnB,MAAE,YAAY,MAAM,OAAO,IAAI;AAC/B,MAAE,SAAS,GAAG,GAAG,GAAG,CAAC;AACrB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,GAAG;AACT,YAAQ,OAAO,GAAG,MAAM,EAAE;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,QAAQ,KAAK,MAAM;AAGjB,UAAM,IAAI,oBAAI,KAAK;AACnB,MAAE,eAAe,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AACpE,MAAE,YAAY,KAAK,SAAS,GAAG,KAAK,WAAW,GAAG,KAAK,WAAW,GAAG,KAAK,gBAAgB,CAAC;AAC3F,WAAO,IAAI,OAAO,CAAC;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,OAAO;AAQtB,UAAM,SAAS,MAAM,YAAY,EAAE,MAAM,UAAU;AACnD,QAAI,QAAQ;AACV,UAAI,QAAQ,SAAS,OAAO,CAAC,CAAC;AAC9B,YAAM,UAAU,SAAS,OAAO,CAAC,CAAC;AAClC,UAAI,UAAU,OAAO,CAAC,KAAK,OAAO,SAAY,SAAS,OAAO,CAAC,CAAC;AAChE,YAAM,OAAO,OAAO,CAAC;AACrB,UAAI,UAAU,IAAI;AAChB,gBAAQ,SAAS,OAAO,IAAI;AAAA,MAC9B,WAAW,SAAS,MAAM;AACxB,iBAAS;AAAA,MACX;AACA,UAAI,QAAQ,OAAO,GAAG,EAAE,KAAK,QAAQ,SAAS,GAAG,EAAE,MAAM,WAAW,QAAQ,QAAQ,SAAS,GAAG,EAAE,IAAI;AACpG,eAAO,KAAK,QAAQ,KAAK,MAAM,GAAG,OAAO,SAAS,WAAW,CAAC;AAAA,MAChE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAO,SAAS,0BAA0B,mBAAmB;AAClE,WAAO,KAAK,qBAAqB,oBAAmB;AAAA,EACtD;AAAA,EACA,OAAO,aAAuB,gBAAG,6BAAmB;AAAA,IAClD,OAAO;AAAA,IACP,SAAS,mBAAkB;AAAA,EAC7B,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,mBAAmB,CAAC;AAAA,IAC1F,MAAM;AAAA,EACR,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI;AACpB,GAAG;AAEH,SAAS,QAAQ,OAAO,KAAK,KAAK;AAChC,SAAO,CAAC,MAAM,KAAK,KAAK,SAAS,OAAO,SAAS;AACnD;AACA,IAAM,0BAA0B;AAAA,EAC9B,OAAO;AAAA,IACL,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,WAAW;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,IACP;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,IACP;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AACA,IAAM,mBAAN,MAAM,kBAAiB;AAAA,EACrB,OAAO,YAAO,SAAS,yBAAyB,mBAAmB;AACjE,WAAO,KAAK,qBAAqB,mBAAkB;AAAA,EACrD;AAAA,EACA,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,MAAM;AAAA,EACR,CAAC;AAAA,EACD,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,WAAW,CAAC;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,kBAAkB,CAAC;AAAA,IACzF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,WAAW,CAAC;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AACH,IAAM,sBAAN,MAAM,qBAAoB;AAAA,EACxB,OAAO,YAAO,SAAS,4BAA4B,mBAAmB;AACpE,WAAO,KAAK,qBAAqB,sBAAqB;AAAA,EACxD;AAAA,EACA,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,MAAM;AAAA,EACR,CAAC;AAAA,EACD,OAAO,YAAsB,gBAAG,2BAAiB;AAAA,IAC/C,WAAW,CAAC,yBAAyB,CAAC;AAAA,EACxC,CAAC;AACH;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,qBAAqB,CAAC;AAAA,IAC5F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,WAAW,CAAC,yBAAyB,CAAC;AAAA,IACxC,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AACH,SAAS,yBAAyB,UAAU,yBAAyB;AACnE,SAAO,CAAC;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,EACZ,GAAG;AAAA,IACD,SAAS;AAAA,IACT,UAAU;AAAA,EACZ,CAAC;AACH;","names":["_c0","_c1","_c2","_c3","_c0","_c1"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10]}
|