{"version":3,"file":"genesis-shell.mjs","sources":["../../../projects/genesis-shell/src/lib/@genesis/components/loading-bar/loading-bar.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/loading-bar/loading-bar.component.html","../../../projects/genesis-shell/src/lib/@genesis/animations/defaults.ts","../../../projects/genesis-shell/src/lib/@genesis/animations/expand-collapse.ts","../../../projects/genesis-shell/src/lib/@genesis/animations/fade.ts","../../../projects/genesis-shell/src/lib/@genesis/animations/shake.ts","../../../projects/genesis-shell/src/lib/@genesis/animations/slide.ts","../../../projects/genesis-shell/src/lib/@genesis/animations/zoom.ts","../../../projects/genesis-shell/src/lib/@genesis/animations/public-api.ts","../../../projects/genesis-shell/src/lib/@genesis/directives/scrollbar/scrollbar.types.ts","../../../projects/genesis-shell/src/lib/@genesis/directives/scrollbar/scrollbar.directive.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/navigation.service.ts","../../../projects/genesis-shell/src/lib/@genesis/services/utils/utils.service.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/basic/basic.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/basic/basic.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/divider/divider.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/divider/divider.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/collapsable/collapsable.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/collapsable/collapsable.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/spacer/spacer.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/spacer/spacer.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/group/group.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/group/group.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/aside/aside.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/components/aside/aside.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/vertical.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/vertical/vertical.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/common/apps/apps.service.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/apps/apps.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/apps/apps.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/common/languages/languages.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/languages/languages.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/common/notifications/notifications.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/notifications/notifications.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/common/shortcuts/shortcuts.service.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/shortcuts/shortcuts.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/shortcuts/shortcuts.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/common/user/user.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/user/user.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/common/chat-agent/chat-agent.service.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/chat-agent/chat-agent.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/chat-agent/chat-agent.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/common/invitation/invitation.service.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/invitation/invitation.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/invitation/invitation.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/common/search/search.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/search/search.component.html","../../../projects/genesis-shell/src/lib/@genesis/fullscreen/fullscreen.component.ts","../../../projects/genesis-shell/src/lib/@genesis/fullscreen/fullscreen.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/alert/alert.service.ts","../../../projects/genesis-shell/src/lib/@genesis/components/alert/alert.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/alert/alert.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/card/card.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/card/card.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/components/basic/basic.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/components/basic/basic.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/components/divider/divider.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/components/divider/divider.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/components/branch/branch.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/components/branch/branch.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/components/spacer/spacer.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/components/spacer/spacer.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/horizontal.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/navigation/horizontal/horizontal.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/genesis-breadcrumbs/genesis-breadcrumbs.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/genesis-breadcrumbs/genesis-breadcrumbs.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/genesis-child-sidebar/child-sidebar/child-sidebar.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/genesis-child-sidebar/child-sidebar/child-sidebar.component.html","../../../projects/genesis-shell/src/lib/@genesis/services/config/config.constants.ts","../../../projects/genesis-shell/src/lib/@genesis/services/config/config.service.ts","../../../projects/genesis-shell/src/lib/@genesis/services/media-watcher/media-watcher.service.ts","../../../projects/genesis-shell/src/lib/@genesis/components/genesis-child-sidebar/genesis-child-sidebar.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/genesis-child-sidebar/genesis-child-sidebar.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/breadcrumb/breadcrumb.service.ts","../../../projects/genesis-shell/src/lib/@genesis/components/breadcrumb/breadcrumb.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/breadcrumb/breadcrumb.component.html","../../../projects/genesis-shell/src/lib/@genesis/components/genesis-drawer/genesis-drawer.component.ts","../../../projects/genesis-shell/src/lib/@genesis/components/genesis-drawer/genesis-drawer.component.html","../../../projects/genesis-shell/src/lib/@genesis/directives/scroll-reset/scroll-reset.directive.ts","../../../projects/genesis-shell/src/lib/@genesis/services/platform/platform.service.ts","../../../projects/genesis-shell/src/lib/@genesis/services/splash-screen/splash-screen.service.ts","../../../projects/genesis-shell/src/lib/@genesis/version/version.ts","../../../projects/genesis-shell/src/lib/@genesis/version/genesis-version.ts","../../../projects/genesis-shell/src/lib/@genesis/auth/callback/callback.component.ts","../../../projects/genesis-shell/src/lib/@genesis/auth/callback/callback.component.html","../../../projects/genesis-shell/src/lib/@genesis/auth/callback/callback-routing.module.ts","../../../projects/genesis-shell/src/lib/@genesis/auth/login/login.component.ts","../../../projects/genesis-shell/src/lib/@genesis/auth/login/login.component.html","../../../projects/genesis-shell/src/lib/@genesis/auth/login/login-routing.module.ts","../../../projects/genesis-shell/src/lib/@genesis/auth/logout/logout.component.ts","../../../projects/genesis-shell/src/lib/@genesis/auth/logout/logout.component.html","../../../projects/genesis-shell/src/lib/@genesis/auth/logout/logout-routing.module.ts","../../../projects/genesis-shell/src/lib/@genesis/auth/public-api.ts","../../../projects/genesis-shell/src/lib/@genesis/index.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/theme-switch/theme-switch.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/common/theme-switch/theme-switch.component.html","../../../projects/genesis-shell/src/lib/core/navigation/navigation.service.ts","../../../projects/genesis-shell/src/lib/layout/layouts/classy/classy.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/classy/classy.component.html","../../../projects/genesis-shell/src/lib/core/services/tenant-api.service.ts","../../../projects/genesis-shell/src/service.module.ts","../../../projects/genesis-shell/src/lib/layout/layouts/empty/empty.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/empty/empty.component.html","../../../projects/genesis-shell/src/lib/layout/layouts/modern/modern.component.ts","../../../projects/genesis-shell/src/lib/layout/layouts/modern/modern.component.html","../../../projects/genesis-shell/src/lib/layout/layout.component.ts","../../../projects/genesis-shell/src/lib/layout/layout.component.html","../../../projects/genesis-shell/src/lib/core/commond-models/response.ts","../../../projects/genesis-shell/src/lib/core/gensis-id-generator.ts","../../../projects/genesis-shell/src/lib/core/icons/icons.service.ts","../../../projects/genesis-shell/src/lib/core/icons/icons.provider.ts","../../../projects/genesis-shell/src/lib/core/safe-html-pipe.pipe.ts","../../../projects/genesis-shell/src/lib/core/time-only-pipe.ts","../../../projects/genesis-shell/src/lib/core/pretty-json/print-pretty-json.pipe.ts","../../../projects/genesis-shell/src/lib/core/services/common-static-datas.ts","../../../projects/genesis-shell/src/lib/core/services/route.service.ts","../../../projects/genesis-shell/src/lib/core/transloco/transloco.http-loader.ts","../../../projects/genesis-shell/src/lib/core/transloco/transloco.provider.ts","../../../projects/genesis-shell/src/lib/core/index.ts","../../../projects/genesis-shell/src/public-api.ts","../../../projects/genesis-shell/src/genesis-shell.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgIf } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { GenesisLoadingService } from 'genesis-coreservice';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n    selector: 'genesis-loading-bar',\n    templateUrl: './loading-bar.component.html',\n    encapsulation: ViewEncapsulation.None,\n    exportAs: 'genesisLoadingBar',\n    standalone: true,\n    imports: [NgIf, MatProgressBarModule],\n})\nexport class GenesisLoadingBarComponent implements OnChanges, OnInit, OnDestroy {\n    @Input() autoMode: boolean = true;\n    mode: 'determinate' | 'indeterminate';\n    progress: number = 0;\n    show: boolean = false;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(private genesisLoadingService: GenesisLoadingService) {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On changes\n     *\n     * @param changes\n     */\n    ngOnChanges(changes: SimpleChanges): void {\n        // Auto mode\n        if ('autoMode' in changes) {\n            // Set the auto mode in the service\n            this.genesisLoadingService.setAutoMode(coerceBooleanProperty(changes.autoMode.currentValue));\n        }\n    }\n\n    /**\n     * On init\n     */\n    ngOnInit(): void {\n        // Subscribe to the service\n        this.genesisLoadingService.mode$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((value) => {\n                this.mode = value;\n            });\n\n        this.genesisLoadingService.progress$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((value) => {\n                this.progress = value;\n            });\n\n        this.genesisLoadingService.show$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((value) => {\n                this.show = value;\n            });\n\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n}\n","<ng-container *ngIf=\"show\">\n    <mat-progress-bar\n        [mode]=\"mode\"\n        [value]=\"progress\"></mat-progress-bar>\n</ng-container>\n","export class GenesisAnimationCurves\n{\n    static standard = 'cubic-bezier(0.4, 0.0, 0.2, 1)';\n    static deceleration = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\n    static acceleration = 'cubic-bezier(0.4, 0.0, 1, 1)';\n    static sharp = 'cubic-bezier(0.4, 0.0, 0.6, 1)';\n}\n\nexport class GenesisAnimationDurations\n{\n    static complex = '375ms';\n    static entering = '225ms';\n    static exiting = '195ms';\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { GenesisAnimationCurves, GenesisAnimationDurations } from './defaults';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Expand / collapse\n// -----------------------------------------------------------------------------------------------------\nconst expandCollapse = trigger('expandCollapse',\n    [\n        state('void, collapsed',\n            style({\n                height: '0',\n            }),\n        ),\n\n        state('*, expanded',\n            style('*'),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void <=> false, collapsed <=> false, expanded <=> false', []),\n\n        // Transition\n        transition('void <=> *, collapsed <=> expanded',\n            animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\nexport { expandCollapse };\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { GenesisAnimationCurves, GenesisAnimationDurations } from './defaults';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in\n// -----------------------------------------------------------------------------------------------------\nconst fadeIn = trigger('fadeIn',\n    [\n        state('void',\n            style({\n                opacity: 0,\n            }),\n        ),\n\n        state('*',\n            style({\n                opacity: 1,\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in top\n// -----------------------------------------------------------------------------------------------------\nconst fadeInTop = trigger('fadeInTop',\n    [\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(0, -100%, 0)',\n            }),\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in bottom\n// -----------------------------------------------------------------------------------------------------\nconst fadeInBottom = trigger('fadeInBottom',\n    [\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(0, 100%, 0)',\n            }),\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in left\n// -----------------------------------------------------------------------------------------------------\nconst fadeInLeft = trigger('fadeInLeft',\n    [\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(-100%, 0, 0)',\n            }),\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in right\n// -----------------------------------------------------------------------------------------------------\nconst fadeInRight = trigger('fadeInRight',\n    [\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(100%, 0, 0)',\n            }),\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out\n// -----------------------------------------------------------------------------------------------------\nconst fadeOut = trigger('fadeOut',\n    [\n        state('*',\n            style({\n                opacity: 1,\n            }),\n        ),\n\n        state('void',\n            style({\n                opacity: 0,\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out top\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutTop = trigger('fadeOutTop',\n    [\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(0, -100%, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out bottom\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutBottom = trigger('fadeOutBottom',\n    [\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(0, 100%, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out left\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutLeft = trigger('fadeOutLeft',\n    [\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(-100%, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out right\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutRight = trigger('fadeOutRight',\n    [\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(100%, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\nexport { fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight, fadeOut, fadeOutTop, fadeOutBottom, fadeOutLeft, fadeOutRight };\n","import { animate, keyframes, style, transition, trigger } from '@angular/animations';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Shake\n// -----------------------------------------------------------------------------------------------------\nconst shake = trigger('shake',\n    [\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *, * => true',\n            [\n                animate('{{timings}}',\n                    keyframes([\n                        style({\n                            transform: 'translate3d(0, 0, 0)',\n                            offset   : 0,\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.1,\n                        }),\n                        style({\n                            transform: 'translate3d(10px, 0, 0)',\n                            offset   : 0.2,\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.3,\n                        }),\n                        style({\n                            transform: 'translate3d(10px, 0, 0)',\n                            offset   : 0.4,\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.5,\n                        }),\n                        style({\n                            transform: 'translate3d(10px, 0, 0)',\n                            offset   : 0.6,\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.7,\n                        }),\n                        style({\n                            transform: 'translate3d(10px, 0, 0)',\n                            offset   : 0.8,\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.9,\n                        }),\n                        style({\n                            transform: 'translate3d(0, 0, 0)',\n                            offset   : 1,\n                        }),\n                    ]),\n                ),\n            ],\n            {\n                params: {\n                    timings: '0.8s cubic-bezier(0.455, 0.03, 0.515, 0.955)',\n                },\n            },\n        ),\n    ],\n);\n\nexport { shake };\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { GenesisAnimationCurves, GenesisAnimationDurations } from './defaults';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in top\n// -----------------------------------------------------------------------------------------------------\nconst slideInTop = trigger('slideInTop',\n    [\n        state('void',\n            style({\n                transform: 'translate3d(0, -100%, 0)',\n            }),\n        ),\n\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in bottom\n// -----------------------------------------------------------------------------------------------------\nconst slideInBottom = trigger('slideInBottom',\n    [\n        state('void',\n            style({\n                transform: 'translate3d(0, 100%, 0)',\n            }),\n        ),\n\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in left\n// -----------------------------------------------------------------------------------------------------\nconst slideInLeft = trigger('slideInLeft',\n    [\n        state('void',\n            style({\n                transform: 'translate3d(-100%, 0, 0)',\n            }),\n        ),\n\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in right\n// -----------------------------------------------------------------------------------------------------\nconst slideInRight = trigger('slideInRight',\n    [\n        state('void',\n            style({\n                transform: 'translate3d(100%, 0, 0)',\n            }),\n        ),\n\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out top\n// -----------------------------------------------------------------------------------------------------\nconst slideOutTop = trigger('slideOutTop',\n    [\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        state('void',\n            style({\n                transform: 'translate3d(0, -100%, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out bottom\n// -----------------------------------------------------------------------------------------------------\nconst slideOutBottom = trigger('slideOutBottom',\n    [\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        state('void',\n            style({\n                transform: 'translate3d(0, 100%, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out left\n// -----------------------------------------------------------------------------------------------------\nconst slideOutLeft = trigger('slideOutLeft',\n    [\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        state('void',\n            style({\n                transform: 'translate3d(-100%, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out right\n// -----------------------------------------------------------------------------------------------------\nconst slideOutRight = trigger('slideOutRight',\n    [\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)',\n            }),\n        ),\n\n        state('void',\n            style({\n                transform: 'translate3d(100%, 0, 0)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\nexport { slideInTop, slideInBottom, slideInLeft, slideInRight, slideOutTop, slideOutBottom, slideOutLeft, slideOutRight };\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { GenesisAnimationCurves, GenesisAnimationDurations } from './defaults';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Zoom in\n// -----------------------------------------------------------------------------------------------------\nconst zoomIn = trigger('zoomIn',\n    [\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'scale(0.5)',\n            }),\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'scale(1)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.entering} ${GenesisAnimationCurves.deceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Zoom out\n// -----------------------------------------------------------------------------------------------------\nconst zoomOut = trigger('zoomOut',\n    [\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'scale(1)',\n            }),\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'scale(0.5)',\n            }),\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${GenesisAnimationDurations.exiting} ${GenesisAnimationCurves.acceleration}`,\n                },\n            },\n        ),\n    ],\n);\n\nexport { zoomIn, zoomOut };\n\n","import { expandCollapse } from './expand-collapse';\nimport { fadeIn, fadeInBottom, fadeInLeft, fadeInRight, fadeInTop, fadeOut, fadeOutBottom, fadeOutLeft, fadeOutRight, fadeOutTop } from './fade';\nimport { shake } from './shake';\nimport { slideInBottom, slideInLeft, slideInRight, slideInTop, slideOutBottom, slideOutLeft, slideOutRight, slideOutTop } from './slide';\nimport { zoomIn, zoomOut } from './zoom';\n\nexport const genesisAnimations = [\n    expandCollapse,\n    fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight,\n    fadeOut, fadeOutTop, fadeOutBottom, fadeOutLeft, fadeOutRight,\n    shake,\n    slideInTop, slideInBottom, slideInLeft, slideInRight,\n    slideOutTop, slideOutBottom, slideOutLeft, slideOutRight,\n    zoomIn, zoomOut,\n];\n","export class ScrollbarGeometry\n{\n    public x: number;\n    public y: number;\n\n    public w: number;\n    public h: number;\n\n    constructor(x: number, y: number, w: number, h: number)\n    {\n        this.x = x;\n        this.y = y;\n        this.w = w;\n        this.h = h;\n    }\n}\n\nexport class ScrollbarPosition\n{\n    public x: number | 'start' | 'end';\n    public y: number | 'start' | 'end';\n\n    constructor(x: number | 'start' | 'end', y: number | 'start' | 'end')\n    {\n        this.x = x;\n        this.y = y;\n    }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport { Directive, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { merge } from 'lodash-es';\nimport PerfectScrollbar from 'perfect-scrollbar';\nimport { debounceTime, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ScrollbarGeometry, ScrollbarPosition } from './scrollbar.types';\n\n/**\n * Wrapper directive for the Perfect Scrollbar: https://github.com/mdbootstrap/perfect-scrollbar\n */\n@Directive({\n    selector  : '[genesisScrollbar]',\n    exportAs  : 'genesisScrollbar',\n    standalone: true,\n})\nexport class GenesisScrollbarDirective implements OnChanges, OnInit, OnDestroy\n{\n    /* eslint-disable @typescript-eslint/naming-convention */\n    static ngAcceptInputType_genesisScrollbar: BooleanInput;\n    /* eslint-enable @typescript-eslint/naming-convention */\n\n    @Input() genesisScrollbar: boolean = true;\n    @Input() genesisScrollbarOptions: PerfectScrollbar.Options;\n\n    private _animation?: number | null = null;\n    private _options: PerfectScrollbar.Options;\n    private _ps?: PerfectScrollbar | null | undefined = null;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _elementRef: ElementRef,\n        private _platform: Platform,\n        private _router: Router,\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Getter for _elementRef\n     */\n    get elementRef(): ElementRef\n    {\n        return this._elementRef;\n    }\n\n    /**\n     * Getter for _ps\n     */\n    get ps(): PerfectScrollbar | null | undefined\n    {\n        return this._ps;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On changes\n     *\n     * @param changes\n     */\n    ngOnChanges(changes: SimpleChanges): void\n    {\n        // Enabled\n        if ( 'genesisScrollbar' in changes )\n        {\n            // Interpret empty string as 'true'\n            this.genesisScrollbar = coerceBooleanProperty(changes.genesisScrollbar.currentValue);\n\n            // If enabled, init the directive\n            if ( this.genesisScrollbar )\n            {\n                this._init();\n            }\n            // Otherwise destroy it\n            else\n            {\n                this._destroy();\n            }\n        }\n\n        // Scrollbar options\n        if ( 'genesisScrollbarOptions' in changes )\n        {\n            // Merge the options\n            this._options = merge({}, this._options, changes.genesisScrollbarOptions.currentValue);\n\n            // Return if not initialized\n            if ( !this._ps )\n            {\n                return;\n            }\n\n            // Destroy and re-init the PerfectScrollbar to update its options\n            setTimeout(() =>\n            {\n                this._destroy();\n            });\n\n            setTimeout(() =>\n            {\n                this._init();\n            });\n        }\n    }\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to window resize event\n        fromEvent(window, 'resize')\n            .pipe(\n                takeUntil(this._unsubscribeAll),\n                debounceTime(150),\n            )\n            .subscribe(() =>\n            {\n                // Update the PerfectScrollbar\n                this.update();\n            });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        this._destroy();\n\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Is enabled\n     */\n    isEnabled(): boolean\n    {\n        return this.genesisScrollbar;\n    }\n\n    /**\n     * Update the scrollbar\n     */\n    update(): void\n    {\n        // Return if not initialized\n        if ( !this._ps )\n        {\n            return;\n        }\n\n        // Update the PerfectScrollbar\n        this._ps.update();\n    }\n\n    /**\n     * Destroy the scrollbar\n     */\n    destroy(): void\n    {\n        this.ngOnDestroy();\n    }\n\n    /**\n     * Returns the geometry of the scrollable element\n     *\n     * @param prefix\n     */\n    geometry(prefix: string = 'scroll'): ScrollbarGeometry\n    {\n        return new ScrollbarGeometry(\n            this._elementRef.nativeElement[prefix + 'Left'],\n            this._elementRef.nativeElement[prefix + 'Top'],\n            this._elementRef.nativeElement[prefix + 'Width'],\n            this._elementRef.nativeElement[prefix + 'Height']);\n    }\n\n    /**\n     * Returns the position of the scrollable element\n     *\n     * @param absolute\n     */\n    position(absolute: boolean = false): ScrollbarPosition\n    {\n        let scrollbarPosition;\n\n        if ( !absolute && this._ps )\n        {\n            scrollbarPosition = new ScrollbarPosition(\n                this._ps.reach.x || 0,\n                this._ps.reach.y || 0,\n            );\n        }\n        else\n        {\n            scrollbarPosition = new ScrollbarPosition(\n                this._elementRef.nativeElement.scrollLeft,\n                this._elementRef.nativeElement.scrollTop,\n            );\n        }\n\n        return scrollbarPosition;\n    }\n\n    /**\n     * Scroll to\n     *\n     * @param x\n     * @param y\n     * @param speed\n     */\n    scrollTo(x: number, y?: number, speed?: number): void\n    {\n        if ( y == null && speed == null )\n        {\n            this.animateScrolling('scrollTop', x, speed);\n        }\n        else\n        {\n            if ( x != null )\n            {\n                this.animateScrolling('scrollLeft', x, speed);\n            }\n\n            if ( y != null )\n            {\n                this.animateScrolling('scrollTop', y, speed);\n            }\n        }\n    }\n\n    /**\n     * Scroll to X\n     *\n     * @param x\n     * @param speed\n     */\n    scrollToX(x: number, speed?: number): void\n    {\n        this.animateScrolling('scrollLeft', x, speed);\n    }\n\n    /**\n     * Scroll to Y\n     *\n     * @param y\n     * @param speed\n     */\n    scrollToY(y: number, speed?: number): void\n    {\n        this.animateScrolling('scrollTop', y, speed);\n    }\n\n    /**\n     * Scroll to top\n     *\n     * @param offset\n     * @param speed\n     */\n    scrollToTop(offset: number = 0, speed?: number): void\n    {\n        this.animateScrolling('scrollTop', offset, speed);\n    }\n\n    /**\n     * Scroll to bottom\n     *\n     * @param offset\n     * @param speed\n     */\n    scrollToBottom(offset: number = 0, speed?: number): void\n    {\n        const top = this._elementRef.nativeElement.scrollHeight - this._elementRef.nativeElement.clientHeight;\n        this.animateScrolling('scrollTop', top - offset, speed);\n    }\n\n    /**\n     * Scroll to left\n     *\n     * @param offset\n     * @param speed\n     */\n    scrollToLeft(offset: number = 0, speed?: number): void\n    {\n        this.animateScrolling('scrollLeft', offset, speed);\n    }\n\n    /**\n     * Scroll to right\n     *\n     * @param offset\n     * @param speed\n     */\n    scrollToRight(offset: number = 0, speed?: number): void\n    {\n        const left = this._elementRef.nativeElement.scrollWidth - this._elementRef.nativeElement.clientWidth;\n        this.animateScrolling('scrollLeft', left - offset, speed);\n    }\n\n    /**\n     * Scroll to element\n     *\n     * @param qs\n     * @param offset\n     * @param ignoreVisible If true, scrollToElement won't happen if element is already inside the current viewport\n     * @param speed\n     */\n    scrollToElement(qs: string, offset: number = 0, ignoreVisible: boolean = false, speed?: number): void\n    {\n        const element = this._elementRef.nativeElement.querySelector(qs);\n\n        if ( !element )\n        {\n            return;\n        }\n\n        const elementPos = element.getBoundingClientRect();\n        const scrollerPos = this._elementRef.nativeElement.getBoundingClientRect();\n\n        if ( this._elementRef.nativeElement.classList.contains('ps--active-x') )\n        {\n            if ( ignoreVisible && elementPos.right <= (scrollerPos.right - Math.abs(offset)) )\n            {\n                return;\n            }\n\n            const currentPos = this._elementRef.nativeElement['scrollLeft'];\n            const position = elementPos.left - scrollerPos.left + currentPos;\n\n            this.animateScrolling('scrollLeft', position + offset, speed);\n        }\n\n        if ( this._elementRef.nativeElement.classList.contains('ps--active-y') )\n        {\n            if ( ignoreVisible && elementPos.bottom <= (scrollerPos.bottom - Math.abs(offset)) )\n            {\n                return;\n            }\n\n            const currentPos = this._elementRef.nativeElement['scrollTop'];\n            const position = elementPos.top - scrollerPos.top + currentPos;\n\n            this.animateScrolling('scrollTop', position + offset, speed);\n        }\n    }\n\n    /**\n     * Animate scrolling\n     *\n     * @param target\n     * @param value\n     * @param speed\n     */\n    animateScrolling(target: string, value: number, speed?: number): void\n    {\n        if ( this._animation )\n        {\n            window.cancelAnimationFrame(this._animation);\n            this._animation = null;\n        }\n\n        if ( !speed || typeof window === 'undefined' )\n        {\n            this._elementRef.nativeElement[target] = value;\n        }\n        else if ( value !== this._elementRef.nativeElement[target] )\n        {\n            let newValue = 0;\n            let scrollCount = 0;\n\n            let oldTimestamp = performance.now();\n            let oldValue = this._elementRef.nativeElement[target];\n\n            const cosParameter = (oldValue - value) / 2;\n\n            const step = (newTimestamp: number): void =>\n            {\n                scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n                newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n\n                // Only continue animation if scroll position has not changed\n                if ( this._elementRef.nativeElement[target] === oldValue )\n                {\n                    if ( scrollCount >= Math.PI )\n                    {\n                        this.animateScrolling(target, value, 0);\n                    }\n                    else\n                    {\n                        this._elementRef.nativeElement[target] = newValue;\n\n                        // On a zoomed out page the resulting offset may differ\n                        oldValue = this._elementRef.nativeElement[target];\n                        oldTimestamp = newTimestamp;\n\n                        this._animation = window.requestAnimationFrame(step);\n                    }\n                }\n            };\n\n            window.requestAnimationFrame(step);\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Initialize\n     *\n     * @private\n     */\n    private _init(): void\n    {\n        // Return if already initialized\n        if ( this._ps )\n        {\n            return;\n        }\n\n        // Return if on mobile or not on browser\n        if ( this._platform.ANDROID || this._platform.IOS || !this._platform.isBrowser )\n        {\n            this.genesisScrollbar = false;\n            return;\n        }\n\n        // Initialize the PerfectScrollbar\n        this._ps = new PerfectScrollbar(this._elementRef.nativeElement, {...this._options});\n    }\n\n    /**\n     * Destroy\n     *\n     * @private\n     */\n    private _destroy(): void\n    {\n        // Return if not initialized\n        if ( !this._ps )\n        {\n            return;\n        }\n\n        // Destroy the PerfectScrollbar\n        this._ps.destroy();\n\n        // Clean up\n        this._ps = null;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { GenesisNavigationItem } from './navigation.types';\n\n@Injectable({providedIn: 'root'})\nexport class GenesisNavigationService\n{\n    private _componentRegistry: Map<string, any> = new Map<string, any>();\n    private _navigationStore: Map<string, GenesisNavigationItem[]> = new Map<string, any>();\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Register navigation component\n     *\n     * @param name\n     * @param component\n     */\n    registerComponent(name: string, component: any): void\n    {\n        this._componentRegistry.set(name, component);\n    }\n\n    /**\n     * Deregister navigation component\n     *\n     * @param name\n     */\n    deregisterComponent(name: string): void\n    {\n        this._componentRegistry.delete(name);\n    }\n\n    /**\n     * Get navigation component from the registry\n     *\n     * @param name\n     */\n    getComponent<T>(name: string): T\n    {\n        return this._componentRegistry.get(name);\n    }\n\n    /**\n     * Store the given navigation with the given key\n     *\n     * @param key\n     * @param navigation\n     */\n    storeNavigation(key: string, navigation: GenesisNavigationItem[]): void\n    {\n        // Add to the store\n        this._navigationStore.set(key, navigation);\n    }\n\n    /**\n     * Get navigation from storage by key\n     *\n     * @param key\n     */\n    getNavigation(key: string): GenesisNavigationItem[]\n    {\n        return this._navigationStore.get(key) ?? [];\n    }\n\n    /**\n     * Delete the navigation from the storage\n     *\n     * @param key\n     */\n    deleteNavigation(key: string): void\n    {\n        // Check if the navigation exists\n        if ( !this._navigationStore.has(key) )\n        {\n            console.warn(`Navigation with the key '${key}' does not exist in the store.`);\n        }\n\n        // Delete from the storage\n        this._navigationStore.delete(key);\n    }\n\n    /**\n     * Utility function that returns a flattened\n     * version of the given navigation array\n     *\n     * @param navigation\n     * @param flatNavigation\n     */\n    getFlatNavigation(navigation: GenesisNavigationItem[], flatNavigation: GenesisNavigationItem[] = []): GenesisNavigationItem[]\n    {\n        for ( const item of navigation )\n        {\n            if ( item.type === 'basic' )\n            {\n                flatNavigation.push(item);\n                continue;\n            }\n\n            if ( item.type === 'aside' || item.type === 'collapsable' || item.type === 'group' )\n            {\n                if ( item.children )\n                {\n                    this.getFlatNavigation(item.children, flatNavigation);\n                }\n            }\n        }\n\n        return flatNavigation;\n    }\n\n    /**\n     * Utility function that returns the item\n     * with the given id from given navigation\n     *\n     * @param id\n     * @param navigation\n     */\n    getItem(id: string, navigation: GenesisNavigationItem[]): GenesisNavigationItem | null\n    {\n        if ( !navigation ) { return null; }\n\n        for ( const item of navigation )\n        {\n            if ( item.id === id )\n            {\n                return item;\n            }\n\n            if ( item.children )\n            {\n                const childItem = this.getItem(id, item.children);\n\n                if ( childItem )\n                {\n                    return childItem;\n                }\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * Utility function that returns the item's parent\n     * with the given id from given navigation\n     *\n     * @param id\n     * @param navigation\n     * @param parent\n     */\n    getItemParent(\n        id: string,\n        navigation: GenesisNavigationItem[],\n        parent: GenesisNavigationItem[] | GenesisNavigationItem,\n    ): GenesisNavigationItem[] | GenesisNavigationItem | null\n    {\n        for ( const item of navigation )\n        {\n            if ( item.id === id )\n            {\n                return parent;\n            }\n\n            if ( item.children )\n            {\n                const childItem = this.getItemParent(id, item.children, item);\n\n                if ( childItem )\n                {\n                    return childItem;\n                }\n            }\n        }\n\n        return null;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { IsActiveMatchOptions } from '@angular/router';\n\n@Injectable({providedIn: 'root'})\nexport class GenesisUtilsService\n{\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Get the equivalent \"IsActiveMatchOptions\" options for \"exact = true\".\n     */\n    get exactMatchOptions(): IsActiveMatchOptions\n    {\n        return {\n            paths       : 'exact',\n            fragment    : 'ignored',\n            matrixParams: 'ignored',\n            queryParams : 'exact',\n        };\n    }\n\n    /**\n     * Get the equivalent \"IsActiveMatchOptions\" options for \"exact = false\".\n     */\n    get subsetMatchOptions(): IsActiveMatchOptions\n    {\n        return {\n            paths       : 'subset',\n            fragment    : 'ignored',\n            matrixParams: 'ignored',\n            queryParams : 'subset',\n        };\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Generates a random id\n     *\n     * @param length\n     */\n    randomId(length: number = 10): string\n    {\n        const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n        let name = '';\n\n        for ( let i = 0; i < 10; i++ )\n        {\n            name += chars.charAt(Math.floor(Math.random() * chars.length));\n        }\n\n        return name;\n    }\n}\n","import { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive } from '@angular/router';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisUtilsService } from '../../../../../services/utils/utils.service';\nimport { GenesisNavigationService } from '../../../navigation.service';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisVerticalNavigationComponent } from '../../vertical.component';\n\n@Component({\n  selector: 'genesis-vertical-navigation-basic-item',\n  templateUrl: './basic.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone     : true,\n  imports        : [\n    NgClass, \n    NgIf, \n    RouterLink, \n    RouterLinkActive, \n    MatTooltipModule, \n    NgTemplateOutlet, \n    MatIconModule,\n    TranslocoModule\n  ],\n})\nexport class GenesisVerticalNavigationBasicItemComponent implements OnInit, OnDestroy {\n  @Input() item: GenesisNavigationItem;\n  @Input() name: string;\n\n  isActiveMatchOptions: IsActiveMatchOptions;\n  private _genesisVerticalNavigationComponent: GenesisVerticalNavigationComponent;\n  private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n  /**\n   * Constructor\n   */\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _genesisNavigationService: GenesisNavigationService,\n    private _genesisUtilsService: GenesisUtilsService,\n  ) {\n    this.isActiveMatchOptions = this._genesisUtilsService.subsetMatchOptions;\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Lifecycle hooks\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * On init\n   */\n  ngOnInit(): void {\n    this.isActiveMatchOptions =\n      this.item.isActiveMatchOptions ?? this.item.exactMatch\n        ? this._genesisUtilsService.exactMatchOptions\n        : this._genesisUtilsService.subsetMatchOptions;\n\n    // Get the parent navigation component\n    this._genesisVerticalNavigationComponent = this._genesisNavigationService.getComponent(this.name);\n\n    // Mark for check\n    this._changeDetectorRef.markForCheck();\n\n    // Subscribe to onRefreshed on the navigation component\n    this._genesisVerticalNavigationComponent.onRefreshed.pipe(\n      takeUntil(this._unsubscribeAll),\n    ).subscribe(() => {\n      // Mark for check\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  /**\n   * On destroy\n   */\n  ngOnDestroy(): void {\n    // Unsubscribe from all subscriptions\n    this._unsubscribeAll.next(null);\n    this._unsubscribeAll.complete();\n  }\n}\n","<!-- Item wrapper -->\n<div\n    class=\"genesis-vertical-navigation-item-wrapper\"\n    [class.genesis-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n    [ngClass]=\"item.classes?.wrapper\">\n\n    <!-- Item with an internal link -->\n    <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n        <a\n            class=\"genesis-vertical-navigation-item\"\n            [ngClass]=\"{'genesis-vertical-navigation-item-active-forced': item.active}\"\n            [routerLink]=\"[item.link]\"\n            [fragment]=\"item.fragment ?? null\"\n            [preserveFragment]=\"item.preserveFragment ?? false\"\n            [queryParams]=\"item.queryParams ?? null\"\n            [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n            [routerLinkActive]=\"'genesis-vertical-navigation-item-active'\"\n            [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n            [matTooltip]=\"item.tooltip || ''\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </a>\n    </ng-container>\n\n    <!-- Item with an external link -->\n    <ng-container *ngIf=\"item.link && item.externalLink && !item.function && !item.disabled\">\n        <a\n            class=\"genesis-vertical-navigation-item\"\n            [href]=\"item.link\"\n            [target]=\"item.target || '_self'\"\n            [matTooltip]=\"item.tooltip || ''\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </a>\n    </ng-container>\n\n    <!-- Item with a function -->\n    <ng-container *ngIf=\"!item.link && item.function && !item.disabled\">\n        <div\n            class=\"genesis-vertical-navigation-item\"\n            [ngClass]=\"{'genesis-vertical-navigation-item-active-forced': item.active}\"\n            [matTooltip]=\"item.tooltip || ''\"\n            (click)=\"item.function(item)\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </div>\n    </ng-container>\n\n    <!-- Item with an internal link and function -->\n    <ng-container *ngIf=\"item.link && !item.externalLink && item.function && !item.disabled\">\n        <a\n            class=\"genesis-vertical-navigation-item\"\n            [ngClass]=\"{'genesis-vertical-navigation-item-active-forced': item.active}\"\n            [routerLink]=\"[item.link]\"\n            [fragment]=\"item.fragment ?? null\"\n            [preserveFragment]=\"item.preserveFragment ?? false\"\n            [queryParams]=\"item.queryParams ?? null\"\n            [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n            [routerLinkActive]=\"'genesis-vertical-navigation-item-active'\"\n            [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n            [matTooltip]=\"item.tooltip || ''\"\n            (click)=\"item.function(item)\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </a>\n    </ng-container>\n\n    <!-- Item with an external link and function -->\n    <ng-container *ngIf=\"item.link && item.externalLink && item.function && !item.disabled\">\n        <a\n            class=\"genesis-vertical-navigation-item\"\n            [href]=\"item.link\"\n            [target]=\"item.target || '_self'\"\n            [matTooltip]=\"item.tooltip || ''\"\n            (click)=\"item.function(item)\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </a>\n    </ng-container>\n\n    <!-- Item with a no link and no function -->\n    <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n        <div\n            class=\"genesis-vertical-navigation-item\"\n            [ngClass]=\"{'genesis-vertical-navigation-item-active-forced': item.active}\"\n            [matTooltip]=\"item.tooltip || ''\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </div>\n    </ng-container>\n\n    <!-- Item is disabled -->\n    <ng-container *ngIf=\"item.disabled\">\n        <div\n            class=\"genesis-vertical-navigation-item genesis-vertical-navigation-item-disabled\"\n            [matTooltip]=\"item.tooltip || ''\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </div>\n    </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n    <!-- Icon -->\n    <ng-container *ngIf=\"item.icon\">\n        <mat-icon\n            class=\"genesis-vertical-navigation-item-icon\"\n            [ngClass]=\"item.classes?.icon\"\n            [svgIcon]=\"item.icon\"></mat-icon>\n    </ng-container>\n\n    <!-- Title & Subtitle -->\n    <div class=\"genesis-vertical-navigation-item-title-wrapper\">\n        <div class=\"genesis-vertical-navigation-item-title\">\n            <span [ngClass]=\"item.classes?.title\">\n                {{ item.translationKey ? (item.translationKey | transloco) : item.title }}\n            </span>\n        </div>\n        <ng-container *ngIf=\"item.subtitle\">\n            <div class=\"genesis-vertical-navigation-item-subtitle\">\n                <span [ngClass]=\"item.classes?.subtitle\">\n                    {{item.subtitle}}\n                </span>\n            </div>\n        </ng-container>\n    </div>\n\n    <!-- Badge -->\n    <ng-container *ngIf=\"item.badge\">\n        <div class=\"genesis-vertical-navigation-item-badge\">\n            <div\n                class=\"genesis-vertical-navigation-item-badge-content\"\n                [ngClass]=\"item.badge.classes\">\n                {{item.badge.title}}\n            </div>\n        </div>\n    </ng-container>\n\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisVerticalNavigationComponent } from '../../vertical.component';\nimport { GenesisNavigationService } from '../../../navigation.service';\nimport { NgClass } from '@angular/common';\n\n@Component({\n    selector: 'genesis-vertical-navigation-divider-item',\n    templateUrl: './divider.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone     : true,\n    imports        : [NgClass]\n})\nexport class GenesisVerticalNavigationDividerItemComponent implements OnInit, OnDestroy {\n    @Input() item: GenesisNavigationItem;\n    @Input() name: string;\n\n    private _genesisVerticalNavigationComponent: GenesisVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _genesisNavigationService: GenesisNavigationService,\n    ) {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void {\n        // Get the parent navigation component\n        this._genesisVerticalNavigationComponent = this._genesisNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._genesisVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll),\n        ).subscribe(() => {\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n}\n","<!-- Divider -->\n<div\n    class=\"genesis-vertical-navigation-item-wrapper divider\"\n    [ngClass]=\"item.classes?.wrapper\"></div>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit, forwardRef } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { Subject, filter, takeUntil } from 'rxjs';\nimport { genesisAnimations } from '../../../../../animations/public-api';\nimport { GenesisNavigationService } from '../../../navigation.service';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisVerticalNavigationComponent } from '../../vertical.component';\nimport { GenesisVerticalNavigationBasicItemComponent } from '../basic/basic.component';\nimport { GenesisVerticalNavigationDividerItemComponent } from '../divider/divider.component';\n\n@Component({\n  selector: 'genesis-vertical-navigation-collapsable-item',\n  templateUrl: './collapsable.component.html',\n  animations: genesisAnimations,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    NgClass,\n    MatTooltipModule,\n    NgIf,\n    MatIconModule,\n    NgFor,\n    GenesisVerticalNavigationBasicItemComponent,\n    forwardRef(() => GenesisVerticalNavigationCollapsableItemComponent),\n    GenesisVerticalNavigationDividerItemComponent,\n    TranslocoModule\n    //GenesisVerticalNavigationGroupItemComponent,\n    //GenesisVerticalNavigationSpacerItemComponent\n  ],\n})\nexport class GenesisVerticalNavigationCollapsableItemComponent implements OnInit, OnDestroy\n{\n    /* eslint-disable @typescript-eslint/naming-convention */\n    static ngAcceptInputType_autoCollapse: BooleanInput;\n    /* eslint-enable @typescript-eslint/naming-convention */\n\n    @Input() autoCollapse: boolean;\n    @Input() item: GenesisNavigationItem;\n    @Input() name: string;\n\n    isCollapsed: boolean = true;\n    isExpanded: boolean = false;\n    private _genesisVerticalNavigationComponent: GenesisVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _router: Router,\n        private _genesisNavigationService: GenesisNavigationService,\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Host binding for component classes\n     */\n    @HostBinding('class') get classList(): any\n    {\n        /* eslint-disable @typescript-eslint/naming-convention */\n        return {\n            'genesis-vertical-navigation-item-collapsed': this.isCollapsed,\n            'genesis-vertical-navigation-item-expanded' : this.isExpanded,\n        };\n        /* eslint-enable @typescript-eslint/naming-convention */\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._genesisVerticalNavigationComponent = this._genesisNavigationService.getComponent(this.name);\n\n        // If the item has a children that has a matching url with the current url, expand...\n        if ( this._hasActiveChild(this.item, this._router.url) )\n        {\n            this.expand();\n        }\n        // Otherwise...\n        else\n        {\n            // If the autoCollapse is on, collapse...\n            if ( this.autoCollapse )\n            {\n                this.collapse();\n            }\n        }\n\n        // Listen for the onCollapsableItemCollapsed from the service\n        this._genesisVerticalNavigationComponent.onCollapsableItemCollapsed\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((collapsedItem) =>\n            {\n                // Check if the collapsed item is null\n                if ( collapsedItem === null )\n                {\n                    return;\n                }\n\n                // Collapse if this is a children of the collapsed item\n                if ( this._isChildrenOf(collapsedItem, this.item) )\n                {\n                    this.collapse();\n                }\n            });\n\n        // Listen for the onCollapsableItemExpanded from the service if the autoCollapse is on\n        if ( this.autoCollapse )\n        {\n            this._genesisVerticalNavigationComponent.onCollapsableItemExpanded\n                .pipe(takeUntil(this._unsubscribeAll))\n                .subscribe((expandedItem) =>\n                {\n                    // Check if the expanded item is null\n                    if ( expandedItem === null )\n                    {\n                        return;\n                    }\n\n                    // Check if this is a parent of the expanded item\n                    if ( this._isChildrenOf(this.item, expandedItem) )\n                    {\n                        return;\n                    }\n\n                    // Check if this has a children with a matching url with the current active url\n                    if ( this._hasActiveChild(this.item, this._router.url) )\n                    {\n                        return;\n                    }\n\n                    // Check if this is the expanded item\n                    if ( this.item === expandedItem )\n                    {\n                        return;\n                    }\n\n                    // If none of the above conditions are matched, collapse this item\n                    this.collapse();\n                });\n        }\n\n        // Attach a listener to the NavigationEnd event\n        this._router.events\n            .pipe(\n                filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n                takeUntil(this._unsubscribeAll),\n            )\n            .subscribe((event: NavigationEnd) =>\n            {\n                // If the item has a children that has a matching url with the current url, expand...\n                if ( this._hasActiveChild(this.item, event.urlAfterRedirects) )\n                {\n                    this.expand();\n                }\n                // Otherwise...\n                else\n                {\n                    // If the autoCollapse is on, collapse...\n                    if ( this.autoCollapse )\n                    {\n                        this.collapse();\n                    }\n                }\n            });\n\n        // Subscribe to onRefreshed on the navigation component\n        this._genesisVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll),\n        ).subscribe(() =>\n        {\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Collapse\n     */\n    collapse(): void\n    {\n        // Return if the item is disabled\n        if ( this.item.disabled )\n        {\n            return;\n        }\n\n        // Return if the item is already collapsed\n        if ( this.isCollapsed )\n        {\n            return;\n        }\n\n        // Collapse it\n        this.isCollapsed = true;\n        this.isExpanded = !this.isCollapsed;\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n\n        // Execute the observable\n        this._genesisVerticalNavigationComponent.onCollapsableItemCollapsed.next(this.item);\n    }\n\n    /**\n     * Expand\n     */\n    expand(): void\n    {\n        // Return if the item is disabled\n        if ( this.item.disabled )\n        {\n            return;\n        }\n\n        // Return if the item is already expanded\n        if ( !this.isCollapsed )\n        {\n            return;\n        }\n\n        // Expand it\n        this.isCollapsed = false;\n        this.isExpanded = !this.isCollapsed;\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n\n        // Execute the observable\n        this._genesisVerticalNavigationComponent.onCollapsableItemExpanded.next(this.item);\n    }\n\n    /**\n     * Toggle collapsable\n     */\n    toggleCollapsable(): void\n    {\n        // Toggle collapse/expand\n        if ( this.isCollapsed )\n        {\n            this.expand();\n        }\n        else\n        {\n            this.collapse();\n        }\n    }\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Check if the given item has the given url\n     * in one of its children\n     *\n     * @param item\n     * @param currentUrl\n     * @private\n     */\n    private _hasActiveChild(item: GenesisNavigationItem, currentUrl: string): boolean\n    {\n        const children = item.children;\n\n        if ( !children )\n        {\n            return false;\n        }\n\n        for ( const child of children )\n        {\n            if ( child.children )\n            {\n                if ( this._hasActiveChild(child, currentUrl) )\n                {\n                    return true;\n                }\n            }\n\n            // Check if the child has a link and is active\n            if ( child.link && this._router.isActive(child.link, child.exactMatch || false) )\n            {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * Check if this is a children\n     * of the given item\n     *\n     * @param parent\n     * @param item\n     * @private\n     */\n    private _isChildrenOf(parent: GenesisNavigationItem, item: GenesisNavigationItem): boolean\n    {\n        const children = parent.children;\n\n        if ( !children )\n        {\n            return false;\n        }\n\n        if ( children.indexOf(item) > -1 )\n        {\n            return true;\n        }\n\n        for ( const child of children )\n        {\n            if ( child.children )\n            {\n                if ( this._isChildrenOf(child, item) )\n                {\n                    return true;\n                }\n            }\n        }\n\n        return false;\n    }\n}\n","<div\n    class=\"genesis-vertical-navigation-item-wrapper\"\n    [class.genesis-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n    [ngClass]=\"item.classes?.wrapper\">\n\n    <div\n        class=\"genesis-vertical-navigation-item\"\n        [ngClass]=\"{'genesis-vertical-navigation-item-disabled': item.disabled}\"\n        [matTooltip]=\"item.tooltip || ''\"\n        (click)=\"toggleCollapsable()\">\n\n        <!-- Icon -->\n        <ng-container *ngIf=\"item.icon\">\n            <mat-icon\n                class=\"genesis-vertical-navigation-item-icon\"\n                [ngClass]=\"item.classes?.icon\"\n                [svgIcon]=\"item.icon\"></mat-icon>\n        </ng-container>\n\n        <!-- Title & Subtitle -->\n        <div class=\"genesis-vertical-navigation-item-title-wrapper\">\n            <div class=\"genesis-vertical-navigation-item-title\">\n                <span [ngClass]=\"item.classes?.title\">\n                    {{item.translationKey ? (item.translationKey | transloco) : item.title}}\n                </span>\n            </div>\n            <ng-container *ngIf=\"item.subtitle\">\n                <div class=\"genesis-vertical-navigation-item-subtitle\">\n                    <span [ngClass]=\"item.classes?.subtitle\">\n                        {{item.subtitle}}\n                    </span>\n                </div>\n            </ng-container>\n        </div>\n\n        <!-- Badge -->\n        <ng-container *ngIf=\"item.badge\">\n            <div class=\"genesis-vertical-navigation-item-badge\">\n                <div\n                    class=\"genesis-vertical-navigation-item-badge-content\"\n                    [ngClass]=\"item.badge.classes\">\n                    {{item.badge.title}}\n                </div>\n            </div>\n        </ng-container>\n\n        <!-- Arrow -->\n        <mat-icon\n            class=\"genesis-vertical-navigation-item-arrow icon-size-4\"\n            [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n    </div>\n\n</div>\n\n<div\n    class=\"genesis-vertical-navigation-item-children\"\n    *ngIf=\"!isCollapsed\"\n    @expandCollapse>\n\n    <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n        <!-- Skip the hidden items -->\n        <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n            <!-- Basic -->\n            <ng-container *ngIf=\"item.type === 'basic'\">\n                <genesis-vertical-navigation-basic-item\n                    [item]=\"item\"\n                    [name]=\"name\"></genesis-vertical-navigation-basic-item>\n            </ng-container>\n\n            <!-- Collapsable -->\n            <ng-container *ngIf=\"item.type === 'collapsable'\">\n                <genesis-vertical-navigation-collapsable-item\n                    [item]=\"item\"\n                    [name]=\"name\"\n                    [autoCollapse]=\"autoCollapse\"></genesis-vertical-navigation-collapsable-item>\n            </ng-container>\n\n            <!-- Divider -->\n            <ng-container *ngIf=\"item.type === 'divider'\">\n                <genesis-vertical-navigation-divider-item\n                    [item]=\"item\"\n                    [name]=\"name\"></genesis-vertical-navigation-divider-item>\n            </ng-container>\n\n            <!-- Group -->\n            <ng-container *ngIf=\"item.type === 'group'\">\n                <!-- <genesis-vertical-navigation-group-item\n                    [item]=\"item\"\n                    [name]=\"name\"></genesis-vertical-navigation-group-item> -->\n            </ng-container>\n\n            <!-- Spacer -->\n            <ng-container *ngIf=\"item.type === 'spacer'\">\n                <!-- <genesis-vertical-navigation-spacer-item\n                    [item]=\"item\"\n                    [name]=\"name\"></genesis-vertical-navigation-spacer-item> -->\n            </ng-container>\n\n        </ng-container>\n\n    </ng-container>\n\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisVerticalNavigationComponent } from '../../vertical.component';\nimport { GenesisNavigationService } from '../../../navigation.service';\nimport { NgClass } from '@angular/common';\n\n@Component({\n    selector: 'genesis-vertical-navigation-spacer-item',\n    templateUrl: './spacer.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone     : true,\n    imports        : [NgClass]\n})\nexport class GenesisVerticalNavigationSpacerItemComponent implements OnInit, OnDestroy {\n    @Input() item: GenesisNavigationItem;\n    @Input() name: string;\n\n    private _genesisVerticalNavigationComponent: GenesisVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _genesisNavigationService: GenesisNavigationService,\n    ) {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void {\n        // Get the parent navigation component\n        this._genesisVerticalNavigationComponent = this._genesisNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._genesisVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll),\n        ).subscribe(() => {\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n}\n","<!-- Spacer -->\n<div\n    class=\"genesis-vertical-navigation-item-wrapper\"\n    [ngClass]=\"item.classes?.wrapper\"></div>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, forwardRef } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisNavigationService } from '../../../navigation.service';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisVerticalNavigationComponent } from '../../vertical.component';\nimport { GenesisVerticalNavigationBasicItemComponent } from '../basic/basic.component';\nimport { GenesisVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\nimport { GenesisVerticalNavigationDividerItemComponent } from '../divider/divider.component';\nimport { GenesisVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\n\n@Component({\n    selector       : 'genesis-vertical-navigation-group-item',\n    templateUrl    : './group.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone     : true,\n    imports        : [\n        NgClass, \n        NgIf, \n        MatIconModule, \n        NgFor, \n        GenesisVerticalNavigationBasicItemComponent, \n        GenesisVerticalNavigationCollapsableItemComponent, \n        GenesisVerticalNavigationDividerItemComponent, \n        forwardRef(() => GenesisVerticalNavigationGroupItemComponent),\n        GenesisVerticalNavigationSpacerItemComponent,\n        TranslocoModule\n    ]\n})\nexport class GenesisVerticalNavigationGroupItemComponent implements OnInit, OnDestroy\n{\n    /* eslint-disable @typescript-eslint/naming-convention */\n    static ngAcceptInputType_autoCollapse: BooleanInput;\n    /* eslint-enable @typescript-eslint/naming-convention */\n\n    @Input() autoCollapse: boolean;\n    @Input() item: GenesisNavigationItem;\n    @Input() name: string;\n\n    private _genesisVerticalNavigationComponent: GenesisVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _genesisNavigationService: GenesisNavigationService,\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._genesisVerticalNavigationComponent = this._genesisNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._genesisVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll),\n        ).subscribe(() =>\n        {\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n}\n","<!-- Item wrapper -->\n<div\n    class=\"genesis-vertical-navigation-item-wrapper\"\n    [class.genesis-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n    [ngClass]=\"item.classes?.wrapper\">\n\n    <div class=\"genesis-vertical-navigation-item\">\n\n        <!-- Icon -->\n        <ng-container *ngIf=\"item.icon\">\n            <mat-icon\n                class=\"genesis-vertical-navigation-item-icon\"\n                [ngClass]=\"item.classes?.icon\"\n                [svgIcon]=\"item.icon\"></mat-icon>\n        </ng-container>\n\n        <!-- Title & Subtitle -->\n        <div class=\"genesis-vertical-navigation-item-title-wrapper\">\n            <div class=\"genesis-vertical-navigation-item-title\">\n                <span [ngClass]=\"item.classes?.title\">\n                    {{item.translationKey ? (item.translationKey | transloco) : item.title}}\n                </span>\n            </div>\n            <ng-container *ngIf=\"item.subtitle\">\n                <div class=\"genesis-vertical-navigation-item-subtitle\">\n                    <span [ngClass]=\"item.classes?.subtitle\">\n                        {{item.subtitle}}\n                    </span>\n                </div>\n            </ng-container>\n        </div>\n\n        <!-- Badge -->\n        <ng-container *ngIf=\"item.badge\">\n            <div class=\"genesis-vertical-navigation-item-badge\">\n                <div\n                    class=\"genesis-vertical-navigation-item-badge-content\"\n                    [ngClass]=\"item.badge.classes\">\n                    {{item.badge.title}}\n                </div>\n            </div>\n        </ng-container>\n\n    </div>\n\n</div>\n\n<ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n    <!-- Skip the hidden items -->\n    <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n        <!-- Basic -->\n        <ng-container *ngIf=\"item.type === 'basic'\">\n            <genesis-vertical-navigation-basic-item\n                [item]=\"item\"\n                [name]=\"name\"></genesis-vertical-navigation-basic-item>\n        </ng-container>\n\n        <!-- Collapsable -->\n        <ng-container *ngIf=\"item.type === 'collapsable'\">\n            <genesis-vertical-navigation-collapsable-item\n                [item]=\"item\"\n                [name]=\"name\"\n                [autoCollapse]=\"autoCollapse\"></genesis-vertical-navigation-collapsable-item>\n        </ng-container>\n\n        <!-- Divider -->\n        <ng-container *ngIf=\"item.type === 'divider'\">\n            <genesis-vertical-navigation-divider-item\n                [item]=\"item\"\n                [name]=\"name\"></genesis-vertical-navigation-divider-item>\n        </ng-container>\n\n        <!-- Group -->\n        <ng-container *ngIf=\"item.type === 'group'\">\n            <genesis-vertical-navigation-group-item\n                [item]=\"item\"\n                [name]=\"name\"></genesis-vertical-navigation-group-item>\n        </ng-container>\n\n        <!-- Spacer -->\n        <ng-container *ngIf=\"item.type === 'spacer'\">\n            <genesis-vertical-navigation-spacer-item\n                [item]=\"item\"\n                [name]=\"name\"></genesis-vertical-navigation-spacer-item>\n        </ng-container>\n\n    </ng-container>\n\n</ng-container>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { Subject, filter, takeUntil } from 'rxjs';\nimport { GenesisNavigationService } from '../../../navigation.service';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisVerticalNavigationComponent } from '../../vertical.component';\nimport { GenesisVerticalNavigationBasicItemComponent } from '../basic/basic.component';\nimport { GenesisVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\nimport { GenesisVerticalNavigationDividerItemComponent } from '../divider/divider.component';\nimport { GenesisVerticalNavigationGroupItemComponent } from '../group/group.component';\nimport { GenesisVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\n\n@Component({\n  selector: 'genesis-vertical-navigation-aside-item',\n  templateUrl: './aside.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone     : true,\n  imports        : [\n    NgClass,\n    MatTooltipModule,\n    NgIf, \n    MatIconModule, \n    NgFor, \n    GenesisVerticalNavigationBasicItemComponent, \n    GenesisVerticalNavigationCollapsableItemComponent, \n    GenesisVerticalNavigationDividerItemComponent, \n    GenesisVerticalNavigationGroupItemComponent, \n    GenesisVerticalNavigationSpacerItemComponent,\n    TranslocoModule\n  ],\n})\nexport class GenesisVerticalNavigationAsideItemComponent implements OnChanges, OnInit, OnDestroy {\n  /* eslint-disable @typescript-eslint/naming-convention */\n  static ngAcceptInputType_autoCollapse: BooleanInput;\n  static ngAcceptInputType_skipChildren: BooleanInput;\n  /* eslint-enable @typescript-eslint/naming-convention */\n\n  @Input() activeItemId: string;\n  @Input() autoCollapse: boolean;\n  @Input() item: GenesisNavigationItem;\n  @Input() name: string;\n  @Input() skipChildren: boolean;\n\n  active: boolean = false;\n  private _genesisVerticalNavigationComponent: GenesisVerticalNavigationComponent;\n  private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n  /**\n   * Constructor\n   */\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _router: Router,\n    private _genesisNavigationService: GenesisNavigationService,\n  ) {\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Lifecycle hooks\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * On changes\n   *\n   * @param changes\n   */\n  ngOnChanges(changes: SimpleChanges): void {\n    // Active item id\n    if ('activeItemId' in changes) {\n      // Mark if active\n      this._markIfActive(this._router.url);\n    }\n  }\n\n  /**\n   * On init\n   */\n  ngOnInit(): void {\n    // Mark if active\n    this._markIfActive(this._router.url);\n\n    // Attach a listener to the NavigationEnd event\n    this._router.events\n      .pipe(\n        filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n        takeUntil(this._unsubscribeAll),\n      )\n      .subscribe((event: NavigationEnd) => {\n        // Mark if active\n        this._markIfActive(event.urlAfterRedirects);\n      });\n\n    // Get the parent navigation component\n    this._genesisVerticalNavigationComponent = this._genesisNavigationService.getComponent(this.name);\n\n    // Subscribe to onRefreshed on the navigation component\n    this._genesisVerticalNavigationComponent.onRefreshed.pipe(\n      takeUntil(this._unsubscribeAll),\n    ).subscribe(() => {\n      // Mark for check\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  /**\n   * On destroy\n   */\n  ngOnDestroy(): void {\n    // Unsubscribe from all subscriptions\n    this._unsubscribeAll.next(null);\n    this._unsubscribeAll.complete();\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Public methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Track by function for ngFor loops\n   *\n   * @param index\n   * @param item\n   */\n  trackByFn(index: number, item: any): any {\n    return item.id || index;\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Private methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Check if the given item has the given url\n   * in one of its children\n   *\n   * @param item\n   * @param currentUrl\n   * @private\n   */\n  private _hasActiveChild(item: GenesisNavigationItem, currentUrl: string): boolean {\n    const children = item.children;\n\n    if (!children) {\n      return false;\n    }\n\n    for (const child of children) {\n      if (child.children) {\n        if (this._hasActiveChild(child, currentUrl)) {\n          return true;\n        }\n      }\n\n      // Skip items other than 'basic'\n      if (child.type !== 'basic') {\n        continue;\n      }\n\n      // Check if the child has a link and is active\n      if (child.link && this._router.isActive(child.link, child.exactMatch || false)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Decide and mark if the item is active\n   *\n   * @private\n   */\n  private _markIfActive(currentUrl: string): void {\n    // Check if the activeItemId is equals to this item id\n    this.active = this.activeItemId === this.item.id;\n\n    // If the aside has a children that is active,\n    // always mark it as active\n    if (this._hasActiveChild(this.item, currentUrl)) {\n      this.active = true;\n    }\n\n    // Mark for check\n    this._changeDetectorRef.markForCheck();\n  }\n}\n","<div\n    class=\"genesis-vertical-navigation-item-wrapper\"\n    [class.genesis-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n    [ngClass]=\"item.classes?.wrapper\">\n\n    <div\n        class=\"genesis-vertical-navigation-item\"\n        [ngClass]=\"{'genesis-vertical-navigation-item-active': active,\n                    'genesis-vertical-navigation-item-disabled': item.disabled,\n                    'genesis-vertical-navigation-item-active-forced': item.active}\"\n        [matTooltip]=\"item.tooltip || ''\">\n\n        <!-- Icon -->\n        <ng-container *ngIf=\"item.icon\">\n            <mat-icon\n                class=\"genesis-vertical-navigation-item-icon\"\n                [ngClass]=\"item.classes?.icon\"\n                [svgIcon]=\"item.icon\"></mat-icon>\n        </ng-container>\n\n        <!-- Title & Subtitle -->\n        <div class=\"genesis-vertical-navigation-item-title-wrapper\">\n            <div class=\"genesis-vertical-navigation-item-title\">\n                <span [ngClass]=\"item.classes?.title\">\n                    {{item.translationKey ? (item.translationKey | transloco) : item.title}}\n                </span>\n            </div>\n            <ng-container *ngIf=\"item.subtitle\">\n                <div class=\"genesis-vertical-navigation-item-subtitle\">\n                    <span [ngClass]=\"item.classes?.subtitle\">\n                        {{item.subtitle}}\n                    </span>\n                </div>\n            </ng-container>\n        </div>\n\n        <!-- Badge -->\n        <ng-container *ngIf=\"item.badge\">\n            <div class=\"genesis-vertical-navigation-item-badge\">\n                <div\n                    class=\"genesis-vertical-navigation-item-badge-content\"\n                    [ngClass]=\"item.badge.classes\">\n                    {{item.badge.title}}\n                </div>\n            </div>\n        </ng-container>\n\n    </div>\n\n</div>\n\n<ng-container *ngIf=\"!skipChildren\">\n\n    <div class=\"genesis-vertical-navigation-item-children\">\n\n        <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n            <!-- Skip the hidden items -->\n            <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n                <!-- Basic -->\n                <ng-container *ngIf=\"item.type === 'basic'\">\n                    <genesis-vertical-navigation-basic-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-vertical-navigation-basic-item>\n                </ng-container>\n\n                <!-- Collapsable -->\n                <ng-container *ngIf=\"item.type === 'collapsable'\">\n                    <genesis-vertical-navigation-collapsable-item\n                        [item]=\"item\"\n                        [name]=\"name\"\n                        [autoCollapse]=\"autoCollapse\"></genesis-vertical-navigation-collapsable-item>\n                </ng-container>\n\n                <!-- Divider -->\n                <ng-container *ngIf=\"item.type === 'divider'\">\n                    <genesis-vertical-navigation-divider-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-vertical-navigation-divider-item>\n                </ng-container>\n\n                <!-- Group -->\n                <ng-container *ngIf=\"item.type === 'group'\">\n                    <genesis-vertical-navigation-group-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-vertical-navigation-group-item>\n                </ng-container>\n\n                <!-- Spacer -->\n                <ng-container *ngIf=\"item.type === 'spacer'\">\n                    <genesis-vertical-navigation-spacer-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-vertical-navigation-spacer-item>\n                </ng-container>\n\n            </ng-container>\n\n        </ng-container>\n\n    </div>\n\n</ng-container>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Input, OnChanges, OnDestroy, OnInit, Output, QueryList, Renderer2, SimpleChanges, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { genesisAnimations } from '../../../animations';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { GenesisNavigationItem, GenesisVerticalNavigationAppearance, GenesisVerticalNavigationMode, GenesisVerticalNavigationPosition } from '../navigation.types';\nimport { ReplaySubject, Subject, Subscription, delay, filter, merge, takeUntil } from 'rxjs';\nimport { AnimationBuilder, AnimationPlayer, animate, style } from '@angular/animations';\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { GenesisScrollbarDirective } from '../../../directives/scrollbar/scrollbar.directive';\nimport { DOCUMENT, NgFor, NgIf } from '@angular/common';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { GenesisNavigationService } from '../navigation.service';\nimport { GenesisUtilsService } from '../../../services/utils/utils.service';\nimport { GenesisVerticalNavigationAsideItemComponent } from './components/aside/aside.component';\nimport { GenesisVerticalNavigationBasicItemComponent } from './components/basic/basic.component';\nimport { GenesisVerticalNavigationCollapsableItemComponent } from './components/collapsable/collapsable.component';\nimport { GenesisVerticalNavigationDividerItemComponent } from './components/divider/divider.component';\nimport { GenesisVerticalNavigationGroupItemComponent } from './components/group/group.component';\nimport { GenesisVerticalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\n\n@Component({\n  selector: 'genesis-vertical-navigation',\n  templateUrl: './vertical.component.html',\n  styleUrls: ['./vertical.component.scss'],\n  animations: genesisAnimations,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  exportAs: 'genesisVerticalNavigation',\n  standalone     : true,\n    imports        : [\n      GenesisScrollbarDirective, \n      NgFor, \n      NgIf, \n      GenesisVerticalNavigationAsideItemComponent, \n      GenesisVerticalNavigationBasicItemComponent, \n      GenesisVerticalNavigationCollapsableItemComponent, \n      GenesisVerticalNavigationDividerItemComponent, \n      GenesisVerticalNavigationGroupItemComponent, \n      GenesisVerticalNavigationSpacerItemComponent\n    ]\n})\nexport class GenesisVerticalNavigationComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n  /* eslint-disable @typescript-eslint/naming-convention */\n  static ngAcceptInputType_inner: BooleanInput;\n  static ngAcceptInputType_opened: BooleanInput;\n  static ngAcceptInputType_transparentOverlay: BooleanInput;\n  /* eslint-enable @typescript-eslint/naming-convention */\n\n  @Input() appearance: GenesisVerticalNavigationAppearance = 'default';\n  @Input() autoCollapse: boolean = true;\n  @Input() inner: boolean = false;\n  @Input() mode: GenesisVerticalNavigationMode = 'side';\n  @Input() name: string = '';\n  @Input() navigation: GenesisNavigationItem[] = [];\n  @Input() opened: boolean = true;\n  @Input() position: GenesisVerticalNavigationPosition = 'left';\n  @Input() transparentOverlay: boolean = false;\n  @Output() readonly appearanceChanged: EventEmitter<GenesisVerticalNavigationAppearance> = new EventEmitter<GenesisVerticalNavigationAppearance>();\n  @Output() readonly modeChanged: EventEmitter<GenesisVerticalNavigationMode> = new EventEmitter<GenesisVerticalNavigationMode>();\n  @Output() readonly openedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() readonly positionChanged: EventEmitter<GenesisVerticalNavigationPosition> = new EventEmitter<GenesisVerticalNavigationPosition>();\n  @ViewChild('navigationContent') private _navigationContentEl: ElementRef;\n\n  activeAsideItemId: string | null = null;\n  onCollapsableItemCollapsed: ReplaySubject<GenesisNavigationItem> = new ReplaySubject<GenesisNavigationItem>(1);\n  onCollapsableItemExpanded: ReplaySubject<GenesisNavigationItem> = new ReplaySubject<GenesisNavigationItem>(1);\n  onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\n  private _animationsEnabled: boolean = false;\n  private _asideOverlay?: HTMLElement | null = null;\n  private readonly _handleAsideOverlayClick: any;\n  private readonly _handleOverlayClick: any;\n  private _hovered: boolean = false;\n  private _mutationObserver: MutationObserver;\n  private _overlay?: HTMLElement | null = null;\n  private _player: AnimationPlayer;\n  private _scrollStrategy: ScrollStrategy;\n  private _genesisScrollbarDirectives!: QueryList<GenesisScrollbarDirective>;\n  private _genesisScrollbarDirectivesSubscription: Subscription;\n  private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n  /**\n   * Constructor\n   */\n  constructor(\n    private _animationBuilder: AnimationBuilder,\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Inject(DOCUMENT) private _document: Document,\n    private _elementRef: ElementRef,\n    private _renderer2: Renderer2,\n    private _router: Router,\n    private _scrollStrategyOptions: ScrollStrategyOptions,\n    private _genesisNavigationService: GenesisNavigationService,\n    private _genesisUtilsService: GenesisUtilsService,\n  ) {\n    this.name = this._genesisUtilsService.randomId();\n    this._scrollStrategy = this._scrollStrategyOptions.block();\n    this._handleAsideOverlayClick = (): void => {\n      this.closeAside();\n    };\n    this._handleOverlayClick = (): void => {\n      this.close();\n    };\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Accessors\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Host binding for component classes\n   */\n  @HostBinding('class') get classList(): any {\n    /* eslint-disable @typescript-eslint/naming-convention */\n    return {\n      'genesis-vertical-navigation-animations-enabled': this._animationsEnabled,\n      [`genesis-vertical-navigation-appearance-${this.appearance}`]: true,\n      'genesis-vertical-navigation-hover': this._hovered,\n      'genesis-vertical-navigation-inner': this.inner,\n      'genesis-vertical-navigation-mode-over': this.mode === 'over',\n      'genesis-vertical-navigation-mode-side': this.mode === 'side',\n      'genesis-vertical-navigation-opened': this.opened,\n      'genesis-vertical-navigation-position-left': this.position === 'left',\n      'genesis-vertical-navigation-position-right': this.position === 'right',\n    };\n    /* eslint-enable @typescript-eslint/naming-convention */\n  }\n\n  /**\n   * Host binding for component inline styles\n   */\n  @HostBinding('style') get styleList(): any {\n    return {\n      'visibility': this.opened ? 'visible' : 'hidden',\n    };\n  }\n\n  /**\n   * Setter for genesisScrollbarDirectives\n   */\n  @ViewChildren(GenesisScrollbarDirective)\n  set genesisScrollbarDirectives(genesisScrollbarDirectives: QueryList<GenesisScrollbarDirective>) {\n    // Store the directives\n    this._genesisScrollbarDirectives = genesisScrollbarDirectives;\n\n    // Return if there are no directives\n    if (genesisScrollbarDirectives.length === 0) {\n      return;\n    }\n\n    // Unsubscribe the previous subscriptions\n    if (this._genesisScrollbarDirectivesSubscription) {\n      this._genesisScrollbarDirectivesSubscription.unsubscribe();\n    }\n\n    // Update the scrollbars on collapsable items' collapse/expand\n    this._genesisScrollbarDirectivesSubscription =\n      merge(\n        this.onCollapsableItemCollapsed,\n        this.onCollapsableItemExpanded,\n      )\n        .pipe(\n          takeUntil(this._unsubscribeAll),\n          delay(250),\n        )\n        .subscribe(() => {\n          // Loop through the scrollbars and update them\n          genesisScrollbarDirectives.forEach((genesisScrollbarDirective) => {\n            genesisScrollbarDirective.update();\n          });\n        });\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Decorated methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * On mouseenter\n   *\n   * @public\n   */\n  @HostListener('mouseenter')\n  public onMouseenter(): void {\n    // Enable the animations\n    this._enableAnimations();\n\n    // Set the hovered\n    this._hovered = true;\n  }\n\n  /**\n   * On mouseleave\n   *\n   * @public\n   */\n  @HostListener('mouseleave')\n  public onMouseleave(): void {\n    // Enable the animations\n    this._enableAnimations();\n\n    // Set the hovered\n    this._hovered = false;\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Lifecycle hooks\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * On changes\n   *\n   * @param changes\n   */\n  ngOnChanges(changes: SimpleChanges): void {\n    // Appearance\n    if ('appearance' in changes) {\n      // Execute the observable\n      this.appearanceChanged.next(changes.appearance.currentValue);\n    }\n\n    // Inner\n    if ('inner' in changes) {\n      // Coerce the value to a boolean\n      this.inner = coerceBooleanProperty(changes.inner.currentValue);\n    }\n\n    // Mode\n    if ('mode' in changes) {\n      // Get the previous and current values\n      const currentMode = changes.mode.currentValue;\n      const previousMode = changes.mode.previousValue;\n\n      // Disable the animations\n      this._disableAnimations();\n\n      // If the mode changes: 'over -> side'\n      if (previousMode === 'over' && currentMode === 'side') {\n        // Hide the overlay\n        this._hideOverlay();\n      }\n\n      // If the mode changes: 'side -> over'\n      if (previousMode === 'side' && currentMode === 'over') {\n        // Close the aside\n        this.closeAside();\n\n        // If the navigation is opened\n        if (this.opened) {\n          // Show the overlay\n          this._showOverlay();\n        }\n      }\n\n      // Execute the observable\n      this.modeChanged.next(currentMode);\n\n      // Enable the animations after a delay\n      // The delay must be bigger than the current transition-duration\n      // to make sure nothing will be animated while the mode changing\n      setTimeout(() => {\n        this._enableAnimations();\n      }, 500);\n    }\n\n    // Navigation\n    if ('navigation' in changes) {\n      // Mark for check\n      this._changeDetectorRef.markForCheck();\n    }\n\n    // Opened\n    if ('opened' in changes) {\n      // Coerce the value to a boolean\n      this.opened = coerceBooleanProperty(changes.opened.currentValue);\n\n      // Open/close the navigation\n      this._toggleOpened(this.opened);\n    }\n\n    // Position\n    if ('position' in changes) {\n      // Execute the observable\n      this.positionChanged.next(changes.position.currentValue);\n    }\n\n    // Transparent overlay\n    if ('transparentOverlay' in changes) {\n      // Coerce the value to a boolean\n      this.transparentOverlay = coerceBooleanProperty(changes.transparentOverlay.currentValue);\n    }\n  }\n\n  /**\n   * On init\n   */\n  ngOnInit(): void {\n    // Make sure the name input is not an empty string\n    if (this.name === '') {\n      this.name = this._genesisUtilsService.randomId();\n    }\n\n    // Register the navigation component\n    this._genesisNavigationService.registerComponent(this.name, this);\n\n    // Subscribe to the 'NavigationEnd' event\n    this._router.events\n      .pipe(\n        filter(event => event instanceof NavigationEnd),\n        takeUntil(this._unsubscribeAll),\n      )\n      .subscribe(() => {\n        // If the mode is 'over' and the navigation is opened...\n        if (this.mode === 'over' && this.opened) {\n          // Close the navigation\n          this.close();\n        }\n\n        // If the mode is 'side' and the aside is active...\n        if (this.mode === 'side' && this.activeAsideItemId) {\n          // Close the aside\n          this.closeAside();\n        }\n      });\n  }\n\n  /**\n   * After view init\n   */\n  ngAfterViewInit(): void {\n    // Fix for Firefox.\n    //\n    // Because 'position: sticky' doesn't work correctly inside a 'position: fixed' parent,\n    // adding the '.cdk-global-scrollblock' to the html element breaks the navigation's position.\n    // This fixes the problem by reading the 'top' value from the html element and adding it as a\n    // 'marginTop' to the navigation itself.\n    this._mutationObserver = new MutationObserver((mutations) => {\n      mutations.forEach((mutation) => {\n        const mutationTarget = mutation.target as HTMLElement;\n        if (mutation.attributeName === 'class') {\n          if (mutationTarget.classList.contains('cdk-global-scrollblock')) {\n            const top = parseInt(mutationTarget.style.top, 10);\n            this._renderer2.setStyle(this._elementRef.nativeElement, 'margin-top', `${Math.abs(top)}px`);\n          }\n          else {\n            this._renderer2.setStyle(this._elementRef.nativeElement, 'margin-top', null);\n          }\n        }\n      });\n    });\n    this._mutationObserver.observe(this._document.documentElement, {\n      attributes: true,\n      attributeFilter: ['class'],\n    });\n\n    setTimeout(() => {\n      // Return if 'navigation content' element does not exist\n      if (!this._navigationContentEl) {\n        return;\n      }\n\n      // If 'navigation content' element doesn't have\n      // perfect scrollbar activated on it...\n      if (!this._navigationContentEl.nativeElement.classList.contains('ps')) {\n        // Find the active item\n        const activeItem = this._navigationContentEl.nativeElement.querySelector('.genesis-vertical-navigation-item-active');\n\n        // If the active item exists, scroll it into view\n        if (activeItem) {\n          activeItem.scrollIntoView();\n        }\n      }\n      // Otherwise\n      else {\n        // Go through all the scrollbar directives\n        this._genesisScrollbarDirectives.forEach((genesisScrollbarDirective) => {\n          // Skip if not enabled\n          if (!genesisScrollbarDirective.isEnabled()) {\n            return;\n          }\n\n          // Scroll to the active element\n          genesisScrollbarDirective.scrollToElement('.genesis-vertical-navigation-item-active', -120, true);\n        });\n      }\n    });\n  }\n\n  /**\n   * On destroy\n   */\n  ngOnDestroy(): void {\n    // Disconnect the mutation observer\n    this._mutationObserver.disconnect();\n\n    // Forcefully close the navigation and aside in case they are opened\n    this.close();\n    this.closeAside();\n\n    // Deregister the navigation component from the registry\n    this._genesisNavigationService.deregisterComponent(this.name);\n\n    // Unsubscribe from all subscriptions\n    this._unsubscribeAll.next(null);\n    this._unsubscribeAll.complete();\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Public methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Refresh the component to apply the changes\n   */\n  refresh(): void {\n    // Mark for check\n    this._changeDetectorRef.markForCheck();\n\n    // Execute the observable\n    this.onRefreshed.next(true);\n  }\n\n  /**\n   * Open the navigation\n   */\n  open(): void {\n    // Return if the navigation is already open\n    if (this.opened) {\n      return;\n    }\n\n    // Set the opened\n    this._toggleOpened(true);\n  }\n\n  /**\n   * Close the navigation\n   */\n  close(): void {\n    // Return if the navigation is already closed\n    if (!this.opened) {\n      return;\n    }\n\n    // Close the aside\n    this.closeAside();\n\n    // Set the opened\n    this._toggleOpened(false);\n  }\n\n  /**\n   * Toggle the navigation\n   */\n  toggle(): void {\n    // Toggle\n    if (this.opened) {\n      this.close();\n    }\n    else {\n      this.open();\n    }\n  }\n\n  /**\n   * Open the aside\n   *\n   * @param item\n   */\n  openAside(item: GenesisNavigationItem): void {\n    // Return if the item is disabled\n    if (item.disabled || !item.id) {\n      return;\n    }\n\n    // Open\n    this.activeAsideItemId = item.id;\n\n    // Show the aside overlay\n    this._showAsideOverlay();\n\n    // Mark for check\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Close the aside\n   */\n  closeAside(): void {\n    // Close\n    this.activeAsideItemId = null;\n\n    // Hide the aside overlay\n    this._hideAsideOverlay();\n\n    // Mark for check\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Toggle the aside\n   *\n   * @param item\n   */\n  toggleAside(item: GenesisNavigationItem): void {\n    // Toggle\n    if (this.activeAsideItemId === item.id) {\n      this.closeAside();\n    }\n    else {\n      this.openAside(item);\n    }\n  }\n\n  /**\n   * Track by function for ngFor loops\n   *\n   * @param index\n   * @param item\n   */\n  trackByFn(index: number, item: any): any {\n    return item.id || index;\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Private methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Enable the animations\n   *\n   * @private\n   */\n  private _enableAnimations(): void {\n    // Return if the animations are already enabled\n    if (this._animationsEnabled) {\n      return;\n    }\n\n    // Enable the animations\n    this._animationsEnabled = true;\n  }\n\n  /**\n   * Disable the animations\n   *\n   * @private\n   */\n  private _disableAnimations(): void {\n    // Return if the animations are already disabled\n    if (!this._animationsEnabled) {\n      return;\n    }\n\n    // Disable the animations\n    this._animationsEnabled = false;\n  }\n\n  /**\n   * Show the overlay\n   *\n   * @private\n   */\n  private _showOverlay(): void {\n    // Return if there is already an overlay\n    if (this._asideOverlay) {\n      return;\n    }\n\n    // Create the overlay element\n    this._overlay = this._renderer2.createElement('div');\n\n    // Add a class to the overlay element\n    this._overlay?.classList.add('genesis-vertical-navigation-overlay');\n\n    // Add a class depending on the transparentOverlay option\n    if (this.transparentOverlay) {\n      this._overlay?.classList.add('genesis-vertical-navigation-overlay-transparent');\n    }\n\n    // Append the overlay to the parent of the navigation\n    this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\n\n    // Enable block scroll strategy\n    this._scrollStrategy.enable();\n\n    // Create the enter animation and attach it to the player\n    this._player = this._animationBuilder.build([\n      animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 })),\n    ]).create(this._overlay);\n\n    // Play the animation\n    this._player.play();\n\n    // Add an event listener to the overlay\n    this._overlay?.addEventListener('click', this._handleOverlayClick);\n  }\n\n  /**\n   * Hide the overlay\n   *\n   * @private\n   */\n  private _hideOverlay(): void {\n    if (!this._overlay) {\n      return;\n    }\n\n    // Create the leave animation and attach it to the player\n    this._player = this._animationBuilder.build([\n      animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 })),\n    ]).create(this._overlay);\n\n    // Play the animation\n    this._player.play();\n\n    // Once the animation is done...\n    this._player.onDone(() => {\n      // If the overlay still exists...\n      if (this._overlay) {\n        // Remove the event listener\n        this._overlay.removeEventListener('click', this._handleOverlayClick);\n\n        // Remove the overlay\n        this._overlay?.parentNode?.removeChild(this._overlay);\n        this._overlay = null;\n      }\n\n      // Disable block scroll strategy\n      this._scrollStrategy.disable();\n    });\n  }\n\n  /**\n   * Show the aside overlay\n   *\n   * @private\n   */\n  private _showAsideOverlay(): void {\n    // Return if there is already an overlay\n    if (this._asideOverlay) {\n      return;\n    }\n\n    // Create the aside overlay element\n    this._asideOverlay = this._renderer2.createElement('div');\n\n    // Add a class to the aside overlay element\n    this._asideOverlay?.classList.add('genesis-vertical-navigation-aside-overlay');\n\n    // Append the aside overlay to the parent of the navigation\n    this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._asideOverlay);\n\n    // Create the enter animation and attach it to the player\n    this._player =\n      this._animationBuilder\n        .build([\n          animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 })),\n        ]).create(this._asideOverlay);\n\n    // Play the animation\n    this._player.play();\n\n    // Add an event listener to the aside overlay\n    this._asideOverlay?.addEventListener('click', this._handleAsideOverlayClick);\n  }\n\n  /**\n   * Hide the aside overlay\n   *\n   * @private\n   */\n  private _hideAsideOverlay(): void {\n    if (!this._asideOverlay) {\n      return;\n    }\n\n    // Create the leave animation and attach it to the player\n    this._player =\n      this._animationBuilder\n        .build([\n          animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 })),\n        ]).create(this._asideOverlay);\n\n    // Play the animation\n    this._player.play();\n\n    // Once the animation is done...\n    this._player.onDone(() => {\n      // If the aside overlay still exists...\n      if (this._asideOverlay) {\n        // Remove the event listener\n        this._asideOverlay.removeEventListener('click', this._handleAsideOverlayClick);\n\n        // Remove the aside overlay\n        this._asideOverlay?.parentNode?.removeChild(this._asideOverlay);\n        this._asideOverlay = null;\n      }\n    });\n  }\n\n  /**\n   * Open/close the navigation\n   *\n   * @param open\n   * @private\n   */\n  private _toggleOpened(open: boolean): void {\n    // Set the opened\n    this.opened = open;\n\n    // Enable the animations\n    this._enableAnimations();\n\n    // If the navigation opened, and the mode\n    // is 'over', show the overlay\n    if (this.mode === 'over') {\n      if (this.opened) {\n        this._showOverlay();\n      }\n      else {\n        this._hideOverlay();\n      }\n    }\n\n    // Execute the observable\n    this.openedChanged.next(open);\n  }\n}\n","<div class=\"genesis-vertical-navigation-wrapper\">\n\n    <!-- Header -->\n    <div class=\"genesis-vertical-navigation-header\">\n        <ng-content select=\"[genesisVerticalNavigationHeader]\"></ng-content>\n    </div>\n\n    <!-- Content -->\n    <div\n        class=\"genesis-vertical-navigation-content\"\n        genesisScrollbar\n        [genesisScrollbarOptions]=\"{wheelPropagation: inner, suppressScrollX: true}\"\n        #navigationContent>\n\n        <!-- Content header -->\n        <div class=\"genesis-vertical-navigation-content-header\">\n            <ng-content select=\"[genesisVerticalNavigationContentHeader]\"></ng-content>\n        </div>\n\n        <!-- Items -->\n        <ng-container *ngFor=\"let item of navigation; trackBy: trackByFn\">\n\n            <!-- Skip the hidden items -->\n            <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n                <!-- Aside -->\n                <ng-container *ngIf=\"item.type === 'aside'\">\n                    <genesis-vertical-navigation-aside-item\n                        [item]=\"item\"\n                        [name]=\"name\"\n                        [activeItemId]=\"activeAsideItemId\"\n                        [autoCollapse]=\"autoCollapse\"\n                        [skipChildren]=\"true\"\n                        (click)=\"toggleAside(item)\"></genesis-vertical-navigation-aside-item>\n                </ng-container>\n\n                <!-- Basic -->\n                <ng-container *ngIf=\"item.type === 'basic'\">\n                    <genesis-vertical-navigation-basic-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-vertical-navigation-basic-item>\n                </ng-container>\n\n                <!-- Collapsable -->\n                <ng-container *ngIf=\"item.type === 'collapsable'\">\n                    <genesis-vertical-navigation-collapsable-item\n                        [item]=\"item\"\n                        [name]=\"name\"\n                        [autoCollapse]=\"autoCollapse\"></genesis-vertical-navigation-collapsable-item>\n                </ng-container>\n\n                <!-- Divider -->\n                <ng-container *ngIf=\"item.type === 'divider'\">\n                    <genesis-vertical-navigation-divider-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-vertical-navigation-divider-item>\n                </ng-container>\n\n                <!-- Group -->\n                <ng-container *ngIf=\"item.type === 'group'\">\n                    <genesis-vertical-navigation-group-item\n                        [item]=\"item\"\n                        [name]=\"name\"\n                        [autoCollapse]=\"autoCollapse\"></genesis-vertical-navigation-group-item>\n                </ng-container>\n\n                <!-- Spacer -->\n                <ng-container *ngIf=\"item.type === 'spacer'\">\n                    <genesis-vertical-navigation-spacer-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-vertical-navigation-spacer-item>\n                </ng-container>\n\n            </ng-container>\n\n        </ng-container>\n\n        <!-- Content footer -->\n        <div class=\"genesis-vertical-navigation-content-footer\">\n            <ng-content select=\"[genesisVerticalNavigationContentFooter]\"></ng-content>\n        </div>\n\n    </div>\n\n    <!-- Footer -->\n    <div class=\"genesis-vertical-navigation-footer\">\n        <ng-content select=\"[genesisVerticalNavigationFooter]\"></ng-content>\n    </div>\n\n</div>\n\n<!-- Aside -->\n<ng-container *ngIf=\"activeAsideItemId\">\n    <div\n        class=\"genesis-vertical-navigation-aside-wrapper\"\n        genesisScrollbar\n        [genesisScrollbarOptions]=\"{wheelPropagation: false, suppressScrollX: true}\"\n        [@fadeInLeft]=\"position === 'left'\"\n        [@fadeInRight]=\"position === 'right'\"\n        [@fadeOutLeft]=\"position === 'left'\"\n        [@fadeOutRight]=\"position === 'right'\">\n\n        <!-- Items -->\n        <ng-container *ngFor=\"let item of navigation; trackBy: trackByFn\">\n\n            <!-- Skip the hidden items -->\n            <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n                <!-- Aside -->\n                <ng-container *ngIf=\"item.type === 'aside' && item.id === activeAsideItemId\">\n                    <genesis-vertical-navigation-aside-item\n                        [item]=\"item\"\n                        [name]=\"name\"\n                        [autoCollapse]=\"autoCollapse\"></genesis-vertical-navigation-aside-item>\n                </ng-container>\n\n            </ng-container>\n\n        </ng-container>\n\n    </div>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { IApps } from './apps.types';\n\n@Injectable({ providedIn: 'root' })\nexport class AppsService {\n    private _apps: ReplaySubject<IApps[]> = new ReplaySubject<IApps[]>();\n\n    get apps$(): Observable<IApps[]> {\n        return this._apps.asObservable();\n    }\n\n    set apps$(value: IApps[]) {\n        this._apps.next(value);\n    }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterLink } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { IApps } from './apps.types';\nimport { AppsService } from './apps.service';\n\n@Component({\n    selector: 'applications',\n    templateUrl: './apps.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'applications',\n    standalone: true,\n    imports: [\n        MatButtonModule,\n        MatIconModule,\n        NgIf,\n        MatTooltipModule,\n        NgFor,\n        NgTemplateOutlet,\n        MatSlideToggleModule\n    ]\n})\nexport class ApplicationsComponent implements OnInit, OnDestroy {\n    @ViewChild('appsOrigin') private _appsOrigin: MatButton;\n    @ViewChild('appsPanel') private _appsPanel: TemplateRef<any>;\n\n    apps: IApps[];\n    private _overlayRef: OverlayRef;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _appsService: AppsService,\n        private _overlay: Overlay,\n        private _viewContainerRef: ViewContainerRef,\n    ) {\n    }\n\n    ngOnInit(): void {\n        this._appsService.apps$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((apps: IApps[]) => {\n                this.apps = apps;\n                this._changeDetectorRef.markForCheck();\n            });\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n        if (this._overlayRef) {\n            this._overlayRef.dispose();\n        }\n    }\n\n    openPanel(): void {\n        if (!this._appsPanel || !this._appsOrigin) {\n            return;\n        }\n\n        if (!this._overlayRef) {\n            this._createOverlay();\n        }\n        this._overlayRef.attach(new TemplatePortal(this._appsPanel, this._viewContainerRef));\n    }\n\n    closePanel(): void {\n        this._overlayRef.detach();\n    }\n\n    trackByFn(index: number, item: any): any {\n        return item.id || index;\n    }\n\n    private _createOverlay(): void {\n        this._overlayRef = this._overlay.create({\n            hasBackdrop: true,\n            backdropClass: 'genesis-backdrop-on-mobile',\n            scrollStrategy: this._overlay.scrollStrategies.block(),\n            positionStrategy: this._overlay.position()\n                .flexibleConnectedTo(this._appsOrigin._elementRef.nativeElement)\n                .withLockedPosition(true)\n                .withPush(true)\n                .withPositions([\n                    {\n                        originX: 'start',\n                        originY: 'bottom',\n                        overlayX: 'start',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'start',\n                        originY: 'top',\n                        overlayX: 'start',\n                        overlayY: 'bottom',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'bottom',\n                        overlayX: 'end',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'top',\n                        overlayX: 'end',\n                        overlayY: 'bottom',\n                    },\n                ]),\n        });\n\n        this._overlayRef.backdropClick().subscribe(() => {\n            this._overlayRef.detach();\n        });\n    }\n}\n","<!-- Apps toggle -->\n<button\n    mat-icon-button\n    (click)=\"openPanel()\"\n    #appsOrigin>\n    <mat-icon [svgIcon]=\"'heroicons_outline:squares-plus'\"></mat-icon>\n</button>\n\n<!-- Apps panel -->\n<ng-template #appsPanel>\n    <div class=\"fixed inset-0 sm:static sm:inset-auto flex flex-col sm:min-w-90 sm:w-90 sm:rounded-2xl overflow-hidden shadow-lg\">\n\n        <!-- Header -->\n        <div class=\"flex shrink-0 items-center py-4 pr-4 pl-6 bg-primary text-on-primary\">\n            <div class=\"sm:hidden -ml-1 mr-3\">\n                <button\n                    mat-icon-button\n                    (click)=\"closePanel()\">\n                    <mat-icon\n                        class=\"icon-size-5 text-current\"\n                        [svgIcon]=\"'heroicons_solid:x-mark'\"></mat-icon>\n                </button>\n            </div>\n            <div class=\"flex items-center text-lg font-medium leading-10\">\n                <span class=\"\">Applications</span>\n            </div>\n        </div>\n        <div class=\"relative flex flex-col flex-auto sm:max-h-120 -mb-px overflow-y-auto bg-card\">\n\n            <!-- View mode -->\n            <ng-container>\n                <!-- Apps -->\n                <div class=\"grid grid-cols-2 grid-flow-row\">\n\n                    <!-- Application -->\n                    <ng-container *ngFor=\"let app of apps; trackBy: trackByFn\">\n                        <div class=\"relative group flex flex-col overflow-hidden bg-card border-r border-b even:border-r-0 hover:bg-gray-50 dark:hover:bg-black dark:hover:bg-opacity-5\">\n                             <!-- Normal links -->\n                            <a class=\"flex flex-col items-center justify-center w-full h-full py-6 no-underline\"\n                                *ngIf=\"!app.useRouter\"\n                                [href]=\"app.link\" target=\"_blank\">\n                                <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n                            </a>\n                            <!-- Router links -->\n                            <a class=\"flex flex-col items-center justify-center w-full h-full py-6 no-underline\"\n                                *ngIf=\"app.useRouter\"\n                                [href]=\"app.link\" target=\"_blank\">\n                                <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n                            </a>\n\n                            <ng-template #linkContent>\n                                <div class=\"relative flex shrink-0 items-center justify-center w-12 h-12 mb-3 rounded-full bg-gray-100 dark:bg-gray-700\">\n                                    <mat-icon class=\"z-10\" [svgIcon]=\"app.icon\"></mat-icon>\n                                </div>\n                                <div class=\"font-medium text-center\">{{app.label}}</div>\n                                <div class=\"text-md text-center text-secondary\">{{app.description}}</div>\n                            </ng-template>\n                        </div>\n                    </ng-container>\n                </div>\n\n                <!-- No Apps -->\n                <ng-container *ngIf=\"!apps || !apps.length\">\n                    <div class=\"flex flex-col flex-auto items-center justify-center sm:justify-start py-12 px-8\">\n                        <div class=\"flex flex-0 items-center justify-center w-14 h-14 rounded-full bg-primary-100 dark:bg-primary-600\">\n                            <mat-icon\n                                class=\"text-primary-700 dark:text-primary-50\"\n                                [svgIcon]=\"'heroicons_outline:bookmark'\"></mat-icon>\n                        </div>\n                        <div class=\"mt-5 text-2xl font-semibold tracking-tight\">No apps</div>\n                        <div class=\"w-full max-w-60 mt-1 text-md text-center text-secondary\">When you have apps, they will appear here.</div>\n                    </div>\n                </ng-container>\n            </ng-container>\n        </div>\n    </div>\n</ng-template>\n","import { NgFor, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { LangDefinition, TranslocoService } from '@jsverse/transloco';\nimport { take } from 'rxjs';\nimport { GenesisNavigationService } from '../../../../@genesis/components/navigation/navigation.service';\nimport { GenesisVerticalNavigationComponent } from '../../../../@genesis/components/navigation/vertical/vertical.component';\nimport { CoreService } from 'genesis-coreservice';\n\n@Component({\n  selector: 'languages',\n  templateUrl: './languages.component.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  exportAs: 'languages',\n  standalone: true,\n  imports: [MatButtonModule, MatMenuModule, NgTemplateOutlet, NgFor],\n})\nexport class LanguagesComponent implements OnInit {\n  availableLangs: LangDefinition[];\n  activeLang: string;\n  flagCodes: Record<string, string>;\n\n  constructor(\n    private readonly genesisNavigationService: GenesisNavigationService,\n    private readonly translocoService: TranslocoService,\n    private readonly coreService: CoreService\n  ) { }\n\n  ngOnInit(): void {\n    const availableLangs = this.translocoService.getAvailableLangs();\n    this.availableLangs = (availableLangs as (LangDefinition | string)[]).map((lang) => {\n      return typeof lang === 'string' ? { id: lang, label: this.getLanguageLabel(lang) } : lang;\n    });\n\n    this.translocoService.langChanges$.subscribe((activeLang) => {\n      this.activeLang = activeLang;\n      this.updateNavigation(activeLang);\n    });\n\n    this.flagCodes = {\n      'en-GB': 'gb',\n      'de-DE': 'de',\n      'nl-NL': 'nl',\n      'tr-TR': 'tr',\n    };\n  }\n\n  async setActiveLang(lang: string): Promise<void> {\n    const request = {\n      language: lang\n    };\n\n    await this.coreService.putCall('User/UpdateUserLanguage', request);\n\n    this.translocoService.setActiveLang(lang);\n    localStorage.setItem('userLanguage', lang);\n  }\n\n  trackByFn(index: number, item: any): any {\n    return item.id || index;\n  }\n\n  private updateNavigation(lang: string): void {\n    const navComponent = this.genesisNavigationService.getComponent<GenesisVerticalNavigationComponent>('mainNavigation');\n\n    if (!navComponent) {\n      return;\n    }\n\n    const navigation = navComponent.navigation;\n\n    const projectDashboardItem = this.genesisNavigationService.getItem('dashboards.project', navigation);\n    if (projectDashboardItem) {\n      this.translocoService.selectTranslate('Project').pipe(take(1))\n        .subscribe((translation) => {\n          projectDashboardItem.title = translation;\n          navComponent.refresh();\n        });\n    }\n\n    const analyticsDashboardItem = this.genesisNavigationService.getItem('dashboards.analytics', navigation);\n    if (analyticsDashboardItem) {\n      this.translocoService.selectTranslate('Analytics').pipe(take(1))\n        .subscribe((translation) => {\n          analyticsDashboardItem.title = translation;\n          navComponent.refresh();\n        });\n    }\n  }\n\n  private getLanguageLabel(lang: string): string {\n    const languageMap: Record<string, string> = {\n      'en-GB': 'English',\n      'de-DE': 'Deutsch',\n      'nl-NL': 'Nederlands',\n      'tr-TR': 'Türkçe',\n    };\n\n    return languageMap[lang] || lang;\n  }\n}\n\nexport interface ILanguageDropdownItem {\n  key: string;\n  value: string;\n  icon?: string;\n}\n","<!-- Button -->\n<button mat-icon-button [matMenuTriggerFor]=\"languages\">\n    <ng-container\n        *ngTemplateOutlet=\"flagImage; context: { $implicit: activeLang }\">\n</ng-container>\n</button>\n\n<!-- Language menu -->\n<mat-menu [xPosition]=\"'before'\" #languages=\"matMenu\">\n    <ng-container *ngFor=\"let lang of availableLangs; trackBy: trackByFn\">\n        <button mat-menu-item (click)=\"setActiveLang(lang.id)\">\n            <span class=\"flex items-center\">\n                <ng-container\n                    *ngTemplateOutlet=\"\n                        flagImage;\n                        context: { $implicit: lang.id }\">\n                </ng-container>\n                <span class=\"ml-3\">{{ lang.label }}</span>\n            </span>\n        </button>\n    </ng-container>\n</mat-menu>\n\n<!-- Flag image template -->\n<!-- Flag image template -->\n<ng-template let-lang #flagImage>\n    <span class=\"w-6\">\n        <img\n            class=\"w-full h-auto block\"\n            [src]=\"'assets/images/flags/' + flagCodes[lang].toUpperCase() + '.svg'\"\n            [alt]=\"'Flag image for ' + lang\"/>\n    </span>\n</ng-template>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n    DatePipe,\n    NgClass,\n    NgFor,\n    NgIf,\n    NgTemplateOutlet,\n} from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Inject,\n    OnDestroy,\n    OnInit,\n    TemplateRef,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterLink } from '@angular/router';\nimport {\n    Notification,\n    NotificationCount,\n    NotificationEvent,\n    PushNotificationType,\n} from 'genesis-apiservices';\nimport {\n    APP_CONFIG_GEN,\n    IAppConfig,\n    QueryableResponse,\n} from 'genesis-coreservice';\nimport { genesisAnimations } from '../../../../@genesis/animations';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n    selector: 'notifications',\n    templateUrl: './notifications.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'notifications',\n    standalone: true,\n    animations: genesisAnimations,\n    imports: [\n        MatButtonModule,\n        NgIf,\n        MatIconModule,\n        MatTooltipModule,\n        NgFor,\n        NgClass,\n        NgTemplateOutlet,\n        RouterLink,\n        DatePipe,\n    ],\n})\nexport class NotificationsComponent implements OnInit, OnDestroy {\n    @ViewChild('notificationsOrigin') private notificationsOrigin?: MatButton | null;\n    @ViewChild('notificationsPanel')\n    private notificationsPanel?: TemplateRef<any>;\n\n    notifications: Notification[] = [];\n    unreadCount: number = 0;\n    notificationType = PushNotificationType.Acceptation;\n\n    private overlayRef?: OverlayRef;\n    private unsubscribeAll: Subject<any> = new Subject<any>();\n\n    constructor(\n        private changeDetectorRef: ChangeDetectorRef,\n        private notificationEvent: NotificationEvent,\n        private overlay: Overlay,\n        private viewContainerRef: ViewContainerRef,\n        @Inject(APP_CONFIG_GEN) public appConfig: IAppConfig,\n    ) {}\n\n    ngOnInit(): void {\n        if (this.appConfig.showNotification) {\n            this.notificationEvent.getNewNotifications$\n                .pipe(takeUntil(this.unsubscribeAll))\n                .subscribe((res: Notification) => {\n                    if (res) {\n                        this.notifications.push(res);\n                        this.changeDetectorRef.markForCheck();\n                    }\n                });\n            this.notificationEvent.notifications$\n                .pipe(takeUntil(this.unsubscribeAll))\n                .subscribe((response: QueryableResponse<Notification[]>) => {\n                    this.notifications = response.data;\n                    this.unreadCount = response.totalCount;\n                    this.changeDetectorRef.markForCheck();\n                });\n\n            this.notificationEvent.readNotifcation\n                .pipe(takeUntil(this.unsubscribeAll))\n                .subscribe((notification: Notification) => {\n                    var findIndex = this.notifications.findIndex(\n                        (x) => x.id == notification.id,\n                    );\n                    this.notifications.splice(findIndex, 1);\n                    this.changeDetectorRef.markForCheck();\n                });\n\n            this.notificationEvent.delete\n                .pipe(takeUntil(this.unsubscribeAll))\n                .subscribe((notification: Notification) => {\n                    var findIndex = this.notifications.findIndex(\n                        (x) => x.id == notification.id,\n                    );\n                    this.notifications.splice(findIndex, 1);\n                    this.changeDetectorRef.markForCheck();\n                });\n\n            this.notificationEvent.changeCountNotification\n                .pipe(takeUntil(this.unsubscribeAll))\n                .subscribe((count: NotificationCount) => {\n                    this.unreadCount = count.unReadCount;\n                    this.changeDetectorRef.markForCheck();\n                });\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribeAll.next(null);\n        this.unsubscribeAll.complete();\n\n        if (this.overlayRef) {\n            this.overlayRef.dispose();\n        }\n    }\n\n    openPanel(): void {\n        if (!this.notificationsPanel || !this.notificationsOrigin) {\n            return;\n        }\n\n        if (!this.overlayRef) {\n            this.createOverlay();\n        }\n        this.overlayRef?.attach(\n            new TemplatePortal(this.notificationsPanel, this.viewContainerRef),\n        );\n    }\n\n    closePanel(): void {\n        this.overlayRef?.detach();\n    }\n\n    markAllAsRead(): void {\n        this.notificationEvent.readAllNotifcation = true;\n    }\n\n    toggleRead(notification: Notification): void {\n        notification.read = !notification.read;\n        if (this.unreadCount > 0) this.unreadCount -= 1;\n        this.notificationEvent.readNotifcation = notification;\n    }\n\n    deleteNotify(notification: Notification): void {\n        notification.read = !notification.read;\n        if (this.unreadCount > 0) this.unreadCount -= 1;\n        this.notificationEvent.delete = notification;\n    }\n\n    trackByFn(index: number, item: any): any {\n        return item.id || index;\n    }\n\n    Acceptation(notification: Notification) {\n        this.notificationEvent.acceptNotifcation = notification;\n    }\n\n    reject(notification: Notification) {\n        this.notificationEvent.rejectNotifcation = notification;\n    }\n\n    private createOverlay(): void {\n        this.overlayRef = this.overlay.create({\n            hasBackdrop: true,\n            backdropClass: 'genesis-backdrop-on-mobile',\n            scrollStrategy: this.overlay.scrollStrategies.block(),\n            positionStrategy: this.overlay\n                .position()\n                .flexibleConnectedTo(\n                    this.notificationsOrigin?._elementRef?.nativeElement!,\n                )\n                .withLockedPosition(true)\n                .withPush(true)\n                .withPositions([\n                    {\n                        originX: 'start',\n                        originY: 'bottom',\n                        overlayX: 'start',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'start',\n                        originY: 'top',\n                        overlayX: 'start',\n                        overlayY: 'bottom',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'bottom',\n                        overlayX: 'end',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'top',\n                        overlayX: 'end',\n                        overlayY: 'bottom',\n                    },\n                ]),\n        });\n\n        this.overlayRef.backdropClick().subscribe(() => {\n            this.overlayRef?.detach();\n        });\n    }\n}\n","<!-- Notifications toggle -->\n<button mat-icon-button (click)=\"openPanel()\" #notificationsOrigin>\n    <ng-container *ngIf=\"unreadCount > 0\">\n        <span class=\"absolute top-0 right-0 left-0 flex items-center justify-center h-3\">\n            <span class=\"flex items-center justify-center shrink-0 min-w-4 h-4 px-1 ml-4 mt-2.5 rounded-full bg-red-600 text-indigo-50 text-xs font-medium\">\n                @if (unreadCount > 100) {\n                    +{{99}}\n                }\n                @else {\n                    {{unreadCount}}\n                }\n            </span>\n        </span>\n    </ng-container>\n    <mat-icon [svgIcon]=\"'heroicons_outline:bell'\"></mat-icon>\n</button>\n\n<!-- Notifications panel -->\n<ng-template #notificationsPanel>\n    <div class=\"fixed inset-0 sm:static sm:inset-auto flex flex-col sm:min-w-90 sm:w-90 sm:rounded-2xl overflow-hidden shadow-lg\">\n        <!-- Header -->\n        <div class=\"flex shrink-0 items-center py-4 pr-4 pl-6 bg-primary text-on-primary\">\n            <div class=\"sm:hidden -ml-1 mr-3\">\n                <button mat-icon-button (click)=\"closePanel()\">\n                    <mat-icon class=\"icon-size-5 text-current\" [svgIcon]=\"'heroicons_solid:x-mark'\"></mat-icon>\n                </button>\n            </div>\n            <div class=\"text-lg font-medium leading-10\">\n                Notifications \n                @if(unreadCount > 0){\n                    ({{unreadCount}})\n                }\n            </div>\n            <div class=\"ml-auto\">\n                <button mat-icon-button [matTooltip]=\"'Mark all as read'\" [disabled]=\"unreadCount === 0\"\n                    (click)=\"markAllAsRead()\">\n                    <mat-icon class=\"icon-size-5 text-current\" [svgIcon]=\"'heroicons_solid:envelope-open'\"></mat-icon>\n                </button>\n            </div>\n        </div>\n\n        <!-- Content -->\n        <div class=\"relative flex flex-col flex-auto sm:max-h-120 divide-y overflow-y-auto bg-card\">\n            <!-- Notifications -->\n            <ng-container *ngFor=\"let notification of notifications; trackBy: trackByFn\">\n                <div class=\"flex group hover:bg-gray-50 dark:hover:bg-black dark:hover:bg-opacity-5\" [ngClass]=\"{'unread': !notification.read}\" [@zoomOut]=\"notification.read\">\n\n                    <!-- Notification with a link -->\n                    <ng-container *ngIf=\"notification.link\">\n                        <!-- Normal links -->\n                        <ng-container *ngIf=\"!notification.useRouter\">\n                            <a class=\"flex flex-auto py-5 pl-6 cursor-pointer\" [href]=\"notification.link\">\n                                <ng-container *ngTemplateOutlet=\"notificationContent\"></ng-container>\n                            </a>\n                        </ng-container>\n                        <!-- Router links -->\n                        <ng-container *ngIf=\"notification.useRouter\">\n                            <a class=\"flex flex-auto py-5 pl-6 cursor-pointer\" [routerLink]=\"notification.link\">\n                                <ng-container *ngTemplateOutlet=\"notificationContent\"></ng-container>\n                            </a>\n                        </ng-container>\n                    </ng-container>\n\n                    <!-- Notification without a link -->\n                    <ng-container *ngIf=\"!notification.link\">\n                        <div class=\"flex flex-auto py-5 pl-6\">\n                            <ng-container *ngTemplateOutlet=\"notificationContent\"></ng-container>\n                        </div>\n                    </ng-container>\n\n                    <!-- Actions -->\n                    <div class=\"relative flex flex-col my-5 mr-6 ml-2\">\n                        <!-- Indicator -->\n                        <button class=\"w-6 h-6\" mat-icon-button (click)=\"toggleRead(notification)\"\n                            [matTooltip]=\"notification.read ? 'Mark as unread' : 'Mark as read'\">\n                            <span class=\"w-2 h-2 rounded-full\" [ngClass]=\"{'bg-gray-400 dark:bg-gray-500 sm:opacity-0 sm:group-hover:opacity-100': notification.read,\n                                            'bg-primary': !notification.read}\"></span>\n                        </button>\n                        <!-- Remove -->\n                        <button class=\"w-6 h-6 sm:opacity-0 sm:group-hover:opacity-100\" mat-icon-button\n                            (click)=\"deleteNotify(notification)\" [matTooltip]=\"'Remove'\">\n                            <mat-icon class=\"icon-size-4\" [svgIcon]=\"'heroicons_solid:x-mark'\"></mat-icon>\n                        </button>\n                    </div>\n\n                </div>\n\n                <!-- Notification content template -->\n                <ng-template #notificationContent>\n                    <!-- Icon -->\n                    <ng-container *ngIf=\"notification.icon && !notification.image\">\n                        <div\n                            class=\"flex shrink-0 items-center justify-center w-8 h-8 mr-4 rounded-full bg-gray-100 dark:bg-gray-700\">\n                            <mat-icon class=\"icon-size-5\" [svgIcon]=\"notification.icon\">\n                            </mat-icon>\n                        </div>\n                    </ng-container>\n                    <!-- Image -->\n                    <ng-container *ngIf=\"notification.image\">\n                        <img class=\"shrink-0 w-8 h-8 mr-4 rounded-full overflow-hidden object-cover object-center\"\n                            [src]=\"notification.image\" [alt]=\"'Notification image'\">\n                    </ng-container>\n                    <!-- Title, description & time -->\n                    <div class=\"flex flex-col flex-auto\">\n                        <ng-container *ngIf=\"notification.title\">\n                            <div class=\"font-semibold line-clamp-1\" [innerHTML]=\"notification.title\"></div>\n                        </ng-container>\n                        <ng-container *ngIf=\"notification.description\">\n                            <div class=\"line-clamp-2\" [innerHTML]=\"notification.description\"></div>\n                        </ng-container>\n                        <div class=\"mt-2 text-sm leading-none text-secondary\">\n                            {{notification.time | date:'MMM dd, h:mm a'}}\n                        </div>\n                        <div class=\"mt-2 flex justify-between\" *ngIf=\"notification.notificationType === notificationType && notification.read != true \">\n                            <button mat-flat-button (click)=\"reject(notification)\">\n                                Reject\n                            </button>\n\n                            <button mat-flat-button color=\"accent\" (click)=\"Acceptation(notification)\">\n                                Accept\n                            </button>\n                        </div>\n                    </div>\n                </ng-template>\n            </ng-container>\n\n            <!-- No notifications -->\n            <ng-container *ngIf=\"!notifications || !notifications.length\">\n                <div class=\"flex flex-col flex-auto items-center justify-center sm:justify-start py-12 px-8\">\n                    <div\n                        class=\"flex flex-0 items-center justify-center w-14 h-14 rounded-full bg-primary-100 dark:bg-primary-600\">\n                        <mat-icon class=\"text-primary-700 dark:text-primary-50\"\n                            [svgIcon]=\"'heroicons_outline:bell'\"></mat-icon>\n                    </div>\n                    <div class=\"mt-5 text-2xl font-semibold tracking-tight\">No notifications</div>\n                    <div class=\"w-full max-w-60 mt-1 text-md text-center text-secondary\">When you have notifications,\n                        they will appear here.</div>\n                </div>\n            </ng-container>\n\n        </div>\n\n    </div>\n</ng-template>","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map, Observable, ReplaySubject, switchMap, take, tap } from 'rxjs';\nimport { Shortcut } from './shortcuts.types';\n\n@Injectable({ providedIn: 'root' })\nexport class ShortcutsService {\n    private _shortcuts: ReplaySubject<Shortcut[]> = new ReplaySubject<Shortcut[]>(1);\n    constructor(private _httpClient: HttpClient) {\n    }\n\n    get shortcuts$(): Observable<Shortcut[]> {\n        return this._shortcuts.asObservable();\n    }\n\n    getAll(): Observable<Shortcut[]> {\n        return this._httpClient.get<Shortcut[]>('api/common/shortcuts').pipe(\n            tap((shortcuts) => {\n                this._shortcuts.next(shortcuts);\n            }),\n        );\n    }\n\n    create(shortcut: Shortcut): Observable<Shortcut> {\n        return this.shortcuts$.pipe(\n            take(1),\n            switchMap(shortcuts => this._httpClient.post<Shortcut>('api/common/shortcuts', { shortcut }).pipe(\n                map((newShortcut) => {\n                    this._shortcuts.next([...shortcuts, newShortcut]);\n                    return newShortcut;\n                }),\n            )),\n        );\n    }\n\n    update(id: string, shortcut: Shortcut): Observable<Shortcut> {\n        return this.shortcuts$.pipe(\n            take(1),\n            switchMap(shortcuts => this._httpClient.patch<Shortcut>('api/common/shortcuts', {\n                id,\n                shortcut,\n            }).pipe(\n                map((updatedShortcut: Shortcut) => {\n                    const index = shortcuts.findIndex(item => item.id === id);\n                    shortcuts[index] = updatedShortcut;\n                    this._shortcuts.next(shortcuts);\n                    return updatedShortcut;\n                }),\n            )),\n        );\n    }\n\n    delete(id: string): Observable<boolean> {\n        return this.shortcuts$.pipe(\n            take(1),\n            switchMap(shortcuts => this._httpClient.delete<boolean>('api/common/shortcuts', { params: { id } }).pipe(\n                map((isDeleted: boolean) => {\n                    const index = shortcuts.findIndex(item => item.id === id);\n                    shortcuts.splice(index, 1);\n                    this._shortcuts.next(shortcuts);\n                    return isDeleted;\n                }),\n            )),\n        );\n    }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterLink } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { Shortcut } from './shortcuts.types';\nimport { ShortcutsService } from './shortcuts.service';\n\n@Component({\n    selector: 'shortcuts',\n    templateUrl: './shortcuts.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'shortcuts',\n    standalone: true,\n    imports: [MatButtonModule, MatIconModule, NgIf, MatTooltipModule, NgFor, NgClass, NgTemplateOutlet, RouterLink, FormsModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatSlideToggleModule],\n})\nexport class ShortcutsComponent implements OnInit, OnDestroy {\n    @ViewChild('shortcutsOrigin') private _shortcutsOrigin: MatButton;\n    @ViewChild('shortcutsPanel') private _shortcutsPanel: TemplateRef<any>;\n\n    mode: 'view' | 'modify' | 'add' | 'edit' = 'view';\n    shortcutForm: UntypedFormGroup;\n    shortcuts: Shortcut[];\n    private _overlayRef: OverlayRef;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _formBuilder: UntypedFormBuilder,\n        private _shortcutsService: ShortcutsService,\n        private _overlay: Overlay,\n        private _viewContainerRef: ViewContainerRef,\n    ) {\n    }\n\n    ngOnInit(): void {\n        this.shortcutForm = this._formBuilder.group({\n            id: [null],\n            label: ['', Validators.required],\n            description: [''],\n            icon: ['', Validators.required],\n            link: ['', Validators.required],\n            useRouter: ['', Validators.required],\n        });\n\n        this._shortcutsService.shortcuts$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((shortcuts: Shortcut[]) => {\n                this.shortcuts = shortcuts;\n                this._changeDetectorRef.markForCheck();\n            });\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n        if (this._overlayRef) {\n            this._overlayRef.dispose();\n        }\n    }\n\n    openPanel(): void {\n        if (!this._shortcutsPanel || !this._shortcutsOrigin) {\n            return;\n        }\n\n        this.mode = 'view';\n        if (!this._overlayRef) {\n            this._createOverlay();\n        }\n        this._overlayRef.attach(new TemplatePortal(this._shortcutsPanel, this._viewContainerRef));\n    }\n\n    closePanel(): void {\n        this._overlayRef.detach();\n    }\n\n    changeMode(mode: 'view' | 'modify' | 'add' | 'edit'): void {\n        this.mode = mode;\n    }\n\n    newShortcut(): void {\n        this.shortcutForm.reset();\n        this.mode = 'add';\n    }\n\n    editShortcut(shortcut: Shortcut): void {\n        this.shortcutForm.reset(shortcut);\n        this.mode = 'edit';\n    }\n\n    save(): void {\n        const shortcut = this.shortcutForm.value;\n        if (shortcut.id) {\n            this._shortcutsService.update(shortcut.id, shortcut).subscribe();\n        }\n        else {\n            this._shortcutsService.create(shortcut).subscribe();\n        }\n\n        this.mode = 'modify';\n    }\n\n    delete(): void {\n        const shortcut = this.shortcutForm.value;\n        this._shortcutsService.delete(shortcut.id).subscribe();\n        this.mode = 'modify';\n    }\n\n    trackByFn(index: number, item: any): any {\n        return item.id || index;\n    }\n    \n    private _createOverlay(): void {\n        this._overlayRef = this._overlay.create({\n            hasBackdrop: true,\n            backdropClass: 'genesis-backdrop-on-mobile',\n            scrollStrategy: this._overlay.scrollStrategies.block(),\n            positionStrategy: this._overlay.position()\n                .flexibleConnectedTo(this._shortcutsOrigin._elementRef.nativeElement)\n                .withLockedPosition(true)\n                .withPush(true)\n                .withPositions([\n                    {\n                        originX: 'start',\n                        originY: 'bottom',\n                        overlayX: 'start',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'start',\n                        originY: 'top',\n                        overlayX: 'start',\n                        overlayY: 'bottom',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'bottom',\n                        overlayX: 'end',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'top',\n                        overlayX: 'end',\n                        overlayY: 'bottom',\n                    },\n                ]),\n        });\n\n        this._overlayRef.backdropClick().subscribe(() => {\n            this._overlayRef.detach();\n        });\n    }\n}\n","<!-- Shortcuts toggle -->\n<button\n    mat-icon-button\n    (click)=\"openPanel()\"\n    #shortcutsOrigin>\n    <mat-icon [svgIcon]=\"'heroicons_outline:squares-plus'\"></mat-icon>\n</button>\n\n<!-- Shortcuts panel -->\n<ng-template #shortcutsPanel>\n    <div class=\"fixed inset-0 sm:static sm:inset-auto flex flex-col sm:min-w-90 sm:w-90 sm:rounded-2xl overflow-hidden shadow-lg\">\n\n        <!-- Header -->\n        <div class=\"flex shrink-0 items-center py-4 pr-4 pl-6 bg-primary text-on-primary\">\n            <div class=\"sm:hidden -ml-1 mr-3\">\n                <button\n                    mat-icon-button\n                    (click)=\"closePanel()\">\n                    <mat-icon\n                        class=\"icon-size-5 text-current\"\n                        [svgIcon]=\"'heroicons_solid:x-mark'\"></mat-icon>\n                </button>\n            </div>\n            <div class=\"flex items-center text-lg font-medium leading-10\">\n                <span class=\"\">Shortcuts</span>\n                <ng-container *ngIf=\"mode !== 'view'\">\n                    <span class=\"ml-1\">\n                        <ng-container *ngIf=\"mode === 'add'\">- Add new</ng-container>\n                        <ng-container *ngIf=\"mode === 'modify' || mode === 'edit'\">- Editing</ng-container>\n                    </span>\n                </ng-container>\n            </div>\n            <div class=\"ml-auto\">\n\n                <!-- View mode -->\n                <ng-container *ngIf=\"mode === 'view'\">\n                    <!-- Enter 'modify' mode -->\n                    <button\n                        mat-icon-button\n                        (click)=\"changeMode('modify')\"\n                        [matTooltip]=\"'Enter edit mode'\">\n                        <mat-icon\n                            class=\"icon-size-5 text-current\"\n                            [svgIcon]=\"'heroicons_solid:pencil-square'\"></mat-icon>\n                    </button>\n                    <!-- Enter 'add' mode -->\n                    <button\n                        mat-icon-button\n                        (click)=\"newShortcut()\"\n                        [matTooltip]=\"'Add shortcut'\">\n                        <mat-icon\n                            class=\"icon-size-5 text-current\"\n                            [svgIcon]=\"'heroicons_solid:plus-circle'\"></mat-icon>\n                    </button>\n                </ng-container>\n\n                <!-- Modify mode -->\n                <ng-container *ngIf=\"mode === 'modify'\">\n                    <!-- Enter 'view' mode -->\n                    <button\n                        mat-icon-button\n                        (click)=\"changeMode('view')\"\n                        [matTooltip]=\"'Exit edit mode'\">\n                        <mat-icon\n                            class=\"icon-size-5 text-current\"\n                            [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n                    </button>\n                </ng-container>\n\n                <!-- Add mode -->\n                <ng-container *ngIf=\"mode === 'add'\">\n                    <!-- Enter 'view' mode -->\n                    <button\n                        mat-icon-button\n                        (click)=\"changeMode('view')\"\n                        [matTooltip]=\"'Cancel'\">\n                        <mat-icon\n                            class=\"icon-size-5 text-current\"\n                            [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n                    </button>\n                </ng-container>\n\n                <!-- Edit mode -->\n                <ng-container *ngIf=\"mode === 'edit'\">\n                    <!-- Enter 'modify' mode -->\n                    <button\n                        mat-icon-button\n                        (click)=\"changeMode('modify')\"\n                        [matTooltip]=\"'Cancel'\">\n                        <mat-icon\n                            class=\"icon-size-5 text-current\"\n                            [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n                    </button>\n                </ng-container>\n            </div>\n        </div>\n        <div class=\"relative flex flex-col flex-auto sm:max-h-120 -mb-px overflow-y-auto bg-card\">\n\n            <!-- View mode -->\n            <ng-container *ngIf=\"mode === 'view' || mode === 'modify'\">\n\n                <!-- Shortcuts -->\n                <div class=\"grid grid-cols-2 grid-flow-row\">\n                    <!-- Shortcut -->\n                    <ng-container *ngFor=\"let shortcut of shortcuts; trackBy: trackByFn\">\n                        <div class=\"relative group flex flex-col overflow-hidden bg-card border-r border-b even:border-r-0 hover:bg-gray-50 dark:hover:bg-black dark:hover:bg-opacity-5\">\n                            <ng-container *ngIf=\"mode === 'modify'\">\n                                <div\n                                    class=\"absolute inset-0 z-99 cursor-pointer\"\n                                    (click)=\"editShortcut(shortcut)\">\n                                </div>\n                            </ng-container>\n                            <!-- Normal links -->\n                            <a\n                                class=\"flex flex-col items-center justify-center w-full h-full py-6 no-underline\"\n                                *ngIf=\"!shortcut.useRouter\"\n                                [ngClass]=\"{'pointer-events-none': mode === 'modify'}\"\n                                [href]=\"shortcut.link\">\n                                <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n                            </a>\n                            <!-- Router links -->\n                            <a\n                                class=\"flex flex-col items-center justify-center w-full h-full py-6 no-underline\"\n                                *ngIf=\"shortcut.useRouter\"\n                                [ngClass]=\"{'pointer-events-none': mode === 'modify'}\"\n                                [routerLink]=\"shortcut.link\">\n                                <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n                            </a>\n                            <!-- Link content template -->\n                            <ng-template #linkContent>\n                                <div class=\"relative flex shrink-0 items-center justify-center w-12 h-12 mb-3 rounded-full bg-gray-100 dark:bg-gray-700\">\n                                    <mat-icon\n                                        class=\"absolute opacity-0 group-hover:opacity-100 z-20 icon-size-5\"\n                                        *ngIf=\"mode === 'modify'\"\n                                        [svgIcon]=\"'heroicons_solid:pencil'\"></mat-icon>\n                                    <mat-icon\n                                        class=\"z-10\"\n                                        [ngClass]=\"{'group-hover:opacity-0': mode === 'modify'}\"\n                                        [svgIcon]=\"shortcut.icon\"></mat-icon>\n                                </div>\n                                <div class=\"font-medium text-center\">{{shortcut.label}}</div>\n                                <div class=\"text-md text-center text-secondary\">{{shortcut.description}}</div>\n                            </ng-template>\n                        </div>\n                    </ng-container>\n                </div>\n\n                <!-- No shortcuts -->\n                <ng-container *ngIf=\"!shortcuts || !shortcuts.length\">\n                    <div class=\"flex flex-col flex-auto items-center justify-center sm:justify-start py-12 px-8\">\n                        <div class=\"flex flex-0 items-center justify-center w-14 h-14 rounded-full bg-primary-100 dark:bg-primary-600\">\n                            <mat-icon\n                                class=\"text-primary-700 dark:text-primary-50\"\n                                [svgIcon]=\"'heroicons_outline:bookmark'\"></mat-icon>\n                        </div>\n                        <div class=\"mt-5 text-2xl font-semibold tracking-tight\">No shortcuts</div>\n                        <div class=\"w-full max-w-60 mt-1 text-md text-center text-secondary\">When you have shortcuts, they will appear here.</div>\n                    </div>\n                </ng-container>\n            </ng-container>\n\n            <!-- Add/Edit mode -->\n            <ng-container *ngIf=\"mode === 'add' || mode === 'edit'\">\n                <form\n                    class=\"p-6\"\n                    [formGroup]=\"shortcutForm\">\n                    <mat-form-field class=\"w-full\">\n                        <mat-label>Label</mat-label>\n                        <input\n                            matInput\n                            [formControlName]=\"'label'\"\n                            required>\n                    </mat-form-field>\n                    <mat-form-field class=\"w-full\">\n                        <mat-label>Description</mat-label>\n                        <input\n                            matInput\n                            [formControlName]=\"'description'\">\n                    </mat-form-field>\n                    <mat-form-field class=\"w-full\">\n                        <mat-label>Icon</mat-label>\n                        <input\n                            matInput\n                            [formControlName]=\"'icon'\"\n                            required>\n                    </mat-form-field>\n                    <mat-form-field class=\"w-full\">\n                        <mat-label>Link</mat-label>\n                        <input\n                            matInput\n                            [formControlName]=\"'link'\"\n                            required>\n                    </mat-form-field>\n                    <mat-slide-toggle\n                        [color]=\"'primary'\"\n                        [formControlName]=\"'useRouter'\">\n                        Use router for the link\n                    </mat-slide-toggle>\n                    <!-- Actions -->\n                    <div class=\"flex items-center justify-end mt-4\">\n                        <button\n                            class=\"mr-2\"\n                            *ngIf=\"mode === 'edit'\"\n                            mat-flat-button\n                            type=\"button\"\n                            (click)=\"delete()\">\n                            Delete\n                        </button>\n                        <button\n                            mat-flat-button\n                            [color]=\"'primary'\"\n                            [disabled]=\"!shortcutForm.valid\"\n                            type=\"button\"\n                            (click)=\"save()\">\n                            <ng-container *ngIf=\"mode === 'add'\">Add</ng-container>\n                            <ng-container *ngIf=\"mode === 'edit'\">Update</ng-container>\n                        </button>\n                    </div>\n                </form>\n            </ng-container>\n        </div>\n    </div>\n</ng-template>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { APP_CONFIG_GEN, AuthService, IAppConfig, UserModel } from 'genesis-coreservice';\n\nimport { Subject } from 'rxjs';\n\n@Component({\n    selector: 'user',\n    templateUrl: './user.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'user',\n    standalone: true,\n    imports: [\n    MatButtonModule,\n    MatMenuModule,\n    NgIf,\n    MatIconModule,\n    NgClass,\n    MatDividerModule\n]\n})\nexport class UserComponent implements OnInit, OnDestroy {\n    /* eslint-disable @typescript-eslint/naming-convention */\n    static ngAcceptInputType_showAvatar: BooleanInput;\n    /* eslint-enable @typescript-eslint/naming-convention */\n\n    @Input() showAvatar: boolean = true;\n    user: UserModel = <UserModel>{};\n\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        @Inject(APP_CONFIG_GEN) public appConfig: IAppConfig,\n        private _authService: AuthService,\n    ) {\n    }\n\n    ngOnInit(): void {\n        this._authService.getProfile().then((user: UserModel) => {\n            this.user = user;\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n\n    updateUserStatus(status: string): void {\n        if (!this.user) {\n            return;\n        }\n    }\n\n    signOut(): void {\n        this._authService.logout();\n    }\n}\n","<!-- Button -->\n<button\n    mat-icon-button\n    [matMenuTriggerFor]=\"userActions\">\n    <span class=\"relative\">\n        <img\n            class=\"w-7 h-7 rounded-full\"\n            *ngIf=\"showAvatar && user.picture\"\n            [src]=\"user.picture\">\n        <mat-icon\n            *ngIf=\"!showAvatar || !user.picture\"\n            [svgIcon]=\"'heroicons_outline:user-circle'\"></mat-icon>\n        <span\n            class=\"absolute right-0 bottom-0 w-2 h-2 rounded-full\"\n            [ngClass]=\"{'mr-px mb-px': !showAvatar || !user.picture,\n                          'bg-green-500': user.status === 'online',\n                          'bg-amber-500': user.status === 'away',\n                          'bg-red-500': user.status === 'busy',\n                          'bg-gray-400': user.status === 'not-visible'}\"\n        ></span>\n    </span>\n</button>\n\n<mat-menu\n    [xPosition]=\"'before'\"\n    #userActions=\"matMenu\">\n    <button mat-menu-item>\n        <span class=\"flex flex-col leading-none\">\n            <span>Signed in as</span>\n            <span class=\"mt-1.5 text-md font-medium\">{{user.email ?? user.userName}}</span>\n            <span *ngIf=\"user.company\" class=\"mt-1 text-md font-medium\">{{user.company}}</span>\n        </span>\n    </button>\n    <mat-divider class=\"my-2\"></mat-divider>\n\n    <a mat-menu-item [href]=\"appConfig.userProfileRoute\" target=\"_blank\">\n        <mat-icon [svgIcon]=\"'heroicons_outline:user-circle'\"></mat-icon>\n        <span>Profile</span>\n    </a>\n  \n    <a mat-menu-item [href]=\"appConfig.userSettingRoute\" target=\"_blank\">\n        <mat-icon [svgIcon]=\"'heroicons_outline:cog-8-tooth'\"></mat-icon>\n        <span>Settings</span>\n    </a>\n    <!-- <button\n        mat-menu-item\n        [matMenuTriggerFor]=\"userStatus\">\n        <mat-icon [svgIcon]=\"'heroicons_outline:ellipsis-horizontal-circle'\"></mat-icon>\n        <span>Status</span>\n    </button> -->\n    <mat-divider class=\"my-2\"></mat-divider>\n    <button\n        mat-menu-item\n        (click)=\"signOut()\">\n        <mat-icon [svgIcon]=\"'heroicons_outline:arrow-right-on-rectangle'\"></mat-icon>\n        <span>Sign out</span>\n    </button>\n</mat-menu>\n\n<!-- <mat-menu\n    class=\"user-status-menu\"\n    #userStatus=\"matMenu\">\n    <button\n        mat-menu-item\n        (click)=\"updateUserStatus('online')\">\n        <span class=\"w-4 h-4 mr-3 rounded-full bg-green-500\"></span>\n        <span>Online</span>\n    </button>\n    <button\n        mat-menu-item\n        (click)=\"updateUserStatus('away')\">\n        <span class=\"w-4 h-4 mr-3 rounded-full bg-amber-500\"></span>\n        <span>Away</span>\n    </button>\n    <button\n        mat-menu-item\n        (click)=\"updateUserStatus('busy')\">\n        <span class=\"w-4 h-4 mr-3 rounded-full bg-red-500\"></span>\n        <span>Busy</span>\n    </button>\n    <button\n        mat-menu-item\n        (click)=\"updateUserStatus('not-visible')\">\n        <span class=\"w-4 h-4 mr-3 rounded-full bg-gray-400\"></span>\n        <span>Invisible</span>\n    </button>\n</mat-menu> -->\n","import { Injectable } from '@angular/core';\nimport { ChatResponse, ChatTransfer, ChatTransferAi } from './chat-agent-models';\nimport { CoreService } from 'genesis-coreservice';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ChatAgentService extends CoreService {\n  public ChatTransfer(request: ChatTransfer): Promise<ChatResponse> {\n    return this.postCallWithoutToast('ChatAI/ChatTransfer', request);\n  }\n\n  public Chat(request: FormData): Promise<ChatResponse> {\n    return this.postFile('ChatAI/Chat', request);\n  }\n\n  public ChatTransferAi(request: ChatTransferAi): Promise<any> {\n    return this.postCallWithoutToast('ChatAI', request);\n  }\n}","import { CommonModule, DatePipe, DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, Inject, OnInit, Renderer2 } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { ChatResponse, ChatTransfer } from './chat-agent-models';\nimport { ChatAgentService } from './chat-agent.service';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n  selector: 'genesis-chat-agent',\n  templateUrl: './chat-agent.component.html',\n  styleUrls: ['./chat-agent.component.scss'],\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    MatButtonModule,\n    MatIconModule,\n    NgClass,\n    NgTemplateOutlet,\n    DatePipe\n  ],\n  providers: [ChatAgentService]\n})\nexport class GenesisChatAgentComponent implements OnInit {\n  postModel: ChatTransfer = <ChatTransfer>{};\n  isPanelOpened = false;\n  agentSteps: string[] = [];\n  isRecording = false;\n  recordedAudio?: Blob;\n  recordedAudioUrl = '';\n  recordSeconds = 0;\n  chatHistory: ChatResponse[] = [];\n  data: any = {};\n  file?: File;\n  private _overlay: HTMLElement | null = null;\n  private mediaRecorder?: MediaRecorder;\n  private audioChunks: Blob[] = [];\n  private recordTimer?: any;\n\n  constructor(\n    private readonly chatAgentService: ChatAgentService,\n    @Inject(DOCUMENT) private readonly _document: Document,\n    private readonly _renderer2: Renderer2,\n    private matIconRegistry: MatIconRegistry,\n    private domSanitizer: DomSanitizer\n  ) { \n    this.matIconRegistry.addSvgIcon(\n      'xlsx-icon',\n      this.domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/xlsx.svg')\n    );\n  }\n\n  ngOnInit(): void {\n    this.chatHistory = [{\n      role: 'agent',\n      isComplete: true,\n      message: 'Hello! How can I assist you today?',\n      createdAt: new Date()\n    }];\n    this.postModel.sessionId = crypto.randomUUID();\n  }\n\n  togglePanel(): void {\n    this.isPanelOpened = !this.isPanelOpened;\n    if (this.isPanelOpened) {\n      this._showOverlay();\n    } else {\n      this._hideOverlay();\n    }\n  }\n\n  sendMessage(): void {\n    if (!this.postModel.commandText) return;\n    this.chatHistory.push({\n      role: 'user',\n      message: this.postModel.commandText,\n      isComplete: true,\n      createdAt: new Date()\n    });\n    this.agentSteps = ['Thinking...'];\n    const formData: FormData = new FormData();\n    if( this.file) {\n       formData.append('file', this.file);\n    }\n    formData.append('data', JSON.stringify(this.postModel));\n    this.chatAgentService.Chat(formData).then((response: ChatResponse) => {\n      this.agentSteps = [];\n        if (response) {\n          this.postModel.commandText = '';\n          this.data = response.data;\n          console.log('Response data:', this.data);\n          response.role = 'agent';\n          response.createdAt = new Date();\n          this.chatHistory.push(response);\n        }\n    }).catch((err) => {\n        this.agentSteps = [];\n        this.chatHistory.push({\n          role: 'agent',\n          message: 'Sorry, something went wrong.',\n          createdAt: new Date()\n        });\n        console.error('ChatAgentService error:', err);\n      });\n\n    // this.chatAgentService.ChatTransfer(this.postModel)\n    //   .then((response: ChatResponse) => {\n    //     this.agentSteps = [];\n    //     if (response) {\n    //       this.postModel.commandText = '';\n    //       this.data = response.data;\n    //       console.log('Response data:', this.data);\n    //       response.role = 'agent';\n    //       response.createdAt = new Date();\n    //       this.chatHistory.push(response);\n    //     }\n    //   })\n    //   .catch((err) => {\n    //     this.agentSteps = [];\n    //     this.chatHistory.push({\n    //       role: 'agent',\n    //       message: 'Sorry, something went wrong.',\n    //       createdAt: new Date()\n    //     });\n    //     console.error('ChatAgentService error:', err);\n    //   });\n  }\n\n  recordVoice(): void {\n    if (!navigator?.mediaDevices?.getUserMedia) {\n      console.error('getUserMedia not supported on your browser!');\n      return;\n    }\n    navigator.mediaDevices.getUserMedia({ audio: true })\n      .then(stream => {\n        this.mediaRecorder = new MediaRecorder(stream);\n        this.audioChunks = [];\n        this.isRecording = true;\n        this.recordSeconds = 0;\n        this.startRecordTimer();\n        this.mediaRecorder.ondataavailable = event => this.audioChunks.push(event.data);\n        this.mediaRecorder.onstop = () => {\n          this.isRecording = false;\n          this.stopRecordTimer();\n          this.recordedAudio = new Blob(this.audioChunks, { type: 'audio/wav' });\n          this.recordedAudioUrl = URL.createObjectURL(this.recordedAudio);\n          stream.getTracks().forEach(track => track.stop());\n        };\n        this.mediaRecorder.start();\n      })\n      .catch(error => console.error('Error accessing microphone:', error));\n  }\n\n  stopRecording(): void {\n    if (this.mediaRecorder && this.mediaRecorder.state === 'recording') {\n      this.mediaRecorder.stop();\n    }\n  }\n\n  sendRecordedAudio(): void {\n    if (!this.recordedAudio) return;\n    this.discardRecordedAudio();\n  }\n\n  discardRecordedAudio(): void {\n    if (this.recordedAudioUrl) URL.revokeObjectURL(this.recordedAudioUrl);\n    this.recordedAudio = undefined;\n    this.recordedAudioUrl = '';\n  }\n\n  attachFile(): void {\n    let me = this;\n    const fileInput = document.createElement('input');\n    fileInput.type = 'file';\n    fileInput.accept = '.xls,.xlsx,image/*,.jpg,.jpeg,.png,.gif,.webp,.bmp,.tiff';\n    fileInput.onchange = () => {\n      me.file = fileInput.files?.[0];\n      console.log('File selected:', me.file);\n    };\n    fileInput.click();\n  }\n\n  resizeTextarea(event: Event): void {\n    const textarea = event.target as HTMLTextAreaElement;\n    textarea.style.height = 'auto';\n    textarea.style.height = `${textarea.scrollHeight}px`;\n  }\n\n  private startRecordTimer(): void {\n    this.recordTimer = setInterval(() => this.recordSeconds++, 1000);\n  }\n\n  private stopRecordTimer(): void {\n    if (this.recordTimer) {\n      clearInterval(this.recordTimer);\n      this.recordTimer = null;\n    }\n  }\n\n  get recordTime(): string {\n    const minutes = Math.floor(this.recordSeconds / 60);\n    const seconds = this.recordSeconds % 60;\n    return `${minutes < 10 ? '0' + minutes : minutes}:${seconds < 10 ? '0' + seconds : seconds}`;\n  }\n\n  private _getContentContainer(): HTMLElement {\n    const container = this._document.querySelector('.content-area') as HTMLElement;\n    if (!container) {\n      console.error('Content container (.content-area) not found');\n    }\n    return container;\n  }\n\n  private _showOverlay(): void {\n    const contentContainer = this._getContentContainer();\n    if (!contentContainer) return;\n\n    this._overlay = this._renderer2.createElement('div');\n    this._overlay?.classList.add('chat-agent-overlay');\n    this._renderer2.appendChild(contentContainer, this._overlay);\n    this._overlay?.addEventListener('click', () => this.togglePanel());\n  }\n\n  private _hideOverlay(): void {\n    if (this._overlay) {\n      this._renderer2.removeChild(this._getContentContainer(), this._overlay);\n      this._overlay = null;\n    }\n  }\n\n  get fileExtension(): string {\n    if (!this.file) return '';\n    const mimeType = this.file.type || '';\n    return this.mimeToExt[mimeType as keyof typeof this.mimeToExt] || this.file.name.split('.').pop()?.toLowerCase() || '';\n  }\n\n  private mimeToExt = {\n    'application/vnd.ms-excel': 'xls',\n    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',\n    'image/jpeg': 'jpg',\n    'image/png': 'png',\n  };\n}","<button mat-icon-button (click)=\"togglePanel()\">\n  <mat-icon [svgIcon]=\"'heroicons_outline:chat-bubble-left-right'\"></mat-icon>\n</button>\n<div class=\"chat-agent-panel fixed top-0 right-0 h-full w-full sm:w-96 bg-white shadow-lg transform transition-transform duration-400 ease-drawer\"\n     [ngClass]=\"{'translate-x-0': isPanelOpened, 'translate-x-full': !isPanelOpened}\">\n    <!-- Header -->\n    <div class=\"flex items-center justify-between p-4 border-b bg-gray-100\">\n        <div class=\"text-lg font-medium\">Orbis AI</div>\n        <button mat-icon-button (click)=\"togglePanel()\">\n            <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\n        </button>\n    </div>\n    <!-- Content -->\n    <div class=\"flex flex-col h-[calc(100%-64px)]\">\n        <!-- Conversation -->\n        <div class=\"flex-1 overflow-y-auto p-4 bg-gray-50\">\n            <div *ngFor=\"let message of chatHistory; let i = index; let first = first; let last = last\"\n                 [ngClass]=\"{'items-end': message.role === 'user', 'items-start': message.role === 'agent', \n                             'mt-0.5': i > 0 && chatHistory[i - 1].role === message.role, \n                             'mt-3': i > 0 && chatHistory[i - 1].role !== message.role}\"\n                 class=\"flex flex-col\">\n                <!-- Date separator -->\n                <ng-container *ngIf=\"first || (chatHistory[i - 1].createdAt | date:'d') !== (message.createdAt | date:'d')\">\n                    <div class=\"-mx-4 my-3 flex items-center justify-center\">\n                        <div class=\"flex-auto border-b\"></div>\n                        <div class=\"text-secondary mx-4 text-sm font-medium\">\n                            {{ message.createdAt | date:'longDate' }}\n                        </div>\n                        <div class=\"flex-auto border-b\"></div>\n                    </div>\n                </ng-container>\n                <!-- Message Bubble -->\n                <div class=\"relative max-w-3/4 rounded-lg px-3 py-2\"\n                     [ngClass]=\"{'bg-blue-500 text-white': message.role === 'user', 'bg-gray-500 text-white': message.role === 'agent'}\">\n                    <div class=\"min-w-4 leading-5\">{{ message.message }}</div>\n                    <!-- Speech bubble tail -->\n                    <ng-container *ngIf=\"last || chatHistory[i + 1].role !== message.role\">\n                        <div class=\"absolute bottom-0 w-3\"\n                             [ngClass]=\"{'-right-1 -mr-px mb-px text-blue-500': message.role === 'user', \n                                        '-left-1 -ml-px mb-px -scale-x-1 text-gray-500': message.role === 'agent'}\">\n                            <ng-container *ngTemplateOutlet=\"speechBubbleExtension\"></ng-container>\n                        </div>\n                    </ng-container>\n                </div>\n                <!-- Time -->\n                <ng-container *ngIf=\"first || last || chatHistory[i + 1].role !== message.role || chatHistory[i + 1].createdAt !== message.createdAt\">\n                    <div class=\"text-secondary my-0.5 text-sm font-medium\"\n                         [ngClass]=\"{'mr-3': message.role === 'user', 'ml-3': message.role === 'agent'}\">\n                        {{ message.createdAt | date:'HH:mm' }}\n                    </div>\n                </ng-container>\n            </div>\n        </div>\n        <!-- Agent Steps -->\n        <div class=\"p-4 border-t\" *ngIf=\"agentSteps.length > 0\">\n            <h3 class=\"text-md font-semibold\">Agent Steps</h3>\n            <div *ngFor=\"let step of agentSteps\" class=\"flex items-center mt-1\">\n                <div class=\"w-2 h-2 bg-blue-500 rounded-full mr-2\"></div>\n                <div>{{ step }}</div>\n            </div>\n        </div>\n        <!-- Result -->\n        <div class=\"p-4 border-t\" *ngIf=\"data && data.first_name\">\n            <h3 class=\"text-md font-semibold\">Result</h3>\n            <table class=\"w-full text-sm text-left text-gray-500\">\n                <tbody>\n                    <tr class=\"border-b\">\n                        <th class=\"px-2 py-1 font-medium text-gray-900\">Name</th>\n                        <td class=\"px-2 py-1\">{{ data.first_name }}</td>\n                    </tr>\n                    <tr class=\"border-b\">\n                        <th class=\"px-2 py-1 font-medium text-gray-900\">Surname</th>\n                        <td class=\"px-2 py-1\">{{ data.last_name}}</td>\n                    </tr>\n                    <tr class=\"border-b\">\n                        <th class=\"px-2 py-1 font-medium text-gray-900\">Transfer Date</th>\n                        <td class=\"px-2 py-1\">{{ data.date }}</td>\n                    </tr>\n                     <tr class=\"border-b\">\n                        <th class=\"px-2 py-1 font-medium text-gray-900\">Pickup Time</th>\n                        <td class=\"px-2 py-1\">{{ data.pickup_time }}</td>\n                    </tr>\n                    <tr class=\"border-b\">\n                        <th class=\"px-2 py-1 font-medium text-gray-900\">Adult</th>\n                        <td class=\"px-2 py-1\">{{ data.adult }}</td>\n                    </tr>\n                    <tr class=\"border-b\">\n                        <th class=\"px-2 py-1 font-medium text-gray-900\">Child</th>\n                        <td class=\"px-2 py-1\">{{ data.child }}</td>\n                    </tr>\n                    <tr class=\"border-b\">\n                        <th class=\"px-2 py-1 font-medium text-gray-900\">From</th>\n                        <td class=\"px-2 py-1\">{{ data.from_location }}</td>\n                    </tr>\n                    <tr class=\"border-b\">\n                        <th class=\"px-2 py-1 font-medium text-gray-900\">To</th>\n                        <td class=\"px-2 py-1\">{{ data.to_location }}</td>\n                    </tr>\n                </tbody>\n            </table>\n        </div>\n        <!-- Message Input -->\n        <div class=\"p-4 border-t bg-gray-50\">\n            <div class=\"flex items-center mb-2\" *ngIf=\"file\">\n                <span class=\"ml-2 text-lg font-medium\">\n                    <mat-icon [svgIcon]=\"'xlsx-icon'\" class=\"text-gray-500\"></mat-icon>\n                    {{file.name}}\n                </span>\n            </div>\n\n            <div class=\"flex items-end\">\n                <textarea [(ngModel)]=\"postModel.commandText\" placeholder=\"Type a message...\" \n                          class=\"flex-1 p-2 border rounded resize-none overflow-hidden\"\n                          (input)=\"resizeTextarea($event)\" rows=\"1\"></textarea>\n                <div class=\"ml-2 flex items-center\">\n                    <button mat-icon-button (click)=\"sendMessage()\">\n                        <mat-icon [svgIcon]=\"'heroicons_outline:paper-airplane'\"></mat-icon>\n                    </button>\n                    <button mat-icon-button (click)=\"recordVoice()\" *ngIf=\"!isRecording\">\n                        <mat-icon [svgIcon]=\"'heroicons_outline:microphone'\"></mat-icon>\n                    </button>\n                    <button mat-icon-button (click)=\"stopRecording()\" *ngIf=\"isRecording\">\n                        <mat-icon [svgIcon]=\"'heroicons_outline:stop'\"></mat-icon>\n                    </button>\n                    <button mat-icon-button (click)=\"attachFile()\">\n                        <mat-icon [svgIcon]=\"'heroicons_outline:paper-clip'\"></mat-icon>\n                    </button>\n                </div>\n            </div>\n            <div class=\"flex items-center mt-2\" *ngIf=\"isRecording\">\n                <span class=\"text-red-600 font-medium\">{{ recordTime }}</span>\n            </div>\n            <div class=\"flex items-center mt-2 space-x-2\" *ngIf=\"recordedAudio\">\n                <audio class=\"flex-1\" [src]=\"recordedAudioUrl\" controls></audio>\n                <button mat-icon-button (click)=\"sendRecordedAudio()\">\n                    <mat-icon [svgIcon]=\"'heroicons_outline:paper-airplane'\"></mat-icon>\n                </button>\n                <button mat-icon-button (click)=\"discardRecordedAudio()\">\n                    <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\n                </button>\n            </div>\n        </div>\n    </div>\n</div>\n\n<!-- Speech Bubble Tail SVG -->\n<ng-template #speechBubbleExtension>\n    <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <path d=\"M1.01522827,0.516204834 C-8.83532715,54.3062744 61.7609863,70.5215302 64.8009949,64.3061218 \n                     C68.8074951,54.8859711 30.1663208,52.9997559 37.5036011,0.516204834 L1.01522827,0.516204834 Z\"\n                  fill=\"currentColor\" fill-rule=\"nonzero\"></path>\n        </g>\n    </svg>\n</ng-template>","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { InvitationModel } from './invitation.types';\n\n@Injectable({ providedIn: 'root' })\nexport class InvitationService {\n\n    private _pushInvitation: ReplaySubject<InvitationModel> = new ReplaySubject<InvitationModel>(1);\n\n    get getInvitation$(): Observable<InvitationModel> {\n        return this._pushInvitation.asObservable();\n    }\n\n    set setInvitation$(invitation: InvitationModel) {\n        this._pushInvitation.next(invitation);\n    }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { CommonModule, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs';\nimport { InvitationService } from './invitation.service';\nimport { InvitationModel } from './invitation.types';\nimport { TranslocoModule } from '@jsverse/transloco';\n\n@Component({\n    selector: 'invitation',\n    templateUrl: './invitation.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'invitation',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatButtonModule, \n        MatIconModule, \n        NgIf, \n        MatTooltipModule,\n        FormsModule, \n        ReactiveFormsModule, \n        MatFormFieldModule, \n        MatInputModule, \n        MatSlideToggleModule,\n        TranslocoModule\n    ],\n})\nexport class InvitationComponent implements OnInit, OnDestroy {\n    @ViewChild('invitationOrigin') private _invitationOrigin: MatButton;\n    @ViewChild('invitationPanel') private _invitationPanel: TemplateRef<any>;\n    @Input() buttonText: string;\n    @Input() title: string = 'Invitation';\n    shortcutForm: UntypedFormGroup;\n    model: InvitationModel;\n    invitationToolbars: any[] = [{\n        id: 'save',\n        disabled: false,\n        location: 'after',\n        locateInMenu: '',\n        widget: 'dxButton',\n        options: {\n          icon: 'save',\n          text: 'Save',\n          type: \"default\",\n          onClick: this.save.bind(this)\n        }\n      }];\n\n    private _overlayRef: OverlayRef;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    constructor(\n        private invitationService: InvitationService,\n        private _overlay: Overlay,\n        private _viewContainerRef: ViewContainerRef,\n    ) {\n    }\n\n    ngOnInit(): void {\n\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n        if (this._overlayRef) {\n            this._overlayRef.dispose();\n        }\n    }\n\n    openPanel(): void {\n        if (!this._invitationPanel || !this._invitationOrigin) {\n            return;\n        }\n        if (!this._overlayRef) {\n            this._createOverlay();\n        }\n        this._overlayRef.attach(new TemplatePortal(this._invitationPanel, this._viewContainerRef));\n    }\n\n    closePanel(): void {\n        this._overlayRef.detach();\n    }\n\n    save(): void {\n       this.invitationService.setInvitation$ = this.model;\n    }\n    \n    \n    private _createOverlay(): void {\n        this._overlayRef = this._overlay.create({\n            hasBackdrop: true,\n            backdropClass: 'genesis-backdrop-on-mobile',\n            scrollStrategy: this._overlay.scrollStrategies.block(),\n            positionStrategy: this._overlay.position()\n                .flexibleConnectedTo(this._invitationOrigin._elementRef.nativeElement)\n                .withLockedPosition(true)\n                .withPush(true)\n                .withPositions([\n                    {\n                        originX: 'start',\n                        originY: 'bottom',\n                        overlayX: 'start',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'start',\n                        originY: 'top',\n                        overlayX: 'start',\n                        overlayY: 'bottom',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'bottom',\n                        overlayX: 'end',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'top',\n                        overlayX: 'end',\n                        overlayY: 'bottom',\n                    },\n                ]),\n        });\n\n        this._overlayRef.backdropClick().subscribe(() => {\n            this._overlayRef.detach();\n        });\n    }\n}\n","<!-- Shortcuts toggle -->\n<button mat-icon-button (click)=\"openPanel()\" #invitationOrigin *ngIf=\"!buttonText\">\n    <mat-icon [svgIcon]=\"'insert_invitation'\"></mat-icon>\n</button>\n\n<button mat-flat-button *ngIf=\"buttonText\" [color]=\"'primary'\" #invitationOrigin (click)=\"openPanel()\">\n    <mat-icon class=\"icon-size-5\" [svgIcon]=\"'insert_invitation'\"></mat-icon>\n    <span class=\"ml-2\">{{buttonText}}</span>\n</button>\n\n<!-- Shortcuts panel -->\n<ng-template #invitationPanel>\n    <div\n        class=\"fixed inset-0 sm:static sm:inset-auto flex flex-col sm:min-w-90 sm:w-90 sm:rounded-2xl overflow-hidden shadow-lg\">\n\n        <!-- Header -->\n        <div class=\"flex shrink-0 items-center py-4 pr-4 pl-6 bg-primary text-on-primary\">\n            <div class=\"sm:hidden -ml-1 mr-3\">\n                <button mat-icon-button (click)=\"closePanel()\">\n                    <mat-icon class=\"icon-size-5 text-current\" [svgIcon]=\"'heroicons_solid:x-mark'\"></mat-icon>\n                </button>\n            </div>\n            <div class=\"flex items-center text-lg font-medium leading-10\">\n                <span class=\"\">\n                    {{title}}\n                </span>\n\n            </div>\n        </div>\n        <div class=\"relative flex flex-col flex-auto sm:max-h-120 divide-y overflow-y-auto bg-card\">\n            <div class=\"m-3\">\n                <ng-container></ng-container>\n            </div>\n        </div>\n    </div>\n</ng-template>","import { Overlay } from '@angular/cdk/overlay';\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, ElementRef, EventEmitter, HostBinding, inject, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { RouterLink } from '@angular/router';\nimport { genesisAnimations } from '../../../../@genesis/animations/public-api';\nimport { debounceTime, filter, map, Subject, takeUntil } from 'rxjs';\n\n@Component({\n    selector     : 'search',\n    templateUrl  : './search.component.html',\n    encapsulation: ViewEncapsulation.None,\n    exportAs     : 'genesisSearch',\n    animations   : genesisAnimations,\n    standalone   : true,\n    imports      : [NgIf, MatButtonModule, MatIconModule, FormsModule, MatAutocompleteModule, ReactiveFormsModule, MatOptionModule, NgFor, RouterLink, NgTemplateOutlet, MatFormFieldModule, MatInputModule, NgClass],\n    providers    : [\n        {\n            provide   : MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n            useFactory: () =>\n            {\n                const overlay = inject(Overlay);\n                return () => overlay.scrollStrategies.block();\n            },\n        },\n    ],\n})\nexport class SearchComponent implements OnChanges, OnInit, OnDestroy\n{\n    @Input() appearance: 'basic' | 'bar' = 'basic';\n    @Input() debounce: number = 300;\n    @Input() minLength: number = 2;\n    @Output() search: EventEmitter<any> = new EventEmitter<any>();\n\n    opened: boolean = false;\n    resultSets?: any[] | null = null;\n    searchControl: UntypedFormControl = new UntypedFormControl();\n    private _matAutocomplete: MatAutocomplete;\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _elementRef: ElementRef,\n        private _httpClient: HttpClient,\n        private _renderer2: Renderer2,\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Host binding for component classes\n     */\n    @HostBinding('class') get classList(): any\n    {\n        return {\n            'search-appearance-bar'  : this.appearance === 'bar',\n            'search-appearance-basic': this.appearance === 'basic',\n            'search-opened'          : this.opened,\n        };\n    }\n\n    /**\n     * Setter for bar search input\n     *\n     * @param value\n     */\n    @ViewChild('barSearchInput')\n    set barSearchInput(value: ElementRef)\n    {\n        // If the value exists, it means that the search input\n        // is now in the DOM, and we can focus on the input..\n        if ( value )\n        {\n            // Give Angular time to complete the change detection cycle\n            setTimeout(() =>\n            {\n                // Focus to the input element\n                value.nativeElement.focus();\n            });\n        }\n    }\n\n    /**\n     * Setter for mat-autocomplete element reference\n     *\n     * @param value\n     */\n    @ViewChild('matAutocomplete')\n    set matAutocomplete(value: MatAutocomplete)\n    {\n        this._matAutocomplete = value;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On changes\n     *\n     * @param changes\n     */\n    ngOnChanges(changes: SimpleChanges): void\n    {\n        // Appearance\n        if ( 'appearance' in changes )\n        {\n            // To prevent any issues, close the\n            // search after changing the appearance\n            this.close();\n        }\n    }\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to the search field value changes\n        this.searchControl.valueChanges\n            .pipe(\n                debounceTime(this.debounce),\n                takeUntil(this._unsubscribeAll),\n                map((value) =>\n                {\n                    // Set the resultSets to null if there is no value or\n                    // the length of the value is smaller than the minLength\n                    // so the autocomplete panel can be closed\n                    if ( !value || value.length < this.minLength )\n                    {\n                        this.resultSets = null;\n                    }\n\n                    // Continue\n                    return value;\n                }),\n                // Filter out undefined/null/false statements and also\n                // filter out the values that are smaller than minLength\n                filter(value => value && value.length >= this.minLength),\n            )\n            .subscribe((value) =>\n            {\n                this._httpClient.post('api/common/search', {query: value})\n                    .subscribe((resultSets: any) =>\n                    {\n                        // Store the result sets\n                        this.resultSets = resultSets;\n\n                        // Execute the event\n                        this.search.next(resultSets);\n                    });\n            });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On keydown of the search input\n     *\n     * @param event\n     */\n    onKeydown(event: KeyboardEvent): void\n    {\n        // Escape\n        if ( event.code === 'Escape' )\n        {\n            // If the appearance is 'bar' and the mat-autocomplete is not open, close the search\n            if ( this.appearance === 'bar' && !this._matAutocomplete.isOpen )\n            {\n                this.close();\n            }\n        }\n    }\n\n    /**\n     * Open the search\n     * Used in 'bar'\n     */\n    open(): void\n    {\n        // Return if it's already opened\n        if ( this.opened )\n        {\n            return;\n        }\n\n        // Open the search\n        this.opened = true;\n    }\n\n    /**\n     * Close the search\n     * * Used in 'bar'\n     */\n    close(): void\n    {\n        // Return if it's already closed\n        if ( !this.opened )\n        {\n            return;\n        }\n\n        // Clear the search input\n        this.searchControl.setValue('');\n\n        // Close the search\n        this.opened = false;\n    }\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n}\n","<!-- Bar search -->\n<ng-container *ngIf=\"appearance === 'bar'\">\n    <button\n        mat-icon-button\n        *ngIf=\"!opened\"\n        (click)=\"open()\">\n        <mat-icon [svgIcon]=\"'heroicons_outline:magnifying-glass'\"></mat-icon>\n    </button>\n    <div\n        class=\"absolute inset-0 flex items-center shrink-0 z-99 bg-card\"\n        *ngIf=\"opened\"\n        @slideInTop\n        @slideOutTop>\n        <mat-icon\n            class=\"absolute ml-6 sm:ml-8\"\n            [svgIcon]=\"'heroicons_outline:magnifying-glass'\"></mat-icon>\n        <input\n            class=\"w-full h-full px-16 sm:px-18\"\n            [formControl]=\"searchControl\"\n            [matAutocomplete]=\"matAutocomplete\"\n            [placeholder]=\"'Search...'\"\n            (keydown)=\"onKeydown($event)\"\n            #barSearchInput>\n        <mat-autocomplete\n            class=\"max-h-128 sm:px-2 border-t rounded-b shadow-md\"\n            [autoSelectActiveOption]=\"true\"\n            [disableRipple]=\"true\"\n            #matAutocomplete=\"matAutocomplete\">\n            <mat-option\n                class=\"py-0 px-6 text-md pointer-events-none text-secondary bg-transparent\"\n                *ngIf=\"resultSets && !resultSets.length\">\n                No results found!\n            </mat-option>\n            <ng-container *ngFor=\"let resultSet of resultSets; trackBy: trackByFn\">\n                <mat-optgroup class=\"flex items-center mt-2 px-2\">\n                    <span class=\"text-sm font-semibold tracking-wider text-secondary\">{{resultSet.label.toUpperCase()}}</span>\n                </mat-optgroup>\n                <ng-container *ngFor=\"let result of resultSet.results; trackBy: trackByFn\">\n                    <mat-option\n                        class=\"group relative mb-1 py-0 px-6 text-md rounded-md hover:bg-gray-100 dark:hover:bg-hover\"\n                        [routerLink]=\"result.link\"\n                        [value]=\"result.value\">\n                        <!-- Contacts -->\n                        <ng-container *ngIf=\"resultSet.id === 'contacts'\">\n                            <ng-container *ngTemplateOutlet=\"contactResult; context: {$implicit: result}\"></ng-container>\n                        </ng-container>\n                        <!-- Pages -->\n                        <ng-container *ngIf=\"resultSet.id === 'pages'\">\n                            <ng-container *ngTemplateOutlet=\"pageResult; context: {$implicit: result}\"></ng-container>\n                        </ng-container>\n                        <!-- Tasks -->\n                        <ng-container *ngIf=\"resultSet.id === 'tasks'\">\n                            <ng-container *ngTemplateOutlet=\"taskResult; context: {$implicit: result}\"></ng-container>\n                        </ng-container>\n                    </mat-option>\n                </ng-container>\n            </ng-container>\n        </mat-autocomplete>\n        <button\n            class=\"absolute top-1/2 right-5 sm:right-7 shrink-0 w-10 h-10 -mt-5\"\n            mat-icon-button\n            (click)=\"close()\">\n            <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\n        </button>\n    </div>\n</ng-container>\n\n<!-- Basic search -->\n<ng-container *ngIf=\"appearance === 'basic'\">\n    <div class=\"w-full sm:min-w-80\">\n        <mat-form-field\n            class=\"w-full\"\n            [subscriptSizing]=\"'dynamic'\">\n            <mat-icon\n                matPrefix\n                [svgIcon]=\"'heroicons_outline:magnifying-glass'\"></mat-icon>\n            <input\n                matInput\n                [formControl]=\"searchControl\"\n                [matAutocomplete]=\"matAutocomplete\"\n                [placeholder]=\"'Search...'\"\n                (keydown)=\"onKeydown($event)\">\n        </mat-form-field>\n        <mat-autocomplete\n            class=\"max-h-128 mt-1 rounded\"\n            [autoSelectActiveOption]=\"true\"\n            [disableRipple]=\"true\"\n            #matAutocomplete=\"matAutocomplete\">\n            <mat-option\n                class=\"py-0 px-6 text-md pointer-events-none text-secondary bg-transparent\"\n                *ngIf=\"resultSets && !resultSets.length\">\n                No results found!\n            </mat-option>\n            <ng-container *ngFor=\"let resultSet of resultSets; trackBy: trackByFn\">\n                <mat-optgroup class=\"flex items-center mt-2 px-2\">\n                    <span class=\"text-sm font-semibold tracking-wider text-secondary\">{{resultSet.label.toUpperCase()}}</span>\n                </mat-optgroup>\n                <ng-container *ngFor=\"let result of resultSet.results; trackBy: trackByFn\">\n                    <mat-option\n                        class=\"group relative mb-1 py-0 px-6 text-md rounded-md hover:bg-gray-100 dark:hover:bg-hover\"\n                        [routerLink]=\"result.link\"\n                        [value]=\"result.value\">\n                        <!-- Contacts -->\n                        <ng-container *ngIf=\"resultSet.id === 'contacts'\">\n                            <ng-container *ngTemplateOutlet=\"contactResult; context: {$implicit: result}\"></ng-container>\n                        </ng-container>\n                        <!-- Pages -->\n                        <ng-container *ngIf=\"resultSet.id === 'pages'\">\n                            <ng-container *ngTemplateOutlet=\"pageResult; context: {$implicit: result}\"></ng-container>\n                        </ng-container>\n                        <!-- Tasks -->\n                        <ng-container *ngIf=\"resultSet.id === 'tasks'\">\n                            <ng-container *ngTemplateOutlet=\"taskResult; context: {$implicit: result}\"></ng-container>\n                        </ng-container>\n                    </mat-option>\n                </ng-container>\n            </ng-container>\n        </mat-autocomplete>\n    </div>\n</ng-container>\n\n<!-- Contact result template -->\n<ng-template\n    #contactResult\n    let-result>\n    <div class=\"flex items-center\">\n        <div class=\"flex shrink-0 items-center justify-center w-8 h-8 rounded-full overflow-hidden bg-primary-100 dark:bg-primary-800\">\n            <img\n                *ngIf=\"result.avatar\"\n                [src]=\"result.avatar\">\n            <mat-icon\n                class=\"m-0 icon-size-5 text-primary dark:text-primary-400\"\n                *ngIf=\"!result.avatar\"\n                [svgIcon]=\"'heroicons_outline:user-circle'\"></mat-icon>\n        </div>\n        <div class=\"ml-3 truncate\">\n            <span [innerHTML]=\"result.name\"></span>\n        </div>\n    </div>\n</ng-template>\n\n<!-- Page result template -->\n<ng-template\n    #pageResult\n    let-result>\n    <div class=\"flex flex-col\">\n        <div\n            class=\"truncate leading-normal\"\n            [innerHTML]=\"result.title\"></div>\n        <div class=\"truncate leading-normal text-sm text-secondary\">\n            {{result.link}}\n        </div>\n    </div>\n</ng-template>\n\n<!-- Task result template -->\n<ng-template\n    #taskResult\n    let-result>\n    <div class=\"flex items-center\">\n        <ng-container *ngIf=\"result.completed\">\n            <mat-icon\n                class=\"mr-0 text-primary dark:text-primary-400\"\n                [svgIcon]=\"'heroicons_outline:check-circle'\"></mat-icon>\n        </ng-container>\n        <ng-container *ngIf=\"!result.completed\">\n            <mat-icon\n                class=\"mr-0 text-hint\"\n                [svgIcon]=\"'heroicons_outline:check-circle'\"></mat-icon>\n        </ng-container>\n        <div\n            class=\"ml-3 truncate leading-normal\"\n            [ngClass]=\"{'line-through text-hint': result.completed}\"\n            [innerHTML]=\"result.title\"></div>\n    </div>\n</ng-template>\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Inject,\n    Input,\n    OnInit,\n    TemplateRef,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FSDocument, FSDocumentElement } from './fullscreen.types';\n\n@Component({\n    selector: 'genesis-fullscreen',\n    templateUrl: './fullscreen.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'genesisFullscreen',\n    standalone: true,\n    imports: [\n        MatButtonModule,\n        MatTooltipModule,\n        NgTemplateOutlet,\n        MatIconModule,\n    ],\n})\nexport class GenesisFullscreenComponent implements OnInit {\n    @Input() iconTpl: TemplateRef<any>;\n    @Input() tooltip: string;\n    @Input() targetElement: HTMLElement;\n    private _fsDoc: FSDocument;\n    private _fsDocEl: FSDocumentElement;\n    private _isFullscreen: boolean = false;\n\n    /**\n     * Constructor\n     */\n    constructor(@Inject(DOCUMENT) private _document: Document) {\n        this._fsDoc = _document as FSDocument;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void {\n        this._fsDocEl = (this.targetElement ??\n            document.documentElement) as FSDocumentElement;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Toggle the fullscreen mode\n     */\n    toggleFullscreen(): void {\n        // Check if the fullscreen is open\n        this._isFullscreen = this._getBrowserFullscreenElement() !== null;\n\n        // Toggle the fullscreen\n        if (this._isFullscreen) {\n            this._closeFullscreen();\n        } else {\n            this._openFullscreen();\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Get browser's fullscreen element\n     *\n     * @private\n     */\n    private _getBrowserFullscreenElement(): Element | null {\n        if (typeof this._fsDoc.fullscreenElement !== 'undefined') {\n            return this._fsDoc.fullscreenElement;\n        }\n\n        if (typeof this._fsDoc.mozFullScreenElement !== 'undefined') {\n            return this._fsDoc.mozFullScreenElement;\n        }\n\n        if (typeof this._fsDoc.msFullscreenElement !== 'undefined') {\n            return this._fsDoc.msFullscreenElement;\n        }\n\n        if (typeof this._fsDoc.webkitFullscreenElement !== 'undefined') {\n            return this._fsDoc.webkitFullscreenElement;\n        }\n\n        throw new Error('Fullscreen mode is not supported by this browser');\n    }\n\n    /**\n     * Open the fullscreen\n     *\n     * @private\n     */\n    private _openFullscreen(): void {\n        if (this._fsDocEl.requestFullscreen) {\n            this._fsDocEl.requestFullscreen();\n            return;\n        }\n\n        // Firefox\n        if (this._fsDocEl.mozRequestFullScreen) {\n            this._fsDocEl.mozRequestFullScreen();\n            return;\n        }\n\n        // Chrome, Safari and Opera\n        if (this._fsDocEl.webkitRequestFullscreen) {\n            this._fsDocEl.webkitRequestFullscreen();\n            return;\n        }\n\n        // IE/Edge\n        if (this._fsDocEl.msRequestFullscreen) {\n            this._fsDocEl.msRequestFullscreen();\n            return;\n        }\n    }\n\n    /**\n     * Close the fullscreen\n     *\n     * @private\n     */\n    private _closeFullscreen(): void {\n        if (this._fsDoc.exitFullscreen) {\n            this._fsDoc.exitFullscreen();\n            return;\n        }\n\n        // Firefox\n        if (this._fsDoc.mozCancelFullScreen) {\n            this._fsDoc.mozCancelFullScreen();\n            return;\n        }\n\n        // Chrome, Safari and Opera\n        if (this._fsDoc.webkitExitFullscreen) {\n            this._fsDoc.webkitExitFullscreen();\n            return;\n        }\n\n        // IE/Edge\n        else if (this._fsDoc.msExitFullscreen) {\n            this._fsDoc.msExitFullscreen();\n            return;\n        }\n    }\n}\n","<!-- Button -->\n<button\n    mat-icon-button\n    [matTooltip]=\"tooltip || 'Toggle Fullscreen'\"\n    (click)=\"toggleFullscreen()\">\n    <ng-container [ngTemplateOutlet]=\"iconTpl || defaultIconTpl\"></ng-container>\n</button>\n\n<!-- Default icon -->\n<ng-template #defaultIconTpl>\n    <mat-icon [svgIcon]=\"'heroicons_outline:arrows-pointing-out'\"></mat-icon>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class GenesisAlertService\n{\n    private readonly _onDismiss: ReplaySubject<string> = new ReplaySubject<string>(1);\n    private readonly _onShow: ReplaySubject<string> = new ReplaySubject<string>(1);\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Getter for onDismiss\n     */\n    get onDismiss(): Observable<any>\n    {\n        return this._onDismiss.asObservable();\n    }\n\n    /**\n     * Getter for onShow\n     */\n    get onShow(): Observable<any>\n    {\n        return this._onShow.asObservable();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Dismiss the alert\n     *\n     * @param name\n     */\n    dismiss(name: string): void\n    {\n        // Return if the name is not provided\n        if ( !name )\n        {\n            return;\n        }\n\n        // Execute the observable\n        this._onDismiss.next(name);\n    }\n\n    /**\n     * Show the dismissed alert\n     *\n     * @param name\n     */\n    show(name: string): void\n    {\n        // Return if the name is not provided\n        if ( !name )\n        {\n            return;\n        }\n\n        // Execute the observable\n        this._onShow.next(name);\n    }\n\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GenesisAlertService } from './alert.service';\nimport { GenesisAlertAppearance, GenesisAlertType } from './alert.types';\nimport { filter, Subject, takeUntil } from 'rxjs';\nimport { genesisAnimations } from '../../animations';\nimport { GenesisUtilsService } from '../../services/utils/utils.service';\n\n@Component({\n    selector       : 'genesis-alert',\n    templateUrl    : './alert.component.html',\n    encapsulation  : ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations     : genesisAnimations,\n    exportAs       : 'genesisAlert',\n    standalone     : true,\n    imports        : [NgIf, MatIconModule, MatButtonModule],\n})\nexport class GenesisAlertComponent implements OnChanges, OnInit, OnDestroy\n{\n    /* eslint-disable @typescript-eslint/naming-convention */\n    static ngAcceptInputType_dismissible: BooleanInput;\n    static ngAcceptInputType_dismissed: BooleanInput;\n    static ngAcceptInputType_showIcon: BooleanInput;\n    /* eslint-enable @typescript-eslint/naming-convention */\n\n    @Input() appearance: GenesisAlertAppearance = 'soft';\n    @Input() dismissed: boolean = false;\n    @Input() dismissible: boolean = false;\n    @Input() name: string = '';\n    @Input() showIcon: boolean = true;\n    @Input() type: GenesisAlertType = 'primary';\n    @Output() readonly dismissedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _genesisAlertService: GenesisAlertService,\n        private _genesisUtilsService: GenesisUtilsService,\n    )\n    {\n        this.name = this._genesisUtilsService.randomId();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Host binding for component classes\n     */\n    @HostBinding('class') get classList(): any\n    {\n        /* eslint-disable @typescript-eslint/naming-convention */\n        return {\n            'genesis-alert-appearance-border' : this.appearance === 'border',\n            'genesis-alert-appearance-fill'   : this.appearance === 'fill',\n            'genesis-alert-appearance-outline': this.appearance === 'outline',\n            'genesis-alert-appearance-soft'   : this.appearance === 'soft',\n            'genesis-alert-dismissed'         : this.dismissed,\n            'genesis-alert-dismissible'       : this.dismissible,\n            'genesis-alert-show-icon'         : this.showIcon,\n            'genesis-alert-type-primary'      : this.type === 'primary',\n            'genesis-alert-type-accent'       : this.type === 'accent',\n            'genesis-alert-type-warn'         : this.type === 'warn',\n            'genesis-alert-type-basic'        : this.type === 'basic',\n            'genesis-alert-type-info'         : this.type === 'info',\n            'genesis-alert-type-success'      : this.type === 'success',\n            'genesis-alert-type-warning'      : this.type === 'warning',\n            'genesis-alert-type-error'        : this.type === 'error',\n        };\n        /* eslint-enable @typescript-eslint/naming-convention */\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On changes\n     *\n     * @param changes\n     */\n    ngOnChanges(changes: SimpleChanges): void\n    {\n        // Dismissed\n        if ( 'dismissed' in changes )\n        {\n            // Coerce the value to a boolean\n            this.dismissed = coerceBooleanProperty(changes.dismissed.currentValue);\n\n            // Dismiss/show the alert\n            this._toggleDismiss(this.dismissed);\n        }\n\n        // Dismissible\n        if ( 'dismissible' in changes )\n        {\n            // Coerce the value to a boolean\n            this.dismissible = coerceBooleanProperty(changes.dismissible.currentValue);\n        }\n\n        // Show icon\n        if ( 'showIcon' in changes )\n        {\n            // Coerce the value to a boolean\n            this.showIcon = coerceBooleanProperty(changes.showIcon.currentValue);\n        }\n    }\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to the dismiss calls\n        this._genesisAlertService.onDismiss\n            .pipe(\n                filter(name => this.name === name),\n                takeUntil(this._unsubscribeAll),\n            )\n            .subscribe(() =>\n            {\n                // Dismiss the alert\n                this.dismiss();\n            });\n\n        // Subscribe to the show calls\n        this._genesisAlertService.onShow\n            .pipe(\n                filter(name => this.name === name),\n                takeUntil(this._unsubscribeAll),\n            )\n            .subscribe(() =>\n            {\n                // Show the alert\n                this.show();\n            });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Dismiss the alert\n     */\n    dismiss(): void\n    {\n        // Return if the alert is already dismissed\n        if ( this.dismissed )\n        {\n            return;\n        }\n\n        // Dismiss the alert\n        this._toggleDismiss(true);\n    }\n\n    /**\n     * Show the dismissed alert\n     */\n    show(): void\n    {\n        // Return if the alert is already showing\n        if ( !this.dismissed )\n        {\n            return;\n        }\n\n        // Show the alert\n        this._toggleDismiss(false);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Dismiss/show the alert\n     *\n     * @param dismissed\n     * @private\n     */\n    private _toggleDismiss(dismissed: boolean): void\n    {\n        // Return if the alert is not dismissible\n        if ( !this.dismissible )\n        {\n            return;\n        }\n\n        // Set the dismissed\n        this.dismissed = dismissed;\n\n        // Execute the observable\n        this.dismissedChanged.next(this.dismissed);\n\n        // Notify the change detector\n        this._changeDetectorRef.markForCheck();\n    }\n}\n","<div\n    class=\"genesis-alert-container\"\n    *ngIf=\"!dismissible || dismissible && !dismissed\"\n    [@fadeIn]=\"!dismissed\"\n    [@fadeOut]=\"!dismissed\">\n\n    <!-- Border -->\n    <div\n        class=\"genesis-alert-border\"\n        *ngIf=\"appearance === 'border'\"></div>\n\n    <!-- Icon -->\n    <div\n        class=\"genesis-alert-icon\"\n        *ngIf=\"showIcon\">\n\n        <!-- Custom icon -->\n        <div class=\"genesis-alert-custom-icon\">\n            <ng-content select=\"[genesisAlertIcon]\"></ng-content>\n        </div>\n\n        <!-- Default icons -->\n        <div class=\"genesis-alert-default-icon\">\n\n            <mat-icon\n                *ngIf=\"type === 'primary'\"\n                [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n            <mat-icon\n                *ngIf=\"type === 'accent'\"\n                [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n            <mat-icon\n                *ngIf=\"type === 'warn'\"\n                [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n            <mat-icon\n                *ngIf=\"type === 'basic'\"\n                [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n            <mat-icon\n                *ngIf=\"type === 'info'\"\n                [svgIcon]=\"'heroicons_solid:information-circle'\"></mat-icon>\n\n            <mat-icon\n                *ngIf=\"type === 'success'\"\n                [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n            <mat-icon\n                *ngIf=\"type === 'warning'\"\n                [svgIcon]=\"'heroicons_solid:exclamation-triangle'\"></mat-icon>\n\n            <mat-icon\n                *ngIf=\"type === 'error'\"\n                [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n        </div>\n\n    </div>\n\n    <!-- Content -->\n    <div class=\"genesis-alert-content\">\n\n        <div class=\"genesis-alert-title\">\n            <ng-content select=\"[genesisAlertTitle]\"></ng-content>\n        </div>\n\n        <div class=\"genesis-alert-message\">\n            <ng-content></ng-content>\n        </div>\n\n    </div>\n\n    <!-- Dismiss button -->\n    <button\n        class=\"genesis-alert-dismiss-button\"\n        mat-icon-button\n        (click)=\"dismiss()\">\n        <mat-icon [svgIcon]=\"'heroicons_solid:x-mark'\"></mat-icon>\n    </button>\n\n</div>\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgIf } from '@angular/common';\nimport { Component, HostBinding, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { genesisAnimations } from '../../animations';\nimport { GenesisCardFace } from './card.types';\n\n\n@Component({\n    selector     : 'genesis-card',\n    templateUrl  : './card.component.html',\n    encapsulation: ViewEncapsulation.None,\n    animations   : genesisAnimations,\n    exportAs     : 'genesisCard',\n    standalone   : true,\n    imports      : [NgIf],\n})\nexport class GenesisCardComponent implements OnChanges\n{\n    /* eslint-disable @typescript-eslint/naming-convention */\n    static ngAcceptInputType_expanded: BooleanInput;\n    static ngAcceptInputType_flippable: BooleanInput;\n    /* eslint-enable @typescript-eslint/naming-convention */\n\n    @Input() expanded: boolean = false;\n    @Input() face: GenesisCardFace = 'front';\n    @Input() flippable: boolean = false;\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Host binding for component classes\n     */\n    @HostBinding('class') get classList(): any\n    {\n        /* eslint-disable @typescript-eslint/naming-convention */\n        return {\n            'genesis-card-expanded'  : this.expanded,\n            'genesis-card-face-back' : this.flippable && this.face === 'back',\n            'genesis-card-face-front': this.flippable && this.face === 'front',\n            'genesis-card-flippable' : this.flippable,\n        };\n        /* eslint-enable @typescript-eslint/naming-convention */\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On changes\n     *\n     * @param changes\n     */\n    ngOnChanges(changes: SimpleChanges): void\n    {\n        // Expanded\n        if ( 'expanded' in changes )\n        {\n            // Coerce the value to a boolean\n            this.expanded = coerceBooleanProperty(changes.expanded.currentValue);\n        }\n\n        // Flippable\n        if ( 'flippable' in changes )\n        {\n            // Coerce the value to a boolean\n            this.flippable = coerceBooleanProperty(changes.flippable.currentValue);\n        }\n    }\n}\n","<!-- Flippable card -->\n<ng-container *ngIf=\"flippable\">\n\n    <!-- Front -->\n    <div class=\"genesis-card-front\">\n        <ng-content select=\"[genesisCardFront]\"></ng-content>\n    </div>\n\n    <!-- Back -->\n    <div class=\"genesis-card-back\">\n        <ng-content select=\"[genesisCardBack]\"></ng-content>\n    </div>\n\n</ng-container>\n\n<!-- Normal card -->\n<ng-container *ngIf=\"!flippable\">\n\n    <!-- Content -->\n    <ng-content></ng-content>\n\n    <!-- Expansion -->\n    <div\n        class=\"genesis-card-expansion\"\n        *ngIf=\"expanded\"\n        [@expandCollapse]>\n        <ng-content select=\"[genesisCardExpansion]\"></ng-content>\n    </div>\n\n</ng-container>\n","import { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisHorizontalNavigationComponent } from '../../horizontal.component';\nimport { GenesisNavigationService } from '../../../navigation.service';\nimport { GenesisUtilsService } from '../../../../../services/utils/utils.service';\n\n@Component({\n    selector: 'genesis-horizontal-navigation-basic-item',\n    templateUrl: './basic.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        NgClass, NgIf, RouterLink,\n        RouterLinkActive, MatTooltipModule,\n        NgTemplateOutlet,\n        MatMenuModule,\n        MatIconModule],\n})\nexport class GenesisHorizontalNavigationBasicItemComponent implements OnInit, OnDestroy {\n    @Input() item: GenesisNavigationItem;\n    @Input() name: string;\n\n    isActiveMatchOptions: IsActiveMatchOptions;\n    private genesisHorizontalNavigationComponent: GenesisHorizontalNavigationComponent;\n    private unsubscribeAll: Subject<any> = new Subject<any>();\n\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private genesisNavigationService: GenesisNavigationService,\n        private genesisUtilsService: GenesisUtilsService,\n    ) {\n        this.isActiveMatchOptions = this.genesisUtilsService.subsetMatchOptions;\n    }\n\n    ngOnInit(): void {\n        this.isActiveMatchOptions =\n            this.item.isActiveMatchOptions ?? this.item.exactMatch\n                ? this.genesisUtilsService.exactMatchOptions\n                : this.genesisUtilsService.subsetMatchOptions;\n\n        // Get the parent navigation component\n        this.genesisHorizontalNavigationComponent = this.genesisNavigationService.getComponent(this.name);\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n\n        // Subscribe to onRefreshed on the navigation component\n        this.genesisHorizontalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this.unsubscribeAll),\n        ).subscribe(() => {\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void {\n        // Unsubscribe from all subscriptions\n        this.unsubscribeAll.next(null);\n        this.unsubscribeAll.complete();\n    }\n}\n","<!-- Item wrapper -->\n<div\n    class=\"genesis-horizontal-navigation-item-wrapper\"\n    [class.genesis-horizontal-navigation-item-has-subtitle]=\"!!item.subtitle\"\n    [ngClass]=\"item.classes?.wrapper\">\n\n    <!-- Item with an internal link -->\n    <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n        <div\n            class=\"genesis-horizontal-navigation-item\"\n            [ngClass]=\"{'genesis-horizontal-navigation-item-active-forced': item.active}\"\n            [routerLink]=\"[item.link]\"\n            [fragment]=\"item.fragment ?? null\"\n            [preserveFragment]=\"item.preserveFragment ?? false\"\n            [queryParams]=\"item.queryParams ?? null\"\n            [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n            [routerLinkActive]=\"'genesis-horizontal-navigation-item-active'\"\n            [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n            [matTooltip]=\"item.tooltip || ''\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </div>\n    </ng-container>\n\n    <!-- Item with an external link -->\n    <ng-container *ngIf=\"item.link && item.externalLink && !item.function && !item.disabled\">\n        <a\n            class=\"genesis-horizontal-navigation-item\"\n            [href]=\"item.link\"\n            [target]=\"item.target || '_self'\"\n            [matTooltip]=\"item.tooltip || ''\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </a>\n    </ng-container>\n\n    <!-- Item with a function -->\n    <ng-container *ngIf=\"!item.link && item.function && !item.disabled\">\n        <div\n            class=\"genesis-horizontal-navigation-item\"\n            [ngClass]=\"{'genesis-horizontal-navigation-item-active-forced': item.active}\"\n            [matTooltip]=\"item.tooltip || ''\"\n            (click)=\"item.function(item)\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </div>\n    </ng-container>\n\n    <!-- Item with an internal link and function -->\n    <ng-container *ngIf=\"item.link && !item.externalLink && item.function && !item.disabled\">\n        <div\n            class=\"genesis-horizontal-navigation-item\"\n            [ngClass]=\"{'genesis-horizontal-navigation-item-active-forced': item.active}\"\n            [routerLink]=\"[item.link]\"\n            [fragment]=\"item.fragment ?? null\"\n            [preserveFragment]=\"item.preserveFragment ?? false\"\n            [queryParams]=\"item.queryParams ?? null\"\n            [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n            [routerLinkActive]=\"'genesis-horizontal-navigation-item-active'\"\n            [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n            [matTooltip]=\"item.tooltip || ''\"\n            (click)=\"item.function(item)\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </div>\n    </ng-container>\n\n    <!-- Item with an external link and function -->\n    <ng-container *ngIf=\"item.link && item.externalLink && item.function && !item.disabled\">\n        <a\n            class=\"genesis-horizontal-navigation-item\"\n            [href]=\"item.link\"\n            [target]=\"item.target || '_self'\"\n            [matTooltip]=\"item.tooltip || ''\"\n            (click)=\"item.function(item)\"\n            mat-menu-item>\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </a>\n    </ng-container>\n\n    <!-- Item with a no link and no function -->\n    <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n        <div\n            class=\"genesis-horizontal-navigation-item\"\n            [ngClass]=\"{'genesis-horizontal-navigation-item-active-forced': item.active}\"\n            [matTooltip]=\"item.tooltip || ''\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </div>\n    </ng-container>\n\n    <!-- Item is disabled -->\n    <ng-container *ngIf=\"item.disabled\">\n        <div class=\"genesis-horizontal-navigation-item genesis-horizontal-navigation-item-disabled\">\n            <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n        </div>\n    </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n    <!-- Icon -->\n    <ng-container *ngIf=\"item.icon\">\n        <mat-icon\n            class=\"genesis-horizontal-navigation-item-icon\"\n            [ngClass]=\"item.classes?.icon\"\n            [svgIcon]=\"item.icon\"></mat-icon>\n    </ng-container>\n\n    <!-- Title & Subtitle -->\n    <div class=\"genesis-horizontal-navigation-item-title-wrapper\">\n        <div class=\"genesis-horizontal-navigation-item-title\">\n            <span [ngClass]=\"item.classes?.title\">\n                {{item.title}}\n            </span>\n        </div>\n        <ng-container *ngIf=\"item.subtitle\">\n            <div class=\"genesis-horizontal-navigation-item-subtitle text-hint\">\n                <span [ngClass]=\"item.classes?.subtitle\">\n                    {{item.subtitle}}\n                </span>\n            </div>\n        </ng-container>\n    </div>\n\n    <!-- Badge -->\n    <ng-container *ngIf=\"item.badge\">\n        <div class=\"genesis-horizontal-navigation-item-badge\">\n            <div\n                class=\"genesis-horizontal-navigation-item-badge-content\"\n                [ngClass]=\"item.badge.classes\">\n                {{item.badge.title}}\n            </div>\n        </div>\n    </ng-container>\n\n</ng-template>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisHorizontalNavigationComponent } from '../../horizontal.component';\nimport { GenesisNavigationService } from '../../../navigation.service';\n\n@Component({\n    selector: 'genesis-horizontal-navigation-divider-item',\n    templateUrl: './divider.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [NgClass],\n})\nexport class GenesisHorizontalNavigationDividerItemComponent implements OnInit, OnDestroy {\n    @Input() item: GenesisNavigationItem;\n    @Input() name: string;\n\n    private genesisHorizontalNavigationComponent: GenesisHorizontalNavigationComponent;\n    private unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private genesisNavigationService: GenesisNavigationService,\n    ) {\n    }\n\n    ngOnInit(): void {\n        // Get the parent navigation component\n        this.genesisHorizontalNavigationComponent = this.genesisNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this.genesisHorizontalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this.unsubscribeAll),\n        ).subscribe(() => {\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    ngOnDestroy(): void {\n        // Unsubscribe from all subscriptions\n        this.unsubscribeAll.next(null);\n        this.unsubscribeAll.complete();\n    }\n}\n","<!-- Divider -->\n<div\n    class=\"genesis-horizontal-navigation-item-wrapper divider\"\n    [ngClass]=\"item.classes?.wrapper\"></div>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisHorizontalNavigationBasicItemComponent } from '../basic/basic.component';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisHorizontalNavigationComponent } from '../../horizontal.component';\nimport { GenesisNavigationService } from '../../../navigation.service';\nimport { GenesisHorizontalNavigationDividerItemComponent } from '../divider/divider.component';\n\n@Component({\n    selector: 'genesis-horizontal-navigation-branch-item',\n    templateUrl: './branch.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [NgIf, NgClass, MatMenuModule, NgTemplateOutlet,\n        NgFor,\n        GenesisHorizontalNavigationBasicItemComponent,\n        forwardRef(() => GenesisHorizontalNavigationBranchItemComponent),\n        GenesisHorizontalNavigationDividerItemComponent,\n        MatTooltipModule,\n        MatIconModule],\n})\nexport class GenesisHorizontalNavigationBranchItemComponent implements OnInit, OnDestroy {\n    static ngAcceptInputType_child: BooleanInput;\n\n    @Input() child: boolean = false;\n    @Input() item: GenesisNavigationItem;\n    @Input() name: string;\n    @ViewChild('matMenu', { static: true }) matMenu: MatMenu;\n\n    private genesisHorizontalNavigationComponent: GenesisHorizontalNavigationComponent;\n    private unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private changeDetectorRef: ChangeDetectorRef,\n        private genesisNavigationService: GenesisNavigationService,\n    ) {\n\n    }\n    ngOnInit(): void {\n        this.genesisHorizontalNavigationComponent = this.genesisNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this.genesisHorizontalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this.unsubscribeAll),\n        ).subscribe(() => {\n            // Mark for check\n            this.changeDetectorRef.markForCheck();\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribeAll.next(null);\n        this.unsubscribeAll.complete();\n    }\n    triggerChangeDetection(): void {\n        // Mark for check\n        this.changeDetectorRef.markForCheck();\n    }\n\n    trackByFn(index: number, item: any): any {\n        return item.id || index;\n    }\n}\n","<ng-container *ngIf=\"!child\">\n    <div\n        [ngClass]=\"{'genesis-horizontal-navigation-menu-active': trigger.menuOpen,\n                 'genesis-horizontal-navigation-menu-active-forced': item.active}\"\n        [matMenuTriggerFor]=\"matMenu\"\n        (onMenuOpen)=\"triggerChangeDetection()\"\n        (onMenuClose)=\"triggerChangeDetection()\"\n        #trigger=\"matMenuTrigger\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n    </div>\n</ng-container>\n\n<mat-menu\n    class=\"genesis-horizontal-navigation-menu-panel\"\n    [overlapTrigger]=\"false\"\n    #matMenu=\"matMenu\">\n\n    <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n        <!-- Skip the hidden items -->\n        <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n            <!-- Basic -->\n            <ng-container *ngIf=\"item.type === 'basic'\">\n                <div\n                    class=\"genesis-horizontal-navigation-menu-item\"\n                    [disabled]=\"item.disabled\"\n                    mat-menu-item>\n                    <genesis-horizontal-navigation-basic-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-horizontal-navigation-basic-item>\n                </div>\n            </ng-container>\n\n            <!-- Branch: aside, collapsable, group -->\n            <ng-container *ngIf=\"item.type === 'aside' || item.type === 'collapsable' || item.type === 'group'\">\n                <div\n                    class=\"genesis-horizontal-navigation-menu-item\"\n                    [disabled]=\"item.disabled\"\n                    [matMenuTriggerFor]=\"branch.matMenu\"\n                    mat-menu-item>\n                    <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n                    <genesis-horizontal-navigation-branch-item\n                        [child]=\"true\"\n                        [item]=\"item\"\n                        [name]=\"name\"\n                        #branch></genesis-horizontal-navigation-branch-item>\n                </div>\n            </ng-container>\n\n            <!-- Divider -->\n            <ng-container *ngIf=\"item.type === 'divider'\">\n                <div\n                    class=\"genesis-horizontal-navigation-menu-item\"\n                    mat-menu-item>\n                    <genesis-horizontal-navigation-divider-item\n                        [item]=\"item\"\n                        [name]=\"name\"></genesis-horizontal-navigation-divider-item>\n                </div>\n            </ng-container>\n\n        </ng-container>\n\n    </ng-container>\n\n</mat-menu>\n\n<!-- Item template -->\n<ng-template\n    let-item\n    #itemTemplate>\n\n    <div\n        class=\"genesis-horizontal-navigation-item-wrapper\"\n        [class.genesis-horizontal-navigation-item-has-subtitle]=\"!!item.subtitle\"\n        [ngClass]=\"item.classes?.wrapper\">\n\n        <div\n            class=\"genesis-horizontal-navigation-item\"\n            [ngClass]=\"{'genesis-horizontal-navigation-item-disabled': item.disabled,\n                         'genesis-horizontal-navigation-item-active-forced': item.active}\"\n            [matTooltip]=\"item.tooltip || ''\">\n\n            <!-- Icon -->\n            <ng-container *ngIf=\"item.icon\">\n                <mat-icon\n                    class=\"genesis-horizontal-navigation-item-icon\"\n                    [ngClass]=\"item.classes?.icon\"\n                    [svgIcon]=\"item.icon\"></mat-icon>\n            </ng-container>\n\n            <!-- Title & Subtitle -->\n            <div class=\"genesis-horizontal-navigation-item-title-wrapper\">\n                <div class=\"genesis-horizontal-navigation-item-title\">\n                    <span [ngClass]=\"item.classes?.title\">\n                        {{item.title}}\n                    </span>\n                </div>\n                <ng-container *ngIf=\"item.subtitle\">\n                    <div class=\"genesis-horizontal-navigation-item-subtitle text-hint\">\n                        <span [ngClass]=\"item.classes?.subtitle\">\n                            {{item.subtitle}}\n                        </span>\n                    </div>\n                </ng-container>\n            </div>\n\n            <!-- Badge -->\n            <ng-container *ngIf=\"item.badge\">\n                <div class=\"genesis-horizontal-navigation-item-badge\">\n                    <div\n                        class=\"genesis-horizontal-navigation-item-badge-content\"\n                        [ngClass]=\"item.badge.classes\">\n                        {{item.badge.title}}\n                    </div>\n                </div>\n            </ng-container>\n        </div>\n    </div>\n\n</ng-template>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisNavigationItem } from '../../../navigation.types';\nimport { GenesisHorizontalNavigationComponent } from '../../horizontal.component';\nimport { GenesisNavigationService } from '../../../navigation.service';\n\n@Component({\n    selector: 'genesis-horizontal-navigation-spacer-item',\n    templateUrl: './spacer.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [NgClass],\n})\nexport class GenesisHorizontalNavigationSpacerItemComponent implements OnInit, OnDestroy {\n    @Input() item: GenesisNavigationItem;\n    @Input() name: string;\n\n    private genesisHorizontalNavigationComponent: GenesisHorizontalNavigationComponent;\n    private unsubscribeAll: Subject<any> = new Subject<any>();\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private genesisNavigationService: GenesisNavigationService,\n    ) {\n    }\n    ngOnInit(): void {\n        this.genesisHorizontalNavigationComponent = this.genesisNavigationService.getComponent(this.name);\n\n        this.genesisHorizontalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this.unsubscribeAll),\n        ).subscribe(() => {\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n    ngOnDestroy(): void {\n        this.unsubscribeAll.next(null);\n        this.unsubscribeAll.complete();\n    }\n}\n","<!-- Spacer -->\n<div\n    class=\"genesis-horizontal-navigation-item-wrapper\"\n    [ngClass]=\"item.classes?.wrapper\"></div>\n","import { NgFor, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation, input } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { genesisAnimations } from '../../../animations';\nimport { GenesisNavigationItem } from '../navigation.types';\nimport { GenesisNavigationService } from '../navigation.service';\nimport { GenesisUtilsService } from '../../../services/utils/utils.service';\nimport { GenesisHorizontalNavigationBasicItemComponent } from './components/basic/basic.component';\nimport { GenesisHorizontalNavigationBranchItemComponent } from './components/branch/branch.component';\nimport { GenesisHorizontalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\n\n@Component({\n    selector       : 'genesis-horizontal-navigation',\n    templateUrl    : './horizontal.component.html',\n    styleUrls      : ['./horizontal.component.scss'],\n    animations     : genesisAnimations,\n    encapsulation  : ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs       : 'genesisHorizontalNavigation',\n    standalone     : true,\n    imports        : [NgFor, NgIf, \n        GenesisHorizontalNavigationBasicItemComponent, \n        GenesisHorizontalNavigationBranchItemComponent,\n        GenesisHorizontalNavigationSpacerItemComponent],\n})\nexport class GenesisHorizontalNavigationComponent implements OnChanges, OnInit, OnDestroy\n{\n    @Input() name: string = '';\n    readonly navigation = input<GenesisNavigationItem[]>();\n\n    onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private changeDetectorRef: ChangeDetectorRef,\n        private genesisNavigationService: GenesisNavigationService,\n        private genesisUtilsService: GenesisUtilsService,\n    )\n    {\n        this.name = this.genesisUtilsService.randomId();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On changes\n     *\n     * @param changes\n     */\n    ngOnChanges(changes: SimpleChanges): void\n    {\n        // Navigation\n        if ( 'navigation' in changes )\n        {\n            // Mark for check\n            this.changeDetectorRef.markForCheck();\n        }\n    }\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Make sure the name input is not an empty string\n        if ( this.name === '' )\n        {\n            this.name = this.genesisUtilsService.randomId();\n        }\n\n        // Register the navigation component\n        this.genesisNavigationService.registerComponent(this.name, this);\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Deregister the navigation component from the registry\n        this.genesisNavigationService.deregisterComponent(this.name);\n\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Refresh the component to apply the changes\n     */\n    refresh(): void\n    {\n        // Mark for check\n        this.changeDetectorRef.markForCheck();\n\n        // Execute the observable\n        this.onRefreshed.next(true);\n    }\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n}\n","<div class=\"genesis-horizontal-navigation-wrapper\">\n    <ng-container *ngFor=\"let item of navigation(); trackBy: trackByFn\">\n\n        <!-- Skip the hidden items -->\n        <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n            <!-- Basic -->\n            <ng-container *ngIf=\"item.type === 'basic'\">\n                <genesis-horizontal-navigation-basic-item\n                    class=\"genesis-horizontal-navigation-menu-item\"\n                    [item]=\"item\"\n                    [name]=\"name\"></genesis-horizontal-navigation-basic-item>\n            </ng-container>\n\n            <!-- Branch: aside, collapsable, group -->\n            <ng-container *ngIf=\"item.type === 'aside' || item.type === 'collapsable' || item.type === 'group'\">\n                <genesis-horizontal-navigation-branch-item\n                    class=\"genesis-horizontal-navigation-menu-item\"\n                    [item]=\"item\"\n                    [name]=\"name\"></genesis-horizontal-navigation-branch-item>\n            </ng-container>\n\n            <!-- Spacer -->\n            <ng-container *ngIf=\"item.type === 'spacer'\">\n                <genesis-horizontal-navigation-spacer-item\n                    class=\"genesis-horizontal-navigation-menu-item\"\n                    [item]=\"item\"\n                    [name]=\"name\"></genesis-horizontal-navigation-spacer-item>\n            </ng-container>\n\n        </ng-container>\n\n    </ng-container>\n\n</div>\n","import { NgFor, NgForOf, NgIf } from '@angular/common';\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport { BreadcrumbsModel } from './breadcrumbs.model';\n\n@Component({\n  selector: 'genesis-breadcrumbs',\n  templateUrl: './genesis-breadcrumbs.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [\n    NgIf,\n    NgFor,\n    NgForOf,\n    RouterLink,\n    MatButtonModule,\n    MatIconModule\n  ]\n})\nexport class GenesisBreadcrumbsComponent implements OnInit {\n  @Input() Breadcrumbs: Array<BreadcrumbsModel> = [];\n  ngOnInit(): void { }\n}\n","<div class=\"sm:flex flex-wrap items-center font-medium\" *ngFor=\"let item of Breadcrumbs; let i = index;\">\n    <div *ngIf=\"i == 0\">\n        <a class=\"whitespace-nowrap text-primary-500\" [routerLink]=\"item.link\" [queryParams]=\"item.queryParams\">\n            {{item.title}}\n        </a>\n    </div>\n    <div *ngIf=\"i > 0 && (i+1) < Breadcrumbs.length && (i+1) != Breadcrumbs.length\"\n        class=\"flex items-center ml-1 whitespace-nowrap\">\n        <mat-icon class=\"icon-size-5 text-secondary\" [svgIcon]=\"'heroicons_mini:chevron-right'\"></mat-icon>\n        <a class=\"ml-1 text-primary-500\" [routerLink]=\"item.link\" [queryParams]=\"item.queryParams\">\n            {{item.title}}\n        </a>\n    </div>\n    <div *ngIf=\"(i+1) == Breadcrumbs.length\" class=\"flex items-center ml-1 whitespace-nowrap\">\n        <mat-icon class=\"icon-size-5 text-secondary\" [svgIcon]=\"'heroicons_mini:chevron-right'\"></mat-icon>\n        <span class=\"ml-1 text-secondary\">\n            {{item.title}}\n        </span>\n    </div>\n</div>","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { GenesisVerticalNavigationComponent } from '../../navigation/vertical/vertical.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GenesisNavigationItem } from '../../navigation/navigation.types';\nimport { NgIf } from '@angular/common';\n\n@Component({\n  selector: 'child-sidebar',\n  templateUrl: './child-sidebar.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [\n    NgIf,\n    MatProgressBarModule,\n    MatIconModule,\n    GenesisVerticalNavigationComponent\n  ]\n})\nexport class ChildSidebarComponent {\n  @Input() MenuData: GenesisNavigationItem[] = [];\n  @Input() SidebarTitle: string = '';\n  @Input() ShowSidebarTitle: boolean = false;\n}\n","<div>\n    <div class=\"mx-6 text-3xl font-bold tracking-tighter\" *ngIf=\"SidebarTitle && ShowSidebarTitle\">\n        {{SidebarTitle}}\n    </div>\n    <genesis-vertical-navigation\n        [appearance]=\"'default'\"\n        [navigation]=\"MenuData\"\n        [inner]=\"true\"\n        [mode]=\"'side'\"\n        [name]=\"'child-sidebar-navigation'\"\n        [opened]=\"true\"></genesis-vertical-navigation>\n\n    <!-- <div class=\"mx-6 mt-2\">\n        <div class=\"flex items-center\">\n            <mat-icon\n                class=\"mr-2 icon-size-5\"\n                [svgIcon]=\"'heroicons_solid:circle-stack'\"></mat-icon>\n            <div class=\"text-lg font-semibold\">Storage</div>\n        </div>\n        <div class=\"flex flex-col flex-auto mt-4\">\n            <span class=\"text-sm leading-none mb-3\">19.9 GB of 100 GB used</span>\n            <mat-progress-bar\n                [mode]=\"'determinate'\"\n                [color]=\"'primary'\"\n                [value]=\"19.9\"></mat-progress-bar>\n        </div>\n    </div>\n\n    <div class=\"mx-6 mt-10\">\n        <div class=\"flex items-center\">\n            <mat-icon\n                class=\"mr-2 icon-size-5\"\n                [svgIcon]=\"'heroicons_solid:users'\"></mat-icon>\n            <div class=\"text-lg font-semibold\">Users</div>\n        </div>\n        <div class=\"flex flex-col flex-auto mt-4\">\n            <span class=\"text-sm leading-none mb-3\">8 of 20 users used</span>\n            <mat-progress-bar\n                [mode]=\"'determinate'\"\n                [color]=\"'accent'\"\n                [value]=\"40\"></mat-progress-bar>\n        </div>\n    </div> -->\n</div>","import { InjectionToken } from '@angular/core';\n\nexport const GENESIS_CONFIG = new InjectionToken<any>('GENESIS_APP_CONFIG');\n","import { Inject, Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { GENESIS_CONFIG } from './config.constants';\n\n@Injectable({providedIn: 'root'})\nexport class GenesisConfigService\n{\n    private _config: BehaviorSubject<any>;\n\n    /**\n     * Constructor\n     */\n    constructor(@Inject(GENESIS_CONFIG) config: any)\n    {\n        // Private\n        this._config = new BehaviorSubject(config);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter & getter for config\n     */\n    set config(value: any)\n    {\n        // Merge the new config over to the current config\n        const config = merge({}, this._config.getValue(), value);\n\n        // Execute the observable\n        this._config.next(config);\n    }\n\n    // eslint-disable-next-line @typescript-eslint/member-ordering\n    get config$(): Observable<any>\n    {\n        return this._config.asObservable();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Resets the config to the default\n     */\n    reset(): void\n    {\n        // Set the config\n        this._config.next(this.config);\n    }\n}\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { Injectable } from '@angular/core';\nimport { fromPairs } from 'lodash-es';\nimport { map, Observable, ReplaySubject, switchMap } from 'rxjs';\nimport { GenesisConfigService } from '../config/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class GenesisMediaWatcherService\n{\n    private _onMediaChange: ReplaySubject<{ matchingAliases: string[]; matchingQueries: any }> = new ReplaySubject<{ matchingAliases: string[]; matchingQueries: any }>(1);\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _breakpointObserver: BreakpointObserver,\n        private _genesisConfigService: GenesisConfigService,\n    )\n    {\n        this._genesisConfigService.config$.pipe(\n            map(config => fromPairs(Object.entries(config.screens).map(([alias, screen]) => ([alias, `(min-width: ${screen})`])))),\n            switchMap(screens => this._breakpointObserver.observe(Object.values(screens)).pipe(\n                map((state) =>\n                {\n                    // Prepare the observable values and set their defaults\n                    const matchingAliases: string[] = [];\n                    const matchingQueries: any = {};\n\n                    // Get the matching breakpoints and use them to fill the subject\n                    const matchingBreakpoints = Object.entries(state.breakpoints).filter(([query, matches]) => matches) ?? [];\n                    for ( const [query] of matchingBreakpoints )\n                    {\n                        // Find the alias of the matching query\n                        const matchingAlias = Object.entries(screens).find(([, q]) => q === query)?.[0];\n\n                        // Add the matching query to the observable values\n                        if ( matchingAlias )\n                        {\n                            matchingAliases.push(matchingAlias);\n                            matchingQueries[matchingAlias] = query;\n                        }\n                    }\n\n                    // Execute the observable\n                    this._onMediaChange.next({\n                        matchingAliases,\n                        matchingQueries,\n                    });\n                }),\n            )),\n        ).subscribe();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Getter for _onMediaChange\n     */\n    get onMediaChange$(): Observable<{ matchingAliases: string[]; matchingQueries: any }>\n    {\n        return this._onMediaChange.asObservable();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On media query change\n     *\n     * @param query\n     */\n    onMediaQueryChange$(query: string | string[]): Observable<BreakpointState>\n    {\n        return this._breakpointObserver.observe(query);\n    }\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgClass } from '@angular/common';\nimport {\n    Component,\n    Input,\n    OnDestroy,\n    OnInit,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { RouterOutlet } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisMediaWatcherService } from '../../services/media-watcher';\nimport { GenesisBreadcrumbsComponent } from '../genesis-breadcrumbs';\nimport { BreadcrumbsModel } from '../genesis-breadcrumbs/breadcrumbs.model';\nimport { ChildSidebarComponent } from './child-sidebar';\nimport { GenesisNavigationItem } from '../navigation/navigation.types';\n\n@Component({\n    selector: 'genesis-child-sidebar',\n    templateUrl: './genesis-child-sidebar.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [\n    NgClass,\n    CdkScrollable,\n    RouterOutlet,\n    MatSidenavModule,\n    MatButtonModule,\n    MatIconModule,\n    GenesisBreadcrumbsComponent,\n    ChildSidebarComponent\n],\n})\nexport class GenesisChildSidebarComponent implements OnInit, OnDestroy {\n    @Input() PageTitle: string = '';\n    @Input() ShowPageTitle: boolean = false;\n    @Input() SidebarTitle: string = '';\n    @Input() ShowSidebarTitle: boolean = false;\n    @Input() Breadcrumbs: Array<BreadcrumbsModel> = [];\n    @Input() MenuData: GenesisNavigationItem[] = [];\n    @Input() IsBgWhite: boolean = true;\n    @Input() IsDefaultPadding: boolean = true;\n    @Input() HideDrawer: boolean = false;\n    drawerMode: 'over' | 'side' = 'side';\n    drawerOpened: boolean = true;\n\n    private unsubscribeAll: Subject<any> = new Subject<any>();\n\n    constructor(\n        private genesisMediaWatcherService: GenesisMediaWatcherService,\n    ) {}\n\n    ngOnDestroy(): void {\n        this.unsubscribeAll.next(null);\n        this.unsubscribeAll.complete();\n    }\n    ngOnInit(): void {\n        this.genesisMediaWatcherService.onMediaChange$\n            .pipe(takeUntil(this.unsubscribeAll))\n            .subscribe(({ matchingAliases }) => {\n                if (matchingAliases.includes('lg')) {\n                    this.drawerMode = 'side';\n                    if(!this.HideDrawer)\n                        this.drawerOpened = true;\n                    else\n                        this.drawerOpened = false;\n                } else {\n                    this.drawerMode = 'over';\n                    if(!this.HideDrawer)\n                        this.drawerOpened = false;\n                }\n            });\n    }\n}\n","<mat-drawer-container class=\"flex-auto h-full\">\n    <mat-drawer\n        class=\"w-72 dark:bg-gray-900\"\n        [autoFocus]=\"false\"\n        [mode]=\"drawerMode\"\n        [opened]=\"drawerOpened\"\n        #matDrawer>\n        <ng-content select=\"[childTopContent]\"></ng-content>\n        <child-sidebar\n            [MenuData]=\"MenuData\"\n            [SidebarTitle]=\"SidebarTitle\"\n            [ShowSidebarTitle]=\"ShowSidebarTitle\"></child-sidebar>\n        <ng-content select=\"[childBottomContent]\"></ng-content>\n    </mat-drawer>\n\n    <!-- Drawer content -->\n    <mat-drawer-content class=\"flex flex-col overflow-hidden\">\n        <!-- Header -->\n        <div class=\"flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between p-4 sm:py-4 sm:px-10 border-b bg-card dark:bg-transparent\">\n            <!-- Actions -->\n            <div class=\"flex w-full shrink-0 items-center justify-between\">\n                <div class=\"flex-1 min-w-0\">\n                    <genesis-breadcrumbs\n                        [Breadcrumbs]=\"Breadcrumbs\"\n                        class=\"flex\"></genesis-breadcrumbs>\n                </div>\n                <div>\n                    <button mat-icon-button (click)=\"matDrawer.toggle()\">\n                        <mat-icon [svgIcon]=\"'heroicons_outline:bars-3'\"></mat-icon>\n                    </button>\n                </div>\n            </div>\n        </div>\n        <!-- Content -->\n        <div\n            class=\"flex-auto overflow-y-auto\"\n            [ngClass]=\"{\n                'bg-white': IsBgWhite,\n                'py-4 px-6 sm:p-10': IsDefaultPadding,\n            }\"\n            cdkScrollable>\n            <router-outlet></router-outlet>\n        </div>\n    </mat-drawer-content>\n</mat-drawer-container>\n","import { Injectable } from '@angular/core';\nimport {\n    ActivatedRoute,\n    NavigationEnd,\n    Router,\n    UrlSegment,\n} from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class BreadcrumbService {\n    private breadcrumbsSubject = new BehaviorSubject<any[]>([]);\n    breadcrumbs$ = this.breadcrumbsSubject.asObservable();\n\n    constructor(\n        private router: Router,\n        private route: ActivatedRoute,\n        private translocoService: TranslocoService,\n    ) {\n        this.breadcrumbsSubject.next(this.buildBreadcrumbs(this.route.root));\n        this.router.events\n            .pipe(\n                filter((event) => event instanceof NavigationEnd),\n                map(() => this.buildBreadcrumbs(this.route.root)),\n            )\n            .subscribe((breadcrumbs) =>\n                this.breadcrumbsSubject.next(breadcrumbs),\n            );\n    }\n\n    private buildBreadcrumbs(\n        route: ActivatedRoute,\n        url: string = '',\n        breadcrumbs: any[] = [],\n    ): any[] {\n        const children: ActivatedRoute[] = route.children;\n\n        if (children.length === 0) {\n            return breadcrumbs;\n        }\n\n        for (const child of children) {\n            if (child.snapshot) {\n                const routeURL: string = child.snapshot.url\n                    .map((segment) => segment.path)\n                    .join('/');\n                if (routeURL !== '') {\n                    url += `/${routeURL}`;\n                }\n\n                if (child.snapshot.data['pageTitle']) {\n                    const pageTitleKey = child.snapshot.data['pageTitle'];\n                    breadcrumbs.push({\n                        label: this.translocoService.translate(pageTitleKey),\n                        url: url,\n                    });\n                }\n            }\n\n            return this.buildBreadcrumbs(child, url, breadcrumbs);\n        }\n\n        return breadcrumbs;\n    }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BreadcrumbService } from './breadcrumb.service';\nimport { NgForOf, NgIf } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'lib-breadcrumb',\n    templateUrl: './breadcrumb.component.html',\n    styleUrls: ['./breadcrumb.component.scss'],\n    standalone: true,\n    imports: [NgForOf, NgIf, RouterLink, MatIconModule],\n})\nexport class BreadcrumbComponent implements OnInit {\n    breadcrumbs: any[] = [];\n\n    constructor(private breadcrumbService: BreadcrumbService) {}\n\n    ngOnInit(): void {\n        this.breadcrumbService.breadcrumbs$.subscribe((breadcrumbs) => {\n            this.breadcrumbs = breadcrumbs;\n        });\n    }\n}\n","<nav class=\"flex items-center\">\n    <ng-container *ngFor=\"let breadcrumb of breadcrumbs; let last = last\">\n        <ng-container *ngIf=\"!last\">\n            <a class=\"whitespace-nowrap text-primary-500 font-medium\"\n                [routerLink]=\"breadcrumb.url\">{{ breadcrumb.label }}</a>\n            <mat-icon\n                class=\"icon-size-5 text-secondary\"\n                [svgIcon]=\"'heroicons_mini:chevron-right'\"></mat-icon>\n        </ng-container>\n        <ng-container *ngIf=\"last\">\n            <span class=\"font-medium whitespace-nowrap text-secondary\">{{breadcrumb.label}}</span>\n        </ng-container>\n    </ng-container>\n</nav>\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgClass } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { BreadcrumbsModel, GenesisBreadcrumbsComponent } from '../genesis-breadcrumbs';\n\n@Component({\n  selector: 'genesis-drawer',\n  templateUrl: './genesis-drawer.component.html',\n  styleUrl: './genesis-drawer.component.scss',\n  standalone: true,\n  imports: [\n    NgClass,\n    CdkScrollable,\n    MatSidenavModule,\n    MatButtonModule,\n    MatIconModule,\n    GenesisBreadcrumbsComponent\n],\n})\nexport class GenesisDrawerComponent {\n  @Input() Breadcrumbs: Array<BreadcrumbsModel> = [];\n  @Input() IsBgWhite: boolean = true;\n  @Input() IsDefaultPadding: boolean = true;\n  @Input() useNewBreadcrumb: boolean = false;\n  @Input() drawerOpened: boolean = true;\n  @Input() drawerMode: 'over' | 'side' = 'side';\n  \n}\n","<mat-drawer-container class=\"flex-auto h-full\">\n    <mat-drawer\n        class=\"w-72 dark:bg-gray-900\"\n        [autoFocus]=\"false\"\n        [mode]=\"drawerMode\"\n        [opened]=\"drawerOpened\"\n        #matDrawer>\n        <ng-content select=\"[drawerContent]\"></ng-content>\n    </mat-drawer>\n\n    <!-- Drawer content -->\n    <mat-drawer-content class=\"flex flex-col overflow-hidden\">\n        <!-- Header -->\n        <div class=\"flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between p-4 sm:py-4 sm:px-10 border-b bg-card dark:bg-transparent\">\n            <!-- Actions -->\n            <div class=\"flex w-full shrink-0 items-center justify-between\">\n                <div class=\"flex-1 min-w-0\">\n                    <genesis-breadcrumbs [Breadcrumbs]=\"Breadcrumbs\" class=\"flex\"></genesis-breadcrumbs>\n                </div>\n                <div class=\"block sm:hidden\">\n                    <button mat-icon-button (click)=\"matDrawer.toggle()\">\n                        <mat-icon [svgIcon]=\"'heroicons_outline:bars-3'\"></mat-icon>\n                    </button>\n                </div>\n            </div>\n        </div>\n        <!-- Content -->\n        <div class=\"flex-auto overflow-y-auto\" [ngClass]=\"{ 'bg-white': IsBgWhite, 'py-4 px-6 sm:p-10': IsDefaultPadding }\" cdkScrollable>\n            <ng-content select=\"[mainContent]\"></ng-content>\n        </div>\n    </mat-drawer-content>\n</mat-drawer-container>\n","import { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, Subject, takeUntil } from 'rxjs';\n\n@Directive({\n    selector  : '[genesisScrollReset]',\n    exportAs  : 'genesisScrollReset',\n    standalone: true,\n})\nexport class GenesisScrollResetDirective implements OnInit, OnDestroy\n{\n    private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n    /**\n     * Constructor\n     */\n    constructor(\n        private _elementRef: ElementRef,\n        private _router: Router,\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to NavigationEnd event\n        this._router.events.pipe(\n            filter(event => event instanceof NavigationEnd),\n            takeUntil(this._unsubscribeAll),\n        ).subscribe(() =>\n        {\n            // Reset the element's scroll position to the top\n            this._elementRef.nativeElement.scrollTop = 0;\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next(null);\n        this._unsubscribeAll.complete();\n    }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { Injectable } from '@angular/core';\n\n@Injectable({providedIn: 'root'})\nexport class GenesisPlatformService\n{\n    osName = 'os-unknown';\n\n    /**\n     * Constructor\n     */\n    constructor(private _platform: Platform)\n    {\n        // If the platform is not a browser, return immediately\n        if ( !this._platform.isBrowser )\n        {\n            return;\n        }\n\n        // Windows\n        if ( navigator.userAgent.includes('Win') )\n        {\n            this.osName = 'os-windows';\n        }\n\n        // Mac OS\n        if ( navigator.userAgent.includes('Mac') )\n        {\n            this.osName = 'os-mac';\n        }\n\n        // Unix\n        if ( navigator.userAgent.includes('X11') )\n        {\n            this.osName = 'os-unix';\n        }\n\n        // Linux\n        if ( navigator.userAgent.includes('Linux') )\n        {\n            this.osName = 'os-linux';\n        }\n\n        // iOS\n        if ( this._platform.IOS )\n        {\n            this.osName = 'os-ios';\n        }\n\n        // Android\n        if ( this._platform.ANDROID )\n        {\n            this.osName = 'os-android';\n        }\n    }\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, take } from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class GenesisSplashScreenService\n{\n    /**\n     * Constructor\n     */\n    constructor(\n        @Inject(DOCUMENT) private _document: any,\n        private _router: Router,\n    )\n    {\n        // Hide it on the first NavigationEnd event\n        this._router.events\n            .pipe(\n                filter(event => event instanceof NavigationEnd),\n                take(1),\n            )\n            .subscribe(() =>\n            {\n                this.hide();\n            });\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Show the splash screen\n     */\n    show(): void\n    {\n        this._document.body.classList.remove('genesis-splash-screen-hidden');\n    }\n\n    /**\n     * Hide the splash screen\n     */\n    hide(): void\n    {\n        this._document.body.classList.add('genesis-splash-screen-hidden');\n    }\n}\n","/**\n * Derived from Angular's version class\n */\nexport class Version\n{\n    public readonly full: string;\n    public readonly major: string;\n    public readonly minor: string;\n    public readonly patch: string;\n\n    /**\n     * Constructor\n     */\n    constructor(public version: string)\n    {\n        this.full = version;\n        this.major = version.split('.')[0];\n        this.minor = version.split('.')[1];\n        this.patch = version.split('.').slice(2).join('.');\n    }\n}\n","import { Version } from \"./version\";\n\nexport const GENESIS_VERSION = new Version('18.0.0').full;\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { APP_CONFIG_GEN, AuthService, IAppConfig } from 'genesis-coreservice';\n\n\n@Component({\n  selector: 'app-callback',\n  templateUrl: './callback.component.html',\n  styleUrls: ['./callback.component.scss'],\n  standalone: true\n})\nexport class CallbackComponent implements OnInit {\n  logo: string = this.appConfig.authPageLogo || '';\n  constructor(\n    @Inject(AuthService) private authService: AuthService,\n    @Inject(APP_CONFIG_GEN) public appConfig: IAppConfig) { }\n\n  async ngOnInit(): Promise<void> {\n    const params = new URLSearchParams(window.location.search);\n    if (!params.has('code') || !params.has('state')) {\n      this.authService.login();\n      return;\n    }\n\n    try {\n      await this.authService.finishLogin();\n      window.location.assign(`${window.location.origin}/${this.appConfig.defaultRoute}`);\n    } catch(error) {\n      console.error('Error handling authentication callback:', error);\n      this.authService.login();\n    }\n  }\n}\n","<div class=\"flex flex-col flex-auto w-full min-w-0 items-stretch dark theme-default\">\n    <div class=\"flex flex-col flex-auto\">\n        <div class=\"flex flex-col flex-auto items-center sm:justify-center min-w-0\">\n            <div class=\"w-full sm:w-auto py-8 px-4 sm:p-12 sm:rounded-2xl sm:shadow sm:bg-card\">\n                <div class=\"w-full max-w-80 sm:w-80 mx-auto sm:mx-0\">\n                    <!-- Logo -->\n                    <div>\n                        <img [src]=\"logo\" height=\"24\">\n                    </div>\n\n                    <!-- Title -->\n                    <div class=\"mt-12 text-4xl font-extrabold tracking-tight leading-tight\">Waiting...</div>\n                    <div class=\"mt-4\">\n                        You are redirecting...\n                    </div>\n\n                    <!-- Form footer -->\n                    <div class=\"mt-8 text-md font-medium text-secondary\">\n                        <span>Return to</span>\n                        <a class=\"ml-1 text-primary-500 hover:underline\" href=\"login\">sign in\n                        </a>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import { Routes } from \"@angular/router\";\nimport { CallbackComponent } from \"./callback.component\";\n\nexport default [\n    {\n        path: '',\n        component: CallbackComponent,\n    },\n] as Routes;\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { APP_CONFIG_GEN, AuthService, IAppConfig } from 'genesis-coreservice';\n\n@Component({\n  selector: 'app-login',\n  templateUrl: './login.component.html',\n  styleUrls: ['./login.component.scss'],\n  standalone: true,\n  imports: [\n    MatButtonModule\n  ]\n})\nexport class LoginComponent implements OnInit {\n  clock: string = '';\n  logo: string = this.appConfig.authPageLogo || '';\n  constructor(\n    @Inject(APP_CONFIG_GEN) public appConfig: IAppConfig,\n    private authService: AuthService) {\n\n  }\n  ngOnInit(): void {\n    setTimeout(this.startTime, 1000);\n  }\n\n  login() {\n    this.authService.startAuthentication();\n  }\n\n  startTime = () => {\n    const today = new Date();\n    let h = today.getHours();\n    let m = today.getMinutes();\n    let s = today.getSeconds();\n    let m1 = this.checkTime(m);\n    let s1 = this.checkTime(s);\n    this.clock = h + \":\" + m1 + \":\" + s1;\n  }\n  checkTime = (i: number): string => {\n    let result = '';\n    if (i < 10) {\n      result = `0${i}`\n    } else {\n      result = i.toString();\n    }\n    return result;\n  }\n}\n","<div class=\"flex flex-col flex-auto items-center sm:justify-center min-w-0 md:p-8 dark theme-default\">\n    <div class=\"flex md:w-full md:max-w-6xl sm:rounded-2xl sm:shadow overflow-hidden sm:bg-card\">\n        <div class=\"w-full sm:w-auto py-8 px-4 sm:p-12 md:p-16\">\n            <div class=\"w-full max-w-80 sm:w-80 mx-auto sm:mx-0\">\n                <!-- Logo -->\n                <div>\n                    <img [src]=\"logo\" height=\"24\">\n                </div>\n\n                <!-- Title -->\n                <div class=\"mt-8 text-4xl font-extrabold tracking-tight leading-tight text-center\">You have signed out!\n                </div>\n                <div class=\"flex justify-center mt-0.5 font-medium\">\n                    {{clock}}\n                </div>\n\n                <!-- Form footer -->\n                <div class=\"mt-8 text-md font-medium text-secondary text-center\">\n                    <button class=\"genesis-mat-button-large w-full mt-6\" mat-flat-button color=\"primary\"\n                        (click)=\"login()\">\n                        <span>\n                            Sign in\n                        </span>\n                    </button>\n                </div>\n            </div>\n        </div>\n        <div\n            class=\"relative hidden md:flex flex-auto items-center justify-center h-full p-16 lg:px-28 overflow-hidden bg-gray-800 dark:border-l\">\n            <!-- Background - @formatter:off -->\n            <!-- Rings -->\n            <svg class=\"absolute inset-0 pointer-events-none\" viewBox=\"0 0 960 540\" width=\"100%\" height=\"100%\"\n                preserveAspectRatio=\"xMidYMax slice\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g class=\"text-gray-700 opacity-25\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"100\">\n                    <circle r=\"234\" cx=\"196\" cy=\"23\"></circle>\n                    <circle r=\"234\" cx=\"790\" cy=\"491\"></circle>\n                </g>\n            </svg>\n            <!-- Dots -->\n            <svg class=\"absolute -top-16 -right-16 text-gray-700\" viewBox=\"0 0 220 192\" width=\"220\" height=\"192\"\n                fill=\"none\">\n                <defs>\n                    <pattern id=\"837c3e70-6c3a-44e6-8854-cc48c737b659\" x=\"0\" y=\"0\" width=\"20\" height=\"20\"\n                        patternUnits=\"userSpaceOnUse\">\n                        <rect x=\"0\" y=\"0\" width=\"4\" height=\"4\" fill=\"currentColor\"></rect>\n                    </pattern>\n                </defs>\n                <rect width=\"220\" height=\"192\" fill=\"url(#837c3e70-6c3a-44e6-8854-cc48c737b659)\"></rect>\n            </svg>\n            <!-- @formatter:on -->\n            <!-- Content -->\n            <div class=\"z-10 relative w-full max-w-2xl\">\n                <div class=\"text-7xl font-bold leading-none text-gray-100\">\n                    <div>Welcome to</div>\n                    <div>our community</div>\n                </div>\n                <div class=\"mt-6 text-lg tracking-tight leading-6 text-gray-400\">\n                    Genesis helps developers to build organized and well coded dashboards full of beautiful and rich\n                    modules.\n                    Join us and start building your application today.\n                </div>\n                <div class=\"flex items-center mt-8\">\n                    <div class=\"flex flex-0 items-center -space-x-1.5\">\n                        <img class=\"flex-0 w-10 h-10 rounded-full ring-4 ring-offset-1 ring-gray-800 ring-offset-gray-800 object-cover\"\n                            src=\"https://meta.weorbis.com/logos/logo_circuler.png\">\n                        <img class=\"flex-0 w-10 h-10 rounded-full ring-4 ring-offset-1 ring-gray-800 ring-offset-gray-800 object-cover\"\n                            src=\"https://meta.weorbis.com/logos/logo_circuler.png\">\n                        <img class=\"flex-0 w-10 h-10 rounded-full ring-4 ring-offset-1 ring-gray-800 ring-offset-gray-800 object-cover\"\n                            src=\"https://meta.weorbis.com/logos/logo_circuler.png\">\n                        <img class=\"flex-0 w-10 h-10 rounded-full ring-4 ring-offset-1 ring-gray-800 ring-offset-gray-800 object-cover\"\n                            src=\"https://meta.weorbis.com/logos/logo_circuler.png\">\n                    </div>\n                    <div class=\"ml-4 font-medium tracking-tight text-gray-400\">More than 17k companies joined us, it's\n                        your turn</div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import { Routes } from \"@angular/router\";\nimport { LoginComponent } from \"./login.component\";\n\nexport default [\n    {\n        path: '',\n        component: LoginComponent,\n    },\n] as Routes;\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { APP_CONFIG_GEN, AuthService, IAppConfig } from 'genesis-coreservice';\nimport { interval } from 'rxjs';\nimport { genesisAnimations } from '../../animations';\n\n@Component({\n  selector: 'app-logout',\n  templateUrl: './logout.component.html',\n  styleUrls: ['./logout.component.scss'],\n  standalone: true,\n  animations: genesisAnimations,\n  imports: [\n    MatButtonModule\n]\n})\nexport class LogoutComponent implements OnInit {\n  clock: string = '';\n  logo: string = this.appConfig.authPageLogo || '';\n  constructor(\n    @Inject(APP_CONFIG_GEN) public appConfig: IAppConfig,\n    private authService: AuthService) {\n\n  }\n\n  ngOnInit(): void {\n    interval(1000)\n    .subscribe(() => {\n      this.startTime();\n    });\n  }\n\n  login() {\n    this.authService.startAuthentication();\n  }\n\n  \n  startTime = () => {\n    const today = new Date();\n    let h = today.getHours();\n    let m = today.getMinutes();\n    let s = today.getSeconds();\n    let m1 = this.checkTime(m);\n    let s1 = this.checkTime(s);\n    this.clock = h + \":\" + m1 + \":\" + s1;\n  }\n  checkTime = (i: number): string => {\n    let result = '';\n    if (i < 10) {\n      result = `0${i}`\n    } else {\n      result = i.toString();\n    }\n    return result;\n  }\n}\n","<div class=\"flex flex-col flex-auto items-center sm:justify-center min-w-0 md:p-8 dark theme-default\" (load)=\"startTime()\">\n    <div class=\"flex md:w-full md:max-w-6xl sm:rounded-2xl sm:shadow overflow-hidden sm:bg-card\">\n        <div class=\"w-full sm:w-auto py-8 px-4 sm:p-12 md:p-16\">\n            <div class=\"w-full max-w-80 sm:w-80 mx-auto sm:mx-0\">\n                <!-- Logo -->\n                <div class=\"logo\">\n                    <img [src]=\"logo\" />\n                </div>\n\n                <!-- Title -->\n                <div class=\"mt-8 text-4xl font-extrabold tracking-tight leading-tight text-center\">You have signed out!\n                </div>\n                <div class=\"mt-8 flex justify-center mt-0.5 font-medium\">\n                    <span class=\"text-4xl\" style=\"height: 48px !important;\">\n                        {{clock}}\n                    </span>\n                </div>\n\n                <!-- Form footer -->\n                <div class=\"mt-8 text-md font-medium text-secondary text-center\">\n                    <button class=\"genesis-mat-button-large w-full mt-6\" mat-flat-button color=\"primary\"\n                        (click)=\"login()\">\n                        <span>\n                            Sign in\n                        </span>\n                    </button>\n                </div>\n            </div>\n        </div>\n        <div\n            class=\"relative hidden md:flex flex-auto items-center justify-center h-full p-16 lg:px-28 overflow-hidden bg-gray-800 dark:border-l\">\n            <!-- Background - @formatter:off -->\n            <!-- Rings -->\n            <svg class=\"absolute inset-0 pointer-events-none\" viewBox=\"0 0 960 540\" width=\"100%\" height=\"100%\"\n                preserveAspectRatio=\"xMidYMax slice\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g class=\"text-gray-700 opacity-25\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"100\">\n                    <circle r=\"234\" cx=\"196\" cy=\"23\"></circle>\n                    <circle r=\"234\" cx=\"790\" cy=\"491\"></circle>\n                </g>\n            </svg>\n            <!-- Dots -->\n            <svg class=\"absolute -top-16 -right-16 text-gray-700\" viewBox=\"0 0 220 192\" width=\"220\" height=\"192\"\n                fill=\"none\">\n                <defs>\n                    <pattern id=\"837c3e70-6c3a-44e6-8854-cc48c737b659\" x=\"0\" y=\"0\" width=\"20\" height=\"20\"\n                        patternUnits=\"userSpaceOnUse\">\n                        <rect x=\"0\" y=\"0\" width=\"4\" height=\"4\" fill=\"currentColor\"></rect>\n                    </pattern>\n                </defs>\n                <rect width=\"220\" height=\"192\" fill=\"url(#837c3e70-6c3a-44e6-8854-cc48c737b659)\"></rect>\n            </svg>\n            <!-- @formatter:on -->\n            <!-- Content -->\n            <div class=\"z-10 relative w-full max-w-2xl\">\n                <div class=\"text-7xl font-bold leading-none text-gray-100\">\n                    <div>Welcome to</div>\n                    <div>our platform</div>\n                </div>\n                <div class=\"mt-6 text-lg tracking-tight leading-6 text-gray-400\">\n                    Genesis System allows business partners to track their business more easily with its organized and user-friendly interface, full of beautiful and rich modules.\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import { Routes } from \"@angular/router\";\nimport { LogoutComponent } from \"./logout.component\";\n\nexport default [\n    {\n        path: '',\n        component: LogoutComponent,\n    },\n] as Routes;\n","// Callback\nexport * from './callback/callback-routing.module';\nexport * from './callback/callback.component';\n\n// login\nexport * from './login/login-routing.module';\nexport * from './login/login.component'; \n\n// logout\nexport * from './logout/logout-routing.module';\nexport * from './logout/logout.component';","// Animations\nexport * from './animations/index';\n\n// Components\nexport * from './components/index';\n\nexport * from './directives/scroll-reset/index';\nexport * from './directives/scrollbar/index';\n\n// Services\nexport * from './services/index';\n\nexport * from './version/index';\n\nexport * from './fullscreen/index';\n\n// Auth\nexport * from './auth/index';","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisConfig, GenesisConfigService } from '../../../../@genesis';\n\n@Component({\n    selector: 'theme-switch',\n    templateUrl: './theme-switch.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'theme-switch',\n    standalone: true,\n    imports: [\n        MatButtonModule,\n        MatIconModule,\n        MatTooltipModule,\n        MatSlideToggleModule\n    ]\n})\nexport class ThemeSwitchComponent implements OnInit, OnDestroy {\n    config?: GenesisConfig;\n    private unsubscribeAll: Subject<any> = new Subject<any>();\n\n    constructor(\n        private readonly configService: GenesisConfigService\n    ) {\n    }\n\n    ngOnInit(): void {\n        this.configService.config$\n            .pipe(takeUntil(this.unsubscribeAll))\n            .subscribe((config: GenesisConfig) => {\n                this.config = config;\n            });\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribeAll.next(null);\n        this.unsubscribeAll.complete();\n    }\n\n     setScheme(): void {\n        let currentConfig = this.config?.scheme;\n        if (currentConfig === 'light') {\n            this.configService.config = { scheme: 'dark' };\n        } else {\n            this.configService.config = { scheme: 'light' };\n        }\n    }\n}\n","<!-- Apps toggle -->\n<button mat-icon-button (click)=\"setScheme()\">\n    @if (config?.scheme === 'dark') {\n        <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:sun'\"></mat-icon>\n    }\n    @if (config?.scheme === 'light') {\n        <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:moon'\"></mat-icon>\n    }\n</button>","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, tap } from 'rxjs';\nimport { Navigation } from './navigation.types';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n    private _navigation: ReplaySubject<Navigation> = new ReplaySubject<Navigation>(1);\n\n    constructor(private _httpClient: HttpClient) {\n    }\n    set navigation$(notification: Navigation) {\n        this._navigation.next(notification);\n    }\n\n    get navigation$(): Observable<Navigation> {\n        return this._navigation.asObservable();\n    }\n    get(): Observable<Navigation> {\n        return this._httpClient.get<Navigation>('api/common/navigation').pipe(\n            tap((navigation) => {\n                this._navigation.next(navigation);\n            }),\n        );\n    }\n}\n","import { NgIf, NgClass } from '@angular/common';\nimport { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterOutlet } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { Navigation } from '../../../core/navigation/navigation.types';\n\nimport { AppsService } from '../common/apps/apps.service';\nimport { IApps } from '../common/apps/apps.types';\n\nimport { GenesisLoadingBarComponent } from '../../../@genesis/components/loading-bar/loading-bar.component';\nimport { GenesisVerticalNavigationComponent } from '../../../@genesis/components/navigation/vertical/vertical.component';\nimport { ApplicationsComponent } from '../common/apps/apps.component';\nimport { LanguagesComponent } from '../common/languages/languages.component';\nimport { NotificationsComponent } from '../common/notifications/notifications.component';\nimport { ShortcutsComponent } from '../common/shortcuts/shortcuts.component';\nimport { UserComponent } from '../common/user/user.component';\n\nimport { APP_CONFIG_GEN, AuthService, GenesisLoadingService, IAppConfig, UserModel } from 'genesis-coreservice';\nimport { GenesisNavigationService } from '../../../@genesis/components/navigation/navigation.service';\nimport { GenesisMediaWatcherService } from '../../../@genesis/services/media-watcher/media-watcher.service';\nimport { NavigationService } from '../../../core/navigation/navigation.service';\nimport { GenesisChatAgentComponent } from '../common/chat-agent/chat-agent.component';\nimport { InvitationComponent } from '../common/invitation/invitation.component';\nimport { SearchComponent } from '../common/search/search.component';\nimport { GenesisFullscreenComponent } from '../../../@genesis/fullscreen/fullscreen.component';\nimport { GenesisConfig, GenesisConfigService } from '../../../@genesis';\nimport { ThemeSwitchComponent } from '../common/theme-switch/theme-switch.component';\n\n@Component({\n  selector: 'classy-layout',\n  templateUrl: './classy.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [\n    NgIf,\n    MatIconModule,\n    MatButtonModule,\n    RouterOutlet,\n    GenesisLoadingBarComponent,\n    GenesisVerticalNavigationComponent,\n    InvitationComponent,\n    NotificationsComponent,\n    UserComponent,\n    LanguagesComponent,\n    ShortcutsComponent,\n    ApplicationsComponent,\n    SearchComponent,\n    GenesisChatAgentComponent,\n    ThemeSwitchComponent,\n    GenesisFullscreenComponent\n    // SearchComponent, \n    // MessagesComponent, \n    // QuickChatComponent\n    ,\n    NgClass\n],\n  providers: [\n    GenesisLoadingService\n  ]\n})\nexport class ClassyLayoutComponent implements OnInit, OnDestroy {\n  isScreenSmall: boolean;\n  isAppsPanel: boolean = false;\n  navigation: Navigation = <Navigation>{};\n  user: UserModel = <UserModel>{};\n  config?: GenesisConfig;\n  private readonly unsubscribeAll: Subject<any> = new Subject<any>();\n\n  constructor(\n    private readonly navigationService: NavigationService,\n    private readonly authService: AuthService,\n    private readonly genesisMediaWatcherService: GenesisMediaWatcherService,\n    private readonly genesisNavigationService: GenesisNavigationService,\n    private readonly appsService: AppsService,\n    private readonly configService: GenesisConfigService,\n    @Inject(APP_CONFIG_GEN) public appConfig: IAppConfig\n  ) {\n  }\n\n  get currentYear(): number {\n    return new Date().getFullYear();\n  }\n\n  ngOnInit(): void {\n    this.configService.config$\n      .pipe(takeUntil(this.unsubscribeAll))\n      .subscribe((config: GenesisConfig) => {\n        this.config = config;\n      });\n\n    this.authService.getProfile().then((user: UserModel) => {\n      this.user = user;\n    });\n\n    this.navigationService.navigation$\n      .pipe(takeUntil(this.unsubscribeAll))\n      .subscribe((navigation: Navigation) => {\n        this.navigation = navigation;\n      });\n\n    this.genesisMediaWatcherService.onMediaChange$\n      .pipe(takeUntil(this.unsubscribeAll))\n      .subscribe(({ matchingAliases }) => {\n        this.isScreenSmall = !matchingAliases.includes('md');\n      });\n\n    this.appsService.apps$\n      .pipe(takeUntil(this.unsubscribeAll))\n      .subscribe((apps: IApps[]) => {\n        this.isAppsPanel = apps.length > 1;\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribeAll.next(null);\n    this.unsubscribeAll.complete();\n  }\n\n  toggleNavigation(name: string): void {\n    const navigation = this.genesisNavigationService.getComponent<GenesisVerticalNavigationComponent>(name);\n\n    if (navigation) {\n      navigation.toggle();\n    }\n  }\n}\n","<!-- Loading bar -->\n<genesis-loading-bar [autoMode]=\"true\"></genesis-loading-bar>\n\n<!-- Navigation -->\n<genesis-vertical-navigation class=\"ligth:bg-gray-100 dark:bg-gray-900 print:hidden\" [ngClass]=\"{'light': config.scheme === 'light', 'dark': config.scheme === 'dark'}\" [mode]=\"isScreenSmall ? 'over' : 'side'\"\n  [name]=\"'mainNavigation'\" [navigation]=\"navigation.default\" [opened]=\"!isScreenSmall\">\n  <!-- Navigation header hook -->\n  <ng-container genesisVerticalNavigationContentHeader>\n    <div class=\"flex items-center w-full p-4 pl-6\">\n      <!-- Logo -->\n      <div class=\"flex items-center justify-center\">\n        <img class=\"h-8 mr-2\" *ngIf=\"appConfig.sideBarLogo\" [src]=\"appConfig.sideBarLogo\" />\n        <span class=\"text-2xl\" *ngIf=\"appConfig.sideBarCompanyName\">\n          {{ appConfig.sideBarCompanyName }}\n        </span>\n      </div>\n      <!-- Components -->\n      <!-- <div class=\"flex items-center ml-auto\">\n        <user [showAvatar]=\"true\"></user>\n      </div> -->\n    </div>\n    <!-- User -->\n    <div class=\"flex flex-col items-center w-full p-4\">\n      <div class=\"relative w-24 h-24\">\n        <img class=\"w-full h-full rounded-full\" *ngIf=\"user.picture\" [src]=\"user.picture\" alt=\"User avatar\" />\n        <mat-icon class=\"icon-size-24\" *ngIf=\"!user.picture\" [svgIcon]=\"'heroicons_solid:user-circle'\"></mat-icon>\n      </div>\n      <div class=\"flex flex-col items-center justify-center w-full mt-6\">\n        <div class=\"w-full whitespace-nowrap text-ellipsis overflow-hidden text-center leading-normal font-medium\">\n          {{ user.displayName }}\n        </div>\n        <div class=\"w-full mt-0.5 whitespace-nowrap text-ellipsis overflow-hidden text-center text-md leading-normal font-medium text-secondary\">\n          {{ user.email ?? user.userName }}\n        </div>\n        <div *ngIf=\"user.company\" class=\"w-full mt-0.5 whitespace-nowrap text-ellipsis overflow-hidden text-center text-md leading-normal font-medium text-secondary\">\n          {{ user.company }}\n        </div>\n      </div>\n    </div>\n  </ng-container>\n  <!-- Navigation footer hook -->\n  <ng-container genesisVerticalNavigationContentFooter>\n    <div class=\"flex flex-0 items-center justify-center h-16 pr-6 pl-2 mt-2 mb-4 opacity-12\">\n      <img class=\"max-w-36\" [src]=\"appConfig.sideBarFlueLogo\" />\n    </div>\n  </ng-container>\n</genesis-vertical-navigation>\n\n<!-- Wrapper -->\n<div class=\"flex flex-col flex-auto w-full min-w-0\">\n  <!-- Header -->\n  <div\n    class=\"relative flex flex-0 items-center w-full h-16 px-4 md:px-6 z-49 shadow dark:shadow-none dark:border-b bg-card dark:bg-transparent print:hidden\">\n    <!-- Navigation toggle button -->\n    <button mat-icon-button (click)=\"toggleNavigation('mainNavigation')\">\n      <mat-icon [svgIcon]=\"'heroicons_outline:bars-3'\"></mat-icon>\n    </button>\n    <!-- Components -->\n    <div class=\"flex items-center pl-2 ml-auto space-x-0.5 sm:space-x-2\">\n      <theme-switch></theme-switch>\n      <search [appearance]=\"'bar'\" *ngIf=\"appConfig.showSearch\"></search>\n      <invitation *ngIf=\"appConfig.showInvitation\"></invitation>\n      <notifications *ngIf=\"appConfig.showNotification\"></notifications>\n      <applications *ngIf=\"appConfig.showApps && isAppsPanel\"></applications>\n      <shortcuts *ngIf=\"appConfig.showShortcut\"></shortcuts>\n      <user></user>\n      <languages *ngIf=\"appConfig.showLanguage\"></languages>\n      <genesis-chat-agent *ngIf=\"appConfig.showChatAgent\"></genesis-chat-agent>\n      \n      <!-- \n            <genesis-fullscreen class=\"hidden md:block\"></genesis-fullscreen>\n            <messages></messages>\n            <button\n                class=\"lg:hidden\"\n                mat-icon-button\n                (click)=\"quickChat.toggle()\">\n                <mat-icon [svgIcon]=\"'heroicons_outline:chat-bubble-left-right'\"></mat-icon>\n            </button> -->\n    </div>\n  </div>\n\n  <!-- Content -->\n  <div class=\"flex flex-col flex-auto content-area\">\n    <!-- *ngIf=\"true\" hack is required here for router-outlet to work correctly.\n             Otherwise, layout changes won't be registered and the view won't be updated! -->\n    <router-outlet *ngIf=\"true\"></router-outlet>\n  </div>\n\n  <!-- Footer -->\n  <!--<div class=\"relative flex flex-0 items-center justify-start w-full h-14 px-4 md:px-6 z-49 border-t bg-card dark:bg-transparent print:hidden\">\n        <span class=\"font-medium text-secondary\">genesis &copy; {{currentYear}}</span>\n    </div>-->\n</div>\n","import { Inject, Injectable } from '@angular/core';\nimport { catchError, Observable, of, tap } from 'rxjs';\nimport { GenesisNavigationItem } from '../../@genesis/components';\nimport { AppsService } from '../../layout/layouts';\nimport { NavigationService } from '../navigation/navigation.service';\nimport { Navigation } from '../navigation/navigation.types';\nimport { API_CONFIG_GEN, ApiClientConfig, AuthService, Constants } from 'genesis-coreservice';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TenantApiService {\n  constructor(\n    private httpClient: HttpClient,\n    private authService: AuthService,\n    private appsService: AppsService,\n    private navigationService: NavigationService,\n    @Inject(API_CONFIG_GEN) public config: ApiClientConfig\n  ) {\n\n  }\n\n  getNavigations(appCode: string): Observable<GenesisNavigationItem[]> {\n    if (appCode === 'DRIVER') {\n      const mockData: GenesisNavigationItem[] = [\n        {\n          id: '1',\n          title: 'Driver Dashboard',\n          type: 'basic',\n          link: '/driver/dashboard',\n          icon: 'dashboard',\n        },\n        {\n          id: '2',\n          title: 'Driver Profile',\n          type: 'basic',\n          link: '/driver/profile',\n          icon: 'person',\n        },\n      ];\n      return new Observable<GenesisNavigationItem[]>((observer) => {\n        observer.next(mockData);\n        observer.complete();\n      }).pipe(\n        tap((items: GenesisNavigationItem[]) => {\n          this.navigationService.navigation$ = <Navigation>{\n            default: items,\n          };\n        }),\n      );\n    } else {\n      let ty = localStorage.getItem(Constants.ThemeTypeKey);\n      let themeType = ty ? JSON.parse(ty) : null;\n      let path = `Navigation/GetNavigationsByAppCode/${appCode}`;\n      if (themeType)\n        path = `${path}?themeType=${themeType}`;\n      \n      return this.getCallObservable(path).pipe(\n        tap((items: GenesisNavigationItem[]) => {\n          this.navigationService.navigation$ = <Navigation>{\n            default: items,\n          };\n        }),\n      );\n    }\n  }\n\n  getAppsByUser(): Observable<any> {\n    return this.getCallObservable('UserApps').pipe(\n      tap((apps) => {\n        this.appsService.apps$ = apps;\n      }),\n      catchError((error) => {\n        const emptyApps: any = [];\n        this.appsService.apps$ = emptyApps;\n        return of(emptyApps);\n      })\n    );\n  }\n\n  getCallObservable(message: string, params?: Object): Observable<any> {\n    let accessToken = this.authService.accessToken;\n    let options: any = {\n      responseType: 'json',\n      headers: { Authorization: `Bearer ${accessToken}` }\n    };\n    if (params) {\n      const request = this.toHttpParams(params);\n      options['params'] = request;\n    }\n    let urlMessage = `${this.config.apiHost}/${message}`;\n    return this.httpClient.get(urlMessage, options);\n  }\n\n  private toHttpParams(params: any): HttpParams {\n    return Object.getOwnPropertyNames(params)\n      .filter((x) => params[x] !== undefined)\n      .reduce((p, key) => p.set(key, params[key]), new HttpParams());\n  }\n}\n","import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\n\nimport { TenantApiService } from './lib/core/services/tenant-api.service';\n\n@NgModule({\n  imports: [\n    MatSnackBarModule,\n  ],\n  declarations: [],\n  providers: [\n    TenantApiService\n  ]\n})\nexport class ServiceModule {\n  constructor(\n    @Optional()\n    @SkipSelf()\n    parentModule: ServiceModule\n  ) {\n    if (parentModule) {\n      throw new Error(`${parentModule} has already been loaded. Import Core module in the AppModule only.`);\n    }\n  }\n}","import { Component, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { GenesisLoadingBarComponent } from \"../../../@genesis/components/loading-bar/loading-bar.component\";\nimport { NgIf } from '@angular/common';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n  selector: 'empty-layout',\n  templateUrl: './empty.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [GenesisLoadingBarComponent, NgIf, RouterOutlet],\n})\nexport class EmptyLayoutComponent implements OnDestroy {\n  private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n  /**\n   * Constructor\n   */\n  constructor() {\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Lifecycle hooks\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * On destroy\n   */\n  ngOnDestroy(): void {\n    // Unsubscribe from all subscriptions\n    this._unsubscribeAll.next(null);\n    this._unsubscribeAll.complete();\n  }\n}","<!-- Loading bar -->\n<genesis-loading-bar></genesis-loading-bar>\n\n<!-- Wrapper -->\n<div class=\"flex flex-col flex-auto w-full\">\n\n    <!-- Content -->\n    <div class=\"flex flex-col flex-auto\">\n        <router-outlet *ngIf=\"true\"></router-outlet>\n    </div>\n\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GenesisLoadingBarComponent } from '../../../@genesis/components/loading-bar/loading-bar.component';\nimport { LanguagesComponent } from '../common/languages/languages.component';\nimport { SearchComponent } from '../common/search/search.component';\nimport { ShortcutsComponent } from '../common/shortcuts/shortcuts.component';\nimport { NotificationsComponent } from '../common/notifications/notifications.component';\nimport { UserComponent } from '../common/user/user.component';\nimport { Navigation } from '../../../core/navigation/navigation.types';\nimport { NavigationService } from '../../../core/navigation/navigation.service';\nimport { GenesisMediaWatcherService } from '../../../@genesis/services';\nimport { GenesisNavigationService, GenesisVerticalNavigationComponent } from '../../../@genesis/components';\nimport { GenesisHorizontalNavigationComponent } from '../../../@genesis/components/navigation/horizontal/horizontal.component';\nimport { APP_CONFIG_GEN, AuthService, IAppConfig, UserModel } from 'genesis-coreservice';\nimport { AppsService } from '../common/apps/apps.service';\nimport { IApps } from '../common/apps/apps.types';\nimport { GenesisChatAgentComponent } from '../common/chat-agent/chat-agent.component';\nimport { ApplicationsComponent, InvitationComponent } from \"../../public-api\";\n\n@Component({\n    selector: 'modern-layout',\n    templateUrl: './modern.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [\n    GenesisLoadingBarComponent,\n    NgIf,\n    GenesisVerticalNavigationComponent,\n    GenesisHorizontalNavigationComponent,\n    MatButtonModule,\n    MatIconModule,\n    LanguagesComponent,\n    SearchComponent,\n    ShortcutsComponent,\n    NotificationsComponent,\n    NotificationsComponent,\n    GenesisChatAgentComponent,\n    UserComponent,\n    RouterOutlet,\n    ApplicationsComponent,\n    InvitationComponent\n],\n})\nexport class ModernLayoutComponent implements OnInit, OnDestroy {\n    isScreenSmall: boolean;\n    navigation: Navigation;\n    isAppsPanel: boolean = false;\n    private unsubscribeAll: Subject<any> = new Subject<any>();\n    user: UserModel = <UserModel>{};\n    /**\n     * Constructor\n     */\n    constructor(\n        private activatedRoute: ActivatedRoute,\n        private router: Router,\n        private navigationService: NavigationService,\n        private readonly authService: AuthService,\n        private genesisMediaWatcherService: GenesisMediaWatcherService,\n        private genesisNavigationService: GenesisNavigationService,\n        private readonly appsService: AppsService,\n        @Inject(APP_CONFIG_GEN) public appConfig: IAppConfig\n    ) {\n    }\n\n    get currentYear(): number {\n        return new Date().getFullYear();\n    }\n\n    ngOnInit(): void {\n this.authService.getProfile().then((user: UserModel) => {\n      this.user = user;\n    });\n        this.navigationService.navigation$\n            .pipe(takeUntil(this.unsubscribeAll))\n            .subscribe((navigation: Navigation) => {\n                this.navigation = navigation;\n            });\n\n        this.genesisMediaWatcherService.onMediaChange$\n            .pipe(takeUntil(this.unsubscribeAll))\n            .subscribe(({ matchingAliases }) => {\n                this.isScreenSmall = !matchingAliases.includes('md');\n            });\n\n        this.appsService.apps$\n            .pipe(takeUntil(this.unsubscribeAll))\n            .subscribe((apps: IApps[]) => {\n                this.isAppsPanel = apps.length > 1;\n            });\n    }\n    ngOnDestroy(): void {\n        this.unsubscribeAll.next(null);\n        this.unsubscribeAll.complete();\n    }\n\n    toggleNavigation(name: string): void {\n        const navigation = this.genesisNavigationService.getComponent<GenesisVerticalNavigationComponent>(name);\n        if (navigation) {\n            navigation.toggle();\n        }\n    }\n}\n","<!-- Loading bar -->\n<genesis-loading-bar></genesis-loading-bar>\n\n<!-- Navigation -->\n<ng-container *ngIf=\"isScreenSmall\">\n    <genesis-vertical-navigation class=\"dark bg-gray-900 print:hidden\" [mode]=\"'over'\" [name]=\"'mainNavigation'\"\n        [navigation]=\"navigation.default\" [opened]=\"false\">\n        <!-- Navigation header hook -->\n        <ng-container genesisVerticalNavigationHeader>\n            <div class=\"flex items-center w-full p-4 pl-6\">\n                <!-- Logo -->\n                <div class=\"flex items-center justify-center\">\n                    <img class=\"h-8 mr-2\" *ngIf=\"appConfig.sideBarLogo\" [src]=\"appConfig.sideBarLogo\" />\n                    <span class=\"text-2xl\" *ngIf=\"appConfig.sideBarCompanyName\">\n                        {{ appConfig.sideBarCompanyName }}\n                    </span>\n                </div>\n                <!-- Components -->\n                <!-- <div class=\"flex items-center ml-auto\">\n                    <user [showAvatar]=\"true\"></user>\n                </div> -->\n            </div>\n            <!-- User -->\n            <div class=\"flex flex-col items-center w-full p-4\">\n                <div class=\"relative w-24 h-24\">\n                    <img class=\"w-full h-full rounded-full\" *ngIf=\"user.picture\" [src]=\"user.picture\"\n                        alt=\"User avatar\" />\n                    <mat-icon class=\"icon-size-24\" *ngIf=\"!user.picture\"\n                        [svgIcon]=\"'heroicons_solid:user-circle'\"></mat-icon>\n                </div>\n                <div class=\"flex flex-col items-center justify-center w-full mt-6\">\n                    <div\n                        class=\"w-full whitespace-nowrap text-ellipsis overflow-hidden text-center leading-normal font-medium\">\n                        {{ user.displayName }}\n                    </div>\n                    <div\n                        class=\"w-full mt-0.5 whitespace-nowrap text-ellipsis overflow-hidden text-center text-md leading-normal font-medium text-secondary\">\n                        {{ user.email ?? user.userName}}\n                    </div>\n                </div>\n            </div>\n        </ng-container>\n        <!-- Navigation footer hook -->\n\n        <!-- Navigation footer hook -->\n        <ng-container genesisVerticalNavigationContentFooter>\n            <div class=\"flex flex-0 items-center justify-center h-16 pr-6 pl-2 mt-2 mb-4 opacity-12\">\n                <img class=\"max-w-36\" [src]=\"appConfig.sideBarFlueLogo\" />\n            </div>\n        </ng-container>\n    </genesis-vertical-navigation>\n</ng-container>\n\n<!-- Wrapper -->\n<div class=\"flex flex-col flex-auto w-full min-w-0\">\n    <!-- Header -->\n    <div class=\"relative flex flex-0 items-center w-full h-16 sm:h-20 px-4 md:px-6 z-49 shadow dark:shadow-none dark:border-b bg-card dark:bg-transparent print:hidden\">\n        <ng-container *ngIf=\"!isScreenSmall\">\n            <!-- Logo -->\n            <div class=\"flex items-center mx-2 lg:mr-8\">\n                <div class=\"hidden lg:flex\">\n                    <img class=\"dark:hidden w-8\" *ngIf=\"appConfig.sideBarLogo\" [src]=\"appConfig.sideBarLogo \">\n                    <img class=\"hidden dark:flex w-8\" *ngIf=\"appConfig.sideBarLogo\" [src]=\"appConfig.sideBarLogo\">\n                </div>\n                <img class=\"flex lg:hidden w-8\" *ngIf=\"appConfig.sideBarLogo\" [src]=\"appConfig.sideBarLogo\">\n            </div>\n            <!-- Horizontal navigation -->\n            <genesis-horizontal-navigation class=\"mr-2\" [name]=\"'mainNavigation'\" [navigation]=\"navigation.default\">\n\n            </genesis-horizontal-navigation>\n        </ng-container>\n        <!-- Navigation toggle button -->\n        <ng-container *ngIf=\"isScreenSmall\">\n            <button mat-icon-button (click)=\"toggleNavigation('mainNavigation')\">\n                <mat-icon [svgIcon]=\"'heroicons_outline:bars-3'\"></mat-icon>\n            </button>\n        </ng-container>\n        <!-- Components -->\n        <div class=\"flex items-center pl-2 ml-auto space-x-0.5 sm:space-x-2\">\n            <search [appearance]=\"'bar'\" *ngIf=\"appConfig.showSearch\"></search>\n            <invitation *ngIf=\"appConfig.showInvitation\"></invitation>\n            <notifications *ngIf=\"appConfig.showNotification\"></notifications>\n            <applications *ngIf=\"appConfig.showApps && isAppsPanel\"></applications>\n            <shortcuts *ngIf=\"appConfig.showShortcut\"></shortcuts>\n            <user></user>\n            <languages *ngIf=\"appConfig.showLanguage\"></languages>\n            <genesis-chat-agent *ngIf=\"appConfig.showChatAgent\"></genesis-chat-agent>\n        </div>\n    </div>\n\n    <!-- Content -->\n    <div class=\"flex flex-col flex-auto w-full bg-white\">\n        <!-- *ngIf=\"true\" hack is required here for router-outlet to work correctly.\n             Otherwise, layout changes won't be registered and the view won't be updated! -->\n        <router-outlet *ngIf=\"true\"></router-outlet>\n    </div>\n\n    <!-- Footer -->\n    <!-- <div\n        class=\"relative flex flex-0 items-center w-full h-14 sm:h-20 px-4 md:px-6 z-49 border-t bg-card dark:bg-transparent print:hidden\">\n        <span class=\"font-medium text-secondary\">genesis &copy; {{currentYear}}</span>\n    </div> -->\n\n</div>\n\n<!-- Quick chat -->\n<!-- <quick-chat #quickChat=\"quickChat\"></quick-chat> -->","import { Component, Inject, OnDestroy, OnInit, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { GenesisConfig } from '../@genesis/services/config/config.types';\nimport { Subject, combineLatest, filter, map, takeUntil } from 'rxjs';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { DOCUMENT, NgIf } from '@angular/common';\nimport { GenesisMediaWatcherService } from '../@genesis/services/media-watcher/media-watcher.service';\nimport { GenesisPlatformService } from '../@genesis/services/platform/platform.service';\nimport { GENESIS_VERSION } from '../@genesis/version/genesis-version';\nimport { GenesisConfigService } from '../@genesis/services/config/config.service';\nimport { EmptyLayoutComponent } from './layouts/empty/empty.component';\nimport { ClassyLayoutComponent } from './layouts/classy/classy.component';\nimport { ModernLayoutComponent } from './layouts/modern/modern.component';\n\n@Component({\n  selector: 'layout',\n  templateUrl: './layout.component.html',\n  styleUrls: ['./layout.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [\n    NgIf,\n    EmptyLayoutComponent,\n    // CenteredLayoutComponent, \n    // EnterpriseLayoutComponent, \n    // MaterialLayoutComponent, \n    ModernLayoutComponent,\n    // ClassicLayoutComponent,\n    ClassyLayoutComponent,\n    // CompactLayoutComponent, \n    // DenseLayoutComponent, \n    // FuturisticLayoutComponent, \n    // ThinLayoutComponent, \n    // SettingsComponent\n  ]\n})\nexport class LayoutComponent implements OnInit, OnDestroy {\n  config: GenesisConfig;\n  layout: string;\n  scheme: 'dark' | 'light';\n  theme: string;\n\n  private unsubscribeAll: Subject<any> = new Subject<any>();\n  /**\n   * Constructor\n   */\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    @Inject(DOCUMENT) private _document: any,\n    private renderer2: Renderer2,\n    private router: Router,\n    private genesisConfigService: GenesisConfigService,\n    private genesisMediaWatcherService: GenesisMediaWatcherService,\n    private genesisPlatformService: GenesisPlatformService,\n  ) {\n  }\n\n  ngOnInit(): void {\n    combineLatest([\n      this.genesisConfigService.config$,\n      this.genesisMediaWatcherService.onMediaQueryChange$(['(prefers-color-scheme: dark)', '(prefers-color-scheme: light)']),\n    ]).pipe(\n      takeUntil(this.unsubscribeAll),\n      map(([config, mql]) => {\n        const options = {\n          scheme: config.scheme,\n          theme: config.theme,\n        };\n        // If the scheme is set to 'auto'...\n        if (config.scheme === 'auto') {\n          // Decide the scheme using the media query\n          options.scheme = mql.breakpoints['(prefers-color-scheme: dark)'] ? 'dark' : 'light';\n        }\n\n        return options;\n      }),\n    ).subscribe((options) => {\n      // Store the options\n      this.scheme = options.scheme;\n      this.theme = options.theme;\n\n      // Update the scheme and theme\n      this._updateScheme();\n      this._updateTheme();\n    });\n\n    // Subscribe to config changes\n    this.genesisConfigService.config$\n      .pipe(takeUntil(this.unsubscribeAll))\n      .subscribe((config: GenesisConfig) => {\n        // Store the config\n        this.config = config;\n        // Update the layout\n        this._updateLayout();\n      });\n\n    // Subscribe to NavigationEnd event\n    this.router.events.pipe(\n      filter(event => event instanceof NavigationEnd),\n      takeUntil(this.unsubscribeAll),\n    ).subscribe(() => {\n      // Update the layout\n      this._updateLayout();\n    });\n\n    // Set the app version\n    this.renderer2.setAttribute(this._document.querySelector('[ng-version]'), 'genesis-version', GENESIS_VERSION);\n\n    // Set the OS name\n    this.renderer2.addClass(this._document.body, this.genesisPlatformService.osName);\n  }\n\n  /**\n   * On destroy\n   */\n  ngOnDestroy(): void {\n    // Unsubscribe from all subscriptions\n    this.unsubscribeAll.next(null);\n    this.unsubscribeAll.complete();\n  }\n\n  private _updateLayout(): void {\n    // Get the current activated route\n    let route = this.activatedRoute;\n    while (route.firstChild) {\n      route = route.firstChild;\n    }\n\n    this.layout = this.config.layout;\n    const layoutFromQueryParam = route.snapshot.queryParamMap.get('layout');\n    if (layoutFromQueryParam) {\n      this.layout = layoutFromQueryParam;\n      if (this.config) {\n        this.config.layout = layoutFromQueryParam;\n      }\n    }\n\n    const paths = route.pathFromRoot;\n    paths.forEach((path) => {\n      // Check if there is a 'layout' data\n      if (path.routeConfig && path.routeConfig.data && path.routeConfig.data.layout) {\n        // Set the layout\n        this.layout = path.routeConfig.data.layout;\n      }\n    });\n  }\n\n  /**\n   * Update the selected scheme\n   *\n   * @private\n   */\n  private _updateScheme(): void {\n    this._document.body.classList.remove('light', 'dark');\n    this._document.body.classList.add(this.scheme);\n  }\n\n  private _updateTheme(): void {\n    this._document.body.classList.forEach((className: string) => {\n      if (className.startsWith('theme-')) {\n        this._document.body.classList.remove(className, className.split('-')[1]);\n      }\n    });\n    this._document.body.classList.add(this.theme);\n  }\n}\n","<!-- ----------------------------------------------------------------------------------------------------- -->\n<!-- Empty layout -->\n<!-- ----------------------------------------------------------------------------------------------------- -->\n<empty-layout *ngIf=\"layout === 'empty'\"></empty-layout>\n\n<!-- Classy -->\n<classy-layout *ngIf=\"layout === 'classy'\"></classy-layout>\n\n<!-- Modern -->\n<modern-layout *ngIf=\"layout === 'modern'\"></modern-layout>","export interface IResponse<T> {\n    hasError: boolean;\n    message: string;\n    data: T;\n}\n\nexport enum HttpStatusCode {\n    Continue = 100,\n    SwitchingProtocols = 101,\n    Processing = 102,\n    EarlyHints = 103,\n    OK = 200,\n    Created = 201,\n    Accepted = 202,\n    NonAuthoritativeInformation = 203,\n    NoContent = 204,\n    ResetContent = 205,\n    PartialContent = 206,\n    MultiStatus = 207,\n    AlreadyReported = 208,\n    IMUsed = 226,\n    Ambiguous = 300,\n    MultipleChoices = 300,\n    Moved = 301,\n    MovedPermanently = 301,\n    Found = 302,\n    Redirect = 302,\n    RedirectMethod = 303,\n    SeeOther = 303,\n    NotModified = 304,\n    UseProxy = 305,\n    Unused = 306,\n    RedirectKeepVerb = 307,\n    TemporaryRedirect = 307,\n    PermanentRedirect = 308,\n    BadRequest = 400,\n    Unauthorized = 401,\n    PaymentRequired = 402,\n    Forbidden = 403,\n    NotFound = 404,\n    MethodNotAllowed = 405,\n    NotAcceptable = 406,\n    ProxyAuthenticationRequired = 407,\n    RequestTimeout = 408,\n    Conflict = 409,\n    Gone = 410,\n    LengthRequired = 411,\n    PreconditionFailed = 412,\n    RequestEntityTooLarge = 413,\n    RequestUriTooLong = 414,\n    UnsupportedMediaType = 415,\n    RequestedRangeNotSatisfiable = 416,\n    ExpectationFailed = 417,\n    MisdirectedRequest = 421,\n    UnprocessableEntity = 422,\n    Locked = 423,\n    FailedDependency = 424,\n    UpgradeRequired = 426,\n    PreconditionRequired = 428,\n    TooManyRequests = 429,\n    RequestHeaderFieldsTooLarge = 431,\n    UnavailableForLegalReasons = 451,\n    InternalServerError = 500,\n    NotImplemented = 501,\n    BadGateway = 502,\n    ServiceUnavailable = 503,\n    GatewayTimeout = 504,\n    HttpVersionNotSupported = 505,\n    VariantAlsoNegotiates = 506,\n    InsufficientStorage = 507,\n    LoopDetected = 508,\n    NotExtended = 510,\n    NetworkAuthenticationRequired = 511\n}","export abstract class GenesisId {\n\n    public static NewGenesisId(): string {\n        let date = new Date();\n        let year = date.getFullYear();\n        var id = GenesisId.GenerateUID(5);\n        var genId = `${year}${id}`;\n        return genId;\n    }\n\n    public static NewGenesisIdWithSize(size: number): string {\n        let date = new Date();\n        let year = date.getFullYear();\n        var id = GenesisId.GenerateUID(size);\n        var genId = `${year}${id}`;\n        return genId;\n    }\n\n    public static GenerateUID(length: number): string {\n        let result = '';\n        const characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n        const charactersLength = characters.length;\n        let counter = 0;\n        while (counter < length) {\n            result += characters.charAt(Math.floor(Math.random() * charactersLength));\n            counter += 1;\n        }\n        return result;\n    }\n\n}","import { inject, Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Injectable({providedIn: 'root'})\nexport class IconsService\n{\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n        const domSanitizer = inject(DomSanitizer);\n        const matIconRegistry = inject(MatIconRegistry);\n\n        // Register icon sets\n        matIconRegistry.addSvgIconSet(domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/material-twotone.svg'));\n        matIconRegistry.addSvgIconSetInNamespace('mat_outline', domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/material-outline.svg'));\n        matIconRegistry.addSvgIconSetInNamespace('mat_solid', domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/material-solid.svg'));\n        matIconRegistry.addSvgIconSetInNamespace('feather', domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/feather.svg'));\n        matIconRegistry.addSvgIconSetInNamespace('heroicons_outline', domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/heroicons-outline.svg'));\n        matIconRegistry.addSvgIconSetInNamespace('heroicons_solid', domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/heroicons-solid.svg'));\n        matIconRegistry.addSvgIconSetInNamespace('heroicons_mini', domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/heroicons-mini.svg'));\n    }\n}\n","import { ENVIRONMENT_INITIALIZER, EnvironmentProviders, inject, Provider } from '@angular/core';\nimport { IconsService } from './icons.service';\n\nexport const provideIcons = (): Array<Provider | EnvironmentProviders> =>\n{\n    return [\n        {\n            provide : ENVIRONMENT_INITIALIZER,\n            useValue: () => inject(IconsService),\n            multi   : true,\n        },\n    ];\n};\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\n@Pipe({\n    name: \"safeHtmlPipe\",\n    pure : false,\n    standalone: true\n  })\n  export class SafeHtmlPipePipe implements PipeTransform {\n    constructor(private sanitizer: DomSanitizer) {}\n  \n    transform(html: any) {\n      return this.sanitizer.bypassSecurityTrustHtml(html);\n    }\n  }\n  ","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { TimeOnly } from \"genesis-coreservice\";\n\n@Pipe({\n  name: \"timeonly\",\n  pure: false,\n  standalone: true\n})\nexport class TimeOnlyPipe implements PipeTransform {\n  constructor(private sanitizer: DomSanitizer) { }\n\n  transform(value: TimeOnly) {\n    if (value) {\n      return `${this.timeFormat(value.hour)}:${this.timeFormat(value.minute)}`;\n    }\n    return '';\n  }\n\n  private timeFormat(value: number): string {\n    if(value >= 0 && value < 10)\n      return `0${value}`;\n    else\n      return value.toString();\n  }\n}\n","export type FormatSettings = {\n  indent: number;   // number of spaces for indentation\n  lineNumbers: boolean;  // wrap HTML in an <ol> tag to support line numbers\n  linkUrls: boolean;  // create anchor tags for URLs\n  linksNewTab: boolean;  // add a target=_blank attribute setting to anchor tags\n  quoteKeys: boolean;  // always double quote key names\n  trailingCommas: boolean;  // append a comma after the last item in arrays and objects\n};\n\nexport type FormatOptions = Partial<FormatSettings>;\nexport type JsonType = 'key' | 'string' | 'number' | 'boolean' | 'null' | 'mark';\n\nexport abstract class PrettyPrintJson {\n  public static toHtml(data: unknown, options?: FormatOptions): string {\n    // Converts an object or primitive into an HTML string suitable for rendering.\n    const defaults: FormatSettings = {\n      indent: 3,\n      lineNumbers: false,\n      linkUrls: true,\n      linksNewTab: true,\n      quoteKeys: false,\n      trailingCommas: true,\n    };\n\n    const settings = { ...defaults, ...options };\n    const invalidHtml = /[<>&]|\\\\\"/g;\n\n    const toHtml = (char: string): string => {\n      switch (char) {\n        case '<': return '&lt;';\n        case '>': return '&gt;';\n        case '&': return '&amp;';\n        case '\\\\\"': return '&bsol;&quot;';\n        default: return char;\n      }\n    };\n\n    const spanTag = (type: JsonType, display?: string): string =>\n      display ? `<span class=\"json-${type}\">${display}</span>` : '';\n\n    const buildValueHtml = (value: string): string => {\n      // Analyzes a value and returns HTML like: \"<span class=json-number>3.1415</span>\"\n      const strType = value.startsWith('\"') ? 'string' : null;\n      const boolType = ['true', 'false'].includes(value) ? 'boolean' : null;\n      const nullType = value === 'null' ? 'null' : null;\n      const type = boolType || nullType || strType || 'number';\n\n      if (strType && settings.linkUrls) {\n        const urlPattern = /https?:\\/\\/[^\\s\"]+/g;\n        const target = settings.linksNewTab ? ' target=\"_blank\" rel=\"noopener noreferrer\"' : '';\n        const makeLink = (link: string) =>\n          `<a class=\"json-link\" href=\"${link}\"${target}>${link}</a>`;\n        return spanTag(type, value.replace(urlPattern, makeLink));\n      }\n\n      return spanTag(type, value);\n    };\n\n    const replacer = (match: string, indent: string, key: string, value: string, end: string): string => {\n      const findName = settings.quoteKeys ? /(.*)(): / : /\"([\\w$]+)\": |(.*): /;\n      const indentHtml = indent || '';\n      const keyName = key?.replace(findName, '$1$2') || '';\n      const keyHtml = key ? spanTag('key', keyName) + spanTag('mark', ': ') : '';\n      const valueHtml = value ? buildValueHtml(value) : '';\n\n      const shouldAddComma = settings.trailingCommas && match.startsWith(' ') &&\n        end && ![']', '}'].includes(match.slice(-1));\n      const endHtml = spanTag('mark', shouldAddComma ? (end || '') : end || '');\n\n      return indentHtml + keyHtml + valueHtml + endHtml;\n    };\n\n    const jsonLine = /^( *)(\"[^\"]+\": )?(\"[^\"]*\"|[\\w.+-]*)?([{}[\\],]*)?$/mg;\n\n    try {\n      const json = data === undefined ? 'undefined' : JSON.stringify(data, null, settings.indent);\n      if (!json) return 'undefined';\n\n      const escapedJson = json.replace(invalidHtml, toHtml);\n      const html = escapedJson.replace(jsonLine, replacer);\n\n      if (settings.lineNumbers) {\n        const lines = html.split('\\n').map(line => `<li>${line}</li>`);\n        return `<ol class=\"json-lines\">${lines.join('')}</ol>`;\n      }\n\n      return html;\n    } catch (error) {\n      console.error('Error formatting JSON:', error);\n      return 'Invalid JSON';\n    }\n  }\n};","export abstract class CommonDatas {\n    public static genders: any[] = [{\n        code: 'Male',\n        name: \"Male\"\n    }, {\n        code: 'Female',\n        name: \"Female\"\n    }, {\n        code: 'Other',\n        name: \"Other\"\n    }];\n\n    public static languages: any[] = [{\n        code: \"tr\",\n        name: \"Turkish\"\n    }, {\n        code: \"en\",\n        name: \"English\"\n    }, {\n        code: \"de\",\n        name: \"German\"\n    }];\n\n    public static userTypes: any[] = [{\n        code: \"User\",\n        name: \"User\"\n    }, {\n        code: \"Driver\",\n        name: \"Driver\"\n    }, {\n        code: \"Guide\",\n        name: \"Guide\"\n    }];\n}","type Params = Record<string, any>;\n\nexport class RouteService<T> {\n    public raw: T;\n\n    constructor(routes: T) {\n        this.raw = routes;\n    }\n\n    public builder(route: string, params: Params): string {\n        return route.replace(/:([a-zA-Z]+)/g, (match, paramName) => {\n            return params[paramName] !== undefined ? params[paramName] : match;\n        });\n    }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Translation, TranslocoLoader } from '@jsverse/transloco';\nimport { Observable } from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class TranslocoHttpLoader implements TranslocoLoader\n{\n    /**\n     * Constructor\n     */\n    constructor(\n        private _httpClient: HttpClient)\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Get translation\n     *\n     * @param lang\n     */\n    getTranslation(lang: string): Observable<Translation>\n    {\n        return this._httpClient.get<Translation>(`./assets/i18n/${lang}.json`);\n    }\n}\n","import { APP_INITIALIZER, inject, Provider } from '@angular/core';\nimport { provideTransloco, TranslocoService } from '@jsverse/transloco';\nimport { firstValueFrom } from 'rxjs';\nimport { TranslocoHttpLoader } from './transloco.http-loader';\nimport { AuthService } from 'genesis-coreservice';\n\nexport const provideTranslocoShell = (): Provider[] => [\n  provideTransloco({\n    config: {\n      availableLangs: ['en-GB', 'de-DE', 'nl-NL', 'tr-TR'],\n      defaultLang: 'en-GB',\n      fallbackLang: 'en-GB',\n      reRenderOnLangChange: true,\n      prodMode: true,\n    },\n    loader: TranslocoHttpLoader,\n  }),\n  {\n    provide: APP_INITIALIZER,\n    useFactory: () => {\n      const authService = inject(AuthService);\n      const translocoService = inject(TranslocoService);\n      return async () => {\n        const availableLangs = translocoService.getAvailableLangs() as string[];\n        const defaultLang = translocoService.getDefaultLang();\n        \n        try {\n          // Get user profile from token\n          const profile = await authService.getProfile();\n          // Language comes from the token now\n          const profileLang = profile?.language;\n          const storageLang = localStorage.getItem('userLanguage');\n          \n          // Check if profileLang exists in availableLangs, otherwise fallback to en-GB\n          const validProfileLang = profileLang && availableLangs.includes(profileLang) ? profileLang : null;\n          \n          // Check if storageLang exists in availableLangs\n          const validStorageLang = storageLang && availableLangs.includes(storageLang) ? storageLang : null;\n          \n          // Priority: Valid token language > valid localStorage > default\n          const lang = validProfileLang ?? validStorageLang ?? defaultLang;\n          translocoService.setActiveLang(lang);\n          // Update localStorage to match the resolved valid language\n          localStorage.setItem('userLanguage', lang);\n          await firstValueFrom(translocoService.load(lang));\n        } catch {\n          // Fallback when user is not authenticated\n          const storageLang = localStorage.getItem('userLanguage');\n          // Ensure storageLang is valid\n          const validStorageLang = storageLang && availableLangs.includes(storageLang) ? storageLang : null;\n          const lang = validStorageLang ?? defaultLang;\n          translocoService.setActiveLang(lang);\n          localStorage.setItem('userLanguage', lang);\n          await firstValueFrom(translocoService.load(lang));\n        }\n      };\n    },\n    multi: true,\n  },\n];\n","// Common Models\nexport * from './commond-models/index';\n\n// ID Generator\nexport * from './gensis-id-generator';\n\n// Icons\nexport * from './icons/icons.provider';\nexport * from './icons/icons.service';\n\n// Navigation\nexport * from './navigation/navigation.service';\nexport * from './navigation/navigation.types';\n\n// Pipes\nexport * from './safe-html-pipe.pipe';\nexport * from './time-only-pipe';\nexport * from './pretty-json/print-pretty-json.pipe';\n\n// Services\nexport * from './services/common-static-datas';\nexport * from './services/route.service';\nexport * from './services/tenant-api.service';\n\n// Transloco\nexport * from './transloco/transloco.http-loader';\nexport * from './transloco/transloco.provider';\n","/*\n * Public API Surface of genesis-shell\n */\n\nexport * from './service.module';\n\n// @Genesis\n// Animations\nexport * from './lib/@genesis/index';\n\n// Layout\nexport * from './lib/layout/index';\n\n// Core\nexport * from './lib/core/index';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i1.GenesisNavigationService","i2.GenesisUtilsService","i5","i2.GenesisNavigationService","i3","merge","i4.GenesisNavigationService","i5.GenesisUtilsService","i1.AppsService","i2.ShortcutsService","i4","i6","i1.InvitationService","i7","i1.GenesisAlertService","i2.GenesisConfigService","i1.GenesisMediaWatcherService","filter","map","i1.BreadcrumbService","i1.GenesisConfigService","i8","i3.GenesisMediaWatcherService","i4.GenesisPlatformService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAea,0BAA0B,CAAA;AAOnC;;AAEG;AACH,IAAA,WAAA,CAAoB,qBAA4C,EAAA;QAA5C,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAThC,IAAA,CAAA,QAAQ,GAAY,IAAI;QAEjC,IAAA,CAAA,QAAQ,GAAW,CAAC;QACpB,IAAA,CAAA,IAAI,GAAY,KAAK;AACb,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAM1D;;;;AAMA;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAE9B,QAAA,IAAI,UAAU,IAAI,OAAO,EAAE;;AAEvB,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAChG;IACJ;AAEA;;AAEG;IACH,QAAQ,GAAA;;QAEJ,IAAI,CAAC,qBAAqB,CAAC;AACtB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACrB,QAAA,CAAC,CAAC;QAEN,IAAI,CAAC,qBAAqB,CAAC;AACtB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACzB,QAAA,CAAC,CAAC;QAEN,IAAI,CAAC,qBAAqB,CAAC;AACtB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACrB,QAAA,CAAC,CAAC;IAEV;AAEA;;AAEG;IACH,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;+GA9DS,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfvC,oJAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQc,IAAI,4FAAE,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAE3B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,aAAA,EAEhB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,oJAAA,EAAA;;sBAGpC;;;MEhBQ,sBAAsB,CAAA;aAExB,IAAA,CAAA,QAAQ,GAAG,gCAAgC,CAAC;aAC5C,IAAA,CAAA,YAAY,GAAG,gCAAgC,CAAC;aAChD,IAAA,CAAA,YAAY,GAAG,8BAA8B,CAAC;aAC9C,IAAA,CAAA,KAAK,GAAG,gCAAgC,CAAC;;MAGvC,yBAAyB,CAAA;aAE3B,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC;aAClB,IAAA,CAAA,QAAQ,GAAG,OAAO,CAAC;aACnB,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC;;;ACT7B;AACA;AACA;AACA,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAC3C;AACI,IAAA,KAAK,CAAC,iBAAiB,EACnB,KAAK,CAAC;AACF,QAAA,MAAM,EAAE,GAAG;AACd,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,aAAa,EACf,KAAK,CAAC,GAAG,CAAC,CACb;;AAGD,IAAA,UAAU,CAAC,yDAAyD,EAAE,EAAE,CAAC;;AAGzE,IAAA,UAAU,CAAC,oCAAoC,EAC3C,OAAO,CAAC,aAAa,CAAC,EACtB;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;;AC5BD;AACA;AACA;AACA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAC3B;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAE,CAAC;AACb,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAE,CAAC;AACb,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EACjC;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,0BAA0B;AACxC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,EACvC;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,yBAAyB;AACvC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EACnC;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,0BAA0B;AACxC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EACrC;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,yBAAyB;AACvC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAC7B;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAE,CAAC;AACb,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAE,CAAC;AACb,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EACnC;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,0BAA0B;AACxC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EACzC;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,yBAAyB;AACvC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EACrC;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,0BAA0B;AACxC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,EACvC;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,yBAAyB;AACvC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;;ACrUD;AACA;AACA;AACA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EACzB;;AAGI,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;IAG/B,UAAU,CAAC,sBAAsB,EAC7B;AACI,QAAA,OAAO,CAAC,aAAa,EACjB,SAAS,CAAC;AACN,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,sBAAsB;AACjC,gBAAA,MAAM,EAAK,CAAC;aACf,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,yBAAyB;AACpC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,yBAAyB;AACpC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,yBAAyB;AACpC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,yBAAyB;AACpC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,MAAM,EAAK,GAAG;aACjB,CAAC;AACF,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE,sBAAsB;AACjC,gBAAA,MAAM,EAAK,CAAC;aACf,CAAC;AACL,SAAA,CAAC,CACL;KACJ,EACD;AACI,QAAA,MAAM,EAAE;AACJ,YAAA,OAAO,EAAE,8CAA8C;AAC1D,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;;ACnED;AACA;AACA;AACA,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EACnC;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,0BAA0B;AACxC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EACzC;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,yBAAyB;AACvC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EACrC;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,0BAA0B;AACxC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,EACvC;AACI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,yBAAyB;AACvC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EACrC;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,0BAA0B;AACxC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAC3C;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,yBAAyB;AACvC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,EACvC;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,0BAA0B;AACxC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EACzC;AACI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,sBAAsB;AACpC,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,SAAS,EAAE,yBAAyB;AACvC,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;;ACtPD;AACA;AACA;AACA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAC3B;AAEI,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,YAAY;AAC1B,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,UAAU;AACxB,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AAC1F,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;AAED;AACA;AACA;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAC7B;AAEI,IAAA,KAAK,CAAC,GAAG,EACL,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,UAAU;AACxB,KAAA,CAAC,CACL;AAED,IAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,CAAC;AACZ,QAAA,SAAS,EAAE,YAAY;AAC1B,KAAA,CAAC,CACL;;AAGD,IAAA,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;;AAG/B,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1C;AACI,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAA,CAAA,EAAI,sBAAsB,CAAC,YAAY,CAAA,CAAE;AACzF,SAAA;KACJ,CACJ;AACJ,CAAA,CACJ;;AC/DM,MAAM,iBAAiB,GAAG;IAC7B,cAAc;AACd,IAAA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW;AACxD,IAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY;IAC7D,KAAK;AACL,IAAA,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY;AACpD,IAAA,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa;AACxD,IAAA,MAAM,EAAE,OAAO;;;MCbN,iBAAiB,CAAA;AAQ1B,IAAA,WAAA,CAAY,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;AAElD,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;IACd;AACH;MAEY,iBAAiB,CAAA;IAK1B,WAAA,CAAY,CAA2B,EAAE,CAA2B,EAAA;AAEhE,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;IACd;AACH;;AClBD;;AAEG;MAMU,yBAAyB,CAAA;AAclC;;AAEG;AACH,IAAA,WAAA,CACY,WAAuB,EACvB,SAAmB,EACnB,OAAe,EAAA;QAFf,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,OAAO,GAAP,OAAO;;QAdV,IAAA,CAAA,gBAAgB,GAAY,IAAI;QAGjC,IAAA,CAAA,UAAU,GAAmB,IAAI;QAEjC,IAAA,CAAA,GAAG,GAAyC,IAAI;AAChD,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAW1D;;;;AAMA;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QAEV,OAAO,IAAI,CAAC,WAAW;IAC3B;AAEA;;AAEG;AACH,IAAA,IAAI,EAAE,GAAA;QAEF,OAAO,IAAI,CAAC,GAAG;IACnB;;;;AAMA;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAG9B,QAAA,IAAK,kBAAkB,IAAI,OAAO,EAClC;;YAEI,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC;;AAGpF,YAAA,IAAK,IAAI,CAAC,gBAAgB,EAC1B;gBACI,IAAI,CAAC,KAAK,EAAE;YAChB;;iBAGA;gBACI,IAAI,CAAC,QAAQ,EAAE;YACnB;QACJ;;AAGA,QAAA,IAAK,yBAAyB,IAAI,OAAO,EACzC;;AAEI,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC;;AAGtF,YAAA,IAAK,CAAC,IAAI,CAAC,GAAG,EACd;gBACI;YACJ;;YAGA,UAAU,CAAC,MAAK;gBAEZ,IAAI,CAAC,QAAQ,EAAE;AACnB,YAAA,CAAC,CAAC;YAEF,UAAU,CAAC,MAAK;gBAEZ,IAAI,CAAC,KAAK,EAAE;AAChB,YAAA,CAAC,CAAC;QACN;IACJ;AAEA;;AAEG;IACH,QAAQ,GAAA;;AAGJ,QAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;AACrB,aAAA,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,YAAY,CAAC,GAAG,CAAC;aAEpB,SAAS,CAAC,MAAK;;YAGZ,IAAI,CAAC,MAAM,EAAE;AACjB,QAAA,CAAC,CAAC;IACV;AAEA;;AAEG;IACH,WAAW,GAAA;QAEP,IAAI,CAAC,QAAQ,EAAE;;AAGf,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;;;;AAMA;;AAEG;IACH,SAAS,GAAA;QAEL,OAAO,IAAI,CAAC,gBAAgB;IAChC;AAEA;;AAEG;IACH,MAAM,GAAA;;AAGF,QAAA,IAAK,CAAC,IAAI,CAAC,GAAG,EACd;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;IACrB;AAEA;;AAEG;IACH,OAAO,GAAA;QAEH,IAAI,CAAC,WAAW,EAAE;IACtB;AAEA;;;;AAIG;IACH,QAAQ,CAAC,SAAiB,QAAQ,EAAA;QAE9B,OAAO,IAAI,iBAAiB,CACxB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,EAC/C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,EAC9C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,EAChD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAC1D;AAEA;;;;AAIG;IACH,QAAQ,CAAC,WAAoB,KAAK,EAAA;AAE9B,QAAA,IAAI,iBAAiB;AAErB,QAAA,IAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAC1B;YACI,iBAAiB,GAAG,IAAI,iBAAiB,CACrC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CACxB;QACL;aAEA;YACI,iBAAiB,GAAG,IAAI,iBAAiB,CACrC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,EACzC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAC3C;QACL;AAEA,QAAA,OAAO,iBAAiB;IAC5B;AAEA;;;;;;AAMG;AACH,IAAA,QAAQ,CAAC,CAAS,EAAE,CAAU,EAAE,KAAc,EAAA;QAE1C,IAAK,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAC/B;YACI,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC;QAChD;aAEA;AACI,YAAA,IAAK,CAAC,IAAI,IAAI,EACd;gBACI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC;YACjD;AAEA,YAAA,IAAK,CAAC,IAAI,IAAI,EACd;gBACI,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC;YAChD;QACJ;IACJ;AAEA;;;;;AAKG;IACH,SAAS,CAAC,CAAS,EAAE,KAAc,EAAA;QAE/B,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC;IACjD;AAEA;;;;;AAKG;IACH,SAAS,CAAC,CAAS,EAAE,KAAc,EAAA;QAE/B,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC;IAChD;AAEA;;;;;AAKG;AACH,IAAA,WAAW,CAAC,MAAA,GAAiB,CAAC,EAAE,KAAc,EAAA;QAE1C,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;IACrD;AAEA;;;;;AAKG;AACH,IAAA,cAAc,CAAC,MAAA,GAAiB,CAAC,EAAE,KAAc,EAAA;AAE7C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY;QACrG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,CAAC;IAC3D;AAEA;;;;;AAKG;AACH,IAAA,YAAY,CAAC,MAAA,GAAiB,CAAC,EAAE,KAAc,EAAA;QAE3C,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC;IACtD;AAEA;;;;;AAKG;AACH,IAAA,aAAa,CAAC,MAAA,GAAiB,CAAC,EAAE,KAAc,EAAA;AAE5C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;QACpG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,GAAG,MAAM,EAAE,KAAK,CAAC;IAC7D;AAEA;;;;;;;AAOG;IACH,eAAe,CAAC,EAAU,EAAE,MAAA,GAAiB,CAAC,EAAE,aAAA,GAAyB,KAAK,EAAE,KAAc,EAAA;AAE1F,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QAEhE,IAAK,CAAC,OAAO,EACb;YACI;QACJ;AAEA,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAE1E,QAAA,IAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EACtE;AACI,YAAA,IAAK,aAAa,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAChF;gBACI;YACJ;YAEA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC;YAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,UAAU;YAEhE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC;QACjE;AAEA,QAAA,IAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EACtE;AACI,YAAA,IAAK,aAAa,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClF;gBACI;YACJ;YAEA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;YAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,UAAU;YAE9D,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC;QAChE;IACJ;AAEA;;;;;;AAMG;AACH,IAAA,gBAAgB,CAAC,MAAc,EAAE,KAAa,EAAE,KAAc,EAAA;AAE1D,QAAA,IAAK,IAAI,CAAC,UAAU,EACpB;AACI,YAAA,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QAC1B;QAEA,IAAK,CAAC,KAAK,IAAI,OAAO,MAAM,KAAK,WAAW,EAC5C;YACI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK;QAClD;aACK,IAAK,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,EAC1D;YACI,IAAI,QAAQ,GAAG,CAAC;YAChB,IAAI,WAAW,GAAG,CAAC;AAEnB,YAAA,IAAI,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACpC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC;YAErD,MAAM,YAAY,GAAG,CAAC,QAAQ,GAAG,KAAK,IAAI,CAAC;AAE3C,YAAA,MAAM,IAAI,GAAG,CAAC,YAAoB,KAAU;AAExC,gBAAA,WAAW,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,YAAY,GAAG,YAAY,CAAC,CAAC;AAChE,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;;gBAGlF,IAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,QAAQ,EACxD;AACI,oBAAA,IAAK,WAAW,IAAI,IAAI,CAAC,EAAE,EAC3B;wBACI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC3C;yBAEA;wBACI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ;;wBAGjD,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC;wBACjD,YAAY,GAAG,YAAY;wBAE3B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;oBACxD;gBACJ;AACJ,YAAA,CAAC;AAED,YAAA,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;QACtC;IACJ;;;;AAMA;;;;AAIG;IACK,KAAK,GAAA;;AAGT,QAAA,IAAK,IAAI,CAAC,GAAG,EACb;YACI;QACJ;;AAGA,QAAA,IAAK,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAC9E;AACI,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YAC7B;QACJ;;AAGA,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAC,GAAG,IAAI,CAAC,QAAQ,EAAC,CAAC;IACvF;AAEA;;;;AAIG;IACK,QAAQ,GAAA;;AAGZ,QAAA,IAAK,CAAC,IAAI,CAAC,GAAG,EACd;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;;AAGlB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI;IACnB;+GAncS,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAI,oBAAoB;AAChC,oBAAA,QAAQ,EAAI,kBAAkB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;sBAOI;;sBACA;;;MCpBQ,wBAAwB,CAAA;AAKjC;;AAEG;AACH,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,kBAAkB,GAAqB,IAAI,GAAG,EAAe;AAC7D,QAAA,IAAA,CAAA,gBAAgB,GAAyC,IAAI,GAAG,EAAe;IAOvF;;;;AAMA;;;;;AAKG;IACH,iBAAiB,CAAC,IAAY,EAAE,SAAc,EAAA;QAE1C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;IAChD;AAEA;;;;AAIG;AACH,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAE5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC;AAEA;;;;AAIG;AACH,IAAA,YAAY,CAAI,IAAY,EAAA;QAExB,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5C;AAEA;;;;;AAKG;IACH,eAAe,CAAC,GAAW,EAAE,UAAmC,EAAA;;QAG5D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC;IAC9C;AAEA;;;;AAIG;AACH,IAAA,aAAa,CAAC,GAAW,EAAA;QAErB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;IAC/C;AAEA;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,GAAW,EAAA;;QAGxB,IAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EACpC;AACI,YAAA,OAAO,CAAC,IAAI,CAAC,4BAA4B,GAAG,CAAA,8BAAA,CAAgC,CAAC;QACjF;;AAGA,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;IACrC;AAEA;;;;;;AAMG;AACH,IAAA,iBAAiB,CAAC,UAAmC,EAAE,cAAA,GAA0C,EAAE,EAAA;AAE/F,QAAA,KAAM,MAAM,IAAI,IAAI,UAAU,EAC9B;AACI,YAAA,IAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAC1B;AACI,gBAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB;YACJ;AAEA,YAAA,IAAK,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAClF;AACI,gBAAA,IAAK,IAAI,CAAC,QAAQ,EAClB;oBACI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;gBACzD;YACJ;QACJ;AAEA,QAAA,OAAO,cAAc;IACzB;AAEA;;;;;;AAMG;IACH,OAAO,CAAC,EAAU,EAAE,UAAmC,EAAA;QAEnD,IAAK,CAAC,UAAU,EAAG;AAAE,YAAA,OAAO,IAAI;QAAE;AAElC,QAAA,KAAM,MAAM,IAAI,IAAI,UAAU,EAC9B;AACI,YAAA,IAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EACnB;AACI,gBAAA,OAAO,IAAI;YACf;AAEA,YAAA,IAAK,IAAI,CAAC,QAAQ,EAClB;AACI,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;gBAEjD,IAAK,SAAS,EACd;AACI,oBAAA,OAAO,SAAS;gBACpB;YACJ;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;AAEA;;;;;;;AAOG;AACH,IAAA,aAAa,CACT,EAAU,EACV,UAAmC,EACnC,MAAuD,EAAA;AAGvD,QAAA,KAAM,MAAM,IAAI,IAAI,UAAU,EAC9B;AACI,YAAA,IAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EACnB;AACI,gBAAA,OAAO,MAAM;YACjB;AAEA,YAAA,IAAK,IAAI,CAAC,QAAQ,EAClB;AACI,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;gBAE7D,IAAK,SAAS,EACd;AACI,oBAAA,OAAO,SAAS;gBACpB;YACJ;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;+GApLS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADZ,MAAM,EAAA,CAAA,CAAA;;4FAClB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCCnB,mBAAmB,CAAA;AAE5B;;AAEG;AACH,IAAA,WAAA,GAAA;IAEA;;;;AAMA;;AAEG;AACH,IAAA,IAAI,iBAAiB,GAAA;QAEjB,OAAO;AACH,YAAA,KAAK,EAAS,OAAO;AACrB,YAAA,QAAQ,EAAM,SAAS;AACvB,YAAA,YAAY,EAAE,SAAS;AACvB,YAAA,WAAW,EAAG,OAAO;SACxB;IACL;AAEA;;AAEG;AACH,IAAA,IAAI,kBAAkB,GAAA;QAElB,OAAO;AACH,YAAA,KAAK,EAAS,QAAQ;AACtB,YAAA,QAAQ,EAAM,SAAS;AACvB,YAAA,YAAY,EAAE,SAAS;AACvB,YAAA,WAAW,EAAG,QAAQ;SACzB;IACL;;;;AAMA;;;;AAIG;IACH,QAAQ,CAAC,SAAiB,EAAE,EAAA;QAExB,MAAM,KAAK,GAAG,gEAAgE;QAC9E,IAAI,IAAI,GAAG,EAAE;AAEb,QAAA,KAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAC5B;AACI,YAAA,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE;AAEA,QAAA,OAAO,IAAI;IACf;+GA3DS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADP,MAAM,EAAA,CAAA,CAAA;;4FAClB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCyBnB,2CAA2C,CAAA;AAQtD;;AAEG;AACH,IAAA,WAAA,CACU,kBAAqC,EACrC,yBAAmD,EACnD,oBAAyC,EAAA;QAFzC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QACzB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;AARtB,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;QAUxD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB;IAC1E;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,oBAAoB;YACvB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC;AAC1C,kBAAE,IAAI,CAAC,oBAAoB,CAAC;AAC5B,kBAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB;;AAGlD,QAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;AAGtC,QAAA,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC,IAAI,CACvD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAChC,CAAC,SAAS,CAAC,MAAK;;AAEf,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;+GAtDW,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,0IC5BxD,6hLAuIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrHI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,6MAChB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,mLACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGN,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAhBvD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,mBAEjC,uBAAuB,CAAC,MAAM,EAAA,UAAA,EAC9B,IAAI,EAAA,OAAA,EACJ;wBACf,OAAO;wBACP,IAAI;wBACJ,UAAU;wBACV,gBAAgB;wBAChB,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,6hLAAA,EAAA;;sBAGA;;sBACA;;;MEhBU,6CAA6C,CAAA;AAOtD;;AAEG;IACH,WAAA,CACY,kBAAqC,EACrC,yBAAmD,EAAA;QADnD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;AAP7B,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAS1D;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;;AAEJ,QAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC,IAAI,CACrD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAClC,CAAC,SAAS,CAAC,MAAK;;AAEb,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACH,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;+GA3CS,6CAA6C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7C,6CAA6C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd1D,0IAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQsB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEhB,6CAA6C,EAAA,UAAA,EAAA,CAAA;kBAPzD,SAAS;+BACI,0CAA0C,EAAA,eAAA,EAEnC,uBAAuB,CAAC,MAAM,cAC9B,IAAI,EAAA,OAAA,EACJ,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,0IAAA,EAAA;;sBAGzB;;sBACA;;;MEmBQ,iDAAiD,CAAA;AAe1D;;AAEG;AACH,IAAA,WAAA,CACY,kBAAqC,EACrC,OAAe,EACf,yBAAmD,EAAA;QAFnD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QAXrC,IAAA,CAAA,WAAW,GAAY,IAAI;QAC3B,IAAA,CAAA,UAAU,GAAY,KAAK;AAEnB,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAW1D;;;;AAMA;;AAEG;AACH,IAAA,IAA0B,SAAS,GAAA;;QAG/B,OAAO;YACH,4CAA4C,EAAE,IAAI,CAAC,WAAW;YAC9D,2CAA2C,EAAG,IAAI,CAAC,UAAU;SAChE;;IAEL;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;;AAGJ,QAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EACtD;YACI,IAAI,CAAC,MAAM,EAAE;QACjB;;aAGA;;AAEI,YAAA,IAAK,IAAI,CAAC,YAAY,EACtB;gBACI,IAAI,CAAC,QAAQ,EAAE;YACnB;QACJ;;QAGA,IAAI,CAAC,mCAAmC,CAAC;AACpC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,aAAA,SAAS,CAAC,CAAC,aAAa,KAAI;;AAGzB,YAAA,IAAK,aAAa,KAAK,IAAI,EAC3B;gBACI;YACJ;;YAGA,IAAK,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,EACjD;gBACI,IAAI,CAAC,QAAQ,EAAE;YACnB;AACJ,QAAA,CAAC,CAAC;;AAGN,QAAA,IAAK,IAAI,CAAC,YAAY,EACtB;YACI,IAAI,CAAC,mCAAmC,CAAC;AACpC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,iBAAA,SAAS,CAAC,CAAC,YAAY,KAAI;;AAGxB,gBAAA,IAAK,YAAY,KAAK,IAAI,EAC1B;oBACI;gBACJ;;gBAGA,IAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAChD;oBACI;gBACJ;;AAGA,gBAAA,IAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EACtD;oBACI;gBACJ;;AAGA,gBAAA,IAAK,IAAI,CAAC,IAAI,KAAK,YAAY,EAC/B;oBACI;gBACJ;;gBAGA,IAAI,CAAC,QAAQ,EAAE;AACnB,YAAA,CAAC,CAAC;QACV;;QAGA,IAAI,CAAC,OAAO,CAAC;AACR,aAAA,IAAI,CACD,MAAM,CAAC,CAAC,KAAK,KAA6B,KAAK,YAAY,aAAa,CAAC,EACzE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AAElC,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;;AAGhC,YAAA,IAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAC7D;gBACI,IAAI,CAAC,MAAM,EAAE;YACjB;;iBAGA;;AAEI,gBAAA,IAAK,IAAI,CAAC,YAAY,EACtB;oBACI,IAAI,CAAC,QAAQ,EAAE;gBACnB;YACJ;AACJ,QAAA,CAAC,CAAC;;AAGN,QAAA,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC,IAAI,CACrD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAClC,CAAC,SAAS,CAAC,MAAK;;AAGb,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACH,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;;AAGJ,QAAA,IAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EACvB;YACI;QACJ;;AAGA,QAAA,IAAK,IAAI,CAAC,WAAW,EACrB;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW;;AAGnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;QAGtC,IAAI,CAAC,mCAAmC,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACvF;AAEA;;AAEG;IACH,MAAM,GAAA;;AAGF,QAAA,IAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EACvB;YACI;QACJ;;AAGA,QAAA,IAAK,CAAC,IAAI,CAAC,WAAW,EACtB;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW;;AAGnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;QAGtC,IAAI,CAAC,mCAAmC,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACtF;AAEA;;AAEG;IACH,iBAAiB,GAAA;;AAGb,QAAA,IAAK,IAAI,CAAC,WAAW,EACrB;YACI,IAAI,CAAC,MAAM,EAAE;QACjB;aAEA;YACI,IAAI,CAAC,QAAQ,EAAE;QACnB;IACJ;AAEA;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IAC3B;;;;AAMA;;;;;;;AAOG;IACK,eAAe,CAAC,IAA2B,EAAE,UAAkB,EAAA;AAEnE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAE9B,IAAK,CAAC,QAAQ,EACd;AACI,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,KAAM,MAAM,KAAK,IAAI,QAAQ,EAC7B;AACI,YAAA,IAAK,KAAK,CAAC,QAAQ,EACnB;gBACI,IAAK,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,EAC5C;AACI,oBAAA,OAAO,IAAI;gBACf;YACJ;;YAGA,IAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAC/E;AACI,gBAAA,OAAO,IAAI;YACf;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;AAEA;;;;;;;AAOG;IACK,aAAa,CAAC,MAA6B,EAAE,IAA2B,EAAA;AAE5E,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAEhC,IAAK,CAAC,QAAQ,EACd;AACI,YAAA,OAAO,KAAK;QAChB;QAEA,IAAK,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAChC;AACI,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,KAAM,MAAM,KAAK,IAAI,QAAQ,EAC7B;AACI,YAAA,IAAK,KAAK,CAAC,QAAQ,EACnB;gBACI,IAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,EACpC;AACI,oBAAA,OAAO,IAAI;gBACf;YACJ;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;+GA1US,iDAAiD,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjD,iDAAiD,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnC9D,44HA0GA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MDvEa,iDAAiD,wJAb1D,OAAO,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACP,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAChB,IAAI,iHACJ,aAAa,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACb,KAAK,CAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACL,2CAA2C,kIAE3C,6CAA6C,CAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC7C,eAAe,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAD,IAAA,CAAA,aAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAZL,iBAAiB,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAiBlB,iDAAiD,EAAA,UAAA,EAAA,CAAA;kBApB7D,SAAS;+BACE,8CAA8C,EAAA,UAAA,EAE5C,iBAAiB,EAAA,eAAA,EACZ,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP;wBACP,OAAO;wBACP,gBAAgB;wBAChB,IAAI;wBACJ,aAAa;wBACb,KAAK;wBACL,2CAA2C;AAC3C,wBAAA,UAAU,CAAC,MAAK,iDAAkD,CAAC;wBACnE,6CAA6C;wBAC7C;;;AAGD,qBAAA,EAAA,QAAA,EAAA,44HAAA,EAAA;;sBAQE;;sBACA;;sBACA;;sBAyBA,WAAW;uBAAC,OAAO;;;MEtDX,4CAA4C,CAAA;AAOrD;;AAEG;IACH,WAAA,CACY,kBAAqC,EACrC,yBAAmD,EAAA;QADnD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;AAP7B,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAS1D;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;;AAEJ,QAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC,IAAI,CACrD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAClC,CAAC,SAAS,CAAC,MAAK;;AAEb,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACH,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;+GA3CS,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5C,4CAA4C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdzD,iIAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQsB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEhB,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAPxD,SAAS;+BACI,yCAAyC,EAAA,eAAA,EAElC,uBAAuB,CAAC,MAAM,cAC9B,IAAI,EAAA,OAAA,EACJ,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,iIAAA,EAAA;;sBAGzB;;sBACA;;;MEgBQ,2CAA2C,CAAA;AAapD;;AAEG;IACH,WAAA,CACY,kBAAqC,EACrC,yBAAmD,EAAA;QADnD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;AAP7B,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAU1D;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;;AAGJ,QAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC,IAAI,CACrD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAClC,CAAC,SAAS,CAAC,MAAK;;AAGb,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACH,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;;;;AAMA;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IAC3B;+GApES,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3C,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCxD,mxGA2FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MD3Da,2CAA2C,kJAZhD,OAAO,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACP,IAAI,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACJ,aAAa,8NACb,KAAK,CAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACL,2CAA2C,CAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC3C,iDAAiD,wJACjD,6CAA6C,CAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAE7C,4CAA4C,CAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC5C,eAAe,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAI,IAAA,CAAA,aAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGV,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAlBvD,SAAS;AACW,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,mBAExC,uBAAuB,CAAC,MAAM,EAAA,UAAA,EAC9B,IAAI,EAAA,OAAA,EACJ;wBACb,OAAO;wBACP,IAAI;wBACJ,aAAa;wBACb,KAAK;wBACL,2CAA2C;wBAC3C,iDAAiD;wBACjD,6CAA6C;AAC7C,wBAAA,UAAU,CAAC,MAAK,2CAA4C,CAAC;wBAC7D,4CAA4C;wBAC5C;AACH,qBAAA,EAAA,QAAA,EAAA,mxGAAA,EAAA;;sBAQA;;sBACA;;sBACA;;;MEJQ,2CAA2C,CAAA;AAgBtD;;AAEG;AACH,IAAA,WAAA,CACU,kBAAqC,EACrC,OAAe,EACf,yBAAmD,EAAA;QAFnD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QAVnC,IAAA,CAAA,MAAM,GAAY,KAAK;AAEf,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAU1D;;;;AAMA;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,IAAI,cAAc,IAAI,OAAO,EAAE;;YAE7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACtC;IACF;AAEA;;AAEG;IACH,QAAQ,GAAA;;QAEN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;;QAGpC,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAA6B,KAAK,YAAY,aAAa,CAAC,EACzE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AAEhC,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;;AAElC,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC;AAC7C,QAAA,CAAC,CAAC;;AAGJ,QAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC,IAAI,CACvD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAChC,CAAC,SAAS,CAAC,MAAK;;AAEf,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;;;;AAMA;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IACzB;;;;AAMA;;;;;;;AAOG;IACK,eAAe,CAAC,IAA2B,EAAE,UAAkB,EAAA;AACrE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAE9B,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;AAC3C,oBAAA,OAAO,IAAI;gBACb;YACF;;AAGA,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC1B;YACF;;YAGA,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE;AAC9E,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEA;;;;AAIG;AACK,IAAA,aAAa,CAAC,UAAkB,EAAA;;AAEtC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;;;QAIhD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QACpB;;AAGA,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IACxC;+GAzJW,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3C,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCxD,88HAuGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhFI,OAAO,mFACP,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,2CAA2C,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3C,iDAAiD,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjD,6CAA6C,+GAC7C,2CAA2C,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3C,4CAA4C,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC5C,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGN,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAnBvD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,mBAEjC,uBAAuB,CAAC,MAAM,EAAA,UAAA,EAC9B,IAAI,EAAA,OAAA,EACJ;wBACf,OAAO;wBACP,gBAAgB;wBAChB,IAAI;wBACJ,aAAa;wBACb,KAAK;wBACL,2CAA2C;wBAC3C,iDAAiD;wBACjD,6CAA6C;wBAC7C,2CAA2C;wBAC3C,4CAA4C;wBAC5C;AACD,qBAAA,EAAA,QAAA,EAAA,88HAAA,EAAA;;sBAQA;;sBACA;;sBACA;;sBACA;;sBACA;;;MENU,kCAAkC,CAAA;AAuC7C;;AAEG;AACH,IAAA,WAAA,CACU,iBAAmC,EACnC,kBAAqC,EACnB,SAAmB,EACrC,WAAuB,EACvB,UAAqB,EACrB,OAAe,EACf,sBAA6C,EAC7C,yBAAmD,EACnD,oBAAyC,EAAA;QARzC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QACA,IAAA,CAAA,SAAS,GAAT,SAAS;QAC3B,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QACzB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;;QA5CrB,IAAA,CAAA,UAAU,GAAwC,SAAS;QAC3D,IAAA,CAAA,YAAY,GAAY,IAAI;QAC5B,IAAA,CAAA,KAAK,GAAY,KAAK;QACtB,IAAA,CAAA,IAAI,GAAkC,MAAM;QAC5C,IAAA,CAAA,IAAI,GAAW,EAAE;QACjB,IAAA,CAAA,UAAU,GAA4B,EAAE;QACxC,IAAA,CAAA,MAAM,GAAY,IAAI;QACtB,IAAA,CAAA,QAAQ,GAAsC,MAAM;QACpD,IAAA,CAAA,kBAAkB,GAAY,KAAK;AACzB,QAAA,IAAA,CAAA,iBAAiB,GAAsD,IAAI,YAAY,EAAuC;AAC9H,QAAA,IAAA,CAAA,WAAW,GAAgD,IAAI,YAAY,EAAiC;AAC5G,QAAA,IAAA,CAAA,aAAa,GAA0B,IAAI,YAAY,EAAW;AAClE,QAAA,IAAA,CAAA,eAAe,GAAoD,IAAI,YAAY,EAAqC;QAG3I,IAAA,CAAA,iBAAiB,GAAkB,IAAI;AACvC,QAAA,IAAA,CAAA,0BAA0B,GAAyC,IAAI,aAAa,CAAwB,CAAC,CAAC;AAC9G,QAAA,IAAA,CAAA,yBAAyB,GAAyC,IAAI,aAAa,CAAwB,CAAC,CAAC;AAC7G,QAAA,IAAA,CAAA,WAAW,GAA2B,IAAI,aAAa,CAAU,CAAC,CAAC;QAC3D,IAAA,CAAA,kBAAkB,GAAY,KAAK;QACnC,IAAA,CAAA,aAAa,GAAwB,IAAI;QAGzC,IAAA,CAAA,QAAQ,GAAY,KAAK;QAEzB,IAAA,CAAA,QAAQ,GAAwB,IAAI;AAKpC,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;QAgBxD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;AAC1D,QAAA,IAAI,CAAC,wBAAwB,GAAG,MAAW;YACzC,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAW;YACpC,IAAI,CAAC,KAAK,EAAE;AACd,QAAA,CAAC;IACH;;;;AAMA;;AAEG;AACH,IAAA,IAA0B,SAAS,GAAA;;QAEjC,OAAO;YACL,gDAAgD,EAAE,IAAI,CAAC,kBAAkB;AACzE,YAAA,CAAC,0CAA0C,IAAI,CAAC,UAAU,CAAA,CAAE,GAAG,IAAI;YACnE,mCAAmC,EAAE,IAAI,CAAC,QAAQ;YAClD,mCAAmC,EAAE,IAAI,CAAC,KAAK;AAC/C,YAAA,uCAAuC,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;AAC7D,YAAA,uCAAuC,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;YAC7D,oCAAoC,EAAE,IAAI,CAAC,MAAM;AACjD,YAAA,2CAA2C,EAAE,IAAI,CAAC,QAAQ,KAAK,MAAM;AACrE,YAAA,4CAA4C,EAAE,IAAI,CAAC,QAAQ,KAAK,OAAO;SACxE;;IAEH;AAEA;;AAEG;AACH,IAAA,IAA0B,SAAS,GAAA;QACjC,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ;SACjD;IACH;AAEA;;AAEG;IACH,IACI,0BAA0B,CAAC,0BAAgE,EAAA;;AAE7F,QAAA,IAAI,CAAC,2BAA2B,GAAG,0BAA0B;;AAG7D,QAAA,IAAI,0BAA0B,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3C;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,uCAAuC,EAAE;AAChD,YAAA,IAAI,CAAC,uCAAuC,CAAC,WAAW,EAAE;QAC5D;;AAGA,QAAA,IAAI,CAAC,uCAAuC;YAC1CG,OAAK,CACH,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,yBAAyB;AAE7B,iBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,KAAK,CAAC,GAAG,CAAC;iBAEX,SAAS,CAAC,MAAK;;AAEd,gBAAA,0BAA0B,CAAC,OAAO,CAAC,CAAC,yBAAyB,KAAI;oBAC/D,yBAAyB,CAAC,MAAM,EAAE;AACpC,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;IACR;;;;AAMA;;;;AAIG;IAEI,YAAY,GAAA;;QAEjB,IAAI,CAAC,iBAAiB,EAAE;;AAGxB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;AAEA;;;;AAIG;IAEI,YAAY,GAAA;;QAEjB,IAAI,CAAC,iBAAiB,EAAE;;AAGxB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;;;;AAMA;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,IAAI,YAAY,IAAI,OAAO,EAAE;;YAE3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;QAC9D;;AAGA,QAAA,IAAI,OAAO,IAAI,OAAO,EAAE;;YAEtB,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;QAChE;;AAGA,QAAA,IAAI,MAAM,IAAI,OAAO,EAAE;;AAErB,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY;AAC7C,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa;;YAG/C,IAAI,CAAC,kBAAkB,EAAE;;YAGzB,IAAI,YAAY,KAAK,MAAM,IAAI,WAAW,KAAK,MAAM,EAAE;;gBAErD,IAAI,CAAC,YAAY,EAAE;YACrB;;YAGA,IAAI,YAAY,KAAK,MAAM,IAAI,WAAW,KAAK,MAAM,EAAE;;gBAErD,IAAI,CAAC,UAAU,EAAE;;AAGjB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;;oBAEf,IAAI,CAAC,YAAY,EAAE;gBACrB;YACF;;AAGA,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;;;;YAKlC,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,iBAAiB,EAAE;YAC1B,CAAC,EAAE,GAAG,CAAC;QACT;;AAGA,QAAA,IAAI,YAAY,IAAI,OAAO,EAAE;;AAE3B,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QACxC;;AAGA,QAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;;YAEvB,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;;AAGhE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC;;AAGA,QAAA,IAAI,UAAU,IAAI,OAAO,EAAE;;YAEzB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1D;;AAGA,QAAA,IAAI,oBAAoB,IAAI,OAAO,EAAE;;YAEnC,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC;QAC1F;IACF;AAEA;;AAEG;IACH,QAAQ,GAAA;;AAEN,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;QAClD;;QAGA,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;;QAGjE,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;aAEhC,SAAS,CAAC,MAAK;;YAEd,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;;gBAEvC,IAAI,CAAC,KAAK,EAAE;YACd;;YAGA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;;gBAElD,IAAI,CAAC,UAAU,EAAE;YACnB;AACF,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACH,eAAe,GAAA;;;;;;;QAOb,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAI;AAC1D,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,gBAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAqB;AACrD,gBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE;oBACtC,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;AAC/D,wBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;wBAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAA,CAAI,CAAC;oBAC9F;yBACK;AACH,wBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC;oBAC9E;gBACF;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAC7D,YAAA,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,OAAO,CAAC;AAC3B,SAAA,CAAC;QAEF,UAAU,CAAC,MAAK;;AAEd,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B;YACF;;;AAIA,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;;AAErE,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,aAAa,CAAC,0CAA0C,CAAC;;gBAGpH,IAAI,UAAU,EAAE;oBACd,UAAU,CAAC,cAAc,EAAE;gBAC7B;YACF;;iBAEK;;gBAEH,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,yBAAyB,KAAI;;AAErE,oBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,EAAE;wBAC1C;oBACF;;oBAGA,yBAAyB,CAAC,eAAe,CAAC,0CAA0C,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;AACnG,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;;QAGnC,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,UAAU,EAAE;;QAGjB,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG7D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;;;;AAMA;;AAEG;IACH,OAAO,GAAA;;AAEL,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;AAGtC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAEA;;AAEG;IACH,IAAI,GAAA;;AAEF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf;QACF;;AAGA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B;AAEA;;AAEG;IACH,KAAK,GAAA;;AAEH,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;;QAGA,IAAI,CAAC,UAAU,EAAE;;AAGjB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAC3B;AAEA;;AAEG;IACH,MAAM,GAAA;;AAEJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,KAAK,EAAE;QACd;aACK;YACH,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEA;;;;AAIG;AACH,IAAA,SAAS,CAAC,IAA2B,EAAA;;QAEnC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YAC7B;QACF;;AAGA,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE;;QAGhC,IAAI,CAAC,iBAAiB,EAAE;;AAGxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IACxC;AAEA;;AAEG;IACH,UAAU,GAAA;;AAER,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;QAG7B,IAAI,CAAC,iBAAiB,EAAE;;AAGxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IACxC;AAEA;;;;AAIG;AACH,IAAA,WAAW,CAAC,IAA2B,EAAA;;QAErC,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC,UAAU,EAAE;QACnB;aACK;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACtB;IACF;AAEA;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IACzB;;;;AAMA;;;;AAIG;IACK,iBAAiB,GAAA;;AAEvB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B;QACF;;AAGA,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;IAChC;AAEA;;;;AAIG;IACK,kBAAkB,GAAA;;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B;QACF;;AAGA,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;IACjC;AAEA;;;;AAIG;IACK,YAAY,GAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB;QACF;;QAGA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;;QAGpD,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,qCAAqC,CAAC;;AAGnE,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,iDAAiD,CAAC;QACjF;;AAGA,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGxF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;;QAG7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC1C,OAAO,CAAC,wCAAwC,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE,SAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;QAGnB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;IACpE;AAEA;;;;AAIG;IACK,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;;QAGA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC1C,OAAO,CAAC,wCAAwC,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE,SAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;AAGnB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAK;;AAEvB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;gBAEjB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;;gBAGpE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrD,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACtB;;AAGA,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;AAChC,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;IACK,iBAAiB,GAAA;;AAEvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB;QACF;;QAGA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;;QAGzD,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,2CAA2C,CAAC;;AAG9E,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;;AAG7F,QAAA,IAAI,CAAC,OAAO;AACV,YAAA,IAAI,CAAC;AACF,iBAAA,KAAK,CAAC;gBACL,OAAO,CAAC,wCAAwC,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE,aAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGjC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;QAGnB,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC;IAC9E;AAEA;;;;AAIG;IACK,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB;QACF;;AAGA,QAAA,IAAI,CAAC,OAAO;AACV,YAAA,IAAI,CAAC;AACF,iBAAA,KAAK,CAAC;gBACL,OAAO,CAAC,wCAAwC,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE,aAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGjC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;AAGnB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAK;;AAEvB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;;gBAEtB,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC;;gBAG9E,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;AAC/D,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;YAC3B;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;AAKG;AACK,IAAA,aAAa,CAAC,IAAa,EAAA;;AAEjC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;QAGlB,IAAI,CAAC,iBAAiB,EAAE;;;AAIxB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,YAAY,EAAE;YACrB;iBACK;gBACH,IAAI,CAAC,YAAY,EAAE;YACrB;QACF;;AAGA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;AA7qBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,qFA6CnC,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGA7CP,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,SAAA,EAkG/B,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1IzC,itJA0HA,0DD7FM,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,2CAA2C,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3C,2CAA2C,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3C,iDAAiD,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjD,6CAA6C,+GAC7C,2CAA2C,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3C,4CAA4C,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAdpC,iBAAiB,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAiBlB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBArB9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,UAAA,EAG3B,iBAAiB,EAAA,aAAA,EACd,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,2BAA2B,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACF;wBACf,yBAAyB;wBACzB,KAAK;wBACL,IAAI;wBACJ,2CAA2C;wBAC3C,2CAA2C;wBAC3C,iDAAiD;wBACjD,6CAA6C;wBAC7C,2CAA2C;wBAC3C;AACD,qBAAA,EAAA,QAAA,EAAA,itJAAA,EAAA;;0BA+CA,MAAM;2BAAC,QAAQ;;sBAtCjB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,mBAAmB;;sBAkD7B,WAAW;uBAAC,OAAO;;sBAmBnB,WAAW;uBAAC,OAAO;;sBASnB,YAAY;uBAAC,yBAAyB;;sBA0CtC,YAAY;uBAAC,YAAY;;sBAczB,YAAY;uBAAC,YAAY;;;ME7Lf,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,KAAK,GAA2B,IAAI,aAAa,EAAW;AASvE,IAAA;AAPG,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;IACpC;IAEA,IAAI,KAAK,CAAC,KAAc,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;+GATS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADE,MAAM,EAAA,CAAA,CAAA;;4FACnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MC0BrB,qBAAqB,CAAA;AAQ9B,IAAA,WAAA,CACY,kBAAqC,EACrC,YAAyB,EACzB,QAAiB,EACjB,iBAAmC,EAAA;QAHnC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;AANrB,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAQ1D;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,CAAC;AACb,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,aAAA,SAAS,CAAC,CAAC,IAAa,KAAI;AACzB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACV;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC9B;IACJ;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACvC;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;QACzB;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxF;IAEA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IAC7B;IAEA,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IAC3B;IAEQ,cAAc,GAAA;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,4BAA4B;YAC3C,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACtD,YAAA,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;iBACnC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa;iBAC9D,kBAAkB,CAAC,IAAI;iBACvB,QAAQ,CAAC,IAAI;AACb,iBAAA,aAAa,CAAC;AACX,gBAAA;AACI,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA;aACJ,CAAC;AACT,SAAA,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAK;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,QAAA,CAAC,CAAC;IACN;+GA5FS,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BlC,4hIA6EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxDQ,eAAe,uNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,gBAAgB,mJAChB,oBAAoB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAjBjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,aAAA,EAET,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP;wBACL,eAAe;wBACf,aAAa;wBACb,IAAI;wBACJ,gBAAgB;wBAChB,KAAK;wBACL,gBAAgB;wBAChB;AACH,qBAAA,EAAA,QAAA,EAAA,4hIAAA,EAAA;;sBAGA,SAAS;uBAAC,YAAY;;sBACtB,SAAS;uBAAC,WAAW;;;MEbb,kBAAkB,CAAA;AAK7B,IAAA,WAAA,CACmB,wBAAkD,EAClD,gBAAkC,EAClC,WAAwB,EAAA;QAFxB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;IAC1B;IAEJ,QAAQ,GAAA;QACN,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE;QAChE,IAAI,CAAC,cAAc,GAAI,cAA8C,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACjF,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;AAC3F,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;AAC1D,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACnC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG;AACf,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,IAAI;SACd;IACH;IAEA,MAAM,aAAa,CAAC,IAAY,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,QAAQ,EAAE;SACX;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC;AAElE,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC;AACzC,QAAA,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;IAC5C;IAEA,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IACzB;AAEQ,IAAA,gBAAgB,CAAC,IAAY,EAAA;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAqC,gBAAgB,CAAC;QAErH,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU;AAE1C,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC;QACpG,IAAI,oBAAoB,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,iBAAA,SAAS,CAAC,CAAC,WAAW,KAAI;AACzB,gBAAA,oBAAoB,CAAC,KAAK,GAAG,WAAW;gBACxC,YAAY,CAAC,OAAO,EAAE;AACxB,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,sBAAsB,EAAE,UAAU,CAAC;QACxG,IAAI,sBAAsB,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,iBAAA,SAAS,CAAC,CAAC,WAAW,KAAI;AACzB,gBAAA,sBAAsB,CAAC,KAAK,GAAG,WAAW;gBAC1C,YAAY,CAAC,OAAO,EAAE;AACxB,YAAA,CAAC,CAAC;QACN;IACF;AAEQ,IAAA,gBAAgB,CAAC,IAAY,EAAA;AACnC,QAAA,MAAM,WAAW,GAA2B;AAC1C,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,OAAO,EAAE,QAAQ;SAClB;AAED,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI;IAClC;+GAlFW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB/B,+oCAiCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBY,eAAe,uNAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAEtD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;+BACE,WAAW,EAAA,aAAA,EAEN,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,WAAW,cACT,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAA,QAAA,EAAA,+oCAAA,EAAA;;;ME0CvD,sBAAsB,CAAA;IAY/B,WAAA,CACY,iBAAoC,EACpC,iBAAoC,EACpC,OAAgB,EAChB,gBAAkC,EACX,SAAqB,EAAA;QAJ5C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACO,IAAA,CAAA,SAAS,GAAT,SAAS;QAZ5C,IAAA,CAAA,aAAa,GAAmB,EAAE;QAClC,IAAA,CAAA,WAAW,GAAW,CAAC;AACvB,QAAA,IAAA,CAAA,gBAAgB,GAAG,oBAAoB,CAAC,WAAW;AAG3C,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;IAQtD;IAEH,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACjC,IAAI,CAAC,iBAAiB,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,GAAiB,KAAI;gBAC7B,IAAI,GAAG,EAAE;AACL,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,oBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;gBACzC;AACJ,YAAA,CAAC,CAAC;YACN,IAAI,CAAC,iBAAiB,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,QAA2C,KAAI;AACvD,gBAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI;AAClC,gBAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU;AACtC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzC,YAAA,CAAC,CAAC;YAEN,IAAI,CAAC,iBAAiB,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,YAA0B,KAAI;gBACtC,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,CACjC;gBACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzC,YAAA,CAAC,CAAC;YAEN,IAAI,CAAC,iBAAiB,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,YAA0B,KAAI;gBACtC,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,CACjC;gBACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzC,YAAA,CAAC,CAAC;YAEN,IAAI,CAAC,iBAAiB,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAwB,KAAI;AACpC,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AACpC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzC,YAAA,CAAC,CAAC;QACV;IACJ;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAE9B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;QAC7B;IACJ;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACvD;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;QACxB;AACA,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,CACnB,IAAI,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CACrE;IACL;IAEA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;IAC7B;IAEA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,IAAI;IACpD;AAEA,IAAA,UAAU,CAAC,YAA0B,EAAA;AACjC,QAAA,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI;AACtC,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,YAAY;IACzD;AAEA,IAAA,YAAY,CAAC,YAA0B,EAAA;AACnC,QAAA,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI;AACtC,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,YAAY;IAChD;IAEA,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IAC3B;AAEA,IAAA,WAAW,CAAC,YAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,YAAY;IAC3D;AAEA,IAAA,MAAM,CAAC,YAA0B,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,YAAY;IAC3D;IAEQ,aAAa,GAAA;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAClC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,4BAA4B;YAC3C,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,gBAAgB,EAAE,IAAI,CAAC;AAClB,iBAAA,QAAQ;iBACR,mBAAmB,CAChB,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,aAAc;iBAExD,kBAAkB,CAAC,IAAI;iBACvB,QAAQ,CAAC,IAAI;AACb,iBAAA,aAAa,CAAC;AACX,gBAAA;AACI,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA;aACJ,CAAC;AACT,SAAA,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAK;AAC3C,YAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AAC7B,QAAA,CAAC,CAAC;IACN;AApKS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,+IAiBnB,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAjBjB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DnC,85PA+Ic,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/FN,eAAe,+iBACf,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,6TAChB,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gBAAgB,oJAChB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACV,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAVA,iBAAiB,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAapB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApBlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,aAAA,EAEV,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,UAAA,EACJ,iBAAiB,EAAA,OAAA,EACpB;wBACL,eAAe;wBACf,IAAI;wBACJ,aAAa;wBACb,gBAAgB;wBAChB,KAAK;wBACL,OAAO;wBACP,gBAAgB;wBAChB,UAAU;wBACV,QAAQ;AACX,qBAAA,EAAA,QAAA,EAAA,85PAAA,EAAA;;0BAmBI,MAAM;2BAAC,cAAc;;sBAhBzB,SAAS;uBAAC,qBAAqB;;sBAC/B,SAAS;uBAAC,oBAAoB;;;MEvDtB,gBAAgB,CAAA;AAEzB,IAAA,WAAA,CAAoB,WAAuB,EAAA;QAAvB,IAAA,CAAA,WAAW,GAAX,WAAW;AADvB,QAAA,IAAA,CAAA,UAAU,GAA8B,IAAI,aAAa,CAAa,CAAC,CAAC;IAEhF;AAEA,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IACzC;IAEA,MAAM,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAa,sBAAsB,CAAC,CAAC,IAAI,CAChE,GAAG,CAAC,CAAC,SAAS,KAAI;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QACnC,CAAC,CAAC,CACL;IACL;AAEA,IAAA,MAAM,CAAC,QAAkB,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAW,sBAAsB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC7F,GAAG,CAAC,CAAC,WAAW,KAAI;AAChB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC;AACjD,YAAA,OAAO,WAAW;AACtB,QAAA,CAAC,CAAC,CACL,CAAC,CACL;IACL;IAEA,MAAM,CAAC,EAAU,EAAE,QAAkB,EAAA;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,sBAAsB,EAAE;YAC5E,EAAE;YACF,QAAQ;SACX,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,eAAyB,KAAI;AAC9B,YAAA,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AACzD,YAAA,SAAS,CAAC,KAAK,CAAC,GAAG,eAAe;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,YAAA,OAAO,eAAe;AAC1B,QAAA,CAAC,CAAC,CACL,CAAC,CACL;IACL;AAEA,IAAA,MAAM,CAAC,EAAU,EAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAU,sBAAsB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CACpG,GAAG,CAAC,CAAC,SAAkB,KAAI;AACvB,YAAA,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AACzD,YAAA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,YAAA,OAAO,SAAS;AACpB,QAAA,CAAC,CAAC,CACL,CAAC,CACL;IACL;+GA1DS,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA;;4FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCoBrB,kBAAkB,CAAA;IAU3B,WAAA,CACY,kBAAqC,EACrC,YAAgC,EAChC,iBAAmC,EACnC,QAAiB,EACjB,iBAAmC,EAAA;QAJnC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAX7B,IAAA,CAAA,IAAI,GAAuC,MAAM;AAIzC,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAS1D;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACxC,EAAE,EAAE,CAAC,IAAI,CAAC;AACV,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAChC,WAAW,EAAE,CAAC,EAAE,CAAC;AACjB,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC/B,YAAA,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvC,SAAA,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC;AAClB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,aAAA,SAAS,CAAC,CAAC,SAAqB,KAAI;AACjC,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACV;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC9B;IACJ;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACjD;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;QACzB;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC7F;IAEA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IAC7B;AAEA,IAAA,UAAU,CAAC,IAAwC,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;IACrB;AAEA,IAAA,YAAY,CAAC,QAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;IACtB;IAEA,IAAI,GAAA;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AACxC,QAAA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACb,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,SAAS,EAAE;QACpE;aACK;YACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE;QACvD;AAEA,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;IACxB;IAEA,MAAM,GAAA;AACF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE;AACtD,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;IACxB;IAEA,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IAC3B;IAEQ,cAAc,GAAA;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,4BAA4B;YAC3C,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACtD,YAAA,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;iBACnC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa;iBACnE,kBAAkB,CAAC,IAAI;iBACvB,QAAQ,CAAC,IAAI;AACb,iBAAA,aAAa,CAAC;AACX,gBAAA;AACI,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA;aACJ,CAAC;AACT,SAAA,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAK;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,QAAA,CAAC,CAAC;IACN;+GAzIS,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB/B,4gWA+NA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxMc,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAEjM,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,iBAEN,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,WAAW,cACT,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,4gWAAA,EAAA;;sBAG1M,SAAS;uBAAC,iBAAiB;;sBAC3B,SAAS;uBAAC,gBAAgB;;;MEAlB,aAAa,CAAA;AAUtB,IAAA,WAAA,CACY,kBAAqC,EACd,SAAqB,EAC5C,YAAyB,EAAA;QAFzB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QACK,IAAA,CAAA,SAAS,GAAT,SAAS;QAChC,IAAA,CAAA,YAAY,GAAZ,YAAY;;QARf,IAAA,CAAA,UAAU,GAAY,IAAI;QACnC,IAAA,CAAA,IAAI,GAAyB,EAAE;AAEvB,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAO1D;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAe,KAAI;AACpD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ;QACJ;IACJ;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;IAC9B;AArCS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,mDAYV,cAAc,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAZjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B1B,qkGAuFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpEI,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,OAAO,mFACP,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAhBzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,MAAM,EAAA,aAAA,EAED,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,MAAM,EAAA,UAAA,EACJ,IAAI,EAAA,OAAA,EACP;wBACT,eAAe;wBACf,aAAa;wBACb,IAAI;wBACJ,aAAa;wBACb,OAAO;wBACP;AACH,qBAAA,EAAA,QAAA,EAAA,qkGAAA,EAAA;;0BAcQ,MAAM;2BAAC,cAAc;;sBAPzB;;;AEzBC,MAAO,gBAAiB,SAAQ,WAAW,CAAA;AACxC,IAAA,YAAY,CAAC,OAAqB,EAAA;QACvC,OAAO,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAClE;AAEO,IAAA,IAAI,CAAC,OAAiB,EAAA;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAC9C;AAEO,IAAA,cAAc,CAAC,OAAuB,EAAA;QAC3C,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC;IACrD;+GAXW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCmBY,yBAAyB,CAAA;IAgBpC,WAAA,CACmB,gBAAkC,EAChB,SAAmB,EACrC,UAAqB,EAC9B,eAAgC,EAChC,YAA0B,EAAA;QAJjB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACE,IAAA,CAAA,SAAS,GAAT,SAAS;QAC3B,IAAA,CAAA,UAAU,GAAV,UAAU;QACnB,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,YAAY,GAAZ,YAAY;QApBtB,IAAA,CAAA,SAAS,GAA+B,EAAE;QAC1C,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,UAAU,GAAa,EAAE;QACzB,IAAA,CAAA,WAAW,GAAG,KAAK;QAEnB,IAAA,CAAA,gBAAgB,GAAG,EAAE;QACrB,IAAA,CAAA,aAAa,GAAG,CAAC;QACjB,IAAA,CAAA,WAAW,GAAmB,EAAE;QAChC,IAAA,CAAA,IAAI,GAAQ,EAAE;QAEN,IAAA,CAAA,QAAQ,GAAuB,IAAI;QAEnC,IAAA,CAAA,WAAW,GAAW,EAAE;AAwMxB,QAAA,IAAA,CAAA,SAAS,GAAG;AAClB,YAAA,0BAA0B,EAAE,KAAK;AACjC,YAAA,mEAAmE,EAAE,MAAM;AAC3E,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,WAAW,EAAE,KAAK;SACnB;AAnMC,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAC7B,WAAW,EACX,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,uBAAuB,CAAC,CAC1E;IACH;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,GAAG,CAAC;AAClB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,OAAO,EAAE,oCAAoC;gBAC7C,SAAS,EAAE,IAAI,IAAI;AACpB,aAAA,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE;IAChD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa;AACxC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,YAAY,EAAE;QACrB;aAAO;YACL,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW;YAAE;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;AACnC,YAAA,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI,IAAI;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,aAAa,CAAC;AACjC,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AACzC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACZ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;QACrC;AACA,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAsB,KAAI;AACnE,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;YAClB,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE;AAC/B,gBAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;gBACzB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC;AACxC,gBAAA,QAAQ,CAAC,IAAI,GAAG,OAAO;AACvB,gBAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE;AAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjC;AACJ,QAAA,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AACb,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,OAAO,EAAE,8BAA8B;gBACvC,SAAS,EAAE,IAAI,IAAI;AACpB,aAAA,CAAC;AACF,YAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC;AAC/C,QAAA,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;IAuBN;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE;AAC1C,YAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC;YAC5D;QACF;QACA,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;aAChD,IAAI,CAAC,MAAM,IAAG;YACb,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;AAC9C,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;YACtB,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/E,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,MAAK;AAC/B,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;gBACxB,IAAI,CAAC,eAAe,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACtE,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;AAC/D,gBAAA,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACnD,YAAA,CAAC;AACD,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC5B,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;IACxE;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE;AAClE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QAC3B;IACF;IAEA,iBAAiB,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;QACzB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;QAClB,IAAI,IAAI,CAAC,gBAAgB;AAAE,YAAA,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACrE,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC5B;IAEA,UAAU,GAAA;QACR,IAAI,EAAE,GAAG,IAAI;QACb,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACjD,QAAA,SAAS,CAAC,IAAI,GAAG,MAAM;AACvB,QAAA,SAAS,CAAC,MAAM,GAAG,0DAA0D;AAC7E,QAAA,SAAS,CAAC,QAAQ,GAAG,MAAK;YACxB,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,IAAI,CAAC;AACxC,QAAA,CAAC;QACD,SAAS,CAAC,KAAK,EAAE;IACnB;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA6B;AACpD,QAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;QAC9B,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAA,EAAA,CAAI;IACtD;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC;IAClE;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;IACF;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACnD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,EAAE;AACvC,QAAA,OAAO,CAAA,EAAG,OAAO,GAAG,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,CAAA,CAAA,EAAI,OAAO,GAAG,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,EAAE;IAC9F;IAEQ,oBAAoB,GAAA;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAgB;QAC9E,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC;QAC9D;AACA,QAAA,OAAO,SAAS;IAClB;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACpD,QAAA,IAAI,CAAC,gBAAgB;YAAE;QAEvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC5D,QAAA,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IACpE;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;AACvE,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACtB;IACF;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAuC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;IACxH;AAnNW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,+CAkB1B,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAlBP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,SAAA,EAFzB,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB/B,o2RA0Jc,EAAA,MAAA,EAAA,CAAA,+JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED3IV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,eAAe,uNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAOJ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAGlB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,aAAa;wBACb,OAAO;wBACP,gBAAgB;wBAChB;qBACD,EAAA,SAAA,EACU,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,o2RAAA,EAAA,MAAA,EAAA,CAAA,+JAAA,CAAA,EAAA;;0BAoB1B,MAAM;2BAAC,QAAQ;;;MEtCP,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAGY,QAAA,IAAA,CAAA,eAAe,GAAmC,IAAI,aAAa,CAAkB,CAAC,CAAC;AASlG,IAAA;AAPG,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC9C;IAEA,IAAI,cAAc,CAAC,UAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;IACzC;+GAVS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;;4FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCiCrB,mBAAmB,CAAA;AAwB5B,IAAA,WAAA,CACY,iBAAoC,EACpC,QAAiB,EACjB,iBAAmC,EAAA;QAFnC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAvBpB,IAAA,CAAA,KAAK,GAAW,YAAY;AAGrC,QAAA,IAAA,CAAA,kBAAkB,GAAU,CAAC;AACzB,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC7B;AACF,aAAA,CAAC;AAGI,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAO1D;IAEA,QAAQ,GAAA;IAER;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC9B;IACJ;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACnD;QACJ;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;QACzB;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9F;IAEA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IAC7B;IAEA,IAAI,GAAA;QACD,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK;IACrD;IAGQ,cAAc,GAAA;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,4BAA4B;YAC3C,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACtD,YAAA,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;iBACnC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa;iBACpE,kBAAkB,CAAC,IAAI;iBACvB,QAAQ,CAAC,IAAI;AACb,iBAAA,aAAa,CAAC;AACX,gBAAA;AACI,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA;aACJ,CAAC;AACT,SAAA,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAK;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,QAAA,CAAC,CAAC;IACN;+GAtGS,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrChC,g+CAmCc,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXN,YAAY,oIACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEb,gBAAgB,8BAChB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,8BAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,eAAe,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBArB/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,aAAA,EAEP,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP;wBACL,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,IAAI;wBACJ,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,oBAAoB;wBACpB;AACH,qBAAA,EAAA,QAAA,EAAA,g+CAAA,EAAA;;sBAGA,SAAS;uBAAC,kBAAkB;;sBAC5B,SAAS;uBAAC,iBAAiB;;sBAC3B;;sBACA;;;MEPQ,eAAe,CAAA;AAaxB;;AAEG;AACH,IAAA,WAAA,CACY,WAAuB,EACvB,WAAuB,EACvB,UAAqB,EAAA;QAFrB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,UAAU,GAAV,UAAU;QAjBb,IAAA,CAAA,UAAU,GAAoB,OAAO;QACrC,IAAA,CAAA,QAAQ,GAAW,GAAG;QACtB,IAAA,CAAA,SAAS,GAAW,CAAC;AACpB,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAO;QAE7D,IAAA,CAAA,MAAM,GAAY,KAAK;QACvB,IAAA,CAAA,UAAU,GAAkB,IAAI;AAChC,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,kBAAkB,EAAE;AAEpD,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAW1D;;;;AAMA;;AAEG;AACH,IAAA,IAA0B,SAAS,GAAA;QAE/B,OAAO;AACH,YAAA,uBAAuB,EAAI,IAAI,CAAC,UAAU,KAAK,KAAK;AACpD,YAAA,yBAAyB,EAAE,IAAI,CAAC,UAAU,KAAK,OAAO;YACtD,eAAe,EAAY,IAAI,CAAC,MAAM;SACzC;IACL;AAEA;;;;AAIG;IACH,IACI,cAAc,CAAC,KAAiB,EAAA;;;QAIhC,IAAK,KAAK,EACV;;YAEI,UAAU,CAAC,MAAK;;AAGZ,gBAAA,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;AAC/B,YAAA,CAAC,CAAC;QACN;IACJ;AAEA;;;;AAIG;IACH,IACI,eAAe,CAAC,KAAsB,EAAA;AAEtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IACjC;;;;AAMA;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAG9B,QAAA,IAAK,YAAY,IAAI,OAAO,EAC5B;;;YAGI,IAAI,CAAC,KAAK,EAAE;QAChB;IACJ;AAEA;;AAEG;IACH,QAAQ,GAAA;;QAGJ,IAAI,CAAC,aAAa,CAAC;aACd,IAAI,CACD,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,GAAG,CAAC,CAAC,KAAK,KAAI;;;;YAKV,IAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAC5C;AACI,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YAC1B;;AAGA,YAAA,OAAO,KAAK;AAChB,QAAA,CAAC,CAAC;;;AAGF,QAAA,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;AAE3D,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AAEjB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC;AACpD,iBAAA,SAAS,CAAC,CAAC,UAAe,KAAI;;AAG3B,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU;;AAG5B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAChC,YAAA,CAAC,CAAC;AACV,QAAA,CAAC,CAAC;IACV;AAEA;;AAEG;IACH,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;;;;AAMA;;;;AAIG;AACH,IAAA,SAAS,CAAC,KAAoB,EAAA;;AAG1B,QAAA,IAAK,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC5B;;AAEI,YAAA,IAAK,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAC/D;gBACI,IAAI,CAAC,KAAK,EAAE;YAChB;QACJ;IACJ;AAEA;;;AAGG;IACH,IAAI,GAAA;;AAGA,QAAA,IAAK,IAAI,CAAC,MAAM,EAChB;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACtB;AAEA;;;AAGG;IACH,KAAK,GAAA;;AAGD,QAAA,IAAK,CAAC,IAAI,CAAC,MAAM,EACjB;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;;AAG/B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACvB;AAEA;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IAC3B;+GAjNS,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAXT;AACX,YAAA;AACI,gBAAA,OAAO,EAAK,gCAAgC;gBAC5C,UAAU,EAAE,MAAK;AAEb,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBAC/B,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBACjD,CAAC;AACJ,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCL,utPAgLA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1JoB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAFjM,iBAAiB,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAcvB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAnB3B,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,iBAER,iBAAiB,CAAC,IAAI,EAAA,QAAA,EACtB,eAAe,EAAA,UAAA,EACf,iBAAiB,EAAA,UAAA,EACjB,IAAI,WACJ,CAAC,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,EAAA,SAAA,EAClM;AACX,wBAAA;AACI,4BAAA,OAAO,EAAK,gCAAgC;4BAC5C,UAAU,EAAE,MAAK;AAEb,gCAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gCAC/B,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;4BACjD,CAAC;AACJ,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,utPAAA,EAAA;;sBAIA;;sBACA;;sBACA;;sBACA;;sBA0BA,WAAW;uBAAC,OAAO;;sBAcnB,SAAS;uBAAC,gBAAgB;;sBAqB1B,SAAS;uBAAC,iBAAiB;;;MEvEnB,0BAA0B,CAAA;AAQnC;;AAEG;AACH,IAAA,WAAA,CAAsC,SAAmB,EAAA;QAAnB,IAAA,CAAA,SAAS,GAAT,SAAS;QALvC,IAAA,CAAA,aAAa,GAAY,KAAK;AAMlC,QAAA,IAAI,CAAC,MAAM,GAAG,SAAuB;IACzC;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa;YAC/B,QAAQ,CAAC,eAAe,CAAsB;IACtD;;;;AAMA;;AAEG;IACH,gBAAgB,GAAA;;QAEZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI;;AAGjE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,gBAAgB,EAAE;QAC3B;aAAO;YACH,IAAI,CAAC,eAAe,EAAE;QAC1B;IACJ;;;;AAMA;;;;AAIG;IACK,4BAA4B,GAAA;QAChC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,WAAW,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB;QACxC;QAEA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,WAAW,EAAE;AACzD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB;QAC3C;QAEA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,WAAW,EAAE;AACxD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB;QAC1C;QAEA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,KAAK,WAAW,EAAE;AAC5D,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB;QAC9C;AAEA,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACvE;AAEA;;;;AAIG;IACK,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YACjC;QACJ;;AAGA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;YACpC;QACJ;;AAGA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;YACvC;QACJ;;AAGA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;YACnC;QACJ;IACJ;AAEA;;;;AAIG;IACK,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;YAC5B;QACJ;;AAGA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;YACjC;QACJ;;AAGA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YAClC;QACJ;;AAGK,aAAA,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAC9B;QACJ;IACJ;AArIS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAWf,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAXnB,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BvC,mYAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWQ,eAAe,uNACf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGR,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,aAAA,EAEf,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACL,eAAe;wBACf,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,mYAAA,EAAA;;0BAaY,MAAM;2BAAC,QAAQ;;sBAV3B;;sBACA;;sBACA;;;ME5BQ,mBAAmB,CAAA;AAK5B;;AAEG;AACH,IAAA,WAAA,GAAA;AANiB,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,aAAa,CAAS,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,OAAO,GAA0B,IAAI,aAAa,CAAS,CAAC,CAAC;IAO9E;;;;AAMA;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;AAET,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IACzC;AAEA;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;AAEN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;IACtC;;;;AAMA;;;;AAIG;AACH,IAAA,OAAO,CAAC,IAAY,EAAA;;QAGhB,IAAK,CAAC,IAAI,EACV;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;AAEA;;;;AAIG;AACH,IAAA,IAAI,CAAC,IAAY,EAAA;;QAGb,IAAK,CAAC,IAAI,EACV;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;+GApES,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADP,MAAM,EAAA,CAAA,CAAA;;4FAClB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCkBnB,qBAAqB,CAAA;AAkB9B;;AAEG;AACH,IAAA,WAAA,CACY,kBAAqC,EACrC,oBAAyC,EACzC,oBAAyC,EAAA;QAFzC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;;QAhBvB,IAAA,CAAA,UAAU,GAA2B,MAAM;QAC3C,IAAA,CAAA,SAAS,GAAY,KAAK;QAC1B,IAAA,CAAA,WAAW,GAAY,KAAK;QAC5B,IAAA,CAAA,IAAI,GAAW,EAAE;QACjB,IAAA,CAAA,QAAQ,GAAY,IAAI;QACxB,IAAA,CAAA,IAAI,GAAqB,SAAS;AACxB,QAAA,IAAA,CAAA,gBAAgB,GAA0B,IAAI,YAAY,EAAW;AAEhF,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;QAWtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;IACpD;;;;AAMA;;AAEG;AACH,IAAA,IAA0B,SAAS,GAAA;;QAG/B,OAAO;AACH,YAAA,iCAAiC,EAAG,IAAI,CAAC,UAAU,KAAK,QAAQ;AAChE,YAAA,+BAA+B,EAAK,IAAI,CAAC,UAAU,KAAK,MAAM;AAC9D,YAAA,kCAAkC,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS;AACjE,YAAA,+BAA+B,EAAK,IAAI,CAAC,UAAU,KAAK,MAAM;YAC9D,yBAAyB,EAAW,IAAI,CAAC,SAAS;YAClD,2BAA2B,EAAS,IAAI,CAAC,WAAW;YACpD,yBAAyB,EAAW,IAAI,CAAC,QAAQ;AACjD,YAAA,4BAA4B,EAAQ,IAAI,CAAC,IAAI,KAAK,SAAS;AAC3D,YAAA,2BAA2B,EAAS,IAAI,CAAC,IAAI,KAAK,QAAQ;AAC1D,YAAA,yBAAyB,EAAW,IAAI,CAAC,IAAI,KAAK,MAAM;AACxD,YAAA,0BAA0B,EAAU,IAAI,CAAC,IAAI,KAAK,OAAO;AACzD,YAAA,yBAAyB,EAAW,IAAI,CAAC,IAAI,KAAK,MAAM;AACxD,YAAA,4BAA4B,EAAQ,IAAI,CAAC,IAAI,KAAK,SAAS;AAC3D,YAAA,4BAA4B,EAAQ,IAAI,CAAC,IAAI,KAAK,SAAS;AAC3D,YAAA,0BAA0B,EAAU,IAAI,CAAC,IAAI,KAAK,OAAO;SAC5D;;IAEL;;;;AAMA;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAG9B,QAAA,IAAK,WAAW,IAAI,OAAO,EAC3B;;YAEI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;;AAGtE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;QACvC;;AAGA,QAAA,IAAK,aAAa,IAAI,OAAO,EAC7B;;YAEI,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC;QAC9E;;AAGA,QAAA,IAAK,UAAU,IAAI,OAAO,EAC1B;;YAEI,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxE;IACJ;AAEA;;AAEG;IACH,QAAQ,GAAA;;QAGJ,IAAI,CAAC,oBAAoB,CAAC;aACrB,IAAI,CACD,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAClC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;aAElC,SAAS,CAAC,MAAK;;YAGZ,IAAI,CAAC,OAAO,EAAE;AAClB,QAAA,CAAC,CAAC;;QAGN,IAAI,CAAC,oBAAoB,CAAC;aACrB,IAAI,CACD,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAClC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;aAElC,SAAS,CAAC,MAAK;;YAGZ,IAAI,CAAC,IAAI,EAAE;AACf,QAAA,CAAC,CAAC;IACV;AAEA;;AAEG;IACH,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;;;;AAMA;;AAEG;IACH,OAAO,GAAA;;AAGH,QAAA,IAAK,IAAI,CAAC,SAAS,EACnB;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;IAC7B;AAEA;;AAEG;IACH,IAAI,GAAA;;AAGA,QAAA,IAAK,CAAC,IAAI,CAAC,SAAS,EACpB;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC9B;;;;AAMA;;;;;AAKG;AACK,IAAA,cAAc,CAAC,SAAkB,EAAA;;AAGrC,QAAA,IAAK,CAAC,IAAI,CAAC,WAAW,EACtB;YACI;QACJ;;AAGA,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;QAG1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;AAG1C,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IAC1C;+GApMS,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBlC,s1EAkFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/DsB,IAAI,4FAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAHrC,iBAAiB,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKzB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;+BACW,eAAe,EAAA,aAAA,EAEf,iBAAiB,CAAC,IAAI,mBACtB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EAC9B,iBAAiB,YACjB,cAAc,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACJ,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,s1EAAA,EAAA;;sBAUtD;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAuBA,WAAW;uBAAC,OAAO;;;ME1CX,oBAAoB,CAAA;AAW7B;;AAEG;AACH,IAAA,WAAA,GAAA;;QAPS,IAAA,CAAA,QAAQ,GAAY,KAAK;QACzB,IAAA,CAAA,IAAI,GAAoB,OAAO;QAC/B,IAAA,CAAA,SAAS,GAAY,KAAK;IAOnC;;;;AAMA;;AAEG;AACH,IAAA,IAA0B,SAAS,GAAA;;QAG/B,OAAO;YACH,uBAAuB,EAAI,IAAI,CAAC,QAAQ;YACxC,wBAAwB,EAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YACjE,yBAAyB,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAClE,wBAAwB,EAAG,IAAI,CAAC,SAAS;SAC5C;;IAEL;;;;AAMA;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAG9B,QAAA,IAAK,UAAU,IAAI,OAAO,EAC1B;;YAEI,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxE;;AAGA,QAAA,IAAK,WAAW,IAAI,OAAO,EAC3B;;YAEI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;QAC1E;IACJ;+GA7DS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBjC,msBA8BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBoB,IAAI,+EAHL,iBAAiB,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKvB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,aAAA,EAEd,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACtB,iBAAiB,EAAA,QAAA,EACjB,aAAa,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACJ,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,msBAAA,EAAA;;sBASpB;;sBACA;;sBACA;;sBAgBA,WAAW;uBAAC,OAAO;;;MEjBX,6CAA6C,CAAA;AAQtD,IAAA,WAAA,CACY,kBAAqC,EACrC,wBAAkD,EAClD,mBAAwC,EAAA;QAFxC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;AALvB,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;QAOrD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB;IAC3E;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,oBAAoB;YACrB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC;AACxC,kBAAE,IAAI,CAAC,mBAAmB,CAAC;AAC3B,kBAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB;;AAGrD,QAAA,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;AAGtC,QAAA,IAAI,CAAC,oCAAoC,CAAC,WAAW,CAAC,IAAI,CACtD,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CACjC,CAAC,SAAS,CAAC,MAAK;;AAEb,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACH,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAClC;+GA5CS,6CAA6C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6CAA6C,4ICxB1D,4/KAsIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpHQ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,gBAAgB,6MAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,kLACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAER,6CAA6C,EAAA,UAAA,EAAA,CAAA;kBAZzD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0CAA0C,mBAEnC,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP;wBACL,OAAO,EAAE,IAAI,EAAE,UAAU;AACzB,wBAAA,gBAAgB,EAAE,gBAAgB;wBAClC,gBAAgB;wBAChB,aAAa;wBACb;AAAc,qBAAA,EAAA,QAAA,EAAA,4/KAAA,EAAA;;sBAGjB;;sBACA;;;MEZQ,+CAA+C,CAAA;AAOxD;;AAEG;IACH,WAAA,CACY,kBAAqC,EACrC,wBAAkD,EAAA;QADlD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;AAP5B,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;IASzD;IAEA,QAAQ,GAAA;;AAEJ,QAAA,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAI,CAAC,oCAAoC,CAAC,WAAW,CAAC,IAAI,CACtD,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CACjC,CAAC,SAAS,CAAC,MAAK;;AAEb,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAClC;+GAjCS,+CAA+C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/C,+CAA+C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd5D,4IAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAER,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAP3D,SAAS;+BACI,4CAA4C,EAAA,eAAA,EAErC,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,4IAAA,EAAA;;sBAGjB;;sBACA;;;MEUQ,8CAA8C,CAAA;AAWvD;;AAEG;IACH,WAAA,CACY,iBAAoC,EACpC,wBAAkD,EAAA;QADlD,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QAb3B,IAAA,CAAA,KAAK,GAAY,KAAK;AAMvB,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;IAUzD;IACA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGjG,QAAA,IAAI,CAAC,oCAAoC,CAAC,WAAW,CAAC,IAAI,CACtD,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CACjC,CAAC,SAAS,CAAC,MAAK;;AAEb,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzC,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAClC;IACA,sBAAsB,GAAA;;AAElB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;IAEA,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IAC3B;+GA3CS,8CAA8C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9C,8CAA8C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B3D,ywJAyHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MD/Fa,8CAA8C,8IAR7C,IAAI,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAE,OAAO,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAE,aAAa,k1BAAE,gBAAgB,CAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACpD,KAAK,CAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACL,6CAA6C,oIAE7C,+CAA+C,CAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC/C,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAChB,aAAa,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAER,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAb1D,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2CAA2C,EAAA,eAAA,EAEpC,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB;wBACpD,KAAK;wBACL,6CAA6C;AAC7C,wBAAA,UAAU,CAAC,MAAK,8CAA+C,CAAC;wBAChE,+CAA+C;wBAC/C,gBAAgB;AAChB,wBAAA,aAAa,CAAC,EAAA,QAAA,EAAA,ywJAAA,EAAA;;sBAKjB;;sBACA;;sBACA;;sBACA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MElB7B,8CAA8C,CAAA;IAMvD,WAAA,CACY,kBAAqC,EACrC,wBAAkD,EAAA;QADlD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;AAH5B,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;IAKzD;IACA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAEjG,QAAA,IAAI,CAAC,oCAAoC,CAAC,WAAW,CAAC,IAAI,CACtD,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CACjC,CAAC,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACN;IACA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAClC;+GAvBS,8CAA8C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9C,8CAA8C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd3D,mIAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAER,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAP1D,SAAS;+BACI,2CAA2C,EAAA,eAAA,EAEpC,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,mIAAA,EAAA;;sBAGjB;;sBACA;;;MESQ,oCAAoC,CAAA;AAQ7C;;AAEG;AACH,IAAA,WAAA,CACY,iBAAoC,EACpC,wBAAkD,EAClD,mBAAwC,EAAA;QAFxC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QAZtB,IAAA,CAAA,IAAI,GAAW,EAAE;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA2B;AAEtD,QAAA,IAAA,CAAA,WAAW,GAA2B,IAAI,aAAa,CAAU,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;QAWtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;IACnD;;;;AAMA;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAG9B,QAAA,IAAK,YAAY,IAAI,OAAO,EAC5B;;AAEI,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACzC;IACJ;AAEA;;AAEG;IACH,QAAQ,GAAA;;AAGJ,QAAA,IAAK,IAAI,CAAC,IAAI,KAAK,EAAE,EACrB;YACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;QACnD;;QAGA,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;IACpE;AAEA;;AAEG;IACH,WAAW,GAAA;;QAGP,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG5D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;;;;AAMA;;AAEG;IACH,OAAO,GAAA;;AAGH,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;AAGrC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;AAEA;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK;IAC3B;+GA5FS,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBjD,w+CAmCA,EAAA,MAAA,EAAA,CAAA,sjPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfsB,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,6CAA6C,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7C,8CAA8C,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9C,8CAA8C,kGARjC,iBAAiB,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAUzB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAdhD,SAAS;AACW,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,cAG/B,iBAAiB,EAAA,aAAA,EACjB,iBAAiB,CAAC,IAAI,mBACtB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAC9B,6BAA6B,EAAA,UAAA,EAC7B,IAAI,WACJ,CAAC,KAAK,EAAE,IAAI;wBACzB,6CAA6C;wBAC7C,8CAA8C;AAC9C,wBAAA,8CAA8C,CAAC,EAAA,QAAA,EAAA,w+CAAA,EAAA,MAAA,EAAA,CAAA,sjPAAA,CAAA,EAAA;;sBAIlD;;;MENQ,2BAA2B,CAAA;AAdxC,IAAA,WAAA,GAAA;QAeW,IAAA,CAAA,WAAW,GAA4B,EAAE;AAEnD,IAAA;AADC,IAAA,QAAQ,KAAW;+GAFR,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBxC,miCAmBM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNF,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEL,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGJ,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,iBAEhB,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACP,IAAI;wBACJ,KAAK;wBACL,OAAO;wBACP,UAAU;wBACV,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,miCAAA,EAAA;;sBAGA;;;MEHU,qBAAqB,CAAA;AAZlC,IAAA,WAAA,GAAA;QAaW,IAAA,CAAA,QAAQ,GAA4B,EAAE;QACtC,IAAA,CAAA,YAAY,GAAW,EAAE;QACzB,IAAA,CAAA,gBAAgB,GAAY,KAAK;AAC3C,IAAA;+GAJY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBlC,2oDA2CM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED9BF,IAAI,4FACJ,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kCAAkC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGzB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,iBAEV,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACP,IAAI;wBACJ,oBAAoB;wBACpB,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,2oDAAA,EAAA;;sBAGA;;sBACA;;sBACA;;;MEpBU,cAAc,GAAG,IAAI,cAAc,CAAM,oBAAoB;;MCI7D,oBAAoB,CAAA;AAI7B;;AAEG;AACH,IAAA,WAAA,CAAoC,MAAW,EAAA;;QAG3C,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC;IAC9C;;;;AAMA;;AAEG;IACH,IAAI,MAAM,CAAC,KAAU,EAAA;;AAGjB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC;;AAGxD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B;;AAGA,IAAA,IAAI,OAAO,GAAA;AAEP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;IACtC;;;;AAMA;;AAEG;IACH,KAAK,GAAA;;QAGD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC;AA9CS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAOT,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAPzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADR,MAAM,EAAA,CAAA,CAAA;;4FAClB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;0BAQf,MAAM;2BAAC,cAAc;;;MCNzB,0BAA0B,CAAA;AAInC;;AAEG;IACH,WAAA,CACY,mBAAuC,EACvC,qBAA2C,EAAA;QAD3C,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;AAPzB,QAAA,IAAA,CAAA,cAAc,GAAuE,IAAI,aAAa,CAAsD,CAAC,CAAC;AAUlK,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CACnC,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,MAAM,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EACtH,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,CAAC,KAAK,KAAI;;YAGV,MAAM,eAAe,GAAa,EAAE;YACpC,MAAM,eAAe,GAAQ,EAAE;;YAG/B,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE;AACzG,YAAA,KAAM,MAAM,CAAC,KAAK,CAAC,IAAI,mBAAmB,EAC1C;;gBAEI,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAG/E,IAAK,aAAa,EAClB;AACI,oBAAA,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;AACnC,oBAAA,eAAe,CAAC,aAAa,CAAC,GAAG,KAAK;gBAC1C;YACJ;;AAGA,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACrB,eAAe;gBACf,eAAe;AAClB,aAAA,CAAC;AACN,QAAA,CAAC,CAAC,CACL,CAAC,CACL,CAAC,SAAS,EAAE;IACjB;;;;AAMA;;AAEG;AACH,IAAA,IAAI,cAAc,GAAA;AAEd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IAC7C;;;;AAMA;;;;AAIG;AACH,IAAA,mBAAmB,CAAC,KAAwB,EAAA;QAExC,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD;+GAtES,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADd,MAAM,EAAA,CAAA,CAAA;;4FAClB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MC8BnB,4BAA4B,CAAA;AAerC,IAAA,WAAA,CACY,0BAAsD,EAAA;QAAtD,IAAA,CAAA,0BAA0B,GAA1B,0BAA0B;QAf7B,IAAA,CAAA,SAAS,GAAW,EAAE;QACtB,IAAA,CAAA,aAAa,GAAY,KAAK;QAC9B,IAAA,CAAA,YAAY,GAAW,EAAE;QACzB,IAAA,CAAA,gBAAgB,GAAY,KAAK;QACjC,IAAA,CAAA,WAAW,GAA4B,EAAE;QACzC,IAAA,CAAA,QAAQ,GAA4B,EAAE;QACtC,IAAA,CAAA,SAAS,GAAY,IAAI;QACzB,IAAA,CAAA,gBAAgB,GAAY,IAAI;QAChC,IAAA,CAAA,UAAU,GAAY,KAAK;QACpC,IAAA,CAAA,UAAU,GAAoB,MAAM;QACpC,IAAA,CAAA,YAAY,GAAY,IAAI;AAEpB,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;IAItD;IAEH,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAClC;IACA,QAAQ,GAAA;QACJ,IAAI,CAAC,0BAA0B,CAAC;AAC3B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,EAAE,eAAe,EAAE,KAAI;AAC/B,YAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;gBACxB,IAAG,CAAC,IAAI,CAAC,UAAU;AACf,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;AAExB,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;YACjC;iBAAO;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;gBACxB,IAAG,CAAC,IAAI,CAAC,UAAU;AACf,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;YACjC;AACJ,QAAA,CAAC,CAAC;IACV;+GAvCS,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,mWCpCzC,0xDA6CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnBI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,gBAAgB,gjBAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,2BAA2B,yFAC3B,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGZ,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAhBxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,iBAElB,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACT,OAAO;wBACP,aAAa;wBACb,YAAY;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,2BAA2B;wBAC3B;AACH,qBAAA,EAAA,QAAA,EAAA,0xDAAA,EAAA;;sBAGI;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;ME/BQ,iBAAiB,CAAA;AAI1B,IAAA,WAAA,CACY,MAAc,EACd,KAAqB,EACrB,gBAAkC,EAAA;QAFlC,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AANpB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAQ,EAAE,CAAC;AAC3D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAOjD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC;AACP,aAAA,IAAI,CACDa,QAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EACjDC,KAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAEpD,aAAA,SAAS,CAAC,CAAC,WAAW,KACnB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAC5C;IACT;AAEQ,IAAA,gBAAgB,CACpB,KAAqB,EACrB,MAAc,EAAE,EAChB,cAAqB,EAAE,EAAA;AAEvB,QAAA,MAAM,QAAQ,GAAqB,KAAK,CAAC,QAAQ;AAEjD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,WAAW;QACtB;AAEA,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChB,gBAAA,MAAM,QAAQ,GAAW,KAAK,CAAC,QAAQ,CAAC;qBACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI;qBAC7B,IAAI,CAAC,GAAG,CAAC;AACd,gBAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;AACjB,oBAAA,GAAG,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;gBACzB;gBAEA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAClC,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;oBACrD,WAAW,CAAC,IAAI,CAAC;wBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC;AACpD,wBAAA,GAAG,EAAE,GAAG;AACX,qBAAA,CAAC;gBACN;YACJ;YAEA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC;QACzD;AAEA,QAAA,OAAO,WAAW;IACtB;+GArDS,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApB,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCAY,mBAAmB,CAAA;AAG5B,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAFrC,IAAA,CAAA,WAAW,GAAU,EAAE;IAEoC;IAE3D,QAAQ,GAAA;QACJ,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AAC1D,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAClC,QAAA,CAAC,CAAC;IACN;+GATS,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAoB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbhC,mqBAcA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHc,OAAO,mHAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEzC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACI,gBAAgB,EAAA,UAAA,EAGd,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,mqBAAA,EAAA;;;MEW1C,sBAAsB,CAAA;AAdnC,IAAA,WAAA,GAAA;QAeW,IAAA,CAAA,WAAW,GAA4B,EAAE;QACzC,IAAA,CAAA,SAAS,GAAY,IAAI;QACzB,IAAA,CAAA,gBAAgB,GAAY,IAAI;QAChC,IAAA,CAAA,gBAAgB,GAAY,KAAK;QACjC,IAAA,CAAA,YAAY,GAAY,IAAI;QAC5B,IAAA,CAAA,UAAU,GAAoB,MAAM;AAE9C,IAAA;+GARY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBnC,y8CAgCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,oLACb,2BAA2B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGlB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EAGd,IAAI,EAAA,OAAA,EACP;wBACP,OAAO;wBACP,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb;AACH,qBAAA,EAAA,QAAA,EAAA,y8CAAA,EAAA;;sBAGE;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEnBU,2BAA2B,CAAA;AAIpC;;AAEG;IACH,WAAA,CACY,WAAuB,EACvB,OAAe,EAAA;QADf,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,OAAO,GAAP,OAAO;AAPX,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAU1D;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;;AAGJ,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CACpB,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAClC,CAAC,SAAS,CAAC,MAAK;;YAGb,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC;AAChD,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACH,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;+GA1CS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAI,sBAAsB;AAClC,oBAAA,QAAQ,EAAI,oBAAoB;AAChC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;MCJY,sBAAsB,CAAA;AAI/B;;AAEG;AACH,IAAA,WAAA,CAAoB,SAAmB,EAAA;QAAnB,IAAA,CAAA,SAAS,GAAT,SAAS;QAL7B,IAAA,CAAA,MAAM,GAAG,YAAY;;AAQjB,QAAA,IAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAC9B;YACI;QACJ;;QAGA,IAAK,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxC;AACI,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY;QAC9B;;QAGA,IAAK,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxC;AACI,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QAC1B;;QAGA,IAAK,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxC;AACI,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QAC3B;;QAGA,IAAK,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1C;AACI,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU;QAC5B;;AAGA,QAAA,IAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EACvB;AACI,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QAC1B;;AAGA,QAAA,IAAK,IAAI,CAAC,SAAS,CAAC,OAAO,EAC3B;AACI,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY;QAC9B;IACJ;+GAlDS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADV,MAAM,EAAA,CAAA,CAAA;;4FAClB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCGnB,0BAA0B,CAAA;AAEnC;;AAEG;IACH,WAAA,CAC8B,SAAc,EAChC,OAAe,EAAA;QADG,IAAA,CAAA,SAAS,GAAT,SAAS;QAC3B,IAAA,CAAA,OAAO,GAAP,OAAO;;QAIf,IAAI,CAAC,OAAO,CAAC;AACR,aAAA,IAAI,CACD,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,IAAI,CAAC,CAAC,CAAC;aAEV,SAAS,CAAC,MAAK;YAEZ,IAAI,CAAC,IAAI,EAAE;AACf,QAAA,CAAC,CAAC;IACV;;;;AAMA;;AAEG;IACH,IAAI,GAAA;QAEA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,8BAA8B,CAAC;IACxE;AAEA;;AAEG;IACH,IAAI,GAAA;QAEA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC;IACrE;AAxCS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAMvB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AANX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADd,MAAM,EAAA,CAAA,CAAA;;4FAClB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;0BAOvB,MAAM;2BAAC,QAAQ;;;ACZxB;;AAEG;MACU,OAAO,CAAA;AAOhB;;AAEG;AACH,IAAA,WAAA,CAAmB,OAAe,EAAA;QAAf,IAAA,CAAA,OAAO,GAAP,OAAO;AAEtB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACtD;AACH;;AClBM,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;;MCQxC,iBAAiB,CAAA;IAE5B,WAAA,CAC+B,WAAwB,EACtB,SAAqB,EAAA;QADvB,IAAA,CAAA,WAAW,GAAX,WAAW;QACT,IAAA,CAAA,SAAS,GAAT,SAAS;QAH1C,IAAA,CAAA,IAAI,GAAW,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE;IAGU;AAE1D,IAAA,MAAM,QAAQ,GAAA;QACZ,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YACxB;QACF;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AACpC,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAA,CAAE,CAAC;QACpF;QAAE,OAAM,KAAK,EAAE;AACb,YAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;AAC/D,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QAC1B;IACF;+GApBW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAGlB,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAJb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,wECV9B,msCA0BM,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA,CAAA,CAAA;;4FDhBO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,IAAI,EAAA,QAAA,EAAA,msCAAA,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA;;0BAKb,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,cAAc;;;AEX1B,6BAAe;AACX,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,iBAAiB;AAC/B,KAAA;CACM;;MCKE,cAAc,CAAA;IAGzB,WAAA,CACiC,SAAqB,EAC5C,WAAwB,EAAA;QADD,IAAA,CAAA,SAAS,GAAT,SAAS;QAChC,IAAA,CAAA,WAAW,GAAX,WAAW;QAJrB,IAAA,CAAA,KAAK,GAAW,EAAE;QAClB,IAAA,CAAA,IAAI,GAAW,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE;QAchD,IAAA,CAAA,SAAS,GAAG,MAAK;AACf,YAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE;AACxB,YAAA,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE;AACtC,QAAA,CAAC;AACD,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,CAAS,KAAY;YAChC,IAAI,MAAM,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,EAAE,EAAE;AACV,gBAAA,MAAM,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;YAClB;iBAAO;AACL,gBAAA,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE;YACvB;AACA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC;IA1BD;IACA,QAAQ,GAAA;AACN,QAAA,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IAClC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;IACxC;AAdW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAIf,cAAc,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAJb,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb3B,6hJA8EM,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpEF,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;+BACE,WAAW,EAAA,UAAA,EAGT,IAAI,EAAA,OAAA,EACP;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,6hJAAA,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA;;0BAME,MAAM;2BAAC,cAAc;;;AEd1B,0BAAe;AACX,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,cAAc;AAC5B,KAAA;CACM;;MCQE,eAAe,CAAA;IAG1B,WAAA,CACiC,SAAqB,EAC5C,WAAwB,EAAA;QADD,IAAA,CAAA,SAAS,GAAT,SAAS;QAChC,IAAA,CAAA,WAAW,GAAX,WAAW;QAJrB,IAAA,CAAA,KAAK,GAAW,EAAE;QAClB,IAAA,CAAA,IAAI,GAAW,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE;QAmBhD,IAAA,CAAA,SAAS,GAAG,MAAK;AACf,YAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE;AACxB,YAAA,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE;AACtC,QAAA,CAAC;AACD,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,CAAS,KAAY;YAChC,IAAI,MAAM,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,EAAE,EAAE;AACV,gBAAA,MAAM,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;YAClB;iBAAO;AACL,gBAAA,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE;YACvB;AACA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC;IA/BD;IAEA,QAAQ,GAAA;QACN,QAAQ,CAAC,IAAI;aACZ,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACJ;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;IACxC;AAlBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAIhB,cAAc,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAJb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB5B,q6GAgEM,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnDF,eAAe,wWAFL,iBAAiB,EAAA,CAAA,CAAA;;4FAKlB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EAGV,IAAI,EAAA,UAAA,EACJ,iBAAiB,EAAA,OAAA,EACpB;wBACP;AACH,qBAAA,EAAA,QAAA,EAAA,q6GAAA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA;;0BAMI,MAAM;2BAAC,cAAc;;;AEjB1B,2BAAe;AACX,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,eAAe;AAC7B,KAAA;CACM;;ACRX;;ACAA;;MCsBa,oBAAoB,CAAA;AAI7B,IAAA,WAAA,CACqB,aAAmC,EAAA;QAAnC,IAAA,CAAA,aAAa,GAAb,aAAa;AAH1B,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;IAKzD;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,CAAC;AACd,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,MAAqB,KAAI;AACjC,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,QAAA,CAAC,CAAC;IACV;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAClC;IAEC,SAAS,GAAA;AACN,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM;AACvC,QAAA,IAAI,aAAa,KAAK,OAAO,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;QAClD;aAAO;YACH,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QACnD;IACJ;+GA7BS,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBjC,mWAQS,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQD,eAAe,uNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,oBAAoB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,aAAA,EAET,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP;wBACL,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB;AACH,qBAAA,EAAA,QAAA,EAAA,mWAAA,EAAA;;;MEdQ,iBAAiB,CAAA;AAG1B,IAAA,WAAA,CAAoB,WAAuB,EAAA;QAAvB,IAAA,CAAA,WAAW,GAAX,WAAW;AAFvB,QAAA,IAAA,CAAA,WAAW,GAA8B,IAAI,aAAa,CAAa,CAAC,CAAC;IAGjF;IACA,IAAI,WAAW,CAAC,YAAwB,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;IACvC;AAEA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;IAC1C;IACA,GAAG,GAAA;AACC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAa,uBAAuB,CAAC,CAAC,IAAI,CACjE,GAAG,CAAC,CAAC,UAAU,KAAI;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,CAAC,CAAC,CACL;IACL;+GAlBS,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;;4FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCyDrB,qBAAqB,CAAA;AAQhC,IAAA,WAAA,CACmB,iBAAoC,EACpC,WAAwB,EACxB,0BAAsD,EACtD,wBAAkD,EAClD,WAAwB,EACxB,aAAmC,EACrB,SAAqB,EAAA;QANnC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,0BAA0B,GAA1B,0BAA0B;QAC1B,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,aAAa,GAAb,aAAa;QACC,IAAA,CAAA,SAAS,GAAT,SAAS;QAb1C,IAAA,CAAA,WAAW,GAAY,KAAK;QAC5B,IAAA,CAAA,UAAU,GAA2B,EAAE;QACvC,IAAA,CAAA,IAAI,GAAyB,EAAE;AAEd,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;IAWlE;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACjC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC;AAChB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,MAAqB,KAAI;AACnC,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACtB,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAe,KAAI;AACrD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC;AACpB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,UAAsB,KAAI;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC9B,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,0BAA0B,CAAC;AAC7B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,EAAE,eAAe,EAAE,KAAI;YACjC,IAAI,CAAC,aAAa,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtD,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,WAAW,CAAC;AACd,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,IAAa,KAAI;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AACpC,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEA,IAAA,gBAAgB,CAAC,IAAY,EAAA;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAqC,IAAI,CAAC;QAEvG,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,MAAM,EAAE;QACrB;IACF;AAhEW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,gNAetB,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAfb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAJrB;YACT;AACD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5DH,4hJA6FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzDI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,kCAAkC,+TAClC,mBAAmB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,sBAAsB,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,aAAa,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qBAAqB,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,eAAe,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,oBAAoB,qFAMpB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAME,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhCjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,iBAEV,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACP,IAAI;wBACJ,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,0BAA0B;wBAC1B,kCAAkC;wBAClC,mBAAmB;wBACnB,sBAAsB;wBACtB,aAAa;wBACb,kBAAkB;wBAClB,kBAAkB;wBAClB,qBAAqB;wBACrB,eAAe;wBACf,yBAAyB;wBACzB,oBAAoB;wBACpB;;;;;wBAKA;qBACH,EAAA,SAAA,EACY;wBACT;AACD,qBAAA,EAAA,QAAA,EAAA,4hJAAA,EAAA;;0BAiBE,MAAM;2BAAC,cAAc;;;MEjEb,gBAAgB,CAAA;IAC3B,WAAA,CACU,UAAsB,EACtB,WAAwB,EACxB,WAAwB,EACxB,iBAAoC,EACb,MAAuB,EAAA;QAJ9C,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACM,IAAA,CAAA,MAAM,GAAN,MAAM;IAGvC;AAEA,IAAA,cAAc,CAAC,OAAe,EAAA;AAC5B,QAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;AACxB,YAAA,MAAM,QAAQ,GAA4B;AACxC,gBAAA;AACE,oBAAA,EAAE,EAAE,GAAG;AACP,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,IAAI,EAAE,WAAW;AAClB,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,GAAG;AACP,oBAAA,KAAK,EAAE,gBAAgB;AACvB,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,IAAI,EAAE,QAAQ;AACf,iBAAA;aACF;AACD,YAAA,OAAO,IAAI,UAAU,CAA0B,CAAC,QAAQ,KAAI;AAC1D,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACvB,QAAQ,CAAC,QAAQ,EAAE;YACrB,CAAC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,KAA8B,KAAI;AACrC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAe;AAC/C,oBAAA,OAAO,EAAE,KAAK;iBACf;YACH,CAAC,CAAC,CACH;QACH;aAAO;YACL,IAAI,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;AACrD,YAAA,IAAI,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;AAC1C,YAAA,IAAI,IAAI,GAAG,CAAA,mCAAA,EAAsC,OAAO,EAAE;AAC1D,YAAA,IAAI,SAAS;AACX,gBAAA,IAAI,GAAG,CAAA,EAAG,IAAI,CAAA,WAAA,EAAc,SAAS,EAAE;AAEzC,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CACtC,GAAG,CAAC,CAAC,KAA8B,KAAI;AACrC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAe;AAC/C,oBAAA,OAAO,EAAE,KAAK;iBACf;YACH,CAAC,CAAC,CACH;QACH;IACF;IAEA,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,CAC5C,GAAG,CAAC,CAAC,IAAI,KAAI;AACX,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI;AAC/B,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;YACnB,MAAM,SAAS,GAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,SAAS;AAClC,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC,CACH;IACH;IAEA,iBAAiB,CAAC,OAAe,EAAE,MAAe,EAAA;AAChD,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW;AAC9C,QAAA,IAAI,OAAO,GAAQ;AACjB,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,OAAO,EAAE,EAAE,aAAa,EAAE,CAAA,OAAA,EAAU,WAAW,EAAE;SAClD;QACD,IAAI,MAAM,EAAE;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACzC,YAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO;QAC7B;QACA,IAAI,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;IACjD;AAEQ,IAAA,YAAY,CAAC,MAAW,EAAA;AAC9B,QAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,MAAM;AACrC,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC;IAClE;AAvFW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,+HAMjB,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AANb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAOI,MAAM;2BAAC,cAAc;;;MCJb,aAAa,CAAA;AACxB,IAAA,WAAA,CAGE,YAA2B,EAAA;QAE3B,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAA,mEAAA,CAAqE,CAAC;QACvG;IACF;+GATW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAPtB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAOR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAAA,SAAA,EAJb;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CALC,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAOR,aAAa,EAAA,UAAA,EAAA,CAAA;kBATzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,iBAAiB;AAClB,qBAAA;AACD,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,SAAS,EAAE;wBACT;AACD;AACF,iBAAA;;0BAGI;;0BACA;;;MCJQ,oBAAoB,CAAA;AAG/B;;AAEG;AACH,IAAA,WAAA,GAAA;AALQ,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAO;IAM1D;;;;AAMA;;AAEG;IACH,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;+GApBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wECbjC,4RAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,6FAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAE7C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,aAAA,EAET,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP,CAAC,0BAA0B,EAAE,IAAI,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,4RAAA,EAAA;;;MEoC9C,qBAAqB,CAAA;AAM9B;;AAEG;AACH,IAAA,WAAA,CACY,cAA8B,EAC9B,MAAc,EACd,iBAAoC,EAC3B,WAAwB,EACjC,0BAAsD,EACtD,wBAAkD,EACzC,WAAwB,EACV,SAAqB,EAAA;QAP5C,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACR,IAAA,CAAA,WAAW,GAAX,WAAW;QACpB,IAAA,CAAA,0BAA0B,GAA1B,0BAA0B;QAC1B,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QACG,IAAA,CAAA,SAAS,GAAT,SAAS;QAd5C,IAAA,CAAA,WAAW,GAAY,KAAK;AACpB,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;QACzD,IAAA,CAAA,IAAI,GAAyB,EAAE;IAc/B;AAEA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACnC;IAEA,QAAQ,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAe,KAAI;AAClD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,QAAA,CAAC,CAAC;QACE,IAAI,CAAC,iBAAiB,CAAC;AAClB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,UAAsB,KAAI;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAChC,QAAA,CAAC,CAAC;QAEN,IAAI,CAAC,0BAA0B,CAAC;AAC3B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,EAAE,eAAe,EAAE,KAAI;YAC/B,IAAI,CAAC,aAAa,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxD,QAAA,CAAC,CAAC;QAEN,IAAI,CAAC,WAAW,CAAC;AACZ,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,IAAa,KAAI;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AACtC,QAAA,CAAC,CAAC;IACV;IACA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAClC;AAEA,IAAA,gBAAgB,CAAC,IAAY,EAAA;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAqC,IAAI,CAAC;QACvG,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,MAAM,EAAE;QACvB;IACJ;AAzDS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,uOAiBlB,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjBjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/ClC,63KA0GyD,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7ErD,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,kCAAkC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,oCAAoC,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpC,eAAe,uNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEtB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,aAAa,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,qBAAqB,qFACrB,mBAAmB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAxBjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,iBAEV,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACT,0BAA0B;wBAC1B,IAAI;wBACJ,kCAAkC;wBAClC,oCAAoC;wBACpC,eAAe;wBACf,aAAa;wBACb,kBAAkB;wBAClB,eAAe;wBACf,kBAAkB;wBAClB,sBAAsB;wBACtB,sBAAsB;wBACtB,yBAAyB;wBACzB,aAAa;wBACb,YAAY;wBACZ,qBAAqB;wBACrB;AACH,qBAAA,EAAA,QAAA,EAAA,63KAAA,EAAA;;0BAmBQ,MAAM;2BAAC,cAAc;;;ME7BjB,eAAe,CAAA;AAO1B;;AAEG;AACH,IAAA,WAAA,CACU,cAA8B,EACZ,SAAc,EAChC,SAAoB,EACpB,MAAc,EACd,oBAA0C,EAC1C,0BAAsD,EACtD,sBAA8C,EAAA;QAN9C,IAAA,CAAA,cAAc,GAAd,cAAc;QACI,IAAA,CAAA,SAAS,GAAT,SAAS;QAC3B,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,0BAA0B,GAA1B,0BAA0B;QAC1B,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;AAXxB,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAO;IAazD;IAEA,QAAQ,GAAA;AACN,QAAA,aAAa,CAAC;YACZ,IAAI,CAAC,oBAAoB,CAAC,OAAO;YACjC,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,CAAC,8BAA8B,EAAE,+BAA+B,CAAC,CAAC;AACvH,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9B,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAI;AACpB,YAAA,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB;;AAED,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;;AAE5B,gBAAA,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,8BAA8B,CAAC,GAAG,MAAM,GAAG,OAAO;YACrF;AAEA,YAAA,OAAO,OAAO;QAChB,CAAC,CAAC,CACH,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;;AAEtB,YAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AAC5B,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;;YAG1B,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,YAAY,EAAE;AACrB,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,oBAAoB,CAAC;AACvB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,MAAqB,KAAI;;AAEnC,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;YAEpB,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC,CAAC;;AAGJ,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAC/B,CAAC,SAAS,CAAC,MAAK;;YAEf,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,eAAe,CAAC;;AAG7G,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;IAClF;AAEA;;AAEG;IACH,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;IAEQ,aAAa,GAAA;;AAEnB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc;AAC/B,QAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACvB,YAAA,KAAK,GAAG,KAAK,CAAC,UAAU;QAC1B;QAEA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AAChC,QAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvE,IAAI,oBAAoB,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,oBAAoB;AAClC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,oBAAoB;YAC3C;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY;AAChC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;AAErB,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE;;gBAE7E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM;YAC5C;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;IACK,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAChD;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAiB,KAAI;AAC1D,YAAA,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/C;AAhIW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kDAYhB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAZP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnC5B,udAS2D,EAAA,MAAA,EAAA,CAAA,4NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDWvD,IAAI,6FACJ,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;;;gBAIpB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBAErB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAQZ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAtB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,iBAGH,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACP,IAAI;wBACJ,oBAAoB;;;;wBAIpB,qBAAqB;;wBAErB,qBAAqB;;;;;;AAMtB,qBAAA,EAAA,QAAA,EAAA,udAAA,EAAA,MAAA,EAAA,CAAA,4NAAA,CAAA,EAAA;;0BAcE,MAAM;2BAAC,QAAQ;;;IEzCR;AAAZ,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc;AACd,IAAA,cAAA,CAAA,cAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAwB;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,GAAA,CAAA,GAAA,YAAgB;AAChB,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,GAAA,CAAA,GAAA,YAAgB;AAChB,IAAA,cAAA,CAAA,cAAA,CAAA,IAAA,CAAA,GAAA,GAAA,CAAA,GAAA,IAAQ;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,SAAa;AACb,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc;AACd,IAAA,cAAA,CAAA,cAAA,CAAA,6BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,6BAAiC;AACjC,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,GAAA,CAAA,GAAA,WAAe;AACf,IAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAkB;AAClB,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,cAAA,CAAA,cAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAiB;AACjB,IAAA,cAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,iBAAqB;AACrB,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAY;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,GAAA,CAAA,GAAA,WAAe;AACf,IAAA,cAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,iBAAqB;AACrB,IAAA,cAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,GAAA,CAAA,GAAA,OAAW;AACX,IAAA,cAAA,CAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAsB;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,GAAA,CAAA,GAAA,OAAW;AACX,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc;AACd,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc;AACd,IAAA,cAAA,CAAA,cAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAiB;AACjB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc;AACd,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAY;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAsB;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,mBAAuB;AACvB,IAAA,cAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,mBAAuB;AACvB,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,GAAA,CAAA,GAAA,YAAgB;AAChB,IAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAkB;AAClB,IAAA,cAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,iBAAqB;AACrB,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,GAAA,CAAA,GAAA,WAAe;AACf,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc;AACd,IAAA,cAAA,CAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAsB;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,eAAA,CAAA,GAAA,GAAA,CAAA,GAAA,eAAmB;AACnB,IAAA,cAAA,CAAA,cAAA,CAAA,6BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,6BAAiC;AACjC,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc;AACd,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,GAAA,CAAA,GAAA,MAAU;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,cAAA,CAAA,cAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAwB;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAA2B;AAC3B,IAAA,cAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,mBAAuB;AACvB,IAAA,cAAA,CAAA,cAAA,CAAA,sBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,sBAA0B;AAC1B,IAAA,cAAA,CAAA,cAAA,CAAA,8BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,8BAAkC;AAClC,IAAA,cAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,mBAAuB;AACvB,IAAA,cAAA,CAAA,cAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAwB;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,qBAAyB;AACzB,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAY;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAsB;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,iBAAqB;AACrB,IAAA,cAAA,CAAA,cAAA,CAAA,sBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,sBAA0B;AAC1B,IAAA,cAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,iBAAqB;AACrB,IAAA,cAAA,CAAA,cAAA,CAAA,6BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,6BAAiC;AACjC,IAAA,cAAA,CAAA,cAAA,CAAA,4BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,4BAAgC;AAChC,IAAA,cAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,qBAAyB;AACzB,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,GAAA,CAAA,GAAA,YAAgB;AAChB,IAAA,cAAA,CAAA,cAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAwB;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,cAAA,CAAA,cAAA,CAAA,yBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,yBAA6B;AAC7B,IAAA,cAAA,CAAA,cAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAA2B;AAC3B,IAAA,cAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,qBAAyB;AACzB,IAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAkB;AAClB,IAAA,cAAA,CAAA,cAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAiB;AACjB,IAAA,cAAA,CAAA,cAAA,CAAA,+BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,+BAAmC;AACvC,CAAC,EAnEW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;MCNJ,SAAS,CAAA;AAEpB,IAAA,OAAO,YAAY,GAAA;AACtB,QAAA,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;AACrB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;QAC7B,IAAI,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,KAAK,GAAG,CAAA,EAAG,IAAI,CAAA,EAAG,EAAE,EAAE;AAC1B,QAAA,OAAO,KAAK;IAChB;IAEO,OAAO,oBAAoB,CAAC,IAAY,EAAA;AAC3C,QAAA,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;AACrB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;QAC7B,IAAI,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;AACpC,QAAA,IAAI,KAAK,GAAG,CAAA,EAAG,IAAI,CAAA,EAAG,EAAE,EAAE;AAC1B,QAAA,OAAO,KAAK;IAChB;IAEO,OAAO,WAAW,CAAC,MAAc,EAAA;QACpC,IAAI,MAAM,GAAG,EAAE;QACf,MAAM,UAAU,GAAG,sCAAsC;AACzD,QAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM;QAC1C,IAAI,OAAO,GAAG,CAAC;AACf,QAAA,OAAO,OAAO,GAAG,MAAM,EAAE;AACrB,YAAA,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QAChB;AACA,QAAA,OAAO,MAAM;IACjB;AAEH;;MCzBY,YAAY,CAAA;AAErB;;AAEG;AACH,IAAA,WAAA,GAAA;AAEI,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACzC,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;;QAG/C,eAAe,CAAC,aAAa,CAAC,YAAY,CAAC,8BAA8B,CAAC,mCAAmC,CAAC,CAAC;AAC/G,QAAA,eAAe,CAAC,wBAAwB,CAAC,aAAa,EAAE,YAAY,CAAC,8BAA8B,CAAC,mCAAmC,CAAC,CAAC;AACzI,QAAA,eAAe,CAAC,wBAAwB,CAAC,WAAW,EAAE,YAAY,CAAC,8BAA8B,CAAC,iCAAiC,CAAC,CAAC;AACrI,QAAA,eAAe,CAAC,wBAAwB,CAAC,SAAS,EAAE,YAAY,CAAC,8BAA8B,CAAC,0BAA0B,CAAC,CAAC;AAC5H,QAAA,eAAe,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,YAAY,CAAC,8BAA8B,CAAC,oCAAoC,CAAC,CAAC;AAChJ,QAAA,eAAe,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,YAAY,CAAC,8BAA8B,CAAC,kCAAkC,CAAC,CAAC;AAC5I,QAAA,eAAe,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,YAAY,CAAC,8BAA8B,CAAC,iCAAiC,CAAC,CAAC;IAC9I;+GAlBS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADA,MAAM,EAAA,CAAA,CAAA;;4FAClB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACDzB,MAAM,YAAY,GAAG,MAA6C;IAErE,OAAO;AACH,QAAA;AACI,YAAA,OAAO,EAAG,uBAAuB;AACjC,YAAA,QAAQ,EAAE,MAAM,MAAM,CAAC,YAAY,CAAC;AACpC,YAAA,KAAK,EAAK,IAAI;AACjB,SAAA;KACJ;AACL;;MCJe,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAiB;AAE9C,IAAA,SAAS,CAAC,IAAS,EAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;IACrD;+GALW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAzB,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAG,KAAK;AACZ,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCEU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE/C,IAAA,SAAS,CAAC,KAAe,EAAA;QACvB,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAC1E;AACA,QAAA,OAAO,EAAE;IACX;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAG,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;YACzB,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;;AAElB,YAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;IAC3B;+GAfW,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIqB,eAAe,CAAA;AAC5B,IAAA,OAAO,MAAM,CAAC,IAAa,EAAE,OAAuB,EAAA;;AAEzD,QAAA,MAAM,QAAQ,GAAmB;AAC/B,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,cAAc,EAAE,IAAI;SACrB;QAED,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE;QAC5C,MAAM,WAAW,GAAG,YAAY;AAEhC,QAAA,MAAM,MAAM,GAAG,CAAC,IAAY,KAAY;YACtC,QAAQ,IAAI;AACV,gBAAA,KAAK,GAAG,EAAE,OAAO,MAAM;AACvB,gBAAA,KAAK,GAAG,EAAE,OAAO,MAAM;AACvB,gBAAA,KAAK,GAAG,EAAE,OAAO,OAAO;AACxB,gBAAA,KAAK,KAAK,EAAE,OAAO,cAAc;AACjC,gBAAA,SAAS,OAAO,IAAI;;AAExB,QAAA,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,OAAgB,KAC/C,OAAO,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAA,EAAA,EAAK,OAAO,SAAS,GAAG,EAAE;AAE/D,QAAA,MAAM,cAAc,GAAG,CAAC,KAAa,KAAY;;AAE/C,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI;YACvD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,IAAI;AACrE,YAAA,MAAM,QAAQ,GAAG,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI;YACjD,MAAM,IAAI,GAAG,QAAQ,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ;AAExD,YAAA,IAAI,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE;gBAChC,MAAM,UAAU,GAAG,qBAAqB;AACxC,gBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,GAAG,4CAA4C,GAAG,EAAE;AACvF,gBAAA,MAAM,QAAQ,GAAG,CAAC,IAAY,KAC5B,CAAA,2BAAA,EAA8B,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,IAAI,MAAM;AAC5D,gBAAA,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC3D;AAEA,YAAA,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7B,QAAA,CAAC;AAED,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW,EAAE,KAAa,EAAE,GAAW,KAAY;AAClG,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,GAAG,UAAU,GAAG,qBAAqB;AACxE,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,EAAE;AAC/B,YAAA,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE;YACpD,MAAM,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;AAC1E,YAAA,MAAM,SAAS,GAAG,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE;YAEpD,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AACrE,gBAAA,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,cAAc,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;AAEzE,YAAA,OAAO,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO;AACnD,QAAA,CAAC;QAED,MAAM,QAAQ,GAAG,qDAAqD;AAEtE,QAAA,IAAI;YACF,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC3F,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,WAAW;YAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;YACrD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAEpD,YAAA,IAAI,QAAQ,CAAC,WAAW,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,CAAA,KAAA,CAAO,CAAC;gBAC9D,OAAO,CAAA,uBAAA,EAA0B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;YACxD;AAEA,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC9C,YAAA,OAAO,cAAc;QACvB;IACF;AACD;AAAA;;MC5FqB,WAAW,CAAA;AACf,IAAA,SAAA,IAAA,CAAA,OAAO,GAAU,CAAC;AAC5B,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE;SACT,EAAE;AACC,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE;SACT,EAAE;AACC,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC;AAEW,IAAA,SAAA,IAAA,CAAA,SAAS,GAAU,CAAC;AAC9B,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE;SACT,EAAE;AACC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE;SACT,EAAE;AACC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC;AAEW,IAAA,SAAA,IAAA,CAAA,SAAS,GAAU,CAAC;AAC9B,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE;SACT,EAAE;AACC,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE;SACT,EAAE;AACC,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC;;;MC9BM,YAAY,CAAA;AAGrB,IAAA,WAAA,CAAY,MAAS,EAAA;AACjB,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM;IACrB;IAEO,OAAO,CAAC,KAAa,EAAE,MAAc,EAAA;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,KAAI;AACvD,YAAA,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK;AACtE,QAAA,CAAC,CAAC;IACN;AACH;;MCRY,mBAAmB,CAAA;AAE5B;;AAEG;AACH,IAAA,WAAA,CACY,WAAuB,EAAA;QAAvB,IAAA,CAAA,WAAW,GAAX,WAAW;IAEvB;;;;AAMA;;;;AAIG;AACH,IAAA,cAAc,CAAC,IAAY,EAAA;QAEvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAc,CAAA,cAAA,EAAiB,IAAI,CAAA,KAAA,CAAO,CAAC;IAC1E;+GAtBS,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADP,MAAM,EAAA,CAAA,CAAA;;4FAClB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACCzB,MAAM,qBAAqB,GAAG,MAAkB;AACrD,IAAA,gBAAgB,CAAC;AACf,QAAA,MAAM,EAAE;YACN,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AACpD,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACD,QAAA,MAAM,EAAE,mBAAmB;KAC5B,CAAC;AACF,IAAA;AACE,QAAA,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,MAAK;AACf,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACvC,YAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YACjD,OAAO,YAAW;AAChB,gBAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,iBAAiB,EAAc;AACvE,gBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE;AAErD,gBAAA,IAAI;;AAEF,oBAAA,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE;;AAE9C,oBAAA,MAAM,WAAW,GAAG,OAAO,EAAE,QAAQ;oBACrC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC;;AAGxD,oBAAA,MAAM,gBAAgB,GAAG,WAAW,IAAI,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,IAAI;;AAGjG,oBAAA,MAAM,gBAAgB,GAAG,WAAW,IAAI,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,IAAI;;AAGjG,oBAAA,MAAM,IAAI,GAAG,gBAAgB,IAAI,gBAAgB,IAAI,WAAW;AAChE,oBAAA,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC;;AAEpC,oBAAA,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;oBAC1C,MAAM,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnD;AAAE,gBAAA,MAAM;;oBAEN,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC;;AAExD,oBAAA,MAAM,gBAAgB,GAAG,WAAW,IAAI,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,IAAI;AACjG,oBAAA,MAAM,IAAI,GAAG,gBAAgB,IAAI,WAAW;AAC5C,oBAAA,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC;AACpC,oBAAA,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;oBAC1C,MAAM,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnD;AACF,YAAA,CAAC;QACH,CAAC;AACD,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA;;;AC1DH;;ACAA;;AAEG;;ACFH;;AAEG;;;;"}